// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.21.9
// source: vcsec.proto

package vcsec

import (
	errors "github.com/teslamotors/vehicle-command/pkg/protocol/protobuf/errors"
	keys "github.com/teslamotors/vehicle-command/pkg/protocol/protobuf/keys"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

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

type SignatureType int32

const (
	SignatureType_SIGNATURE_TYPE_NONE        SignatureType = 0
	SignatureType_SIGNATURE_TYPE_PRESENT_KEY SignatureType = 2
)

// Enum value maps for SignatureType.
var (
	SignatureType_name = map[int32]string{
		0: "SIGNATURE_TYPE_NONE",
		2: "SIGNATURE_TYPE_PRESENT_KEY",
	}
	SignatureType_value = map[string]int32{
		"SIGNATURE_TYPE_NONE":        0,
		"SIGNATURE_TYPE_PRESENT_KEY": 2,
	}
)

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

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

func (SignatureType) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[0].Descriptor()
}

func (SignatureType) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[0]
}

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

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

type KeyFormFactor int32

const (
	KeyFormFactor_KEY_FORM_FACTOR_UNKNOWN        KeyFormFactor = 0
	KeyFormFactor_KEY_FORM_FACTOR_NFC_CARD       KeyFormFactor = 1
	KeyFormFactor_KEY_FORM_FACTOR_IOS_DEVICE     KeyFormFactor = 6
	KeyFormFactor_KEY_FORM_FACTOR_ANDROID_DEVICE KeyFormFactor = 7
	KeyFormFactor_KEY_FORM_FACTOR_CLOUD_KEY      KeyFormFactor = 9
)

// Enum value maps for KeyFormFactor.
var (
	KeyFormFactor_name = map[int32]string{
		0: "KEY_FORM_FACTOR_UNKNOWN",
		1: "KEY_FORM_FACTOR_NFC_CARD",
		6: "KEY_FORM_FACTOR_IOS_DEVICE",
		7: "KEY_FORM_FACTOR_ANDROID_DEVICE",
		9: "KEY_FORM_FACTOR_CLOUD_KEY",
	}
	KeyFormFactor_value = map[string]int32{
		"KEY_FORM_FACTOR_UNKNOWN":        0,
		"KEY_FORM_FACTOR_NFC_CARD":       1,
		"KEY_FORM_FACTOR_IOS_DEVICE":     6,
		"KEY_FORM_FACTOR_ANDROID_DEVICE": 7,
		"KEY_FORM_FACTOR_CLOUD_KEY":      9,
	}
)

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

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

func (KeyFormFactor) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[1].Descriptor()
}

func (KeyFormFactor) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[1]
}

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

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

type InformationRequestType int32

const (
	InformationRequestType_INFORMATION_REQUEST_TYPE_GET_STATUS               InformationRequestType = 0
	InformationRequestType_INFORMATION_REQUEST_TYPE_GET_WHITELIST_INFO       InformationRequestType = 5
	InformationRequestType_INFORMATION_REQUEST_TYPE_GET_WHITELIST_ENTRY_INFO InformationRequestType = 6
)

// Enum value maps for InformationRequestType.
var (
	InformationRequestType_name = map[int32]string{
		0: "INFORMATION_REQUEST_TYPE_GET_STATUS",
		5: "INFORMATION_REQUEST_TYPE_GET_WHITELIST_INFO",
		6: "INFORMATION_REQUEST_TYPE_GET_WHITELIST_ENTRY_INFO",
	}
	InformationRequestType_value = map[string]int32{
		"INFORMATION_REQUEST_TYPE_GET_STATUS":               0,
		"INFORMATION_REQUEST_TYPE_GET_WHITELIST_INFO":       5,
		"INFORMATION_REQUEST_TYPE_GET_WHITELIST_ENTRY_INFO": 6,
	}
)

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

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

func (InformationRequestType) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[2].Descriptor()
}

func (InformationRequestType) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[2]
}

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

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

type RKEAction_E int32

const (
	RKEAction_E_RKE_ACTION_UNLOCK              RKEAction_E = 0
	RKEAction_E_RKE_ACTION_LOCK                RKEAction_E = 1
	RKEAction_E_RKE_ACTION_REMOTE_DRIVE        RKEAction_E = 20
	RKEAction_E_RKE_ACTION_AUTO_SECURE_VEHICLE RKEAction_E = 29
	RKEAction_E_RKE_ACTION_WAKE_VEHICLE        RKEAction_E = 30
)

// Enum value maps for RKEAction_E.
var (
	RKEAction_E_name = map[int32]string{
		0:  "RKE_ACTION_UNLOCK",
		1:  "RKE_ACTION_LOCK",
		20: "RKE_ACTION_REMOTE_DRIVE",
		29: "RKE_ACTION_AUTO_SECURE_VEHICLE",
		30: "RKE_ACTION_WAKE_VEHICLE",
	}
	RKEAction_E_value = map[string]int32{
		"RKE_ACTION_UNLOCK":              0,
		"RKE_ACTION_LOCK":                1,
		"RKE_ACTION_REMOTE_DRIVE":        20,
		"RKE_ACTION_AUTO_SECURE_VEHICLE": 29,
		"RKE_ACTION_WAKE_VEHICLE":        30,
	}
)

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

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

func (RKEAction_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[3].Descriptor()
}

func (RKEAction_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[3]
}

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

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

type ClosureMoveType_E int32

const (
	ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE  ClosureMoveType_E = 0
	ClosureMoveType_E_CLOSURE_MOVE_TYPE_MOVE  ClosureMoveType_E = 1
	ClosureMoveType_E_CLOSURE_MOVE_TYPE_STOP  ClosureMoveType_E = 2
	ClosureMoveType_E_CLOSURE_MOVE_TYPE_OPEN  ClosureMoveType_E = 3
	ClosureMoveType_E_CLOSURE_MOVE_TYPE_CLOSE ClosureMoveType_E = 4
)

// Enum value maps for ClosureMoveType_E.
var (
	ClosureMoveType_E_name = map[int32]string{
		0: "CLOSURE_MOVE_TYPE_NONE",
		1: "CLOSURE_MOVE_TYPE_MOVE",
		2: "CLOSURE_MOVE_TYPE_STOP",
		3: "CLOSURE_MOVE_TYPE_OPEN",
		4: "CLOSURE_MOVE_TYPE_CLOSE",
	}
	ClosureMoveType_E_value = map[string]int32{
		"CLOSURE_MOVE_TYPE_NONE":  0,
		"CLOSURE_MOVE_TYPE_MOVE":  1,
		"CLOSURE_MOVE_TYPE_STOP":  2,
		"CLOSURE_MOVE_TYPE_OPEN":  3,
		"CLOSURE_MOVE_TYPE_CLOSE": 4,
	}
)

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

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

func (ClosureMoveType_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[4].Descriptor()
}

func (ClosureMoveType_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[4]
}

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

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

type OperationStatus_E int32

const (
	OperationStatus_E_OPERATIONSTATUS_OK    OperationStatus_E = 0
	OperationStatus_E_OPERATIONSTATUS_WAIT  OperationStatus_E = 1
	OperationStatus_E_OPERATIONSTATUS_ERROR OperationStatus_E = 2
)

// Enum value maps for OperationStatus_E.
var (
	OperationStatus_E_name = map[int32]string{
		0: "OPERATIONSTATUS_OK",
		1: "OPERATIONSTATUS_WAIT",
		2: "OPERATIONSTATUS_ERROR",
	}
	OperationStatus_E_value = map[string]int32{
		"OPERATIONSTATUS_OK":    0,
		"OPERATIONSTATUS_WAIT":  1,
		"OPERATIONSTATUS_ERROR": 2,
	}
)

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

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

func (OperationStatus_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[5].Descriptor()
}

func (OperationStatus_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[5]
}

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

// Deprecated: Use OperationStatus_E.Descriptor instead.
func (OperationStatus_E) EnumDescriptor() ([]byte, []int) {
	return file_vcsec_proto_rawDescGZIP(), []int{5}
}

type SignedMessageInformation_E int32

const (
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_NONE                                SignedMessageInformation_E = 0
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_UNKNOWN                       SignedMessageInformation_E = 1
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_NOT_ON_WHITELIST              SignedMessageInformation_E = 2
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_IV_SMALLER_THAN_EXPECTED      SignedMessageInformation_E = 3
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_INVALID_TOKEN                 SignedMessageInformation_E = 4
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_AND_COUNTER_INVALID     SignedMessageInformation_E = 5
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_AES_DECRYPT_AUTH              SignedMessageInformation_E = 6
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_INPUT                   SignedMessageInformation_E = 7
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_SIGNATURE               SignedMessageInformation_E = 8
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_START            SignedMessageInformation_E = 9
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_RESULT           SignedMessageInformation_E = 10
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_KEY        SignedMessageInformation_E = 11
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_TOKEN      SignedMessageInformation_E = 12
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_SIGNATURE_TOO_SHORT           SignedMessageInformation_E = 13
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_IS_INCORRECT_LENGTH     SignedMessageInformation_E = 14
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_INCORRECT_EPOCH               SignedMessageInformation_E = 15
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_IV_INCORRECT_LENGTH           SignedMessageInformation_E = 16
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_TIME_EXPIRED                  SignedMessageInformation_E = 17
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_NOT_PROVISIONED_WITH_IDENTITY SignedMessageInformation_E = 18
	SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_HASH_METADATA       SignedMessageInformation_E = 19
)

// Enum value maps for SignedMessageInformation_E.
var (
	SignedMessageInformation_E_name = map[int32]string{
		0:  "SIGNEDMESSAGE_INFORMATION_NONE",
		1:  "SIGNEDMESSAGE_INFORMATION_FAULT_UNKNOWN",
		2:  "SIGNEDMESSAGE_INFORMATION_FAULT_NOT_ON_WHITELIST",
		3:  "SIGNEDMESSAGE_INFORMATION_FAULT_IV_SMALLER_THAN_EXPECTED",
		4:  "SIGNEDMESSAGE_INFORMATION_FAULT_INVALID_TOKEN",
		5:  "SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_AND_COUNTER_INVALID",
		6:  "SIGNEDMESSAGE_INFORMATION_FAULT_AES_DECRYPT_AUTH",
		7:  "SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_INPUT",
		8:  "SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_SIGNATURE",
		9:  "SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_START",
		10: "SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_RESULT",
		11: "SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_KEY",
		12: "SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_TOKEN",
		13: "SIGNEDMESSAGE_INFORMATION_FAULT_SIGNATURE_TOO_SHORT",
		14: "SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_IS_INCORRECT_LENGTH",
		15: "SIGNEDMESSAGE_INFORMATION_FAULT_INCORRECT_EPOCH",
		16: "SIGNEDMESSAGE_INFORMATION_FAULT_IV_INCORRECT_LENGTH",
		17: "SIGNEDMESSAGE_INFORMATION_FAULT_TIME_EXPIRED",
		18: "SIGNEDMESSAGE_INFORMATION_FAULT_NOT_PROVISIONED_WITH_IDENTITY",
		19: "SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_HASH_METADATA",
	}
	SignedMessageInformation_E_value = map[string]int32{
		"SIGNEDMESSAGE_INFORMATION_NONE":                                0,
		"SIGNEDMESSAGE_INFORMATION_FAULT_UNKNOWN":                       1,
		"SIGNEDMESSAGE_INFORMATION_FAULT_NOT_ON_WHITELIST":              2,
		"SIGNEDMESSAGE_INFORMATION_FAULT_IV_SMALLER_THAN_EXPECTED":      3,
		"SIGNEDMESSAGE_INFORMATION_FAULT_INVALID_TOKEN":                 4,
		"SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_AND_COUNTER_INVALID":     5,
		"SIGNEDMESSAGE_INFORMATION_FAULT_AES_DECRYPT_AUTH":              6,
		"SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_INPUT":                   7,
		"SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_SIGNATURE":               8,
		"SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_START":            9,
		"SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_RESULT":           10,
		"SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_KEY":        11,
		"SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_TOKEN":      12,
		"SIGNEDMESSAGE_INFORMATION_FAULT_SIGNATURE_TOO_SHORT":           13,
		"SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_IS_INCORRECT_LENGTH":     14,
		"SIGNEDMESSAGE_INFORMATION_FAULT_INCORRECT_EPOCH":               15,
		"SIGNEDMESSAGE_INFORMATION_FAULT_IV_INCORRECT_LENGTH":           16,
		"SIGNEDMESSAGE_INFORMATION_FAULT_TIME_EXPIRED":                  17,
		"SIGNEDMESSAGE_INFORMATION_FAULT_NOT_PROVISIONED_WITH_IDENTITY": 18,
		"SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_HASH_METADATA":       19,
	}
)

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

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

func (SignedMessageInformation_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[6].Descriptor()
}

func (SignedMessageInformation_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[6]
}

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

// Deprecated: Use SignedMessageInformation_E.Descriptor instead.
func (SignedMessageInformation_E) EnumDescriptor() ([]byte, []int) {
	return file_vcsec_proto_rawDescGZIP(), []int{6}
}

type WhitelistOperationInformation_E int32

const (
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NONE                                                            WhitelistOperationInformation_E = 0
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_UNDOCUMENTED_ERROR                                              WhitelistOperationInformation_E = 1
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE_ONESELF                                 WhitelistOperationInformation_E = 2
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_KEYFOB_SLOTS_FULL                                               WhitelistOperationInformation_E = 3
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_WHITELIST_FULL                                                  WhitelistOperationInformation_E = 4
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_ADD                                            WhitelistOperationInformation_E = 5
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_INVALID_PUBLIC_KEY                                              WhitelistOperationInformation_E = 6
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE                                         WhitelistOperationInformation_E = 7
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_CHANGE_PERMISSIONS                             WhitelistOperationInformation_E = 8
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ELEVATE_OTHER_ABOVE_ONESELF                       WhitelistOperationInformation_E = 9
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_DEMOTE_SUPERIOR_TO_ONESELF                        WhitelistOperationInformation_E = 10
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_REMOVE_OWN_PERMISSIONS                            WhitelistOperationInformation_E = 11
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_PUBLIC_KEY_NOT_ON_WHITELIST                                     WhitelistOperationInformation_E = 12
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_THAT_IS_ALREADY_ON_THE_WHITELIST          WhitelistOperationInformation_E = 13
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NOT_ALLOWED_TO_ADD_UNLESS_ON_READER                             WhitelistOperationInformation_E = 14
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_FM_MODIFYING_OUTSIDE_OF_F_MODE                                  WhitelistOperationInformation_E = 15
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_ADD_PERMANENT_KEY                              WhitelistOperationInformation_E = 16
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_REMOVE_PERMANENT_KEY                           WhitelistOperationInformation_E = 17
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_KEYCHAIN_WHILE_FS_FULL                                          WhitelistOperationInformation_E = 18
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITHOUT_ROLE                              WhitelistOperationInformation_E = 19
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITH_SERVICE_ROLE                         WhitelistOperationInformation_E = 20
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NON_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH                  WhitelistOperationInformation_E = 21
	WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH_OUTSIDE_SERVICE_MODE WhitelistOperationInformation_E = 22
)

// Enum value maps for WhitelistOperationInformation_E.
var (
	WhitelistOperationInformation_E_name = map[int32]string{
		0:  "WHITELISTOPERATION_INFORMATION_NONE",
		1:  "WHITELISTOPERATION_INFORMATION_UNDOCUMENTED_ERROR",
		2:  "WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE_ONESELF",
		3:  "WHITELISTOPERATION_INFORMATION_KEYFOB_SLOTS_FULL",
		4:  "WHITELISTOPERATION_INFORMATION_WHITELIST_FULL",
		5:  "WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_ADD",
		6:  "WHITELISTOPERATION_INFORMATION_INVALID_PUBLIC_KEY",
		7:  "WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE",
		8:  "WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_CHANGE_PERMISSIONS",
		9:  "WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ELEVATE_OTHER_ABOVE_ONESELF",
		10: "WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_DEMOTE_SUPERIOR_TO_ONESELF",
		11: "WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_REMOVE_OWN_PERMISSIONS",
		12: "WHITELISTOPERATION_INFORMATION_PUBLIC_KEY_NOT_ON_WHITELIST",
		13: "WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_THAT_IS_ALREADY_ON_THE_WHITELIST",
		14: "WHITELISTOPERATION_INFORMATION_NOT_ALLOWED_TO_ADD_UNLESS_ON_READER",
		15: "WHITELISTOPERATION_INFORMATION_FM_MODIFYING_OUTSIDE_OF_F_MODE",
		16: "WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_ADD_PERMANENT_KEY",
		17: "WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_REMOVE_PERMANENT_KEY",
		18: "WHITELISTOPERATION_INFORMATION_KEYCHAIN_WHILE_FS_FULL",
		19: "WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITHOUT_ROLE",
		20: "WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITH_SERVICE_ROLE",
		21: "WHITELISTOPERATION_INFORMATION_NON_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH",
		22: "WHITELISTOPERATION_INFORMATION_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH_OUTSIDE_SERVICE_MODE",
	}
	WhitelistOperationInformation_E_value = map[string]int32{
		"WHITELISTOPERATION_INFORMATION_NONE":                                                            0,
		"WHITELISTOPERATION_INFORMATION_UNDOCUMENTED_ERROR":                                              1,
		"WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE_ONESELF":                                 2,
		"WHITELISTOPERATION_INFORMATION_KEYFOB_SLOTS_FULL":                                               3,
		"WHITELISTOPERATION_INFORMATION_WHITELIST_FULL":                                                  4,
		"WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_ADD":                                            5,
		"WHITELISTOPERATION_INFORMATION_INVALID_PUBLIC_KEY":                                              6,
		"WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE":                                         7,
		"WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_CHANGE_PERMISSIONS":                             8,
		"WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ELEVATE_OTHER_ABOVE_ONESELF":                       9,
		"WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_DEMOTE_SUPERIOR_TO_ONESELF":                        10,
		"WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_REMOVE_OWN_PERMISSIONS":                            11,
		"WHITELISTOPERATION_INFORMATION_PUBLIC_KEY_NOT_ON_WHITELIST":                                     12,
		"WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_THAT_IS_ALREADY_ON_THE_WHITELIST":          13,
		"WHITELISTOPERATION_INFORMATION_NOT_ALLOWED_TO_ADD_UNLESS_ON_READER":                             14,
		"WHITELISTOPERATION_INFORMATION_FM_MODIFYING_OUTSIDE_OF_F_MODE":                                  15,
		"WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_ADD_PERMANENT_KEY":                              16,
		"WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_REMOVE_PERMANENT_KEY":                           17,
		"WHITELISTOPERATION_INFORMATION_KEYCHAIN_WHILE_FS_FULL":                                          18,
		"WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITHOUT_ROLE":                              19,
		"WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITH_SERVICE_ROLE":                         20,
		"WHITELISTOPERATION_INFORMATION_NON_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH":                  21,
		"WHITELISTOPERATION_INFORMATION_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH_OUTSIDE_SERVICE_MODE": 22,
	}
)

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

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

func (WhitelistOperationInformation_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[7].Descriptor()
}

func (WhitelistOperationInformation_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[7]
}

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

// Deprecated: Use WhitelistOperationInformation_E.Descriptor instead.
func (WhitelistOperationInformation_E) EnumDescriptor() ([]byte, []int) {
	return file_vcsec_proto_rawDescGZIP(), []int{7}
}

type ClosureState_E int32

const (
	ClosureState_E_CLOSURESTATE_CLOSED         ClosureState_E = 0
	ClosureState_E_CLOSURESTATE_OPEN           ClosureState_E = 1
	ClosureState_E_CLOSURESTATE_AJAR           ClosureState_E = 2
	ClosureState_E_CLOSURESTATE_UNKNOWN        ClosureState_E = 3
	ClosureState_E_CLOSURESTATE_FAILED_UNLATCH ClosureState_E = 4
	ClosureState_E_CLOSURESTATE_OPENING        ClosureState_E = 5
	ClosureState_E_CLOSURESTATE_CLOSING        ClosureState_E = 6
)

// Enum value maps for ClosureState_E.
var (
	ClosureState_E_name = map[int32]string{
		0: "CLOSURESTATE_CLOSED",
		1: "CLOSURESTATE_OPEN",
		2: "CLOSURESTATE_AJAR",
		3: "CLOSURESTATE_UNKNOWN",
		4: "CLOSURESTATE_FAILED_UNLATCH",
		5: "CLOSURESTATE_OPENING",
		6: "CLOSURESTATE_CLOSING",
	}
	ClosureState_E_value = map[string]int32{
		"CLOSURESTATE_CLOSED":         0,
		"CLOSURESTATE_OPEN":           1,
		"CLOSURESTATE_AJAR":           2,
		"CLOSURESTATE_UNKNOWN":        3,
		"CLOSURESTATE_FAILED_UNLATCH": 4,
		"CLOSURESTATE_OPENING":        5,
		"CLOSURESTATE_CLOSING":        6,
	}
)

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

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

func (ClosureState_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[8].Descriptor()
}

func (ClosureState_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[8]
}

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

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

type VehicleLockState_E int32

const (
	VehicleLockState_E_VEHICLELOCKSTATE_UNLOCKED           VehicleLockState_E = 0
	VehicleLockState_E_VEHICLELOCKSTATE_LOCKED             VehicleLockState_E = 1
	VehicleLockState_E_VEHICLELOCKSTATE_INTERNAL_LOCKED    VehicleLockState_E = 2
	VehicleLockState_E_VEHICLELOCKSTATE_SELECTIVE_UNLOCKED VehicleLockState_E = 3
)

// Enum value maps for VehicleLockState_E.
var (
	VehicleLockState_E_name = map[int32]string{
		0: "VEHICLELOCKSTATE_UNLOCKED",
		1: "VEHICLELOCKSTATE_LOCKED",
		2: "VEHICLELOCKSTATE_INTERNAL_LOCKED",
		3: "VEHICLELOCKSTATE_SELECTIVE_UNLOCKED",
	}
	VehicleLockState_E_value = map[string]int32{
		"VEHICLELOCKSTATE_UNLOCKED":           0,
		"VEHICLELOCKSTATE_LOCKED":             1,
		"VEHICLELOCKSTATE_INTERNAL_LOCKED":    2,
		"VEHICLELOCKSTATE_SELECTIVE_UNLOCKED": 3,
	}
)

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

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

func (VehicleLockState_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[9].Descriptor()
}

func (VehicleLockState_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[9]
}

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

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

type VehicleSleepStatus_E int32

const (
	VehicleSleepStatus_E_VEHICLE_SLEEP_STATUS_UNKNOWN VehicleSleepStatus_E = 0
	VehicleSleepStatus_E_VEHICLE_SLEEP_STATUS_AWAKE   VehicleSleepStatus_E = 1
	VehicleSleepStatus_E_VEHICLE_SLEEP_STATUS_ASLEEP  VehicleSleepStatus_E = 2
)

// Enum value maps for VehicleSleepStatus_E.
var (
	VehicleSleepStatus_E_name = map[int32]string{
		0: "VEHICLE_SLEEP_STATUS_UNKNOWN",
		1: "VEHICLE_SLEEP_STATUS_AWAKE",
		2: "VEHICLE_SLEEP_STATUS_ASLEEP",
	}
	VehicleSleepStatus_E_value = map[string]int32{
		"VEHICLE_SLEEP_STATUS_UNKNOWN": 0,
		"VEHICLE_SLEEP_STATUS_AWAKE":   1,
		"VEHICLE_SLEEP_STATUS_ASLEEP":  2,
	}
)

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

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

func (VehicleSleepStatus_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[10].Descriptor()
}

func (VehicleSleepStatus_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[10]
}

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

// Deprecated: Use VehicleSleepStatus_E.Descriptor instead.
func (VehicleSleepStatus_E) EnumDescriptor() ([]byte, []int) {
	return file_vcsec_proto_rawDescGZIP(), []int{10}
}

type UserPresence_E int32

const (
	UserPresence_E_VEHICLE_USER_PRESENCE_UNKNOWN     UserPresence_E = 0
	UserPresence_E_VEHICLE_USER_PRESENCE_NOT_PRESENT UserPresence_E = 1
	UserPresence_E_VEHICLE_USER_PRESENCE_PRESENT     UserPresence_E = 2
)

// Enum value maps for UserPresence_E.
var (
	UserPresence_E_name = map[int32]string{
		0: "VEHICLE_USER_PRESENCE_UNKNOWN",
		1: "VEHICLE_USER_PRESENCE_NOT_PRESENT",
		2: "VEHICLE_USER_PRESENCE_PRESENT",
	}
	UserPresence_E_value = map[string]int32{
		"VEHICLE_USER_PRESENCE_UNKNOWN":     0,
		"VEHICLE_USER_PRESENCE_NOT_PRESENT": 1,
		"VEHICLE_USER_PRESENCE_PRESENT":     2,
	}
)

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

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

func (UserPresence_E) Descriptor() protoreflect.EnumDescriptor {
	return file_vcsec_proto_enumTypes[11].Descriptor()
}

func (UserPresence_E) Type() protoreflect.EnumType {
	return &file_vcsec_proto_enumTypes[11]
}

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

// Deprecated: Use UserPresence_E.Descriptor instead.
func (UserPresence_E) EnumDescriptor() ([]byte, []int) {
	return file_vcsec_proto_rawDescGZIP(), []int{11}
}

type SignedMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ProtobufMessageAsBytes []byte        `protobuf:"bytes,2,opt,name=protobufMessageAsBytes,proto3" json:"protobufMessageAsBytes,omitempty"`
	SignatureType          SignatureType `protobuf:"varint,3,opt,name=signatureType,proto3,enum=VCSEC.SignatureType" json:"signatureType,omitempty"`
}

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

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

func (*SignedMessage) ProtoMessage() {}

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

func (x *SignedMessage) GetProtobufMessageAsBytes() []byte {
	if x != nil {
		return x.ProtobufMessageAsBytes
	}
	return nil
}

func (x *SignedMessage) GetSignatureType() SignatureType {
	if x != nil {
		return x.SignatureType
	}
	return SignatureType_SIGNATURE_TYPE_NONE
}

type ToVCSECMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SignedMessage *SignedMessage `protobuf:"bytes,1,opt,name=signedMessage,proto3" json:"signedMessage,omitempty"`
}

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

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

func (*ToVCSECMessage) ProtoMessage() {}

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

func (x *ToVCSECMessage) GetSignedMessage() *SignedMessage {
	if x != nil {
		return x.SignedMessage
	}
	return nil
}

type KeyIdentifier struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PublicKeySHA1 []byte `protobuf:"bytes,1,opt,name=publicKeySHA1,proto3" json:"publicKeySHA1,omitempty"`
}

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

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

func (*KeyIdentifier) ProtoMessage() {}

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

func (x *KeyIdentifier) GetPublicKeySHA1() []byte {
	if x != nil {
		return x.PublicKeySHA1
	}
	return nil
}

type KeyMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	KeyFormFactor KeyFormFactor `protobuf:"varint,1,opt,name=keyFormFactor,proto3,enum=VCSEC.KeyFormFactor" json:"keyFormFactor,omitempty"`
}

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

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

func (*KeyMetadata) ProtoMessage() {}

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

func (x *KeyMetadata) GetKeyFormFactor() KeyFormFactor {
	if x != nil {
		return x.KeyFormFactor
	}
	return KeyFormFactor_KEY_FORM_FACTOR_UNKNOWN
}

type PublicKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PublicKeyRaw []byte `protobuf:"bytes,1,opt,name=PublicKeyRaw,proto3" json:"PublicKeyRaw,omitempty"`
}

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

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

func (*PublicKey) ProtoMessage() {}

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

func (x *PublicKey) GetPublicKeyRaw() []byte {
	if x != nil {
		return x.PublicKeyRaw
	}
	return nil
}

type WhitelistInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NumberOfEntries  uint32           `protobuf:"varint,1,opt,name=numberOfEntries,proto3" json:"numberOfEntries,omitempty"`
	WhitelistEntries []*KeyIdentifier `protobuf:"bytes,2,rep,name=whitelistEntries,proto3" json:"whitelistEntries,omitempty"`
	SlotMask         uint32           `protobuf:"varint,3,opt,name=slotMask,proto3" json:"slotMask,omitempty"`
}

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

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

func (*WhitelistInfo) ProtoMessage() {}

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

func (x *WhitelistInfo) GetNumberOfEntries() uint32 {
	if x != nil {
		return x.NumberOfEntries
	}
	return 0
}

func (x *WhitelistInfo) GetWhitelistEntries() []*KeyIdentifier {
	if x != nil {
		return x.WhitelistEntries
	}
	return nil
}

func (x *WhitelistInfo) GetSlotMask() uint32 {
	if x != nil {
		return x.SlotMask
	}
	return 0
}

type WhitelistEntryInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	KeyId          *KeyIdentifier `protobuf:"bytes,1,opt,name=keyId,proto3" json:"keyId,omitempty"`
	PublicKey      *PublicKey     `protobuf:"bytes,2,opt,name=publicKey,proto3" json:"publicKey,omitempty"`
	MetadataForKey *KeyMetadata   `protobuf:"bytes,4,opt,name=metadataForKey,proto3" json:"metadataForKey,omitempty"`
	Slot           uint32         `protobuf:"varint,6,opt,name=slot,proto3" json:"slot,omitempty"`
	KeyRole        keys.Role      `protobuf:"varint,7,opt,name=keyRole,proto3,enum=Keys.Role" json:"keyRole,omitempty"`
}

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

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

func (*WhitelistEntryInfo) ProtoMessage() {}

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

func (x *WhitelistEntryInfo) GetKeyId() *KeyIdentifier {
	if x != nil {
		return x.KeyId
	}
	return nil
}

func (x *WhitelistEntryInfo) GetPublicKey() *PublicKey {
	if x != nil {
		return x.PublicKey
	}
	return nil
}

func (x *WhitelistEntryInfo) GetMetadataForKey() *KeyMetadata {
	if x != nil {
		return x.MetadataForKey
	}
	return nil
}

func (x *WhitelistEntryInfo) GetSlot() uint32 {
	if x != nil {
		return x.Slot
	}
	return 0
}

func (x *WhitelistEntryInfo) GetKeyRole() keys.Role {
	if x != nil {
		return x.KeyRole
	}
	return keys.Role(0)
}

type InformationRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	InformationRequestType InformationRequestType `protobuf:"varint,1,opt,name=informationRequestType,proto3,enum=VCSEC.InformationRequestType" json:"informationRequestType,omitempty"`
	// Types that are assignable to Key:
	//	*InformationRequest_KeyId
	//	*InformationRequest_PublicKey
	//	*InformationRequest_Slot
	Key isInformationRequest_Key `protobuf_oneof:"key"`
}

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

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

func (*InformationRequest) ProtoMessage() {}

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

func (x *InformationRequest) GetInformationRequestType() InformationRequestType {
	if x != nil {
		return x.InformationRequestType
	}
	return InformationRequestType_INFORMATION_REQUEST_TYPE_GET_STATUS
}

func (m *InformationRequest) GetKey() isInformationRequest_Key {
	if m != nil {
		return m.Key
	}
	return nil
}

func (x *InformationRequest) GetKeyId() *KeyIdentifier {
	if x, ok := x.GetKey().(*InformationRequest_KeyId); ok {
		return x.KeyId
	}
	return nil
}

func (x *InformationRequest) GetPublicKey() []byte {
	if x, ok := x.GetKey().(*InformationRequest_PublicKey); ok {
		return x.PublicKey
	}
	return nil
}

func (x *InformationRequest) GetSlot() uint32 {
	if x, ok := x.GetKey().(*InformationRequest_Slot); ok {
		return x.Slot
	}
	return 0
}

type isInformationRequest_Key interface {
	isInformationRequest_Key()
}

type InformationRequest_KeyId struct {
	KeyId *KeyIdentifier `protobuf:"bytes,2,opt,name=keyId,proto3,oneof"`
}

type InformationRequest_PublicKey struct {
	PublicKey []byte `protobuf:"bytes,3,opt,name=publicKey,proto3,oneof"`
}

type InformationRequest_Slot struct {
	Slot uint32 `protobuf:"varint,4,opt,name=slot,proto3,oneof"`
}

func (*InformationRequest_KeyId) isInformationRequest_Key() {}

func (*InformationRequest_PublicKey) isInformationRequest_Key() {}

func (*InformationRequest_Slot) isInformationRequest_Key() {}

type ClosureMoveRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FrontDriverDoor    ClosureMoveType_E `protobuf:"varint,1,opt,name=frontDriverDoor,proto3,enum=VCSEC.ClosureMoveType_E" json:"frontDriverDoor,omitempty"`
	FrontPassengerDoor ClosureMoveType_E `protobuf:"varint,2,opt,name=frontPassengerDoor,proto3,enum=VCSEC.ClosureMoveType_E" json:"frontPassengerDoor,omitempty"`
	RearDriverDoor     ClosureMoveType_E `protobuf:"varint,3,opt,name=rearDriverDoor,proto3,enum=VCSEC.ClosureMoveType_E" json:"rearDriverDoor,omitempty"`
	RearPassengerDoor  ClosureMoveType_E `protobuf:"varint,4,opt,name=rearPassengerDoor,proto3,enum=VCSEC.ClosureMoveType_E" json:"rearPassengerDoor,omitempty"`
	RearTrunk          ClosureMoveType_E `protobuf:"varint,5,opt,name=rearTrunk,proto3,enum=VCSEC.ClosureMoveType_E" json:"rearTrunk,omitempty"`
	FrontTrunk         ClosureMoveType_E `protobuf:"varint,6,opt,name=frontTrunk,proto3,enum=VCSEC.ClosureMoveType_E" json:"frontTrunk,omitempty"`
	ChargePort         ClosureMoveType_E `protobuf:"varint,7,opt,name=chargePort,proto3,enum=VCSEC.ClosureMoveType_E" json:"chargePort,omitempty"`
	Tonneau            ClosureMoveType_E `protobuf:"varint,8,opt,name=tonneau,proto3,enum=VCSEC.ClosureMoveType_E" json:"tonneau,omitempty"`
}

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

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

func (*ClosureMoveRequest) ProtoMessage() {}

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

func (x *ClosureMoveRequest) GetFrontDriverDoor() ClosureMoveType_E {
	if x != nil {
		return x.FrontDriverDoor
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

func (x *ClosureMoveRequest) GetFrontPassengerDoor() ClosureMoveType_E {
	if x != nil {
		return x.FrontPassengerDoor
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

func (x *ClosureMoveRequest) GetRearDriverDoor() ClosureMoveType_E {
	if x != nil {
		return x.RearDriverDoor
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

func (x *ClosureMoveRequest) GetRearPassengerDoor() ClosureMoveType_E {
	if x != nil {
		return x.RearPassengerDoor
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

func (x *ClosureMoveRequest) GetRearTrunk() ClosureMoveType_E {
	if x != nil {
		return x.RearTrunk
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

func (x *ClosureMoveRequest) GetFrontTrunk() ClosureMoveType_E {
	if x != nil {
		return x.FrontTrunk
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

func (x *ClosureMoveRequest) GetChargePort() ClosureMoveType_E {
	if x != nil {
		return x.ChargePort
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

func (x *ClosureMoveRequest) GetTonneau() ClosureMoveType_E {
	if x != nil {
		return x.Tonneau
	}
	return ClosureMoveType_E_CLOSURE_MOVE_TYPE_NONE
}

type PermissionChange struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key               *PublicKey `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	SecondsToBeActive uint32     `protobuf:"varint,3,opt,name=secondsToBeActive,proto3" json:"secondsToBeActive,omitempty"`
	KeyRole           keys.Role  `protobuf:"varint,4,opt,name=keyRole,proto3,enum=Keys.Role" json:"keyRole,omitempty"`
}

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

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

func (*PermissionChange) ProtoMessage() {}

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

func (x *PermissionChange) GetKey() *PublicKey {
	if x != nil {
		return x.Key
	}
	return nil
}

func (x *PermissionChange) GetSecondsToBeActive() uint32 {
	if x != nil {
		return x.SecondsToBeActive
	}
	return 0
}

func (x *PermissionChange) GetKeyRole() keys.Role {
	if x != nil {
		return x.KeyRole
	}
	return keys.Role(0)
}

type ReplaceKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to KeyToReplace:
	//	*ReplaceKey_PublicKeyToReplace
	//	*ReplaceKey_SlotToReplace
	KeyToReplace isReplaceKey_KeyToReplace `protobuf_oneof:"keyToReplace"`
	KeyToAdd     *PublicKey                `protobuf:"bytes,3,opt,name=keyToAdd,proto3" json:"keyToAdd,omitempty"`
	KeyRole      keys.Role                 `protobuf:"varint,4,opt,name=keyRole,proto3,enum=Keys.Role" json:"keyRole,omitempty"`
	Impermanent  bool                      `protobuf:"varint,5,opt,name=impermanent,proto3" json:"impermanent,omitempty"`
}

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

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

func (*ReplaceKey) ProtoMessage() {}

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

func (m *ReplaceKey) GetKeyToReplace() isReplaceKey_KeyToReplace {
	if m != nil {
		return m.KeyToReplace
	}
	return nil
}

func (x *ReplaceKey) GetPublicKeyToReplace() *PublicKey {
	if x, ok := x.GetKeyToReplace().(*ReplaceKey_PublicKeyToReplace); ok {
		return x.PublicKeyToReplace
	}
	return nil
}

func (x *ReplaceKey) GetSlotToReplace() uint32 {
	if x, ok := x.GetKeyToReplace().(*ReplaceKey_SlotToReplace); ok {
		return x.SlotToReplace
	}
	return 0
}

func (x *ReplaceKey) GetKeyToAdd() *PublicKey {
	if x != nil {
		return x.KeyToAdd
	}
	return nil
}

func (x *ReplaceKey) GetKeyRole() keys.Role {
	if x != nil {
		return x.KeyRole
	}
	return keys.Role(0)
}

func (x *ReplaceKey) GetImpermanent() bool {
	if x != nil {
		return x.Impermanent
	}
	return false
}

type isReplaceKey_KeyToReplace interface {
	isReplaceKey_KeyToReplace()
}

type ReplaceKey_PublicKeyToReplace struct {
	PublicKeyToReplace *PublicKey `protobuf:"bytes,1,opt,name=publicKeyToReplace,proto3,oneof"`
}

type ReplaceKey_SlotToReplace struct {
	SlotToReplace uint32 `protobuf:"varint,2,opt,name=slotToReplace,proto3,oneof"`
}

func (*ReplaceKey_PublicKeyToReplace) isReplaceKey_KeyToReplace() {}

func (*ReplaceKey_SlotToReplace) isReplaceKey_KeyToReplace() {}

type WhitelistOperation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to SubMessage:
	//	*WhitelistOperation_AddPublicKeyToWhitelist
	//	*WhitelistOperation_RemovePublicKeyFromWhitelist
	//	*WhitelistOperation_AddPermissionsToPublicKey
	//	*WhitelistOperation_RemovePermissionsFromPublicKey
	//	*WhitelistOperation_AddKeyToWhitelistAndAddPermissions
	//	*WhitelistOperation_UpdateKeyAndPermissions
	//	*WhitelistOperation_AddImpermanentKey
	//	*WhitelistOperation_AddImpermanentKeyAndRemoveExisting
	//	*WhitelistOperation_RemoveAllImpermanentKeys
	//	*WhitelistOperation_ReplaceKey
	SubMessage     isWhitelistOperation_SubMessage `protobuf_oneof:"sub_message"`
	MetadataForKey *KeyMetadata                    `protobuf:"bytes,6,opt,name=metadataForKey,proto3" json:"metadataForKey,omitempty"`
}

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

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

func (*WhitelistOperation) ProtoMessage() {}

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

func (m *WhitelistOperation) GetSubMessage() isWhitelistOperation_SubMessage {
	if m != nil {
		return m.SubMessage
	}
	return nil
}

func (x *WhitelistOperation) GetAddPublicKeyToWhitelist() *PublicKey {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_AddPublicKeyToWhitelist); ok {
		return x.AddPublicKeyToWhitelist
	}
	return nil
}

func (x *WhitelistOperation) GetRemovePublicKeyFromWhitelist() *PublicKey {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_RemovePublicKeyFromWhitelist); ok {
		return x.RemovePublicKeyFromWhitelist
	}
	return nil
}

func (x *WhitelistOperation) GetAddPermissionsToPublicKey() *PermissionChange {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_AddPermissionsToPublicKey); ok {
		return x.AddPermissionsToPublicKey
	}
	return nil
}

func (x *WhitelistOperation) GetRemovePermissionsFromPublicKey() *PermissionChange {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_RemovePermissionsFromPublicKey); ok {
		return x.RemovePermissionsFromPublicKey
	}
	return nil
}

func (x *WhitelistOperation) GetAddKeyToWhitelistAndAddPermissions() *PermissionChange {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_AddKeyToWhitelistAndAddPermissions); ok {
		return x.AddKeyToWhitelistAndAddPermissions
	}
	return nil
}

func (x *WhitelistOperation) GetUpdateKeyAndPermissions() *PermissionChange {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_UpdateKeyAndPermissions); ok {
		return x.UpdateKeyAndPermissions
	}
	return nil
}

func (x *WhitelistOperation) GetAddImpermanentKey() *PermissionChange {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_AddImpermanentKey); ok {
		return x.AddImpermanentKey
	}
	return nil
}

func (x *WhitelistOperation) GetAddImpermanentKeyAndRemoveExisting() *PermissionChange {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_AddImpermanentKeyAndRemoveExisting); ok {
		return x.AddImpermanentKeyAndRemoveExisting
	}
	return nil
}

func (x *WhitelistOperation) GetRemoveAllImpermanentKeys() bool {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_RemoveAllImpermanentKeys); ok {
		return x.RemoveAllImpermanentKeys
	}
	return false
}

func (x *WhitelistOperation) GetReplaceKey() *ReplaceKey {
	if x, ok := x.GetSubMessage().(*WhitelistOperation_ReplaceKey); ok {
		return x.ReplaceKey
	}
	return nil
}

func (x *WhitelistOperation) GetMetadataForKey() *KeyMetadata {
	if x != nil {
		return x.MetadataForKey
	}
	return nil
}

type isWhitelistOperation_SubMessage interface {
	isWhitelistOperation_SubMessage()
}

type WhitelistOperation_AddPublicKeyToWhitelist struct {
	AddPublicKeyToWhitelist *PublicKey `protobuf:"bytes,1,opt,name=addPublicKeyToWhitelist,proto3,oneof"`
}

type WhitelistOperation_RemovePublicKeyFromWhitelist struct {
	RemovePublicKeyFromWhitelist *PublicKey `protobuf:"bytes,2,opt,name=removePublicKeyFromWhitelist,proto3,oneof"`
}

type WhitelistOperation_AddPermissionsToPublicKey struct {
	AddPermissionsToPublicKey *PermissionChange `protobuf:"bytes,3,opt,name=addPermissionsToPublicKey,proto3,oneof"`
}

type WhitelistOperation_RemovePermissionsFromPublicKey struct {
	RemovePermissionsFromPublicKey *PermissionChange `protobuf:"bytes,4,opt,name=removePermissionsFromPublicKey,proto3,oneof"`
}

type WhitelistOperation_AddKeyToWhitelistAndAddPermissions struct {
	AddKeyToWhitelistAndAddPermissions *PermissionChange `protobuf:"bytes,5,opt,name=addKeyToWhitelistAndAddPermissions,proto3,oneof"`
}

type WhitelistOperation_UpdateKeyAndPermissions struct {
	UpdateKeyAndPermissions *PermissionChange `protobuf:"bytes,7,opt,name=updateKeyAndPermissions,proto3,oneof"`
}

type WhitelistOperation_AddImpermanentKey struct {
	AddImpermanentKey *PermissionChange `protobuf:"bytes,8,opt,name=addImpermanentKey,proto3,oneof"`
}

type WhitelistOperation_AddImpermanentKeyAndRemoveExisting struct {
	AddImpermanentKeyAndRemoveExisting *PermissionChange `protobuf:"bytes,9,opt,name=addImpermanentKeyAndRemoveExisting,proto3,oneof"`
}

type WhitelistOperation_RemoveAllImpermanentKeys struct {
	RemoveAllImpermanentKeys bool `protobuf:"varint,16,opt,name=removeAllImpermanentKeys,proto3,oneof"`
}

type WhitelistOperation_ReplaceKey struct {
	ReplaceKey *ReplaceKey `protobuf:"bytes,17,opt,name=replaceKey,proto3,oneof"`
}

func (*WhitelistOperation_AddPublicKeyToWhitelist) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_RemovePublicKeyFromWhitelist) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_AddPermissionsToPublicKey) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_RemovePermissionsFromPublicKey) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_AddKeyToWhitelistAndAddPermissions) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_UpdateKeyAndPermissions) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_AddImpermanentKey) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_AddImpermanentKeyAndRemoveExisting) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_RemoveAllImpermanentKeys) isWhitelistOperation_SubMessage() {}

func (*WhitelistOperation_ReplaceKey) isWhitelistOperation_SubMessage() {}

type WhitelistOperationStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	WhitelistOperationInformation WhitelistOperationInformation_E `protobuf:"varint,1,opt,name=whitelistOperationInformation,proto3,enum=VCSEC.WhitelistOperationInformation_E" json:"whitelistOperationInformation,omitempty"`
	SignerOfOperation             *KeyIdentifier                  `protobuf:"bytes,2,opt,name=signerOfOperation,proto3" json:"signerOfOperation,omitempty"`
	OperationStatus               OperationStatus_E               `protobuf:"varint,3,opt,name=operationStatus,proto3,enum=VCSEC.OperationStatus_E" json:"operationStatus,omitempty"`
}

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

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

func (*WhitelistOperationStatus) ProtoMessage() {}

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

func (x *WhitelistOperationStatus) GetWhitelistOperationInformation() WhitelistOperationInformation_E {
	if x != nil {
		return x.WhitelistOperationInformation
	}
	return WhitelistOperationInformation_E_WHITELISTOPERATION_INFORMATION_NONE
}

func (x *WhitelistOperationStatus) GetSignerOfOperation() *KeyIdentifier {
	if x != nil {
		return x.SignerOfOperation
	}
	return nil
}

func (x *WhitelistOperationStatus) GetOperationStatus() OperationStatus_E {
	if x != nil {
		return x.OperationStatus
	}
	return OperationStatus_E_OPERATIONSTATUS_OK
}

type SignedMessageStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Counter                  uint32                     `protobuf:"varint,1,opt,name=counter,proto3" json:"counter,omitempty"`
	SignedMessageInformation SignedMessageInformation_E `protobuf:"varint,2,opt,name=signedMessageInformation,proto3,enum=VCSEC.SignedMessageInformation_E" json:"signedMessageInformation,omitempty"`
}

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

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

func (*SignedMessageStatus) ProtoMessage() {}

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

func (x *SignedMessageStatus) GetCounter() uint32 {
	if x != nil {
		return x.Counter
	}
	return 0
}

func (x *SignedMessageStatus) GetSignedMessageInformation() SignedMessageInformation_E {
	if x != nil {
		return x.SignedMessageInformation
	}
	return SignedMessageInformation_E_SIGNEDMESSAGE_INFORMATION_NONE
}

type CommandStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OperationStatus OperationStatus_E `protobuf:"varint,1,opt,name=operationStatus,proto3,enum=VCSEC.OperationStatus_E" json:"operationStatus,omitempty"`
	// Types that are assignable to SubMessage:
	//	*CommandStatus_SignedMessageStatus
	//	*CommandStatus_WhitelistOperationStatus
	SubMessage isCommandStatus_SubMessage `protobuf_oneof:"sub_message"`
}

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

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

func (*CommandStatus) ProtoMessage() {}

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

func (x *CommandStatus) GetOperationStatus() OperationStatus_E {
	if x != nil {
		return x.OperationStatus
	}
	return OperationStatus_E_OPERATIONSTATUS_OK
}

func (m *CommandStatus) GetSubMessage() isCommandStatus_SubMessage {
	if m != nil {
		return m.SubMessage
	}
	return nil
}

func (x *CommandStatus) GetSignedMessageStatus() *SignedMessageStatus {
	if x, ok := x.GetSubMessage().(*CommandStatus_SignedMessageStatus); ok {
		return x.SignedMessageStatus
	}
	return nil
}

func (x *CommandStatus) GetWhitelistOperationStatus() *WhitelistOperationStatus {
	if x, ok := x.GetSubMessage().(*CommandStatus_WhitelistOperationStatus); ok {
		return x.WhitelistOperationStatus
	}
	return nil
}

type isCommandStatus_SubMessage interface {
	isCommandStatus_SubMessage()
}

type CommandStatus_SignedMessageStatus struct {
	SignedMessageStatus *SignedMessageStatus `protobuf:"bytes,2,opt,name=signedMessageStatus,proto3,oneof"`
}

type CommandStatus_WhitelistOperationStatus struct {
	WhitelistOperationStatus *WhitelistOperationStatus `protobuf:"bytes,3,opt,name=whitelistOperationStatus,proto3,oneof"`
}

func (*CommandStatus_SignedMessageStatus) isCommandStatus_SubMessage() {}

func (*CommandStatus_WhitelistOperationStatus) isCommandStatus_SubMessage() {}

type UnsignedMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to SubMessage:
	//	*UnsignedMessage_InformationRequest
	//	*UnsignedMessage_RKEAction
	//	*UnsignedMessage_ClosureMoveRequest
	//	*UnsignedMessage_WhitelistOperation
	SubMessage isUnsignedMessage_SubMessage `protobuf_oneof:"sub_message"`
}

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

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

func (*UnsignedMessage) ProtoMessage() {}

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

func (m *UnsignedMessage) GetSubMessage() isUnsignedMessage_SubMessage {
	if m != nil {
		return m.SubMessage
	}
	return nil
}

func (x *UnsignedMessage) GetInformationRequest() *InformationRequest {
	if x, ok := x.GetSubMessage().(*UnsignedMessage_InformationRequest); ok {
		return x.InformationRequest
	}
	return nil
}

func (x *UnsignedMessage) GetRKEAction() RKEAction_E {
	if x, ok := x.GetSubMessage().(*UnsignedMessage_RKEAction); ok {
		return x.RKEAction
	}
	return RKEAction_E_RKE_ACTION_UNLOCK
}

func (x *UnsignedMessage) GetClosureMoveRequest() *ClosureMoveRequest {
	if x, ok := x.GetSubMessage().(*UnsignedMessage_ClosureMoveRequest); ok {
		return x.ClosureMoveRequest
	}
	return nil
}

func (x *UnsignedMessage) GetWhitelistOperation() *WhitelistOperation {
	if x, ok := x.GetSubMessage().(*UnsignedMessage_WhitelistOperation); ok {
		return x.WhitelistOperation
	}
	return nil
}

type isUnsignedMessage_SubMessage interface {
	isUnsignedMessage_SubMessage()
}

type UnsignedMessage_InformationRequest struct {
	InformationRequest *InformationRequest `protobuf:"bytes,1,opt,name=InformationRequest,proto3,oneof"`
}

type UnsignedMessage_RKEAction struct {
	RKEAction RKEAction_E `protobuf:"varint,2,opt,name=RKEAction,proto3,enum=VCSEC.RKEAction_E,oneof"`
}

type UnsignedMessage_ClosureMoveRequest struct {
	ClosureMoveRequest *ClosureMoveRequest `protobuf:"bytes,4,opt,name=closureMoveRequest,proto3,oneof"`
}

type UnsignedMessage_WhitelistOperation struct {
	WhitelistOperation *WhitelistOperation `protobuf:"bytes,16,opt,name=WhitelistOperation,proto3,oneof"`
}

func (*UnsignedMessage_InformationRequest) isUnsignedMessage_SubMessage() {}

func (*UnsignedMessage_RKEAction) isUnsignedMessage_SubMessage() {}

func (*UnsignedMessage_ClosureMoveRequest) isUnsignedMessage_SubMessage() {}

func (*UnsignedMessage_WhitelistOperation) isUnsignedMessage_SubMessage() {}

type ClosureStatuses struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FrontDriverDoor    ClosureState_E `protobuf:"varint,1,opt,name=frontDriverDoor,proto3,enum=VCSEC.ClosureState_E" json:"frontDriverDoor,omitempty"`
	FrontPassengerDoor ClosureState_E `protobuf:"varint,2,opt,name=frontPassengerDoor,proto3,enum=VCSEC.ClosureState_E" json:"frontPassengerDoor,omitempty"`
	RearDriverDoor     ClosureState_E `protobuf:"varint,3,opt,name=rearDriverDoor,proto3,enum=VCSEC.ClosureState_E" json:"rearDriverDoor,omitempty"`
	RearPassengerDoor  ClosureState_E `protobuf:"varint,4,opt,name=rearPassengerDoor,proto3,enum=VCSEC.ClosureState_E" json:"rearPassengerDoor,omitempty"`
	RearTrunk          ClosureState_E `protobuf:"varint,5,opt,name=rearTrunk,proto3,enum=VCSEC.ClosureState_E" json:"rearTrunk,omitempty"`
	FrontTrunk         ClosureState_E `protobuf:"varint,6,opt,name=frontTrunk,proto3,enum=VCSEC.ClosureState_E" json:"frontTrunk,omitempty"`
	ChargePort         ClosureState_E `protobuf:"varint,7,opt,name=chargePort,proto3,enum=VCSEC.ClosureState_E" json:"chargePort,omitempty"`
	Tonneau            ClosureState_E `protobuf:"varint,8,opt,name=tonneau,proto3,enum=VCSEC.ClosureState_E" json:"tonneau,omitempty"`
}

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

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

func (*ClosureStatuses) ProtoMessage() {}

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

func (x *ClosureStatuses) GetFrontDriverDoor() ClosureState_E {
	if x != nil {
		return x.FrontDriverDoor
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

func (x *ClosureStatuses) GetFrontPassengerDoor() ClosureState_E {
	if x != nil {
		return x.FrontPassengerDoor
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

func (x *ClosureStatuses) GetRearDriverDoor() ClosureState_E {
	if x != nil {
		return x.RearDriverDoor
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

func (x *ClosureStatuses) GetRearPassengerDoor() ClosureState_E {
	if x != nil {
		return x.RearPassengerDoor
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

func (x *ClosureStatuses) GetRearTrunk() ClosureState_E {
	if x != nil {
		return x.RearTrunk
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

func (x *ClosureStatuses) GetFrontTrunk() ClosureState_E {
	if x != nil {
		return x.FrontTrunk
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

func (x *ClosureStatuses) GetChargePort() ClosureState_E {
	if x != nil {
		return x.ChargePort
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

func (x *ClosureStatuses) GetTonneau() ClosureState_E {
	if x != nil {
		return x.Tonneau
	}
	return ClosureState_E_CLOSURESTATE_CLOSED
}

type DetailedClosureStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TonneauPercentOpen uint32 `protobuf:"varint,1,opt,name=tonneauPercentOpen,proto3" json:"tonneauPercentOpen,omitempty"`
}

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

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

func (*DetailedClosureStatus) ProtoMessage() {}

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

func (x *DetailedClosureStatus) GetTonneauPercentOpen() uint32 {
	if x != nil {
		return x.TonneauPercentOpen
	}
	return 0
}

type VehicleStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ClosureStatuses       *ClosureStatuses       `protobuf:"bytes,1,opt,name=closureStatuses,proto3" json:"closureStatuses,omitempty"`
	VehicleLockState      VehicleLockState_E     `protobuf:"varint,2,opt,name=vehicleLockState,proto3,enum=VCSEC.VehicleLockState_E" json:"vehicleLockState,omitempty"`
	VehicleSleepStatus    VehicleSleepStatus_E   `protobuf:"varint,3,opt,name=vehicleSleepStatus,proto3,enum=VCSEC.VehicleSleepStatus_E" json:"vehicleSleepStatus,omitempty"`
	UserPresence          UserPresence_E         `protobuf:"varint,4,opt,name=userPresence,proto3,enum=VCSEC.UserPresence_E" json:"userPresence,omitempty"`
	DetailedClosureStatus *DetailedClosureStatus `protobuf:"bytes,5,opt,name=detailedClosureStatus,proto3" json:"detailedClosureStatus,omitempty"`
}

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

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

func (*VehicleStatus) ProtoMessage() {}

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

func (x *VehicleStatus) GetClosureStatuses() *ClosureStatuses {
	if x != nil {
		return x.ClosureStatuses
	}
	return nil
}

func (x *VehicleStatus) GetVehicleLockState() VehicleLockState_E {
	if x != nil {
		return x.VehicleLockState
	}
	return VehicleLockState_E_VEHICLELOCKSTATE_UNLOCKED
}

func (x *VehicleStatus) GetVehicleSleepStatus() VehicleSleepStatus_E {
	if x != nil {
		return x.VehicleSleepStatus
	}
	return VehicleSleepStatus_E_VEHICLE_SLEEP_STATUS_UNKNOWN
}

func (x *VehicleStatus) GetUserPresence() UserPresence_E {
	if x != nil {
		return x.UserPresence
	}
	return UserPresence_E_VEHICLE_USER_PRESENCE_UNKNOWN
}

func (x *VehicleStatus) GetDetailedClosureStatus() *DetailedClosureStatus {
	if x != nil {
		return x.DetailedClosureStatus
	}
	return nil
}

type FromVCSECMessage struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to SubMessage:
	//	*FromVCSECMessage_VehicleStatus
	//	*FromVCSECMessage_CommandStatus
	//	*FromVCSECMessage_WhitelistInfo
	//	*FromVCSECMessage_WhitelistEntryInfo
	//	*FromVCSECMessage_NominalError
	SubMessage isFromVCSECMessage_SubMessage `protobuf_oneof:"sub_message"`
}

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

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

func (*FromVCSECMessage) ProtoMessage() {}

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

func (m *FromVCSECMessage) GetSubMessage() isFromVCSECMessage_SubMessage {
	if m != nil {
		return m.SubMessage
	}
	return nil
}

func (x *FromVCSECMessage) GetVehicleStatus() *VehicleStatus {
	if x, ok := x.GetSubMessage().(*FromVCSECMessage_VehicleStatus); ok {
		return x.VehicleStatus
	}
	return nil
}

func (x *FromVCSECMessage) GetCommandStatus() *CommandStatus {
	if x, ok := x.GetSubMessage().(*FromVCSECMessage_CommandStatus); ok {
		return x.CommandStatus
	}
	return nil
}

func (x *FromVCSECMessage) GetWhitelistInfo() *WhitelistInfo {
	if x, ok := x.GetSubMessage().(*FromVCSECMessage_WhitelistInfo); ok {
		return x.WhitelistInfo
	}
	return nil
}

func (x *FromVCSECMessage) GetWhitelistEntryInfo() *WhitelistEntryInfo {
	if x, ok := x.GetSubMessage().(*FromVCSECMessage_WhitelistEntryInfo); ok {
		return x.WhitelistEntryInfo
	}
	return nil
}

func (x *FromVCSECMessage) GetNominalError() *errors.NominalError {
	if x, ok := x.GetSubMessage().(*FromVCSECMessage_NominalError); ok {
		return x.NominalError
	}
	return nil
}

type isFromVCSECMessage_SubMessage interface {
	isFromVCSECMessage_SubMessage()
}

type FromVCSECMessage_VehicleStatus struct {
	VehicleStatus *VehicleStatus `protobuf:"bytes,1,opt,name=vehicleStatus,proto3,oneof"`
}

type FromVCSECMessage_CommandStatus struct {
	CommandStatus *CommandStatus `protobuf:"bytes,4,opt,name=commandStatus,proto3,oneof"`
}

type FromVCSECMessage_WhitelistInfo struct {
	WhitelistInfo *WhitelistInfo `protobuf:"bytes,16,opt,name=whitelistInfo,proto3,oneof"`
}

type FromVCSECMessage_WhitelistEntryInfo struct {
	WhitelistEntryInfo *WhitelistEntryInfo `protobuf:"bytes,17,opt,name=whitelistEntryInfo,proto3,oneof"`
}

type FromVCSECMessage_NominalError struct {
	NominalError *errors.NominalError `protobuf:"bytes,46,opt,name=nominalError,proto3,oneof"`
}

func (*FromVCSECMessage_VehicleStatus) isFromVCSECMessage_SubMessage() {}

func (*FromVCSECMessage_CommandStatus) isFromVCSECMessage_SubMessage() {}

func (*FromVCSECMessage_WhitelistInfo) isFromVCSECMessage_SubMessage() {}

func (*FromVCSECMessage_WhitelistEntryInfo) isFromVCSECMessage_SubMessage() {}

func (*FromVCSECMessage_NominalError) isFromVCSECMessage_SubMessage() {}

var File_vcsec_proto protoreflect.FileDescriptor

var file_vcsec_proto_rawDesc = []byte{
	0x0a, 0x0b, 0x76, 0x63, 0x73, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x56,
	0x43, 0x53, 0x45, 0x43, 0x1a, 0x0a, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x1a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83,
	0x01, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x36, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x41, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x41, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x54, 0x79, 0x70, 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x54, 0x6f, 0x56, 0x43, 0x53, 0x45, 0x43, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
	0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x52, 0x0d, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x22, 0x35, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
	0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
	0x53, 0x48, 0x41, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x4b, 0x65, 0x79, 0x53, 0x48, 0x41, 0x31, 0x22, 0x49, 0x0a, 0x0b, 0x4b, 0x65, 0x79,
	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x46,
	0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46,
	0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0d, 0x6b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61,
	0x63, 0x74, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
	0x79, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x61,
	0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
	0x65, 0x79, 0x52, 0x61, 0x77, 0x22, 0x97, 0x01, 0x0a, 0x0d, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c,
	0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x62, 0x65,
	0x72, 0x4f, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65,
	0x73, 0x12, 0x40, 0x0a, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e,
	0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43,
	0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
	0x72, 0x52, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72,
	0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x6c, 0x6f, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x22,
	0xe6, 0x01, 0x0a, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65,
	0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x05, 0x6b, 0x65, 0x79,
	0x49, 0x64, 0x12, 0x2e, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b,
	0x65, 0x79, 0x12, 0x3a, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f,
	0x72, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x56, 0x43, 0x53,
	0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e,
	0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x12,
	0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x6c,
	0x6f, 0x74, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52,
	0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x66,
	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x55, 0x0a, 0x16, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x1d, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x16,
	0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65,
	0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6b,
	0x65, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65,
	0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69,
	0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x22, 0x8c, 0x04, 0x0a, 0x12, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6e,
	0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72,
	0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0f, 0x66, 0x72, 0x6f,
	0x6e, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x48, 0x0a, 0x12,
	0x66, 0x72, 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f,
	0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43,
	0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65,
	0x5f, 0x45, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67,
	0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x72, 0x44, 0x72,
	0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18,
	0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f,
	0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x72, 0x44, 0x72,
	0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x11, 0x72, 0x65, 0x61, 0x72,
	0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73,
	0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x11, 0x72,
	0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72,
	0x12, 0x36, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x72, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73,
	0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x09, 0x72,
	0x65, 0x61, 0x72, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6e,
	0x74, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56,
	0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65,
	0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x54, 0x72, 0x75,
	0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43,
	0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45,
	0x52, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x32, 0x0a, 0x07,
	0x74, 0x6f, 0x6e, 0x6e, 0x65, 0x61, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e,
	0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76,
	0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x52, 0x07, 0x74, 0x6f, 0x6e, 0x6e, 0x65, 0x61, 0x75,
	0x22, 0x8a, 0x01, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69,
	0x63, 0x4b, 0x65, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x65, 0x63,
	0x6f, 0x6e, 0x64, 0x73, 0x54, 0x6f, 0x42, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x54, 0x6f, 0x42,
	0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f,
	0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x2e,
	0x52, 0x6f, 0x6c, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xfe, 0x01,
	0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x12,
	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61,
	0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43,
	0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x12, 0x70, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
	0x12, 0x26, 0x0a, 0x0d, 0x73, 0x6c, 0x6f, 0x74, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6c, 0x6f, 0x74, 0x54,
	0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x54,
	0x6f, 0x41, 0x64, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53,
	0x45, 0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x6b, 0x65,
	0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x24, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x52,
	0x6f, 0x6c, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b,
	0x69, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0b, 0x69, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x42, 0x0e,
	0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x22, 0xa8,
	0x07, 0x0a, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x17, 0x61, 0x64, 0x64, 0x50, 0x75, 0x62, 0x6c,
	0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x17, 0x61, 0x64, 0x64, 0x50,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c,
	0x69, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x1c, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c,
	0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x56, 0x43, 0x53, 0x45,
	0x43, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x1c, 0x72,
	0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x72,
	0x6f, 0x6d, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x19, 0x61,
	0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x50,
	0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x19, 0x61, 0x64, 0x64, 0x50, 0x65,
	0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x62, 0x6c, 0x69,
	0x63, 0x4b, 0x65, 0x79, 0x12, 0x61, 0x0a, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x65,
	0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x75, 0x62,
	0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56,
	0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x1e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50,
	0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x75,
	0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x69, 0x0a, 0x22, 0x61, 0x64, 0x64, 0x4b, 0x65,
	0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x64, 0x41,
	0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x22,
	0x61, 0x64, 0x64, 0x4b, 0x65, 0x79, 0x54, 0x6f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73,
	0x74, 0x41, 0x6e, 0x64, 0x41, 0x64, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x12, 0x53, 0x0a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41,
	0x6e, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x17,
	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x50, 0x65, 0x72, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x49, 0x6d,
	0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x11, 0x61,
	0x64, 0x64, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79,
	0x12, 0x69, 0x0a, 0x22, 0x61, 0x64, 0x64, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65,
	0x6e, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x78,
	0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x56,
	0x43, 0x53, 0x45, 0x43, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x22, 0x61, 0x64, 0x64, 0x49, 0x6d, 0x70, 0x65,
	0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x6d,
	0x6f, 0x76, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x18, 0x72,
	0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d, 0x61, 0x6e,
	0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52,
	0x18, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6d, 0x70, 0x65, 0x72, 0x6d,
	0x61, 0x6e, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x72, 0x65, 0x70,
	0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
	0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79,
	0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x3a,
	0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b,
	0x65, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75,
	0x62, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x92, 0x02, 0x0a, 0x19, 0x57, 0x68,
	0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x6d, 0x0a, 0x1d, 0x77, 0x68, 0x69, 0x74, 0x65,
	0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66,
	0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27,
	0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74,
	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x52, 0x1d, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69,
	0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x72,
	0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72,
	0x4f, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x65,
	0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x11, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x4f,
	0x66, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0f, 0x6f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x4f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x52, 0x0f, 0x6f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x90,
	0x01, 0x0a, 0x14, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65,
	0x72, 0x12, 0x5e, 0x0a, 0x18, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67, 0x6e,
	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x52, 0x18, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0x93, 0x02, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x42, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x56,
	0x43, 0x53, 0x45, 0x43, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4f, 0x0a, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x65,
	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x53, 0x69, 0x67,
	0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x48, 0x00, 0x52, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5e, 0x0a, 0x18, 0x77, 0x68, 0x69, 0x74,
	0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x56, 0x43, 0x53,
	0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x18,
	0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd9, 0x02, 0x0a, 0x0f, 0x55, 0x6e, 0x73, 0x69,
	0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x12, 0x49,
	0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e,
	0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x52, 0x4b, 0x45, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x56, 0x43,
	0x53, 0x45, 0x43, 0x2e, 0x52, 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x48,
	0x00, 0x52, 0x09, 0x52, 0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x12,
	0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43,
	0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x4d, 0x6f,
	0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x12, 0x57, 0x68, 0x69,
	0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68,
	0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x48, 0x00, 0x52, 0x12, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 0x04, 0x08, 0x07, 0x10,
	0x08, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08,
	0x0d, 0x10, 0x0e, 0x22, 0xf1, 0x03, 0x0a, 0x0f, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x0f, 0x66, 0x72, 0x6f, 0x6e, 0x74,
	0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x15, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x44, 0x72,
	0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x12, 0x66, 0x72, 0x6f, 0x6e,
	0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f,
	0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x52, 0x12, 0x66, 0x72, 0x6f,
	0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12,
	0x3d, 0x0a, 0x0e, 0x72, 0x65, 0x61, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f,
	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e,
	0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x52, 0x0e,
	0x72, 0x65, 0x61, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x6f, 0x6f, 0x72, 0x12, 0x43,
	0x0a, 0x11, 0x72, 0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44,
	0x6f, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x56, 0x43, 0x53, 0x45,
	0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45,
	0x52, 0x11, 0x72, 0x65, 0x61, 0x72, 0x50, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x67, 0x65, 0x72, 0x44,
	0x6f, 0x6f, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x72, 0x54, 0x72, 0x75, 0x6e, 0x6b,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43,
	0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x52, 0x09, 0x72,
	0x65, 0x61, 0x72, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12, 0x35, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6e,
	0x74, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x56,
	0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x65, 0x5f, 0x45, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x12,
	0x35, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73,
	0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x72,
	0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2f, 0x0a, 0x07, 0x74, 0x6f, 0x6e, 0x6e, 0x65, 0x61,
	0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e,
	0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x52, 0x07,
	0x74, 0x6f, 0x6e, 0x6e, 0x65, 0x61, 0x75, 0x22, 0x47, 0x0a, 0x15, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x12, 0x2e, 0x0a, 0x12, 0x74, 0x6f, 0x6e, 0x6e, 0x65, 0x61, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65,
	0x6e, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x6f,
	0x6e, 0x6e, 0x65, 0x61, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x6e,
	0x22, 0xf4, 0x02, 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x56, 0x43,
	0x53, 0x45, 0x43, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x65, 0x73, 0x52, 0x0f, 0x63, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x10, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4c,
	0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
	0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4c, 0x6f,
	0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x52, 0x10, 0x76, 0x65, 0x68, 0x69, 0x63,
	0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4b, 0x0a, 0x12, 0x76,
	0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e,
	0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x6c, 0x65, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x5f, 0x45, 0x52, 0x12, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x6c, 0x65,
	0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72,
	0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
	0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x65,
	0x6e, 0x63, 0x65, 0x5f, 0x45, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x65,
	0x6e, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x15, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43,
	0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69,
	0x6c, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x52, 0x15, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72,
	0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xea, 0x02, 0x0a, 0x10, 0x46, 0x72, 0x6f, 0x6d,
	0x56, 0x43, 0x53, 0x45, 0x43, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x0d,
	0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x56, 0x65, 0x68, 0x69,
	0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x65, 0x68,
	0x69, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x63, 0x6f,
	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
	0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x61,
	0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x77, 0x68, 0x69, 0x74,
	0x65, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x14, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73,
	0x74, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69,
	0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c,
	0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x43, 0x53, 0x45, 0x43, 0x2e, 0x57, 0x68, 0x69, 0x74, 0x65,
	0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52,
	0x12, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0c, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x73, 0x2e, 0x4e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x0c, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42,
	0x0d, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4a, 0x04,
	0x08, 0x06, 0x10, 0x0b, 0x2a, 0x48, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55,
	0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1e,
	0x0a, 0x1a, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x02, 0x2a, 0xad,
	0x01, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72,
	0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43,
	0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a,
	0x18, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52,
	0x5f, 0x4e, 0x46, 0x43, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4b,
	0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x49,
	0x4f, 0x53, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x4b,
	0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41,
	0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x07, 0x12,
	0x1d, 0x0a, 0x19, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54,
	0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x09, 0x2a, 0xa9,
	0x01, 0x0a, 0x16, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x46,
	0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54,
	0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
	0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47,
	0x45, 0x54, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x46,
	0x4f, 0x10, 0x05, 0x12, 0x35, 0x0a, 0x31, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x47, 0x45, 0x54, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x45, 0x4e,
	0x54, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x06, 0x2a, 0x97, 0x01, 0x0a, 0x0b, 0x52,
	0x4b, 0x45, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x4b,
	0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x10,
	0x00, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
	0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x44, 0x52, 0x49, 0x56,
	0x45, 0x10, 0x14, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4b, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x56, 0x45,
	0x48, 0x49, 0x43, 0x4c, 0x45, 0x10, 0x1d, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x4b, 0x45, 0x5f, 0x41,
	0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x4b, 0x45, 0x5f, 0x56, 0x45, 0x48, 0x49, 0x43,
	0x4c, 0x45, 0x10, 0x1e, 0x2a, 0xa0, 0x01, 0x0a, 0x11, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72, 0x65,
	0x4d, 0x6f, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x45, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c,
	0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52,
	0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45,
	0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f,
	0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x1a,
	0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4c,
	0x4f, 0x53, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x04, 0x2a, 0x60, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x12, 0x16, 0x0a, 0x12,
	0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
	0x4f, 0x4b, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x01, 0x12, 0x19,
	0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x54, 0x41, 0x54, 0x55,
	0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0xf3, 0x08, 0x0a, 0x1b, 0x53, 0x69,
	0x67, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
	0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x45, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x49, 0x47,
	0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52,
	0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x2b, 0x0a,
	0x27, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49,
	0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54,
	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x34, 0x0a, 0x30, 0x53, 0x49,
	0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f,
	0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4e, 0x4f,
	0x54, 0x5f, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02,
	0x12, 0x3c, 0x0a, 0x38, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47,
	0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41,
	0x55, 0x4c, 0x54, 0x5f, 0x49, 0x56, 0x5f, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x45, 0x52, 0x5f, 0x54,
	0x48, 0x41, 0x4e, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x31,
	0x0a, 0x2d, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f,
	0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c,
	0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10,
	0x04, 0x12, 0x3d, 0x0a, 0x39, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41,
	0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46,
	0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43,
	0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x05,
	0x12, 0x34, 0x0a, 0x30, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47,
	0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41,
	0x55, 0x4c, 0x54, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f,
	0x41, 0x55, 0x54, 0x48, 0x10, 0x06, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44,
	0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41, 0x5f,
	0x49, 0x4e, 0x50, 0x55, 0x54, 0x10, 0x07, 0x12, 0x33, 0x0a, 0x2f, 0x53, 0x49, 0x47, 0x4e, 0x45,
	0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x43, 0x44, 0x53, 0x41,
	0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x08, 0x12, 0x36, 0x0a, 0x32,
	0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e,
	0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f,
	0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41,
	0x52, 0x54, 0x10, 0x09, 0x12, 0x37, 0x0a, 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45,
	0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x4e,
	0x54, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x0a, 0x12, 0x3a, 0x0a,
	0x36, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49,
	0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54,
	0x5f, 0x43, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49,
	0x45, 0x56, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0b, 0x12, 0x3c, 0x0a, 0x38, 0x53, 0x49, 0x47,
	0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52,
	0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, 0x55,
	0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x49, 0x45, 0x56, 0x45, 0x5f,
	0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x0c, 0x12, 0x37, 0x0a, 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45,
	0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41,
	0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x10, 0x0d,
	0x12, 0x3d, 0x0a, 0x39, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47,
	0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41,
	0x55, 0x4c, 0x54, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x49, 0x53, 0x5f, 0x49, 0x4e, 0x43,
	0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x0e, 0x12,
	0x33, 0x0a, 0x2f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45,
	0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55,
	0x4c, 0x54, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x45, 0x50, 0x4f,
	0x43, 0x48, 0x10, 0x0f, 0x12, 0x37, 0x0a, 0x33, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45,
	0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x49, 0x56, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52,
	0x52, 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x10, 0x12, 0x30, 0x0a,
	0x2c, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49,
	0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54,
	0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0x11, 0x12,
	0x41, 0x0a, 0x3d, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45,
	0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x55,
	0x4c, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e,
	0x45, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59,
	0x10, 0x12, 0x12, 0x3b, 0x0a, 0x37, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x44, 0x4d, 0x45, 0x53, 0x53,
	0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
	0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f,
	0x48, 0x41, 0x53, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x13, 0x2a,
	0xc3, 0x0c, 0x0a, 0x20, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x4f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x45, 0x12, 0x27, 0x0a, 0x23, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53,
	0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52,
	0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x35, 0x0a,
	0x31, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
	0x55, 0x4e, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52,
	0x4f, 0x52, 0x10, 0x01, 0x12, 0x42, 0x0a, 0x3e, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53,
	0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52,
	0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53,
	0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x4f,
	0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, 0x57, 0x48, 0x49, 0x54,
	0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49,
	0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x46, 0x4f,
	0x42, 0x5f, 0x53, 0x4c, 0x4f, 0x54, 0x53, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x31,
	0x0a, 0x2d, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10,
	0x04, 0x12, 0x37, 0x0a, 0x33, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50,
	0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f,
	0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x05, 0x12, 0x35, 0x0a, 0x31, 0x57, 0x48,
	0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56,
	0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x10,
	0x06, 0x12, 0x3a, 0x0a, 0x36, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50,
	0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f,
	0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x07, 0x12, 0x46, 0x0a,
	0x42, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
	0x4e, 0x4f, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f,
	0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49,
	0x4f, 0x4e, 0x53, 0x10, 0x08, 0x12, 0x4c, 0x0a, 0x48, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49,
	0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f,
	0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49,
	0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x45, 0x4c, 0x45, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x54,
	0x48, 0x45, 0x52, 0x5f, 0x41, 0x42, 0x4f, 0x56, 0x45, 0x5f, 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c,
	0x46, 0x10, 0x09, 0x12, 0x4b, 0x0a, 0x47, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54,
	0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d,
	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47,
	0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52,
	0x49, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x4e, 0x45, 0x53, 0x45, 0x4c, 0x46, 0x10, 0x0a,
	0x12, 0x47, 0x0a, 0x43, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45,
	0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f,
	0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d,
	0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x0b, 0x12, 0x3e, 0x0a, 0x3a, 0x57, 0x48, 0x49,
	0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
	0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x55, 0x42, 0x4c,
	0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x4e, 0x5f, 0x57, 0x48,
	0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0c, 0x12, 0x59, 0x0a, 0x55, 0x57, 0x48, 0x49,
	0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
	0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45,
	0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4b, 0x45,
	0x59, 0x5f, 0x54, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x53, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44,
	0x59, 0x5f, 0x4f, 0x4e, 0x5f, 0x54, 0x48, 0x45, 0x5f, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49,
	0x53, 0x54, 0x10, 0x0d, 0x12, 0x46, 0x0a, 0x42, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53,
	0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52,
	0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57,
	0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x55, 0x4e, 0x4c, 0x45, 0x53, 0x53,
	0x5f, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x0e, 0x12, 0x41, 0x0a, 0x3d,
	0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46,
	0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x59, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x55, 0x54, 0x53,
	0x49, 0x44, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x46, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12,
	0x45, 0x0a, 0x41, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52,
	0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f,
	0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54,
	0x5f, 0x4b, 0x45, 0x59, 0x10, 0x10, 0x12, 0x48, 0x0a, 0x44, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c,
	0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46,
	0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4d, 0x5f, 0x41, 0x54, 0x54, 0x45,
	0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45,
	0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x11,
	0x12, 0x39, 0x0a, 0x35, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45,
	0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x57, 0x48, 0x49, 0x4c,
	0x45, 0x5f, 0x46, 0x53, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x12, 0x12, 0x45, 0x0a, 0x41, 0x57,
	0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54,
	0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f,
	0x4b, 0x45, 0x59, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x52, 0x4f, 0x4c, 0x45,
	0x10, 0x13, 0x12, 0x4a, 0x0a, 0x46, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f,
	0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f,
	0x54, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f,
	0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x10, 0x14, 0x12, 0x51,
	0x0a, 0x4d, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50, 0x45, 0x52, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e,
	0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4b, 0x45, 0x59,
	0x5f, 0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41,
	0x44, 0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x10,
	0x15, 0x12, 0x62, 0x0a, 0x5e, 0x57, 0x48, 0x49, 0x54, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x4f, 0x50,
	0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54,
	0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
	0x41, 0x54, 0x54, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x44,
	0x44, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x5f, 0x4f,
	0x55, 0x54, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4d,
	0x4f, 0x44, 0x45, 0x10, 0x16, 0x2a, 0xc6, 0x01, 0x0a, 0x0e, 0x43, 0x6c, 0x6f, 0x73, 0x75, 0x72,
	0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x45, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4c, 0x4f, 0x53,
	0x55, 0x52, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x53, 0x54, 0x41, 0x54,
	0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4c, 0x4f, 0x53,
	0x55, 0x52, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4a, 0x41, 0x52, 0x10, 0x02, 0x12,
	0x18, 0x0a, 0x14, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4c, 0x4f,
	0x53, 0x55, 0x52, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44,
	0x5f, 0x55, 0x4e, 0x4c, 0x41, 0x54, 0x43, 0x48, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4c,
	0x4f, 0x53, 0x55, 0x52, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x49,
	0x4e, 0x47, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4c, 0x4f, 0x53, 0x55, 0x52, 0x45, 0x53,
	0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x9f,
	0x01, 0x0a, 0x12, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74,
	0x61, 0x74, 0x65, 0x5f, 0x45, 0x12, 0x1d, 0x0a, 0x19, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45,
	0x4c, 0x4f, 0x43, 0x4b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x4c,
	0x4f, 0x43, 0x4b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10,
	0x01, 0x12, 0x24, 0x0a, 0x20, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x4c, 0x4f, 0x43, 0x4b,
	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c,
	0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x56, 0x45, 0x48, 0x49, 0x43,
	0x4c, 0x45, 0x4c, 0x4f, 0x43, 0x4b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x4c, 0x45,
	0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x03,
	0x2a, 0x79, 0x0a, 0x14, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x6c, 0x65, 0x65, 0x70,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x45, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x45, 0x48, 0x49,
	0x43, 0x4c, 0x45, 0x5f, 0x53, 0x4c, 0x45, 0x45, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x56, 0x45,
	0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x53, 0x4c, 0x45, 0x45, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54,
	0x55, 0x53, 0x5f, 0x41, 0x57, 0x41, 0x4b, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x45,
	0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x53, 0x4c, 0x45, 0x45, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54,
	0x55, 0x53, 0x5f, 0x41, 0x53, 0x4c, 0x45, 0x45, 0x50, 0x10, 0x02, 0x2a, 0x7d, 0x0a, 0x0e, 0x55,
	0x73, 0x65, 0x72, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x45, 0x12, 0x21, 0x0a,
	0x1d, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52,
	0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
	0x12, 0x25, 0x0a, 0x21, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52,
	0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52,
	0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x45, 0x48, 0x49, 0x43,
	0x4c, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45,
	0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x5f, 0x0a, 0x19, 0x63, 0x6f,
	0x6d, 0x2e, 0x74, 0x65, 0x73, 0x6c, 0x61, 0x2e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
	0x64, 0x2e, 0x76, 0x63, 0x73, 0x65, 0x63, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x65, 0x73, 0x6c, 0x61, 0x6d, 0x6f, 0x74, 0x6f, 0x72, 0x73, 0x2f,
	0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2f,
	0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x63, 0x73, 0x65, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_vcsec_proto_rawDescOnce sync.Once
	file_vcsec_proto_rawDescData = file_vcsec_proto_rawDesc
)

func file_vcsec_proto_rawDescGZIP() []byte {
	file_vcsec_proto_rawDescOnce.Do(func() {
		file_vcsec_proto_rawDescData = protoimpl.X.CompressGZIP(file_vcsec_proto_rawDescData)
	})
	return file_vcsec_proto_rawDescData
}

var file_vcsec_proto_enumTypes = make([]protoimpl.EnumInfo, 12)
var file_vcsec_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_vcsec_proto_goTypes = []interface{}{
	(SignatureType)(0),                   // 0: VCSEC.SignatureType
	(KeyFormFactor)(0),                   // 1: VCSEC.KeyFormFactor
	(InformationRequestType)(0),          // 2: VCSEC.InformationRequestType
	(RKEAction_E)(0),                     // 3: VCSEC.RKEAction_E
	(ClosureMoveType_E)(0),               // 4: VCSEC.ClosureMoveType_E
	(OperationStatus_E)(0),               // 5: VCSEC.OperationStatus_E
	(SignedMessageInformation_E)(0),      // 6: VCSEC.SignedMessage_information_E
	(WhitelistOperationInformation_E)(0), // 7: VCSEC.WhitelistOperation_information_E
	(ClosureState_E)(0),                  // 8: VCSEC.ClosureState_E
	(VehicleLockState_E)(0),              // 9: VCSEC.VehicleLockState_E
	(VehicleSleepStatus_E)(0),            // 10: VCSEC.VehicleSleepStatus_E
	(UserPresence_E)(0),                  // 11: VCSEC.UserPresence_E
	(*SignedMessage)(nil),                // 12: VCSEC.SignedMessage
	(*ToVCSECMessage)(nil),               // 13: VCSEC.ToVCSECMessage
	(*KeyIdentifier)(nil),                // 14: VCSEC.KeyIdentifier
	(*KeyMetadata)(nil),                  // 15: VCSEC.KeyMetadata
	(*PublicKey)(nil),                    // 16: VCSEC.PublicKey
	(*WhitelistInfo)(nil),                // 17: VCSEC.WhitelistInfo
	(*WhitelistEntryInfo)(nil),           // 18: VCSEC.WhitelistEntryInfo
	(*InformationRequest)(nil),           // 19: VCSEC.InformationRequest
	(*ClosureMoveRequest)(nil),           // 20: VCSEC.ClosureMoveRequest
	(*PermissionChange)(nil),             // 21: VCSEC.PermissionChange
	(*ReplaceKey)(nil),                   // 22: VCSEC.ReplaceKey
	(*WhitelistOperation)(nil),           // 23: VCSEC.WhitelistOperation
	(*WhitelistOperationStatus)(nil),     // 24: VCSEC.WhitelistOperation_status
	(*SignedMessageStatus)(nil),          // 25: VCSEC.SignedMessage_status
	(*CommandStatus)(nil),                // 26: VCSEC.CommandStatus
	(*UnsignedMessage)(nil),              // 27: VCSEC.UnsignedMessage
	(*ClosureStatuses)(nil),              // 28: VCSEC.ClosureStatuses
	(*DetailedClosureStatus)(nil),        // 29: VCSEC.DetailedClosureStatus
	(*VehicleStatus)(nil),                // 30: VCSEC.VehicleStatus
	(*FromVCSECMessage)(nil),             // 31: VCSEC.FromVCSECMessage
	(keys.Role)(0),                       // 32: Keys.Role
	(*errors.NominalError)(nil),          // 33: Errors.NominalError
}
var file_vcsec_proto_depIdxs = []int32{
	0,  // 0: VCSEC.SignedMessage.signatureType:type_name -> VCSEC.SignatureType
	12, // 1: VCSEC.ToVCSECMessage.signedMessage:type_name -> VCSEC.SignedMessage
	1,  // 2: VCSEC.KeyMetadata.keyFormFactor:type_name -> VCSEC.KeyFormFactor
	14, // 3: VCSEC.WhitelistInfo.whitelistEntries:type_name -> VCSEC.KeyIdentifier
	14, // 4: VCSEC.WhitelistEntryInfo.keyId:type_name -> VCSEC.KeyIdentifier
	16, // 5: VCSEC.WhitelistEntryInfo.publicKey:type_name -> VCSEC.PublicKey
	15, // 6: VCSEC.WhitelistEntryInfo.metadataForKey:type_name -> VCSEC.KeyMetadata
	32, // 7: VCSEC.WhitelistEntryInfo.keyRole:type_name -> Keys.Role
	2,  // 8: VCSEC.InformationRequest.informationRequestType:type_name -> VCSEC.InformationRequestType
	14, // 9: VCSEC.InformationRequest.keyId:type_name -> VCSEC.KeyIdentifier
	4,  // 10: VCSEC.ClosureMoveRequest.frontDriverDoor:type_name -> VCSEC.ClosureMoveType_E
	4,  // 11: VCSEC.ClosureMoveRequest.frontPassengerDoor:type_name -> VCSEC.ClosureMoveType_E
	4,  // 12: VCSEC.ClosureMoveRequest.rearDriverDoor:type_name -> VCSEC.ClosureMoveType_E
	4,  // 13: VCSEC.ClosureMoveRequest.rearPassengerDoor:type_name -> VCSEC.ClosureMoveType_E
	4,  // 14: VCSEC.ClosureMoveRequest.rearTrunk:type_name -> VCSEC.ClosureMoveType_E
	4,  // 15: VCSEC.ClosureMoveRequest.frontTrunk:type_name -> VCSEC.ClosureMoveType_E
	4,  // 16: VCSEC.ClosureMoveRequest.chargePort:type_name -> VCSEC.ClosureMoveType_E
	4,  // 17: VCSEC.ClosureMoveRequest.tonneau:type_name -> VCSEC.ClosureMoveType_E
	16, // 18: VCSEC.PermissionChange.key:type_name -> VCSEC.PublicKey
	32, // 19: VCSEC.PermissionChange.keyRole:type_name -> Keys.Role
	16, // 20: VCSEC.ReplaceKey.publicKeyToReplace:type_name -> VCSEC.PublicKey
	16, // 21: VCSEC.ReplaceKey.keyToAdd:type_name -> VCSEC.PublicKey
	32, // 22: VCSEC.ReplaceKey.keyRole:type_name -> Keys.Role
	16, // 23: VCSEC.WhitelistOperation.addPublicKeyToWhitelist:type_name -> VCSEC.PublicKey
	16, // 24: VCSEC.WhitelistOperation.removePublicKeyFromWhitelist:type_name -> VCSEC.PublicKey
	21, // 25: VCSEC.WhitelistOperation.addPermissionsToPublicKey:type_name -> VCSEC.PermissionChange
	21, // 26: VCSEC.WhitelistOperation.removePermissionsFromPublicKey:type_name -> VCSEC.PermissionChange
	21, // 27: VCSEC.WhitelistOperation.addKeyToWhitelistAndAddPermissions:type_name -> VCSEC.PermissionChange
	21, // 28: VCSEC.WhitelistOperation.updateKeyAndPermissions:type_name -> VCSEC.PermissionChange
	21, // 29: VCSEC.WhitelistOperation.addImpermanentKey:type_name -> VCSEC.PermissionChange
	21, // 30: VCSEC.WhitelistOperation.addImpermanentKeyAndRemoveExisting:type_name -> VCSEC.PermissionChange
	22, // 31: VCSEC.WhitelistOperation.replaceKey:type_name -> VCSEC.ReplaceKey
	15, // 32: VCSEC.WhitelistOperation.metadataForKey:type_name -> VCSEC.KeyMetadata
	7,  // 33: VCSEC.WhitelistOperation_status.whitelistOperationInformation:type_name -> VCSEC.WhitelistOperation_information_E
	14, // 34: VCSEC.WhitelistOperation_status.signerOfOperation:type_name -> VCSEC.KeyIdentifier
	5,  // 35: VCSEC.WhitelistOperation_status.operationStatus:type_name -> VCSEC.OperationStatus_E
	6,  // 36: VCSEC.SignedMessage_status.signedMessageInformation:type_name -> VCSEC.SignedMessage_information_E
	5,  // 37: VCSEC.CommandStatus.operationStatus:type_name -> VCSEC.OperationStatus_E
	25, // 38: VCSEC.CommandStatus.signedMessageStatus:type_name -> VCSEC.SignedMessage_status
	24, // 39: VCSEC.CommandStatus.whitelistOperationStatus:type_name -> VCSEC.WhitelistOperation_status
	19, // 40: VCSEC.UnsignedMessage.InformationRequest:type_name -> VCSEC.InformationRequest
	3,  // 41: VCSEC.UnsignedMessage.RKEAction:type_name -> VCSEC.RKEAction_E
	20, // 42: VCSEC.UnsignedMessage.closureMoveRequest:type_name -> VCSEC.ClosureMoveRequest
	23, // 43: VCSEC.UnsignedMessage.WhitelistOperation:type_name -> VCSEC.WhitelistOperation
	8,  // 44: VCSEC.ClosureStatuses.frontDriverDoor:type_name -> VCSEC.ClosureState_E
	8,  // 45: VCSEC.ClosureStatuses.frontPassengerDoor:type_name -> VCSEC.ClosureState_E
	8,  // 46: VCSEC.ClosureStatuses.rearDriverDoor:type_name -> VCSEC.ClosureState_E
	8,  // 47: VCSEC.ClosureStatuses.rearPassengerDoor:type_name -> VCSEC.ClosureState_E
	8,  // 48: VCSEC.ClosureStatuses.rearTrunk:type_name -> VCSEC.ClosureState_E
	8,  // 49: VCSEC.ClosureStatuses.frontTrunk:type_name -> VCSEC.ClosureState_E
	8,  // 50: VCSEC.ClosureStatuses.chargePort:type_name -> VCSEC.ClosureState_E
	8,  // 51: VCSEC.ClosureStatuses.tonneau:type_name -> VCSEC.ClosureState_E
	28, // 52: VCSEC.VehicleStatus.closureStatuses:type_name -> VCSEC.ClosureStatuses
	9,  // 53: VCSEC.VehicleStatus.vehicleLockState:type_name -> VCSEC.VehicleLockState_E
	10, // 54: VCSEC.VehicleStatus.vehicleSleepStatus:type_name -> VCSEC.VehicleSleepStatus_E
	11, // 55: VCSEC.VehicleStatus.userPresence:type_name -> VCSEC.UserPresence_E
	29, // 56: VCSEC.VehicleStatus.detailedClosureStatus:type_name -> VCSEC.DetailedClosureStatus
	30, // 57: VCSEC.FromVCSECMessage.vehicleStatus:type_name -> VCSEC.VehicleStatus
	26, // 58: VCSEC.FromVCSECMessage.commandStatus:type_name -> VCSEC.CommandStatus
	17, // 59: VCSEC.FromVCSECMessage.whitelistInfo:type_name -> VCSEC.WhitelistInfo
	18, // 60: VCSEC.FromVCSECMessage.whitelistEntryInfo:type_name -> VCSEC.WhitelistEntryInfo
	33, // 61: VCSEC.FromVCSECMessage.nominalError:type_name -> Errors.NominalError
	62, // [62:62] is the sub-list for method output_type
	62, // [62:62] is the sub-list for method input_type
	62, // [62:62] is the sub-list for extension type_name
	62, // [62:62] is the sub-list for extension extendee
	0,  // [0:62] is the sub-list for field type_name
}

func init() { file_vcsec_proto_init() }
func file_vcsec_proto_init() {
	if File_vcsec_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_vcsec_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SignedMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ToVCSECMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyIdentifier); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeyMetadata); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PublicKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WhitelistInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WhitelistEntryInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*InformationRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClosureMoveRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PermissionChange); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplaceKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WhitelistOperation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WhitelistOperationStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SignedMessageStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommandStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UnsignedMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ClosureStatuses); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DetailedClosureStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VehicleStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_vcsec_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FromVCSECMessage); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_vcsec_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*InformationRequest_KeyId)(nil),
		(*InformationRequest_PublicKey)(nil),
		(*InformationRequest_Slot)(nil),
	}
	file_vcsec_proto_msgTypes[10].OneofWrappers = []interface{}{
		(*ReplaceKey_PublicKeyToReplace)(nil),
		(*ReplaceKey_SlotToReplace)(nil),
	}
	file_vcsec_proto_msgTypes[11].OneofWrappers = []interface{}{
		(*WhitelistOperation_AddPublicKeyToWhitelist)(nil),
		(*WhitelistOperation_RemovePublicKeyFromWhitelist)(nil),
		(*WhitelistOperation_AddPermissionsToPublicKey)(nil),
		(*WhitelistOperation_RemovePermissionsFromPublicKey)(nil),
		(*WhitelistOperation_AddKeyToWhitelistAndAddPermissions)(nil),
		(*WhitelistOperation_UpdateKeyAndPermissions)(nil),
		(*WhitelistOperation_AddImpermanentKey)(nil),
		(*WhitelistOperation_AddImpermanentKeyAndRemoveExisting)(nil),
		(*WhitelistOperation_RemoveAllImpermanentKeys)(nil),
		(*WhitelistOperation_ReplaceKey)(nil),
	}
	file_vcsec_proto_msgTypes[14].OneofWrappers = []interface{}{
		(*CommandStatus_SignedMessageStatus)(nil),
		(*CommandStatus_WhitelistOperationStatus)(nil),
	}
	file_vcsec_proto_msgTypes[15].OneofWrappers = []interface{}{
		(*UnsignedMessage_InformationRequest)(nil),
		(*UnsignedMessage_RKEAction)(nil),
		(*UnsignedMessage_ClosureMoveRequest)(nil),
		(*UnsignedMessage_WhitelistOperation)(nil),
	}
	file_vcsec_proto_msgTypes[19].OneofWrappers = []interface{}{
		(*FromVCSECMessage_VehicleStatus)(nil),
		(*FromVCSECMessage_CommandStatus)(nil),
		(*FromVCSECMessage_WhitelistInfo)(nil),
		(*FromVCSECMessage_WhitelistEntryInfo)(nil),
		(*FromVCSECMessage_NominalError)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_vcsec_proto_rawDesc,
			NumEnums:      12,
			NumMessages:   20,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_vcsec_proto_goTypes,
		DependencyIndexes: file_vcsec_proto_depIdxs,
		EnumInfos:         file_vcsec_proto_enumTypes,
		MessageInfos:      file_vcsec_proto_msgTypes,
	}.Build()
	File_vcsec_proto = out.File
	file_vcsec_proto_rawDesc = nil
	file_vcsec_proto_goTypes = nil
	file_vcsec_proto_depIdxs = nil
}
