//
//Сервис реализует функционал управления пуш-токенами устройств.
//Используется как отдельное хранилихе пуш токенов, на первом этапе будет хранить только PWA токены

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

package keyapis_notification_v1

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	_ "google.golang.org/genproto/googleapis/api/visibility"
	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 PushToken_Type int32

const (
	// Не указан
	PushToken_TYPE_UNKNOWN PushToken_Type = 0
	// Для Mobile Firebase Cloud Messaging
	PushToken_MOBILE_FCM PushToken_Type = 1
	// Для Mobile Huawei Messaging System
	PushToken_MOBILE_HMS PushToken_Type = 2
	// Для Mobile Apple PushToken System для текста
	PushToken_MOBILE_APNS_TEXT PushToken_Type = 3
	// Для Mobile Apple PushToken System для звонков
	PushToken_MOBILE_APNS_CALL PushToken_Type = 4
	// Для PWA Firebase Cloud Messaging
	PushToken_PWA_FCM PushToken_Type = 5
	// Для PWA Apple PushToken System
	PushToken_PWA_APNS PushToken_Type = 6
	// Для Mobile RuStore
	PushToken_MOBILE_RUSTORE PushToken_Type = 7
)

// Enum value maps for PushToken_Type.
var (
	PushToken_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "MOBILE_FCM",
		2: "MOBILE_HMS",
		3: "MOBILE_APNS_TEXT",
		4: "MOBILE_APNS_CALL",
		5: "PWA_FCM",
		6: "PWA_APNS",
		7: "MOBILE_RUSTORE",
	}
	PushToken_Type_value = map[string]int32{
		"TYPE_UNKNOWN":     0,
		"MOBILE_FCM":       1,
		"MOBILE_HMS":       2,
		"MOBILE_APNS_TEXT": 3,
		"MOBILE_APNS_CALL": 4,
		"PWA_FCM":          5,
		"PWA_APNS":         6,
		"MOBILE_RUSTORE":   7,
	}
)

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

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

func (PushToken_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes[0].Descriptor()
}

func (PushToken_Type) Type() protoreflect.EnumType {
	return &file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes[0]
}

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

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

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

const (
	// Значение не указано
	PushTokenPaging_ORDER_BY_TYPE_UNKNOWN PushTokenPaging_OrderByType = 0
	// По идентификатору
	PushTokenPaging_ID PushTokenPaging_OrderByType = 1
	// По времени создания
	PushTokenPaging_CREATED_AT PushTokenPaging_OrderByType = 2
	// По времени изменения
	PushTokenPaging_CHANGED_AT PushTokenPaging_OrderByType = 3
)

// Enum value maps for PushTokenPaging_OrderByType.
var (
	PushTokenPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "ID",
		2: "CREATED_AT",
		3: "CHANGED_AT",
	}
	PushTokenPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"ID":                    1,
		"CREATED_AT":            2,
		"CHANGED_AT":            3,
	}
)

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

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

func (PushTokenPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes[1].Descriptor()
}

func (PushTokenPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes[1]
}

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

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

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

const (
	// Значение не указано
	PushTokenPaging_DIRECTION_TYPE_UNKNOWN PushTokenPaging_DirectionType = 0
	// От большего к меньшему
	PushTokenPaging_DESC PushTokenPaging_DirectionType = 1
	// От меньшего к большему
	PushTokenPaging_ASC PushTokenPaging_DirectionType = 2
)

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

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

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

func (PushTokenPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes[2].Descriptor()
}

func (PushTokenPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes[2]
}

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

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

// Пуш-токен.
// # Описание модели
type PushToken struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор.
	// # Диапазон: 0..2147483647
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Тип
	Type PushToken_Type `protobuf:"varint,2,opt,name=type,proto3,enum=keyapis.notification.v1.PushToken_Type" json:"type,omitempty"`
	// Токен.
	// # Диапазон: 16..256
	Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"`
	// Идентификатор устройства пользователя.
	// # Тип: Guid
	UserAppId string `protobuf:"bytes,4,opt,name=user_app_id,json=userAppId,proto3" json:"user_app_id,omitempty"`
	// Идентификатор пользователя.
	// # Диапазон: 1..2147483647
	UserId *wrapperspb.Int32Value `protobuf:"bytes,5,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Дата и время создания.
	// # Тип: DateTime
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении.
	// Является версией объекта.
	// # Тип: DateTime
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Версия приложения.
	// # Диапазон: 3..256
	AppVersion string `protobuf:"bytes,8,opt,name=app_version,json=appVersion,proto3" json:"app_version,omitempty"`
}

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

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

func (*PushToken) ProtoMessage() {}

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

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

func (x *PushToken) GetType() PushToken_Type {
	if x != nil {
		return x.Type
	}
	return PushToken_TYPE_UNKNOWN
}

func (x *PushToken) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *PushToken) GetUserAppId() string {
	if x != nil {
		return x.UserAppId
	}
	return ""
}

func (x *PushToken) GetUserId() *wrapperspb.Int32Value {
	if x != nil {
		return x.UserId
	}
	return nil
}

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

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

func (x *PushToken) GetAppVersion() string {
	if x != nil {
		return x.AppVersion
	}
	return ""
}

// Фильтр по пуш-токенам
type PushTokenFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По типам пуш-токенов
	Types []PushToken_Type `protobuf:"varint,1,rep,packed,name=types,proto3,enum=keyapis.notification.v1.PushToken_Type" json:"types,omitempty"`
	// По идентификаторам устройств пользователя.
	// # Тип: Guid
	UserAppIds []string `protobuf:"bytes,2,rep,name=user_app_ids,json=userAppIds,proto3" json:"user_app_ids,omitempty"`
	// По идентификаторам пользователя
	UserIds []int32 `protobuf:"varint,3,rep,packed,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"`
	// От даты создания включительно (>=)
	BeginCreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=begin_created_at,json=beginCreatedAt,proto3" json:"begin_created_at,omitempty"`
	// До даты создания (<)
	EndCreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_created_at,json=endCreatedAt,proto3" json:"end_created_at,omitempty"`
	// От даты изменения включительно (>=)
	BeginChangedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=begin_changed_at,json=beginChangedAt,proto3" json:"begin_changed_at,omitempty"`
	// До даты изменения (<)
	EndChangedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=end_changed_at,json=endChangedAt,proto3" json:"end_changed_at,omitempty"`
}

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

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

func (*PushTokenFilter) ProtoMessage() {}

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

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

func (x *PushTokenFilter) GetUserAppIds() []string {
	if x != nil {
		return x.UserAppIds
	}
	return nil
}

func (x *PushTokenFilter) GetUserIds() []int32 {
	if x != nil {
		return x.UserIds
	}
	return nil
}

func (x *PushTokenFilter) GetBeginCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.BeginCreatedAt
	}
	return nil
}

func (x *PushTokenFilter) GetEndCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.EndCreatedAt
	}
	return nil
}

func (x *PushTokenFilter) GetBeginChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.BeginChangedAt
	}
	return nil
}

func (x *PushTokenFilter) GetEndChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.EndChangedAt
	}
	return nil
}

// Постраничный вывод
type PushTokenPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// Если значение не передано, то будет взято значение по умолчанию.
	// # По умолчанию: ID
	OrderByType PushTokenPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.notification.v1.PushTokenPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// # По умолчанию: DESC
	DirectionType PushTokenPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.notification.v1.PushTokenPaging_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 *PushTokenPaging) Reset() {
	*x = PushTokenPaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PushTokenPaging) ProtoMessage() {}

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

func (x *PushTokenPaging) GetOrderByType() PushTokenPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return PushTokenPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *PushTokenPaging) GetDirectionType() PushTokenPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return PushTokenPaging_DIRECTION_TYPE_UNKNOWN
}

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

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

// Запрос на создание/изменение пуш-токена
type PostPushTokenRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Пуш-токен
	Data *PushToken `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*PostPushTokenRequest) ProtoMessage() {}

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

func (x *PostPushTokenRequest) GetData() *PushToken {
	if x != nil {
		return x.Data
	}
	return nil
}

// Ответ на запрос на создание/изменение пуш-токена
type PostPushTokenResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип ответа
	//
	// Types that are assignable to Type:
	//
	//	*PostPushTokenResponse_Data
	//	*PostPushTokenResponse_Error_
	Type isPostPushTokenResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*PostPushTokenResponse) ProtoMessage() {}

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

func (m *PostPushTokenResponse) GetType() isPostPushTokenResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostPushTokenResponse) GetData() *PushToken {
	if x, ok := x.GetType().(*PostPushTokenResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostPushTokenResponse) GetError() *PostPushTokenResponse_Error {
	if x, ok := x.GetType().(*PostPushTokenResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostPushTokenResponse_Type interface {
	isPostPushTokenResponse_Type()
}

type PostPushTokenResponse_Data struct {
	// Пуш-токен
	Data *PushToken `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*PostPushTokenResponse_Data) isPostPushTokenResponse_Type() {}

func (*PostPushTokenResponse_Error_) isPostPushTokenResponse_Type() {}

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

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

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

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

func (*GetPushTokenListRequest) ProtoMessage() {}

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

func (x *GetPushTokenListRequest) GetFilter() *PushTokenFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetPushTokenListRequest) GetPagination() isGetPushTokenListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetPushTokenListRequest) GetPaging() *PushTokenPaging {
	if x, ok := x.GetPagination().(*GetPushTokenListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetPushTokenListRequest_Pagination interface {
	isGetPushTokenListRequest_Pagination()
}

type GetPushTokenListRequest_Paging struct {
	// Стандартный постраничный вывод
	Paging *PushTokenPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetPushTokenListRequest_Paging) isGetPushTokenListRequest_Pagination() {}

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

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

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

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

func (*GetPushTokenCountRequest) ProtoMessage() {}

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

func (x *GetPushTokenCountRequest) GetFilter() *PushTokenFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

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

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

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

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

func (*GetPushTokenCountResponse) ProtoMessage() {}

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

func (m *GetPushTokenCountResponse) GetType() isGetPushTokenCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

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

func (x *GetPushTokenCountResponse) GetError() *GetPushTokenCountResponse_Error {
	if x, ok := x.GetType().(*GetPushTokenCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetPushTokenCountResponse_Type interface {
	isGetPushTokenCountResponse_Type()
}

type GetPushTokenCountResponse_Data struct {
	// Всего пуш-токенов
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

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

func (*GetPushTokenCountResponse_Data) isGetPushTokenCountResponse_Type() {}

func (*GetPushTokenCountResponse_Error_) isGetPushTokenCountResponse_Type() {}

// Ответ на получение списка пуш-токенов
type GetPushTokenListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*GetPushTokenListResponse) ProtoMessage() {}

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

func (m *GetPushTokenListResponse) GetType() isGetPushTokenListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetPushTokenListResponse) GetData() *PushToken {
	if x, ok := x.GetType().(*GetPushTokenListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetPushTokenListResponse) GetError() *GetPushTokenListResponse_Error {
	if x, ok := x.GetType().(*GetPushTokenListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetPushTokenListResponse_Type interface {
	isGetPushTokenListResponse_Type()
}

type GetPushTokenListResponse_Data struct {
	// Пуш-токен
	Data *PushToken `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

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

func (*GetPushTokenListResponse_Data) isGetPushTokenListResponse_Type() {}

func (*GetPushTokenListResponse_Error_) isGetPushTokenListResponse_Type() {}

// Запрос удаления пуш-токена
type DeletePushTokenRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*DeletePushTokenRequest) ProtoMessage() {}

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

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

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

	// Тип ответа
	//
	// Types that are assignable to Type:
	//
	//	*DeletePushTokenResponse_Error_
	Type isDeletePushTokenResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*DeletePushTokenResponse) ProtoMessage() {}

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

func (m *DeletePushTokenResponse) GetType() isDeletePushTokenResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *DeletePushTokenResponse) GetError() *DeletePushTokenResponse_Error {
	if x, ok := x.GetType().(*DeletePushTokenResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isDeletePushTokenResponse_Type interface {
	isDeletePushTokenResponse_Type()
}

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

func (*DeletePushTokenResponse_Error_) isDeletePushTokenResponse_Type() {}

// Запрос удаления пуш-токенов по идентификатору пользователя
type DeletePushTokenUserIdRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор пользователя.
	// # Диапазон: 1..2147483647
	UserId int32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
}

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

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

func (*DeletePushTokenUserIdRequest) ProtoMessage() {}

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

func (x *DeletePushTokenUserIdRequest) GetUserId() int32 {
	if x != nil {
		return x.UserId
	}
	return 0
}

// Ответ на запрос удаления пуш-токенов по идентификатору пользователя
type DeletePushTokenUserIdResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип ответа
	//
	// Types that are assignable to Type:
	//
	//	*DeletePushTokenUserIdResponse_Error_
	Type isDeletePushTokenUserIdResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*DeletePushTokenUserIdResponse) ProtoMessage() {}

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

func (m *DeletePushTokenUserIdResponse) GetType() isDeletePushTokenUserIdResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *DeletePushTokenUserIdResponse) GetError() *DeletePushTokenUserIdResponse_Error {
	if x, ok := x.GetType().(*DeletePushTokenUserIdResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isDeletePushTokenUserIdResponse_Type interface {
	isDeletePushTokenUserIdResponse_Type()
}

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

func (*DeletePushTokenUserIdResponse_Error_) isDeletePushTokenUserIdResponse_Type() {}

// Запрос удаления пуш-токена по идентификатору устройства пользователя
type DeletePushTokenUserAppIdRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор устройства пользователя.
	// # Тип: Guid
	UserAppId string `protobuf:"bytes,1,opt,name=user_app_id,json=userAppId,proto3" json:"user_app_id,omitempty"`
}

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

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

func (*DeletePushTokenUserAppIdRequest) ProtoMessage() {}

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

func (x *DeletePushTokenUserAppIdRequest) GetUserAppId() string {
	if x != nil {
		return x.UserAppId
	}
	return ""
}

// Ответ на запрос удаления пуш-токена по идентификатору устройства пользователя
type DeletePushTokenUserAppIdResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип ответа
	//
	// Types that are assignable to Type:
	//
	//	*DeletePushTokenUserAppIdResponse_Error_
	Type isDeletePushTokenUserAppIdResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*DeletePushTokenUserAppIdResponse) ProtoMessage() {}

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

func (m *DeletePushTokenUserAppIdResponse) GetType() isDeletePushTokenUserAppIdResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *DeletePushTokenUserAppIdResponse) GetError() *DeletePushTokenUserAppIdResponse_Error {
	if x, ok := x.GetType().(*DeletePushTokenUserAppIdResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isDeletePushTokenUserAppIdResponse_Type interface {
	isDeletePushTokenUserAppIdResponse_Type()
}

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

func (*DeletePushTokenUserAppIdResponse_Error_) isDeletePushTokenUserAppIdResponse_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_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[15]
		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_notification_v1_keyapis_notification_push_token_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 ValidationError.ProtoReflect.Descriptor instead.
func (*ValidationError) Descriptor() ([]byte, []int) {
	return file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescGZIP(), []int{15}
}

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 PushToken_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Reason:
	//
	//	*PushToken_ValidationError_UserAppId
	Reason isPushToken_ValidationError_Reason `protobuf_oneof:"reason"`
}

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

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

func (*PushToken_ValidationError) ProtoMessage() {}

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

func (m *PushToken_ValidationError) GetReason() isPushToken_ValidationError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PushToken_ValidationError) GetUserAppId() *PushToken_ValidationError_UserAppIdInvalid {
	if x, ok := x.GetReason().(*PushToken_ValidationError_UserAppId); ok {
		return x.UserAppId
	}
	return nil
}

type isPushToken_ValidationError_Reason interface {
	isPushToken_ValidationError_Reason()
}

type PushToken_ValidationError_UserAppId struct {
	// Передан некоректный идентификатор устройства пользователя
	UserAppId *PushToken_ValidationError_UserAppIdInvalid `protobuf:"bytes,1,opt,name=user_app_id,json=userAppId,proto3,oneof"`
}

func (*PushToken_ValidationError_UserAppId) isPushToken_ValidationError_Reason() {}

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

	// Types that are assignable to Reason:
	//
	//	*PushToken_SavingError_UserAppIdExists_
	//	*PushToken_SavingError_Conflict_
	Reason isPushToken_SavingError_Reason `protobuf_oneof:"reason"`
}

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

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

func (*PushToken_SavingError) ProtoMessage() {}

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

func (m *PushToken_SavingError) GetReason() isPushToken_SavingError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PushToken_SavingError) GetUserAppIdExists() *PushToken_SavingError_UserAppIdExists {
	if x, ok := x.GetReason().(*PushToken_SavingError_UserAppIdExists_); ok {
		return x.UserAppIdExists
	}
	return nil
}

func (x *PushToken_SavingError) GetConflict() *PushToken_SavingError_Conflict {
	if x, ok := x.GetReason().(*PushToken_SavingError_Conflict_); ok {
		return x.Conflict
	}
	return nil
}

type isPushToken_SavingError_Reason interface {
	isPushToken_SavingError_Reason()
}

type PushToken_SavingError_UserAppIdExists_ struct {
	// Идентификатор устройства пользователя уже используется
	UserAppIdExists *PushToken_SavingError_UserAppIdExists `protobuf:"bytes,1,opt,name=user_app_id_exists,json=userAppIdExists,proto3,oneof"`
}

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

func (*PushToken_SavingError_UserAppIdExists_) isPushToken_SavingError_Reason() {}

func (*PushToken_SavingError_Conflict_) isPushToken_SavingError_Reason() {}

// Причины:
// - Cодержит значение не Guid
type PushToken_ValidationError_UserAppIdInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PushToken_ValidationError_UserAppIdInvalid) ProtoMessage() {}

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

// Причины:
//   - Переданный индентификатор устройства пользователя уже существует с другим токеном
type PushToken_SavingError_UserAppIdExists struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PushToken_SavingError_UserAppIdExists) ProtoMessage() {}

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

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

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

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

func (*PushToken_SavingError_Conflict) ProtoMessage() {}

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

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

	// Types that are assignable to Reason:
	//
	//	*PushTokenFilter_ValidationError_UserAppIds
	Reason isPushTokenFilter_ValidationError_Reason `protobuf_oneof:"reason"`
}

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

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

func (*PushTokenFilter_ValidationError) ProtoMessage() {}

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

func (m *PushTokenFilter_ValidationError) GetReason() isPushTokenFilter_ValidationError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PushTokenFilter_ValidationError) GetUserAppIds() *PushTokenFilter_ValidationError_UserAppIdsInvalid {
	if x, ok := x.GetReason().(*PushTokenFilter_ValidationError_UserAppIds); ok {
		return x.UserAppIds
	}
	return nil
}

type isPushTokenFilter_ValidationError_Reason interface {
	isPushTokenFilter_ValidationError_Reason()
}

type PushTokenFilter_ValidationError_UserAppIds struct {
	// Идентификаторы устройств пользователя переданы некоректно
	UserAppIds *PushTokenFilter_ValidationError_UserAppIdsInvalid `protobuf:"bytes,1,opt,name=user_app_ids,json=userAppIds,proto3,oneof"`
}

func (*PushTokenFilter_ValidationError_UserAppIds) isPushTokenFilter_ValidationError_Reason() {}

// Причины:
// - Cодержит значение не Guid
type PushTokenFilter_ValidationError_UserAppIdsInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PushTokenFilter_ValidationError_UserAppIdsInvalid) ProtoMessage() {}

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

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

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

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

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

func (*PushTokenPaging_ValidationError) ProtoMessage() {}

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

func (m *PushTokenPaging_ValidationError) GetReason() isPushTokenPaging_ValidationError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PushTokenPaging_ValidationError) GetLimit() *PushTokenPaging_ValidationError_LimitInvalid {
	if x, ok := x.GetReason().(*PushTokenPaging_ValidationError_Limit); ok {
		return x.Limit
	}
	return nil
}

func (x *PushTokenPaging_ValidationError) GetOffset() *PushTokenPaging_ValidationError_OffsetInvalid {
	if x, ok := x.GetReason().(*PushTokenPaging_ValidationError_Offset); ok {
		return x.Offset
	}
	return nil
}

type isPushTokenPaging_ValidationError_Reason interface {
	isPushTokenPaging_ValidationError_Reason()
}

type PushTokenPaging_ValidationError_Limit struct {
	// Количество передано некорректно
	Limit *PushTokenPaging_ValidationError_LimitInvalid `protobuf:"bytes,1,opt,name=limit,proto3,oneof"`
}

type PushTokenPaging_ValidationError_Offset struct {
	// Сдвиг передан некорректно
	Offset *PushTokenPaging_ValidationError_OffsetInvalid `protobuf:"bytes,2,opt,name=offset,proto3,oneof"`
}

func (*PushTokenPaging_ValidationError_Limit) isPushTokenPaging_ValidationError_Reason() {}

func (*PushTokenPaging_ValidationError_Offset) isPushTokenPaging_ValidationError_Reason() {}

// Причины:
// - Значение количества < 0 или > 100
type PushTokenPaging_ValidationError_LimitInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PushTokenPaging_ValidationError_LimitInvalid) ProtoMessage() {}

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

// Причины:
// - Значение сдвига < 0
type PushTokenPaging_ValidationError_OffsetInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PushTokenPaging_ValidationError_OffsetInvalid) ProtoMessage() {}

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

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

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

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

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

func (*PostPushTokenResponse_Error) ProtoMessage() {}

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

func (m *PostPushTokenResponse_Error) GetReason() isPostPushTokenResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
func (x *PostPushTokenResponse_Error) GetPushTokenValidation() *PushToken_ValidationError {
	if x, ok := x.GetReason().(*PostPushTokenResponse_Error_PushTokenValidation); ok {
		return x.PushTokenValidation
	}
	return nil
}

func (x *PostPushTokenResponse_Error) GetPushTokenSaving() *PushToken_SavingError {
	if x, ok := x.GetReason().(*PostPushTokenResponse_Error_PushTokenSaving); ok {
		return x.PushTokenSaving
	}
	return nil
}

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

type isPostPushTokenResponse_Error_Reason interface {
	isPostPushTokenResponse_Error_Reason()
}

type PostPushTokenResponse_Error_PushTokenValidation struct {
	// Ошибка валидации пуш-токена
	//
	// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
	PushTokenValidation *PushToken_ValidationError `protobuf:"bytes,1,opt,name=push_token_validation,json=pushTokenValidation,proto3,oneof"`
}

type PostPushTokenResponse_Error_PushTokenSaving struct {
	// Ошибка сохранения пуш-токена
	PushTokenSaving *PushToken_SavingError `protobuf:"bytes,2,opt,name=push_token_saving,json=pushTokenSaving,proto3,oneof"`
}

type PostPushTokenResponse_Error_Validation struct {
	// Ошибка валидации пуш-токена
	Validation *ValidationError `protobuf:"bytes,3,opt,name=validation,proto3,oneof"`
}

func (*PostPushTokenResponse_Error_PushTokenValidation) isPostPushTokenResponse_Error_Reason() {}

func (*PostPushTokenResponse_Error_PushTokenSaving) isPostPushTokenResponse_Error_Reason() {}

func (*PostPushTokenResponse_Error_Validation) isPostPushTokenResponse_Error_Reason() {}

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

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

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

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

func (*GetPushTokenCountResponse_Error) ProtoMessage() {}

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

func (m *GetPushTokenCountResponse_Error) GetReason() isGetPushTokenCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
func (x *GetPushTokenCountResponse_Error) GetPushTokenFilterValidation() *PushTokenFilter_ValidationError {
	if x, ok := x.GetReason().(*GetPushTokenCountResponse_Error_PushTokenFilterValidation); ok {
		return x.PushTokenFilterValidation
	}
	return nil
}

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

type isGetPushTokenCountResponse_Error_Reason interface {
	isGetPushTokenCountResponse_Error_Reason()
}

type GetPushTokenCountResponse_Error_PushTokenFilterValidation struct {
	// Ошибка фильтрации
	//
	// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
	PushTokenFilterValidation *PushTokenFilter_ValidationError `protobuf:"bytes,1,opt,name=push_token_filter_validation,json=pushTokenFilterValidation,proto3,oneof"`
}

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

func (*GetPushTokenCountResponse_Error_PushTokenFilterValidation) isGetPushTokenCountResponse_Error_Reason() {
}

func (*GetPushTokenCountResponse_Error_Validation) isGetPushTokenCountResponse_Error_Reason() {}

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

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

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

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

func (*GetPushTokenListResponse_Error) ProtoMessage() {}

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

func (m *GetPushTokenListResponse_Error) GetReason() isGetPushTokenListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
func (x *GetPushTokenListResponse_Error) GetPushTokenFilterValidation() *PushTokenFilter_ValidationError {
	if x, ok := x.GetReason().(*GetPushTokenListResponse_Error_PushTokenFilterValidation); ok {
		return x.PushTokenFilterValidation
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
func (x *GetPushTokenListResponse_Error) GetPushTokenPagingValidation() *PushTokenPaging_ValidationError {
	if x, ok := x.GetReason().(*GetPushTokenListResponse_Error_PushTokenPagingValidation); ok {
		return x.PushTokenPagingValidation
	}
	return nil
}

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

type isGetPushTokenListResponse_Error_Reason interface {
	isGetPushTokenListResponse_Error_Reason()
}

type GetPushTokenListResponse_Error_PushTokenFilterValidation struct {
	// Ошибка фильтрации
	//
	// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
	PushTokenFilterValidation *PushTokenFilter_ValidationError `protobuf:"bytes,1,opt,name=push_token_filter_validation,json=pushTokenFilterValidation,proto3,oneof"`
}

type GetPushTokenListResponse_Error_PushTokenPagingValidation struct {
	// Ошибка пагинации по страницам
	//
	// Deprecated: Marked as deprecated in keyapis/notification/v1/keyapis_notification_push_token_v1.proto.
	PushTokenPagingValidation *PushTokenPaging_ValidationError `protobuf:"bytes,2,opt,name=push_token_paging_validation,json=pushTokenPagingValidation,proto3,oneof"`
}

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

func (*GetPushTokenListResponse_Error_PushTokenFilterValidation) isGetPushTokenListResponse_Error_Reason() {
}

func (*GetPushTokenListResponse_Error_PushTokenPagingValidation) isGetPushTokenListResponse_Error_Reason() {
}

func (*GetPushTokenListResponse_Error_Validation) isGetPushTokenListResponse_Error_Reason() {}

// Ошибка удаления пуш-токена
type DeletePushTokenResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*DeletePushTokenResponse_Error) ProtoMessage() {}

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

func (m *DeletePushTokenResponse_Error) GetReason() isDeletePushTokenResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isDeletePushTokenResponse_Error_Reason interface {
	isDeletePushTokenResponse_Error_Reason()
}

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

func (*DeletePushTokenResponse_Error_Validation) isDeletePushTokenResponse_Error_Reason() {}

// Ошибка удаления пуш-токенов
type DeletePushTokenUserIdResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*DeletePushTokenUserIdResponse_Error) ProtoMessage() {}

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

func (m *DeletePushTokenUserIdResponse_Error) GetReason() isDeletePushTokenUserIdResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isDeletePushTokenUserIdResponse_Error_Reason interface {
	isDeletePushTokenUserIdResponse_Error_Reason()
}

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

func (*DeletePushTokenUserIdResponse_Error_Validation) isDeletePushTokenUserIdResponse_Error_Reason() {
}

// Ошибка удаления пуш-токена
type DeletePushTokenUserAppIdResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

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

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

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

func (*DeletePushTokenUserAppIdResponse_Error) ProtoMessage() {}

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

func (m *DeletePushTokenUserAppIdResponse_Error) GetReason() isDeletePushTokenUserAppIdResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

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

type isDeletePushTokenUserAppIdResponse_Error_Reason interface {
	isDeletePushTokenUserAppIdResponse_Error_Reason()
}

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

func (*DeletePushTokenUserAppIdResponse_Error_Validation) isDeletePushTokenUserAppIdResponse_Error_Reason() {
}

var File_keyapis_notification_v1_keyapis_notification_push_token_v1_proto protoreflect.FileDescriptor

var file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDesc = []byte{
	0x0a, 0x40, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70,
	0x75, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x17, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61,
	0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 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, 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, 0x1e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77,
	0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69,
	0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xac, 0x07, 0x0a, 0x09, 0x50,
	0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05,
	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70,
	0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x75,
	0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
	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, 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, 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, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x5f, 0x76, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x96, 0x01, 0x0a, 0x0f,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
	0x65, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e,
	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70,
	0x49, 0x64, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x00, 0x52, 0x09, 0x75, 0x73, 0x65,
	0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x1a, 0x12, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70,
	0x70, 0x49, 0x64, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x1a, 0xfc, 0x01, 0x0a, 0x0b, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x12, 0x6d, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70,
	0x5f, 0x69, 0x64, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x3e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66,
	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73,
	0x48, 0x00, 0x52, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x45, 0x78, 0x69,
	0x73, 0x74, 0x73, 0x12, 0x55, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x11, 0x0a, 0x0f, 0x55, 0x73,
	0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x1a, 0x0a, 0x0a,
	0x08, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61,
	0x73, 0x6f, 0x6e, 0x22, 0x93, 0x01, 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, 0x0e,
	0x0a, 0x0a, 0x4d, 0x4f, 0x42, 0x49, 0x4c, 0x45, 0x5f, 0x46, 0x43, 0x4d, 0x10, 0x01, 0x12, 0x0e,
	0x0a, 0x0a, 0x4d, 0x4f, 0x42, 0x49, 0x4c, 0x45, 0x5f, 0x48, 0x4d, 0x53, 0x10, 0x02, 0x12, 0x14,
	0x0a, 0x10, 0x4d, 0x4f, 0x42, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x50, 0x4e, 0x53, 0x5f, 0x54, 0x45,
	0x58, 0x54, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x42, 0x49, 0x4c, 0x45, 0x5f, 0x41,
	0x50, 0x4e, 0x53, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x57,
	0x41, 0x5f, 0x46, 0x43, 0x4d, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x57, 0x41, 0x5f, 0x41,
	0x50, 0x4e, 0x53, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x4f, 0x42, 0x49, 0x4c, 0x45, 0x5f,
	0x52, 0x55, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x07, 0x22, 0xc0, 0x04, 0x0a, 0x0f, 0x50, 0x75,
	0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3d, 0x0a,
	0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0c,
	0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x73, 0x12, 0x19,
	0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05,
	0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x10, 0x62, 0x65, 0x67,
	0x69, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
	0x0e, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
	0x40, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41,
	0x74, 0x12, 0x44, 0x0a, 0x10, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67,
	0x65, 0x64, 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, 0x0e, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x43, 0x68,
	0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x65, 0x6e, 0x64, 0x5f, 0x63,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 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, 0x0c, 0x65, 0x6e, 0x64,
	0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x1a, 0xa0, 0x01, 0x0a, 0x0f, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x6e, 0x0a,
	0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f,
	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75,
	0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x55, 0x73,
	0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x73, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48,
	0x00, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x73, 0x1a, 0x13, 0x0a,
	0x11, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x73, 0x49, 0x6e, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x8a, 0x05, 0x0a,
	0x0f, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67,
	0x12, 0x58, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x5d, 0x0a, 0x0e, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73,
	0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x1a, 0xfd, 0x01, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5d, 0x0a, 0x05, 0x6c,
	0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x60, 0x0a, 0x06, 0x6f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x0e, 0x0a, 0x0c,
	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x1a, 0x0f, 0x0a, 0x0d,
	0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x08, 0x0a,
	0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72,
	0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f,
	0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
	0x00, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45,
	0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x41,
	0x4e, 0x47, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 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, 0x53, 0x0a, 0x14, 0x50, 0x6f, 0x73,
	0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x3b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe5,
	0x03, 0x0a, 0x15, 0x50, 0x6f, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x12, 0x4c, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x34, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x1a, 0xbb, 0x02, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x7e, 0x0a, 0x15, 0x70, 0x75,
	0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x14, 0xfa,
	0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45,
	0x44, 0x18, 0x01, 0x48, 0x00, 0x52, 0x13, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x11, 0x70, 0x75,
	0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x53, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 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, 0xad, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x75,
	0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73,
	0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e,
	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73,
	0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73,
	0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x22, 0xff, 0x02, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 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, 0x50, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 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, 0xf1, 0x01, 0x0a, 0x05, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x12, 0x91, 0x01, 0x0a, 0x1c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x14, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44,
	0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x48, 0x00, 0x52, 0x19, 0x70,
	0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 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, 0xb5, 0x04, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x75,
	0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x22, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a,
	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 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, 0x85,
	0x03, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x91, 0x01, 0x0a, 0x1c, 0x70, 0x75, 0x73,
	0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x14, 0xfa, 0xd2, 0xe4, 0x93, 0x02,
	0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x48,
	0x00, 0x52, 0x19, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x91, 0x01, 0x0a,
	0x1c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x67, 0x69,
	0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f,
	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75,
	0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x14, 0xfa,
	0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45,
	0x44, 0x18, 0x01, 0x48, 0x00, 0x52, 0x19, 0x70, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e,
	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x2d,
	0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd0, 0x01,
	0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
	0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x05, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x5d, 0x0a, 0x05, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x3c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1c, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0xdc,
	0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x54, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52,
	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x5d, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12,
	0x4a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f,
	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x46, 0x0a,
	0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x23, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72,
	0x41, 0x70, 0x70, 0x49, 0x64, 0x22, 0xe2, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70,
	0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72,
	0x72, 0x6f, 0x72, 0x1a, 0x5d, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4a, 0x0a, 0x0a,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x28, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66,
	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0xc3, 0x08, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x9a, 0x01, 0x0a, 0x0d, 0x50,
	0x6f, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2d, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x75, 0x73,
	0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0xa7, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50,
	0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x6e, 0x6f, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f,
	0x70, 0x75, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30,
	0x01, 0x12, 0xa9, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x31, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
	0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x75, 0x73,
	0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xa2, 0x01,
	0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65,
	0x6e, 0x12, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x2a, 0x24, 0x2f, 0x6e,
	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x76, 0x31, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x7b, 0x69,
	0x64, 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73,
	0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12,
	0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70,
	0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x2a, 0x39, 0x2f, 0x6e,
	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x76, 0x31, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f,
	0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xc1, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49,
	0x64, 0x12, 0x35, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49,
	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x75, 0x73, 0x68, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66,
	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70,
	0x75, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69,
	0x64, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x42, 0xc4, 0x01, 0x0a, 0x1a,
	0x72, 0x75, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x6e, 0x6f, 0x74, 0x69, 0x66,
	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x1a, 0x4b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
	0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x03, 0x50, 0x00, 0x5a, 0x18, 0x2f, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x76, 0x31, 0xd8, 0x01, 0x01, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x15, 0x4b, 0x45, 0x59,
	0x41, 0x50, 0x49, 0x53, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x56, 0x31, 0xaa, 0x02, 0x17, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x4e, 0x6f, 0x74,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x4b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x19, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x3a, 0x3a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x3a,
	0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescOnce sync.Once
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescData = file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDesc
)

func file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescGZIP() []byte {
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescData)
	})
	return file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDescData
}

var file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
var file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_goTypes = []interface{}{
	(PushToken_Type)(0),                                       // 0: keyapis.notification.v1.PushToken.Type
	(PushTokenPaging_OrderByType)(0),                          // 1: keyapis.notification.v1.PushTokenPaging.OrderByType
	(PushTokenPaging_DirectionType)(0),                        // 2: keyapis.notification.v1.PushTokenPaging.DirectionType
	(*PushToken)(nil),                                         // 3: keyapis.notification.v1.PushToken
	(*PushTokenFilter)(nil),                                   // 4: keyapis.notification.v1.PushTokenFilter
	(*PushTokenPaging)(nil),                                   // 5: keyapis.notification.v1.PushTokenPaging
	(*PostPushTokenRequest)(nil),                              // 6: keyapis.notification.v1.PostPushTokenRequest
	(*PostPushTokenResponse)(nil),                             // 7: keyapis.notification.v1.PostPushTokenResponse
	(*GetPushTokenListRequest)(nil),                           // 8: keyapis.notification.v1.GetPushTokenListRequest
	(*GetPushTokenCountRequest)(nil),                          // 9: keyapis.notification.v1.GetPushTokenCountRequest
	(*GetPushTokenCountResponse)(nil),                         // 10: keyapis.notification.v1.GetPushTokenCountResponse
	(*GetPushTokenListResponse)(nil),                          // 11: keyapis.notification.v1.GetPushTokenListResponse
	(*DeletePushTokenRequest)(nil),                            // 12: keyapis.notification.v1.DeletePushTokenRequest
	(*DeletePushTokenResponse)(nil),                           // 13: keyapis.notification.v1.DeletePushTokenResponse
	(*DeletePushTokenUserIdRequest)(nil),                      // 14: keyapis.notification.v1.DeletePushTokenUserIdRequest
	(*DeletePushTokenUserIdResponse)(nil),                     // 15: keyapis.notification.v1.DeletePushTokenUserIdResponse
	(*DeletePushTokenUserAppIdRequest)(nil),                   // 16: keyapis.notification.v1.DeletePushTokenUserAppIdRequest
	(*DeletePushTokenUserAppIdResponse)(nil),                  // 17: keyapis.notification.v1.DeletePushTokenUserAppIdResponse
	(*ValidationError)(nil),                                   // 18: keyapis.notification.v1.ValidationError
	(*PushToken_ValidationError)(nil),                         // 19: keyapis.notification.v1.PushToken.ValidationError
	(*PushToken_SavingError)(nil),                             // 20: keyapis.notification.v1.PushToken.SavingError
	(*PushToken_ValidationError_UserAppIdInvalid)(nil),        // 21: keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid
	(*PushToken_SavingError_UserAppIdExists)(nil),             // 22: keyapis.notification.v1.PushToken.SavingError.UserAppIdExists
	(*PushToken_SavingError_Conflict)(nil),                    // 23: keyapis.notification.v1.PushToken.SavingError.Conflict
	(*PushTokenFilter_ValidationError)(nil),                   // 24: keyapis.notification.v1.PushTokenFilter.ValidationError
	(*PushTokenFilter_ValidationError_UserAppIdsInvalid)(nil), // 25: keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid
	(*PushTokenPaging_ValidationError)(nil),                   // 26: keyapis.notification.v1.PushTokenPaging.ValidationError
	(*PushTokenPaging_ValidationError_LimitInvalid)(nil),      // 27: keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid
	(*PushTokenPaging_ValidationError_OffsetInvalid)(nil),     // 28: keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid
	(*PostPushTokenResponse_Error)(nil),                       // 29: keyapis.notification.v1.PostPushTokenResponse.Error
	(*GetPushTokenCountResponse_Error)(nil),                   // 30: keyapis.notification.v1.GetPushTokenCountResponse.Error
	(*GetPushTokenListResponse_Error)(nil),                    // 31: keyapis.notification.v1.GetPushTokenListResponse.Error
	(*DeletePushTokenResponse_Error)(nil),                     // 32: keyapis.notification.v1.DeletePushTokenResponse.Error
	(*DeletePushTokenUserIdResponse_Error)(nil),               // 33: keyapis.notification.v1.DeletePushTokenUserIdResponse.Error
	(*DeletePushTokenUserAppIdResponse_Error)(nil),            // 34: keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error
	(*wrapperspb.Int32Value)(nil),                             // 35: google.protobuf.Int32Value
	(*timestamppb.Timestamp)(nil),                             // 36: google.protobuf.Timestamp
}
var file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_depIdxs = []int32{
	0,  // 0: keyapis.notification.v1.PushToken.type:type_name -> keyapis.notification.v1.PushToken.Type
	35, // 1: keyapis.notification.v1.PushToken.user_id:type_name -> google.protobuf.Int32Value
	36, // 2: keyapis.notification.v1.PushToken.created_at:type_name -> google.protobuf.Timestamp
	36, // 3: keyapis.notification.v1.PushToken.changed_at:type_name -> google.protobuf.Timestamp
	0,  // 4: keyapis.notification.v1.PushTokenFilter.types:type_name -> keyapis.notification.v1.PushToken.Type
	36, // 5: keyapis.notification.v1.PushTokenFilter.begin_created_at:type_name -> google.protobuf.Timestamp
	36, // 6: keyapis.notification.v1.PushTokenFilter.end_created_at:type_name -> google.protobuf.Timestamp
	36, // 7: keyapis.notification.v1.PushTokenFilter.begin_changed_at:type_name -> google.protobuf.Timestamp
	36, // 8: keyapis.notification.v1.PushTokenFilter.end_changed_at:type_name -> google.protobuf.Timestamp
	1,  // 9: keyapis.notification.v1.PushTokenPaging.order_by_type:type_name -> keyapis.notification.v1.PushTokenPaging.OrderByType
	2,  // 10: keyapis.notification.v1.PushTokenPaging.direction_type:type_name -> keyapis.notification.v1.PushTokenPaging.DirectionType
	3,  // 11: keyapis.notification.v1.PostPushTokenRequest.data:type_name -> keyapis.notification.v1.PushToken
	3,  // 12: keyapis.notification.v1.PostPushTokenResponse.data:type_name -> keyapis.notification.v1.PushToken
	29, // 13: keyapis.notification.v1.PostPushTokenResponse.error:type_name -> keyapis.notification.v1.PostPushTokenResponse.Error
	4,  // 14: keyapis.notification.v1.GetPushTokenListRequest.filter:type_name -> keyapis.notification.v1.PushTokenFilter
	5,  // 15: keyapis.notification.v1.GetPushTokenListRequest.paging:type_name -> keyapis.notification.v1.PushTokenPaging
	4,  // 16: keyapis.notification.v1.GetPushTokenCountRequest.filter:type_name -> keyapis.notification.v1.PushTokenFilter
	30, // 17: keyapis.notification.v1.GetPushTokenCountResponse.error:type_name -> keyapis.notification.v1.GetPushTokenCountResponse.Error
	3,  // 18: keyapis.notification.v1.GetPushTokenListResponse.data:type_name -> keyapis.notification.v1.PushToken
	31, // 19: keyapis.notification.v1.GetPushTokenListResponse.error:type_name -> keyapis.notification.v1.GetPushTokenListResponse.Error
	32, // 20: keyapis.notification.v1.DeletePushTokenResponse.error:type_name -> keyapis.notification.v1.DeletePushTokenResponse.Error
	33, // 21: keyapis.notification.v1.DeletePushTokenUserIdResponse.error:type_name -> keyapis.notification.v1.DeletePushTokenUserIdResponse.Error
	34, // 22: keyapis.notification.v1.DeletePushTokenUserAppIdResponse.error:type_name -> keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error
	21, // 23: keyapis.notification.v1.PushToken.ValidationError.user_app_id:type_name -> keyapis.notification.v1.PushToken.ValidationError.UserAppIdInvalid
	22, // 24: keyapis.notification.v1.PushToken.SavingError.user_app_id_exists:type_name -> keyapis.notification.v1.PushToken.SavingError.UserAppIdExists
	23, // 25: keyapis.notification.v1.PushToken.SavingError.conflict:type_name -> keyapis.notification.v1.PushToken.SavingError.Conflict
	25, // 26: keyapis.notification.v1.PushTokenFilter.ValidationError.user_app_ids:type_name -> keyapis.notification.v1.PushTokenFilter.ValidationError.UserAppIdsInvalid
	27, // 27: keyapis.notification.v1.PushTokenPaging.ValidationError.limit:type_name -> keyapis.notification.v1.PushTokenPaging.ValidationError.LimitInvalid
	28, // 28: keyapis.notification.v1.PushTokenPaging.ValidationError.offset:type_name -> keyapis.notification.v1.PushTokenPaging.ValidationError.OffsetInvalid
	19, // 29: keyapis.notification.v1.PostPushTokenResponse.Error.push_token_validation:type_name -> keyapis.notification.v1.PushToken.ValidationError
	20, // 30: keyapis.notification.v1.PostPushTokenResponse.Error.push_token_saving:type_name -> keyapis.notification.v1.PushToken.SavingError
	18, // 31: keyapis.notification.v1.PostPushTokenResponse.Error.validation:type_name -> keyapis.notification.v1.ValidationError
	24, // 32: keyapis.notification.v1.GetPushTokenCountResponse.Error.push_token_filter_validation:type_name -> keyapis.notification.v1.PushTokenFilter.ValidationError
	18, // 33: keyapis.notification.v1.GetPushTokenCountResponse.Error.validation:type_name -> keyapis.notification.v1.ValidationError
	24, // 34: keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_filter_validation:type_name -> keyapis.notification.v1.PushTokenFilter.ValidationError
	26, // 35: keyapis.notification.v1.GetPushTokenListResponse.Error.push_token_paging_validation:type_name -> keyapis.notification.v1.PushTokenPaging.ValidationError
	18, // 36: keyapis.notification.v1.GetPushTokenListResponse.Error.validation:type_name -> keyapis.notification.v1.ValidationError
	18, // 37: keyapis.notification.v1.DeletePushTokenResponse.Error.validation:type_name -> keyapis.notification.v1.ValidationError
	18, // 38: keyapis.notification.v1.DeletePushTokenUserIdResponse.Error.validation:type_name -> keyapis.notification.v1.ValidationError
	18, // 39: keyapis.notification.v1.DeletePushTokenUserAppIdResponse.Error.validation:type_name -> keyapis.notification.v1.ValidationError
	6,  // 40: keyapis.notification.v1.PushTokenService.PostPushToken:input_type -> keyapis.notification.v1.PostPushTokenRequest
	8,  // 41: keyapis.notification.v1.PushTokenService.GetPushTokenList:input_type -> keyapis.notification.v1.GetPushTokenListRequest
	9,  // 42: keyapis.notification.v1.PushTokenService.GetPushTokenCount:input_type -> keyapis.notification.v1.GetPushTokenCountRequest
	12, // 43: keyapis.notification.v1.PushTokenService.DeletePushToken:input_type -> keyapis.notification.v1.DeletePushTokenRequest
	16, // 44: keyapis.notification.v1.PushTokenService.DeletePushTokenUserAppId:input_type -> keyapis.notification.v1.DeletePushTokenUserAppIdRequest
	14, // 45: keyapis.notification.v1.PushTokenService.DeletePushTokenUserId:input_type -> keyapis.notification.v1.DeletePushTokenUserIdRequest
	7,  // 46: keyapis.notification.v1.PushTokenService.PostPushToken:output_type -> keyapis.notification.v1.PostPushTokenResponse
	11, // 47: keyapis.notification.v1.PushTokenService.GetPushTokenList:output_type -> keyapis.notification.v1.GetPushTokenListResponse
	10, // 48: keyapis.notification.v1.PushTokenService.GetPushTokenCount:output_type -> keyapis.notification.v1.GetPushTokenCountResponse
	13, // 49: keyapis.notification.v1.PushTokenService.DeletePushToken:output_type -> keyapis.notification.v1.DeletePushTokenResponse
	17, // 50: keyapis.notification.v1.PushTokenService.DeletePushTokenUserAppId:output_type -> keyapis.notification.v1.DeletePushTokenUserAppIdResponse
	15, // 51: keyapis.notification.v1.PushTokenService.DeletePushTokenUserId:output_type -> keyapis.notification.v1.DeletePushTokenUserIdResponse
	46, // [46:52] is the sub-list for method output_type
	40, // [40:46] is the sub-list for method input_type
	40, // [40:40] is the sub-list for extension type_name
	40, // [40:40] is the sub-list for extension extendee
	0,  // [0:40] is the sub-list for field type_name
}

func init() { file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_init() }
func file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_init() {
	if File_keyapis_notification_v1_keyapis_notification_push_token_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushTokenFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushTokenPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostPushTokenRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostPushTokenResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPushTokenListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPushTokenCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPushTokenCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPushTokenListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenUserIdRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenUserIdResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenUserAppIdRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenUserAppIdResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[15].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_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushToken_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushToken_SavingError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushToken_ValidationError_UserAppIdInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushToken_SavingError_UserAppIdExists); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushToken_SavingError_Conflict); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushTokenFilter_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushTokenFilter_ValidationError_UserAppIdsInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushTokenPaging_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushTokenPaging_ValidationError_LimitInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PushTokenPaging_ValidationError_OffsetInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostPushTokenResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPushTokenCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPushTokenListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenUserIdResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeletePushTokenUserAppIdResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[4].OneofWrappers = []interface{}{
		(*PostPushTokenResponse_Data)(nil),
		(*PostPushTokenResponse_Error_)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[5].OneofWrappers = []interface{}{
		(*GetPushTokenListRequest_Paging)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*GetPushTokenCountResponse_Data)(nil),
		(*GetPushTokenCountResponse_Error_)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[8].OneofWrappers = []interface{}{
		(*GetPushTokenListResponse_Data)(nil),
		(*GetPushTokenListResponse_Error_)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[10].OneofWrappers = []interface{}{
		(*DeletePushTokenResponse_Error_)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[12].OneofWrappers = []interface{}{
		(*DeletePushTokenUserIdResponse_Error_)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[14].OneofWrappers = []interface{}{
		(*DeletePushTokenUserAppIdResponse_Error_)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[16].OneofWrappers = []interface{}{
		(*PushToken_ValidationError_UserAppId)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[17].OneofWrappers = []interface{}{
		(*PushToken_SavingError_UserAppIdExists_)(nil),
		(*PushToken_SavingError_Conflict_)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[21].OneofWrappers = []interface{}{
		(*PushTokenFilter_ValidationError_UserAppIds)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[23].OneofWrappers = []interface{}{
		(*PushTokenPaging_ValidationError_Limit)(nil),
		(*PushTokenPaging_ValidationError_Offset)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[26].OneofWrappers = []interface{}{
		(*PostPushTokenResponse_Error_PushTokenValidation)(nil),
		(*PostPushTokenResponse_Error_PushTokenSaving)(nil),
		(*PostPushTokenResponse_Error_Validation)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*GetPushTokenCountResponse_Error_PushTokenFilterValidation)(nil),
		(*GetPushTokenCountResponse_Error_Validation)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[28].OneofWrappers = []interface{}{
		(*GetPushTokenListResponse_Error_PushTokenFilterValidation)(nil),
		(*GetPushTokenListResponse_Error_PushTokenPagingValidation)(nil),
		(*GetPushTokenListResponse_Error_Validation)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[29].OneofWrappers = []interface{}{
		(*DeletePushTokenResponse_Error_Validation)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[30].OneofWrappers = []interface{}{
		(*DeletePushTokenUserIdResponse_Error_Validation)(nil),
	}
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes[31].OneofWrappers = []interface{}{
		(*DeletePushTokenUserAppIdResponse_Error_Validation)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDesc,
			NumEnums:      3,
			NumMessages:   32,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_msgTypes,
	}.Build()
	File_keyapis_notification_v1_keyapis_notification_push_token_v1_proto = out.File
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_rawDesc = nil
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_goTypes = nil
	file_keyapis_notification_v1_keyapis_notification_push_token_v1_proto_depIdxs = nil
}
