// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.9.1
// source: dposvote.proto

package types

import (
	reflect "reflect"
	sync "sync"

	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

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)
)

// CandidatorInfo 候选节点信息
type CandidatorInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey      []byte       `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`   //候选节点的公钥
	Address     string       `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` //后续节点的地址
	IP          string       `protobuf:"bytes,3,opt,name=IP,proto3" json:"IP,omitempty"`           //候选节点的运行IP
	Votes       int64        `protobuf:"varint,4,opt,name=votes,proto3" json:"votes,omitempty"`    //候选节点的投票数
	Status      int64        `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`  //候选节点的状态，0:注册,1:当选,2:取消注册
	PreStatus   int64        `protobuf:"varint,6,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
	StartTime   int64        `protobuf:"varint,7,opt,name=startTime,proto3" json:"startTime,omitempty"`     //创建候选者的时间
	StartHeight int64        `protobuf:"varint,8,opt,name=startHeight,proto3" json:"startHeight,omitempty"` //创建候选者的时间
	StartTxHash string       `protobuf:"bytes,9,opt,name=startTxHash,proto3" json:"startTxHash,omitempty"`  //创建候选者的交易hash
	StartIndex  int64        `protobuf:"varint,10,opt,name=startIndex,proto3" json:"startIndex,omitempty"`  //创建候选者的交易index
	Index       int64        `protobuf:"varint,11,opt,name=index,proto3" json:"index,omitempty"`
	PreIndex    int64        `protobuf:"varint,12,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
	Voters      []*DposVoter `protobuf:"bytes,13,rep,name=voters,proto3" json:"voters,omitempty"`
}

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

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

func (*CandidatorInfo) ProtoMessage() {}

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

func (x *CandidatorInfo) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *CandidatorInfo) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *CandidatorInfo) GetIP() string {
	if x != nil {
		return x.IP
	}
	return ""
}

func (x *CandidatorInfo) GetVotes() int64 {
	if x != nil {
		return x.Votes
	}
	return 0
}

func (x *CandidatorInfo) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *CandidatorInfo) GetPreStatus() int64 {
	if x != nil {
		return x.PreStatus
	}
	return 0
}

func (x *CandidatorInfo) GetStartTime() int64 {
	if x != nil {
		return x.StartTime
	}
	return 0
}

func (x *CandidatorInfo) GetStartHeight() int64 {
	if x != nil {
		return x.StartHeight
	}
	return 0
}

func (x *CandidatorInfo) GetStartTxHash() string {
	if x != nil {
		return x.StartTxHash
	}
	return ""
}

func (x *CandidatorInfo) GetStartIndex() int64 {
	if x != nil {
		return x.StartIndex
	}
	return 0
}

func (x *CandidatorInfo) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *CandidatorInfo) GetPreIndex() int64 {
	if x != nil {
		return x.PreIndex
	}
	return 0
}

func (x *CandidatorInfo) GetVoters() []*DposVoter {
	if x != nil {
		return x.Voters
	}
	return nil
}

// DposVoter 投票者信息
type DposVoter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FromAddr string `protobuf:"bytes,1,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	Pubkey   []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"` //候选节点的公钥
	Votes    int64  `protobuf:"varint,3,opt,name=votes,proto3" json:"votes,omitempty"`  //投给候选节点的票数，不能超过锁在合约中的未使用票数
	Index    int64  `protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
	Time     int64  `protobuf:"varint,5,opt,name=time,proto3" json:"time,omitempty"`
}

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

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

func (*DposVoter) ProtoMessage() {}

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

func (x *DposVoter) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *DposVoter) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *DposVoter) GetVotes() int64 {
	if x != nil {
		return x.Votes
	}
	return 0
}

func (x *DposVoter) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *DposVoter) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

// Candidator 候选节点信息
type Candidator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey  []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`   //候选节点的公钥
	Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` //后续节点的地址
	IP      string `protobuf:"bytes,3,opt,name=IP,proto3" json:"IP,omitempty"`           //候选节点的运行IP
	Votes   int64  `protobuf:"varint,4,opt,name=votes,proto3" json:"votes,omitempty"`    //候选节点的投票数
	Status  int64  `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`  //候选节点的状态，0:注册,1:当选,2:取消注册
}

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

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

func (*Candidator) ProtoMessage() {}

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

func (x *Candidator) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *Candidator) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *Candidator) GetIP() string {
	if x != nil {
		return x.IP
	}
	return ""
}

func (x *Candidator) GetVotes() int64 {
	if x != nil {
		return x.Votes
	}
	return 0
}

func (x *Candidator) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

// DposCandidatorRegist 注册Dpos候选节点，必须抵押一定数量的币，比如：10000个币
type DposCandidatorRegist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey  string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`   //候选节点的公钥
	Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` //候选节点的地址
	IP      string `protobuf:"bytes,3,opt,name=IP,proto3" json:"IP,omitempty"`           //候选节点的共识IP地址
}

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

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

func (*DposCandidatorRegist) ProtoMessage() {}

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

func (x *DposCandidatorRegist) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *DposCandidatorRegist) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *DposCandidatorRegist) GetIP() string {
	if x != nil {
		return x.IP
	}
	return ""
}

// DposCandidatorCancelRegist 注销Dpos候选节点，解冻抵押的币
type DposCandidatorCancelRegist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey  string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`   //候选节点的公钥
	Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` //候选节点的地址
}

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

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

func (*DposCandidatorCancelRegist) ProtoMessage() {}

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

func (x *DposCandidatorCancelRegist) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *DposCandidatorCancelRegist) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

// DposVote 为Dpos候选节点投票
type DposVote struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FromAddr string `protobuf:"bytes,1,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	Pubkey   string `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"` //候选节点的公钥
	Votes    int64  `protobuf:"varint,3,opt,name=votes,proto3" json:"votes,omitempty"`  //投给候选节点的票数，不能超过锁在合约中的未使用票数
}

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

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

func (*DposVote) ProtoMessage() {}

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

func (x *DposVote) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *DposVote) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *DposVote) GetVotes() int64 {
	if x != nil {
		return x.Votes
	}
	return 0
}

// DposCancelVote 撤销为Dpos候选节点投票
type DposCancelVote struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` //候选节点的公钥
	Index  int64  `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
}

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

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

func (*DposCancelVote) ProtoMessage() {}

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

func (x *DposCancelVote) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *DposCancelVote) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

// DposVoteAction DposVote动作
type DposVoteAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//	*DposVoteAction_Regist
	//	*DposVoteAction_CancelRegist
	//	*DposVoteAction_ReRegist
	//	*DposVoteAction_Vote
	//	*DposVoteAction_CancelVote
	//	*DposVoteAction_CandidatorQuery
	//	*DposVoteAction_VoteQuery
	//	*DposVoteAction_RegistVrfM
	//	*DposVoteAction_RegistVrfRP
	//	*DposVoteAction_VrfQuery
	//	*DposVoteAction_RecordCB
	//	*DposVoteAction_CbQuery
	//	*DposVoteAction_RegistTopN
	//	*DposVoteAction_TopNQuery
	Value isDposVoteAction_Value `protobuf_oneof:"value"`
	Ty    int32                  `protobuf:"varint,15,opt,name=ty,proto3" json:"ty,omitempty"`
}

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

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

func (*DposVoteAction) ProtoMessage() {}

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

func (m *DposVoteAction) GetValue() isDposVoteAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *DposVoteAction) GetRegist() *DposCandidatorRegist {
	if x, ok := x.GetValue().(*DposVoteAction_Regist); ok {
		return x.Regist
	}
	return nil
}

func (x *DposVoteAction) GetCancelRegist() *DposCandidatorCancelRegist {
	if x, ok := x.GetValue().(*DposVoteAction_CancelRegist); ok {
		return x.CancelRegist
	}
	return nil
}

func (x *DposVoteAction) GetReRegist() *DposCandidatorRegist {
	if x, ok := x.GetValue().(*DposVoteAction_ReRegist); ok {
		return x.ReRegist
	}
	return nil
}

func (x *DposVoteAction) GetVote() *DposVote {
	if x, ok := x.GetValue().(*DposVoteAction_Vote); ok {
		return x.Vote
	}
	return nil
}

func (x *DposVoteAction) GetCancelVote() *DposCancelVote {
	if x, ok := x.GetValue().(*DposVoteAction_CancelVote); ok {
		return x.CancelVote
	}
	return nil
}

func (x *DposVoteAction) GetCandidatorQuery() *CandidatorQuery {
	if x, ok := x.GetValue().(*DposVoteAction_CandidatorQuery); ok {
		return x.CandidatorQuery
	}
	return nil
}

func (x *DposVoteAction) GetVoteQuery() *DposVoteQuery {
	if x, ok := x.GetValue().(*DposVoteAction_VoteQuery); ok {
		return x.VoteQuery
	}
	return nil
}

func (x *DposVoteAction) GetRegistVrfM() *DposVrfMRegist {
	if x, ok := x.GetValue().(*DposVoteAction_RegistVrfM); ok {
		return x.RegistVrfM
	}
	return nil
}

func (x *DposVoteAction) GetRegistVrfRP() *DposVrfRPRegist {
	if x, ok := x.GetValue().(*DposVoteAction_RegistVrfRP); ok {
		return x.RegistVrfRP
	}
	return nil
}

func (x *DposVoteAction) GetVrfQuery() *DposVrfQuery {
	if x, ok := x.GetValue().(*DposVoteAction_VrfQuery); ok {
		return x.VrfQuery
	}
	return nil
}

func (x *DposVoteAction) GetRecordCB() *DposCBInfo {
	if x, ok := x.GetValue().(*DposVoteAction_RecordCB); ok {
		return x.RecordCB
	}
	return nil
}

func (x *DposVoteAction) GetCbQuery() *DposCBQuery {
	if x, ok := x.GetValue().(*DposVoteAction_CbQuery); ok {
		return x.CbQuery
	}
	return nil
}

func (x *DposVoteAction) GetRegistTopN() *TopNCandidatorRegist {
	if x, ok := x.GetValue().(*DposVoteAction_RegistTopN); ok {
		return x.RegistTopN
	}
	return nil
}

func (x *DposVoteAction) GetTopNQuery() *TopNCandidatorsQuery {
	if x, ok := x.GetValue().(*DposVoteAction_TopNQuery); ok {
		return x.TopNQuery
	}
	return nil
}

func (x *DposVoteAction) GetTy() int32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

type isDposVoteAction_Value interface {
	isDposVoteAction_Value()
}

type DposVoteAction_Regist struct {
	Regist *DposCandidatorRegist `protobuf:"bytes,1,opt,name=regist,proto3,oneof"`
}

type DposVoteAction_CancelRegist struct {
	CancelRegist *DposCandidatorCancelRegist `protobuf:"bytes,2,opt,name=cancelRegist,proto3,oneof"`
}

type DposVoteAction_ReRegist struct {
	ReRegist *DposCandidatorRegist `protobuf:"bytes,3,opt,name=reRegist,proto3,oneof"`
}

type DposVoteAction_Vote struct {
	Vote *DposVote `protobuf:"bytes,4,opt,name=vote,proto3,oneof"`
}

type DposVoteAction_CancelVote struct {
	CancelVote *DposCancelVote `protobuf:"bytes,5,opt,name=cancelVote,proto3,oneof"`
}

type DposVoteAction_CandidatorQuery struct {
	CandidatorQuery *CandidatorQuery `protobuf:"bytes,6,opt,name=candidatorQuery,proto3,oneof"`
}

type DposVoteAction_VoteQuery struct {
	VoteQuery *DposVoteQuery `protobuf:"bytes,7,opt,name=voteQuery,proto3,oneof"`
}

type DposVoteAction_RegistVrfM struct {
	RegistVrfM *DposVrfMRegist `protobuf:"bytes,8,opt,name=registVrfM,proto3,oneof"`
}

type DposVoteAction_RegistVrfRP struct {
	RegistVrfRP *DposVrfRPRegist `protobuf:"bytes,9,opt,name=registVrfRP,proto3,oneof"`
}

type DposVoteAction_VrfQuery struct {
	VrfQuery *DposVrfQuery `protobuf:"bytes,10,opt,name=vrfQuery,proto3,oneof"`
}

type DposVoteAction_RecordCB struct {
	RecordCB *DposCBInfo `protobuf:"bytes,11,opt,name=recordCB,proto3,oneof"`
}

type DposVoteAction_CbQuery struct {
	CbQuery *DposCBQuery `protobuf:"bytes,12,opt,name=cbQuery,proto3,oneof"`
}

type DposVoteAction_RegistTopN struct {
	RegistTopN *TopNCandidatorRegist `protobuf:"bytes,13,opt,name=registTopN,proto3,oneof"`
}

type DposVoteAction_TopNQuery struct {
	TopNQuery *TopNCandidatorsQuery `protobuf:"bytes,14,opt,name=topNQuery,proto3,oneof"`
}

func (*DposVoteAction_Regist) isDposVoteAction_Value() {}

func (*DposVoteAction_CancelRegist) isDposVoteAction_Value() {}

func (*DposVoteAction_ReRegist) isDposVoteAction_Value() {}

func (*DposVoteAction_Vote) isDposVoteAction_Value() {}

func (*DposVoteAction_CancelVote) isDposVoteAction_Value() {}

func (*DposVoteAction_CandidatorQuery) isDposVoteAction_Value() {}

func (*DposVoteAction_VoteQuery) isDposVoteAction_Value() {}

func (*DposVoteAction_RegistVrfM) isDposVoteAction_Value() {}

func (*DposVoteAction_RegistVrfRP) isDposVoteAction_Value() {}

func (*DposVoteAction_VrfQuery) isDposVoteAction_Value() {}

func (*DposVoteAction_RecordCB) isDposVoteAction_Value() {}

func (*DposVoteAction_CbQuery) isDposVoteAction_Value() {}

func (*DposVoteAction_RegistTopN) isDposVoteAction_Value() {}

func (*DposVoteAction_TopNQuery) isDposVoteAction_Value() {}

// CandidatorQuery 候选节点查询
type CandidatorQuery struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkeys []string `protobuf:"bytes,1,rep,name=pubkeys,proto3" json:"pubkeys,omitempty"` //候选节点公钥集合
	TopN    int32    `protobuf:"varint,2,opt,name=topN,proto3" json:"topN,omitempty"`      // topN
	Ty      int32    `protobuf:"varint,3,opt,name=ty,proto3" json:"ty,omitempty"`          // 1:按公钥集合查询，2：按topN票数查询
}

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

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

func (*CandidatorQuery) ProtoMessage() {}

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

func (x *CandidatorQuery) GetPubkeys() []string {
	if x != nil {
		return x.Pubkeys
	}
	return nil
}

func (x *CandidatorQuery) GetTopN() int32 {
	if x != nil {
		return x.TopN
	}
	return 0
}

func (x *CandidatorQuery) GetTy() int32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

// JSONCandidator 候选节点Json格式信息
type JSONCandidator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey  string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`   //候选节点的公钥
	Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` //后续节点的地址
	IP      string `protobuf:"bytes,3,opt,name=IP,proto3" json:"IP,omitempty"`           //候选节点的运行IP
	Votes   int64  `protobuf:"varint,4,opt,name=votes,proto3" json:"votes,omitempty"`    //候选节点的投票数
	Status  int64  `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`  //候选节点的状态，0:注册,1:当选,2:取消注册
}

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

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

func (*JSONCandidator) ProtoMessage() {}

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

func (x *JSONCandidator) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *JSONCandidator) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *JSONCandidator) GetIP() string {
	if x != nil {
		return x.IP
	}
	return ""
}

func (x *JSONCandidator) GetVotes() int64 {
	if x != nil {
		return x.Votes
	}
	return 0
}

func (x *JSONCandidator) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

// CandidatorReply 候选节点查询响应
type CandidatorReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Candidators []*JSONCandidator `protobuf:"bytes,1,rep,name=candidators,proto3" json:"candidators,omitempty"` //候选节点
}

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

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

func (*CandidatorReply) ProtoMessage() {}

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

func (x *CandidatorReply) GetCandidators() []*JSONCandidator {
	if x != nil {
		return x.Candidators
	}
	return nil
}

// DposVoteQuery 投票查询
type DposVoteQuery struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkeys []string `protobuf:"bytes,1,rep,name=pubkeys,proto3" json:"pubkeys,omitempty"` //候选节点的公钥，如果为空，则查询所有，否则，查询该地址给具体候选节点的投票
	Addr    string   `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`       //要查询的地址
}

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

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

func (*DposVoteQuery) ProtoMessage() {}

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

func (x *DposVoteQuery) GetPubkeys() []string {
	if x != nil {
		return x.Pubkeys
	}
	return nil
}

func (x *DposVoteQuery) GetAddr() string {
	if x != nil {
		return x.Addr
	}
	return ""
}

// JSONDposVoter Json格式的投票者信息
type JSONDposVoter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FromAddr string `protobuf:"bytes,1,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	Pubkey   string `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"` //候选节点的公钥
	Votes    int64  `protobuf:"varint,3,opt,name=votes,proto3" json:"votes,omitempty"`  //投给候选节点的票数，不能超过锁在合约中的未使用票数
	Index    int64  `protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
	Time     int64  `protobuf:"varint,5,opt,name=time,proto3" json:"time,omitempty"`
}

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

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

func (*JSONDposVoter) ProtoMessage() {}

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

func (x *JSONDposVoter) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *JSONDposVoter) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *JSONDposVoter) GetVotes() int64 {
	if x != nil {
		return x.Votes
	}
	return 0
}

func (x *JSONDposVoter) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *JSONDposVoter) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

// DposVoteReply 投票查询响应
type DposVoteReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Votes []*JSONDposVoter `protobuf:"bytes,1,rep,name=votes,proto3" json:"votes,omitempty"` //某地址对具体候选节点的投票情况
}

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

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

func (*DposVoteReply) ProtoMessage() {}

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

func (x *DposVoteReply) GetVotes() []*JSONDposVoter {
	if x != nil {
		return x.Votes
	}
	return nil
}

// ReceiptCandicator 候选者收据信息
type ReceiptCandicator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index        int64           `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey       []byte          `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Address      string          `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
	Status       int64           `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	PreStatus    int64           `protobuf:"varint,5,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
	StatusChange bool            `protobuf:"varint,6,opt,name=statusChange,proto3" json:"statusChange,omitempty"`
	VoteType     int32           `protobuf:"varint,7,opt,name=voteType,proto3" json:"voteType,omitempty"`
	Vote         *DposVoter      `protobuf:"bytes,8,opt,name=vote,proto3" json:"vote,omitempty"`
	FromAddr     string          `protobuf:"bytes,9,opt,name=fromAddr,proto3" json:"fromAddr,omitempty"`
	CandInfo     *CandidatorInfo `protobuf:"bytes,10,opt,name=candInfo,proto3" json:"candInfo,omitempty"`
	Time         int64           `protobuf:"varint,11,opt,name=time,proto3" json:"time,omitempty"`
}

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

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

func (*ReceiptCandicator) ProtoMessage() {}

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

func (x *ReceiptCandicator) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *ReceiptCandicator) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *ReceiptCandicator) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *ReceiptCandicator) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ReceiptCandicator) GetPreStatus() int64 {
	if x != nil {
		return x.PreStatus
	}
	return 0
}

func (x *ReceiptCandicator) GetStatusChange() bool {
	if x != nil {
		return x.StatusChange
	}
	return false
}

func (x *ReceiptCandicator) GetVoteType() int32 {
	if x != nil {
		return x.VoteType
	}
	return 0
}

func (x *ReceiptCandicator) GetVote() *DposVoter {
	if x != nil {
		return x.Vote
	}
	return nil
}

func (x *ReceiptCandicator) GetFromAddr() string {
	if x != nil {
		return x.FromAddr
	}
	return ""
}

func (x *ReceiptCandicator) GetCandInfo() *CandidatorInfo {
	if x != nil {
		return x.CandInfo
	}
	return nil
}

func (x *ReceiptCandicator) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

// DposVrfM VrfM信息
type DposVrfM struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index       int64  `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey      []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle       int64  `protobuf:"varint,3,opt,name=cycle,proto3" json:"cycle,omitempty"`
	Height      int64  `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"`
	M           []byte `protobuf:"bytes,5,opt,name=m,proto3" json:"m,omitempty"` // vrf的输入
	Time        int64  `protobuf:"varint,6,opt,name=time,proto3" json:"time,omitempty"`
	CycleStart  int64  `protobuf:"varint,7,opt,name=cycleStart,proto3" json:"cycleStart,omitempty"`
	CycleMiddle int64  `protobuf:"varint,8,opt,name=cycleMiddle,proto3" json:"cycleMiddle,omitempty"`
	CycleStop   int64  `protobuf:"varint,9,opt,name=cycleStop,proto3" json:"cycleStop,omitempty"`
}

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

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

func (*DposVrfM) ProtoMessage() {}

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

func (x *DposVrfM) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *DposVrfM) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *DposVrfM) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *DposVrfM) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *DposVrfM) GetM() []byte {
	if x != nil {
		return x.M
	}
	return nil
}

func (x *DposVrfM) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

func (x *DposVrfM) GetCycleStart() int64 {
	if x != nil {
		return x.CycleStart
	}
	return 0
}

func (x *DposVrfM) GetCycleMiddle() int64 {
	if x != nil {
		return x.CycleMiddle
	}
	return 0
}

func (x *DposVrfM) GetCycleStop() int64 {
	if x != nil {
		return x.CycleStop
	}
	return 0
}

// DposVrfRP VrfRP信息
type DposVrfRP struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index       int64  `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey      []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle       int64  `protobuf:"varint,3,opt,name=cycle,proto3" json:"cycle,omitempty"`
	Height      int64  `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"`
	M           []byte `protobuf:"bytes,5,opt,name=m,proto3" json:"m,omitempty"` // vrf的输入
	R           []byte `protobuf:"bytes,6,opt,name=r,proto3" json:"r,omitempty"` // vrf的hash
	P           []byte `protobuf:"bytes,7,opt,name=p,proto3" json:"p,omitempty"` // vrf的hash的proof
	Time        int64  `protobuf:"varint,8,opt,name=time,proto3" json:"time,omitempty"`
	CycleStart  int64  `protobuf:"varint,9,opt,name=cycleStart,proto3" json:"cycleStart,omitempty"`
	CycleMiddle int64  `protobuf:"varint,10,opt,name=cycleMiddle,proto3" json:"cycleMiddle,omitempty"`
	CycleStop   int64  `protobuf:"varint,11,opt,name=cycleStop,proto3" json:"cycleStop,omitempty"`
}

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

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

func (*DposVrfRP) ProtoMessage() {}

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

func (x *DposVrfRP) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *DposVrfRP) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *DposVrfRP) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *DposVrfRP) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *DposVrfRP) GetM() []byte {
	if x != nil {
		return x.M
	}
	return nil
}

func (x *DposVrfRP) GetR() []byte {
	if x != nil {
		return x.R
	}
	return nil
}

func (x *DposVrfRP) GetP() []byte {
	if x != nil {
		return x.P
	}
	return nil
}

func (x *DposVrfRP) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

func (x *DposVrfRP) GetCycleStart() int64 {
	if x != nil {
		return x.CycleStart
	}
	return 0
}

func (x *DposVrfRP) GetCycleMiddle() int64 {
	if x != nil {
		return x.CycleMiddle
	}
	return 0
}

func (x *DposVrfRP) GetCycleStop() int64 {
	if x != nil {
		return x.CycleStop
	}
	return 0
}

// DposVrfMRegist VrfM注册请求
type DposVrfMRegist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,2,opt,name=cycle,proto3" json:"cycle,omitempty"`
	M      string `protobuf:"bytes,3,opt,name=m,proto3" json:"m,omitempty"` // vrf的输入
}

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

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

func (*DposVrfMRegist) ProtoMessage() {}

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

func (x *DposVrfMRegist) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *DposVrfMRegist) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *DposVrfMRegist) GetM() string {
	if x != nil {
		return x.M
	}
	return ""
}

// DposVrfRPRegist VrfRP注册请求
type DposVrfRPRegist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,2,opt,name=cycle,proto3" json:"cycle,omitempty"`
	R      string `protobuf:"bytes,3,opt,name=r,proto3" json:"r,omitempty"` // vrf的hash
	P      string `protobuf:"bytes,4,opt,name=p,proto3" json:"p,omitempty"` // vrf的hash的proof
}

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

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

func (*DposVrfRPRegist) ProtoMessage() {}

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

func (x *DposVrfRPRegist) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *DposVrfRPRegist) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *DposVrfRPRegist) GetR() string {
	if x != nil {
		return x.R
	}
	return ""
}

func (x *DposVrfRPRegist) GetP() string {
	if x != nil {
		return x.P
	}
	return ""
}

// ReceiptVrf vrf收据信息
type ReceiptVrf struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index       int64  `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey      []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Status      int64  `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
	Cycle       int64  `protobuf:"varint,4,opt,name=cycle,proto3" json:"cycle,omitempty"`
	Height      int64  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	M           []byte `protobuf:"bytes,6,opt,name=m,proto3" json:"m,omitempty"`
	R           []byte `protobuf:"bytes,7,opt,name=r,proto3" json:"r,omitempty"`
	P           []byte `protobuf:"bytes,8,opt,name=p,proto3" json:"p,omitempty"`
	Time        int64  `protobuf:"varint,9,opt,name=time,proto3" json:"time,omitempty"`
	CycleStart  int64  `protobuf:"varint,10,opt,name=cycleStart,proto3" json:"cycleStart,omitempty"`
	CycleMiddle int64  `protobuf:"varint,11,opt,name=cycleMiddle,proto3" json:"cycleMiddle,omitempty"`
	CycleStop   int64  `protobuf:"varint,12,opt,name=cycleStop,proto3" json:"cycleStop,omitempty"`
}

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

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

func (*ReceiptVrf) ProtoMessage() {}

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

func (x *ReceiptVrf) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *ReceiptVrf) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *ReceiptVrf) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ReceiptVrf) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *ReceiptVrf) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ReceiptVrf) GetM() []byte {
	if x != nil {
		return x.M
	}
	return nil
}

func (x *ReceiptVrf) GetR() []byte {
	if x != nil {
		return x.R
	}
	return nil
}

func (x *ReceiptVrf) GetP() []byte {
	if x != nil {
		return x.P
	}
	return nil
}

func (x *ReceiptVrf) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

func (x *ReceiptVrf) GetCycleStart() int64 {
	if x != nil {
		return x.CycleStart
	}
	return 0
}

func (x *ReceiptVrf) GetCycleMiddle() int64 {
	if x != nil {
		return x.CycleMiddle
	}
	return 0
}

func (x *ReceiptVrf) GetCycleStop() int64 {
	if x != nil {
		return x.CycleStop
	}
	return 0
}

// VrfInfo vrf信息
type VrfInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index  int64  `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,4,opt,name=cycle,proto3" json:"cycle,omitempty"`
	Height int64  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	M      []byte `protobuf:"bytes,6,opt,name=m,proto3" json:"m,omitempty"`
	R      []byte `protobuf:"bytes,7,opt,name=r,proto3" json:"r,omitempty"`
	P      []byte `protobuf:"bytes,8,opt,name=p,proto3" json:"p,omitempty"`
	Time   int64  `protobuf:"varint,9,opt,name=time,proto3" json:"time,omitempty"`
}

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

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

func (*VrfInfo) ProtoMessage() {}

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

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

func (x *VrfInfo) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *VrfInfo) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *VrfInfo) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *VrfInfo) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *VrfInfo) GetM() []byte {
	if x != nil {
		return x.M
	}
	return nil
}

func (x *VrfInfo) GetR() []byte {
	if x != nil {
		return x.R
	}
	return nil
}

func (x *VrfInfo) GetP() []byte {
	if x != nil {
		return x.P
	}
	return nil
}

func (x *VrfInfo) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

// DposVrfQuery vrf查询请求
type DposVrfQuery struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pubkeys   []string `protobuf:"bytes,1,rep,name=pubkeys,proto3" json:"pubkeys,omitempty"`
	Ty        int64    `protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
	Timestamp int64    `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	Cycle     int64    `protobuf:"varint,4,opt,name=cycle,proto3" json:"cycle,omitempty"`
}

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

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

func (*DposVrfQuery) ProtoMessage() {}

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

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

func (x *DposVrfQuery) GetPubkeys() []string {
	if x != nil {
		return x.Pubkeys
	}
	return nil
}

func (x *DposVrfQuery) GetTy() int64 {
	if x != nil {
		return x.Ty
	}
	return 0
}

func (x *DposVrfQuery) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *DposVrfQuery) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

// JSONVrfInfo json格式的vrf信息
type JSONVrfInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index  int64  `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey string `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Cycle  int64  `protobuf:"varint,4,opt,name=cycle,proto3" json:"cycle,omitempty"`
	Height int64  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	M      string `protobuf:"bytes,6,opt,name=m,proto3" json:"m,omitempty"`
	R      string `protobuf:"bytes,7,opt,name=r,proto3" json:"r,omitempty"`
	P      string `protobuf:"bytes,8,opt,name=p,proto3" json:"p,omitempty"`
	Time   int64  `protobuf:"varint,9,opt,name=time,proto3" json:"time,omitempty"`
}

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

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

func (*JSONVrfInfo) ProtoMessage() {}

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

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

func (x *JSONVrfInfo) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *JSONVrfInfo) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *JSONVrfInfo) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *JSONVrfInfo) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *JSONVrfInfo) GetM() string {
	if x != nil {
		return x.M
	}
	return ""
}

func (x *JSONVrfInfo) GetR() string {
	if x != nil {
		return x.R
	}
	return ""
}

func (x *JSONVrfInfo) GetP() string {
	if x != nil {
		return x.P
	}
	return ""
}

func (x *JSONVrfInfo) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

// DposVrfReply vrf查询响应
type DposVrfReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Vrf []*JSONVrfInfo `protobuf:"bytes,1,rep,name=vrf,proto3" json:"vrf,omitempty"`
}

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

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

func (*DposVrfReply) ProtoMessage() {}

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

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

func (x *DposVrfReply) GetVrf() []*JSONVrfInfo {
	if x != nil {
		return x.Vrf
	}
	return nil
}

// DposCycleBoundaryInfo cycle边界信息
type DposCycleBoundaryInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cycle      int64  `protobuf:"varint,1,opt,name=cycle,proto3" json:"cycle,omitempty"`
	StopHeight int64  `protobuf:"varint,2,opt,name=stopHeight,proto3" json:"stopHeight,omitempty"`
	StopHash   []byte `protobuf:"bytes,3,opt,name=stopHash,proto3" json:"stopHash,omitempty"`
	Pubkey     []byte `protobuf:"bytes,4,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Signature  []byte `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
}

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

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

func (*DposCycleBoundaryInfo) ProtoMessage() {}

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

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

func (x *DposCycleBoundaryInfo) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *DposCycleBoundaryInfo) GetStopHeight() int64 {
	if x != nil {
		return x.StopHeight
	}
	return 0
}

func (x *DposCycleBoundaryInfo) GetStopHash() []byte {
	if x != nil {
		return x.StopHash
	}
	return nil
}

func (x *DposCycleBoundaryInfo) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *DposCycleBoundaryInfo) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

// DposCBInfo cycle边界记录请求消息
type DposCBInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cycle      int64  `protobuf:"varint,1,opt,name=cycle,proto3" json:"cycle,omitempty"`
	StopHeight int64  `protobuf:"varint,2,opt,name=stopHeight,proto3" json:"stopHeight,omitempty"`
	StopHash   string `protobuf:"bytes,3,opt,name=stopHash,proto3" json:"stopHash,omitempty"`
	Pubkey     string `protobuf:"bytes,4,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Signature  string `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
}

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

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

func (*DposCBInfo) ProtoMessage() {}

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

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

func (x *DposCBInfo) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *DposCBInfo) GetStopHeight() int64 {
	if x != nil {
		return x.StopHeight
	}
	return 0
}

func (x *DposCBInfo) GetStopHash() string {
	if x != nil {
		return x.StopHash
	}
	return ""
}

func (x *DposCBInfo) GetPubkey() string {
	if x != nil {
		return x.Pubkey
	}
	return ""
}

func (x *DposCBInfo) GetSignature() string {
	if x != nil {
		return x.Signature
	}
	return ""
}

// DposCBQuery cycle边界记录查询请求
type DposCBQuery struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cycle      int64  `protobuf:"varint,1,opt,name=cycle,proto3" json:"cycle,omitempty"`
	StopHeight int64  `protobuf:"varint,2,opt,name=stopHeight,proto3" json:"stopHeight,omitempty"`
	StopHash   string `protobuf:"bytes,3,opt,name=stopHash,proto3" json:"stopHash,omitempty"`
	Ty         int32  `protobuf:"varint,4,opt,name=ty,proto3" json:"ty,omitempty"`
}

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

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

func (*DposCBQuery) ProtoMessage() {}

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

// Deprecated: Use DposCBQuery.ProtoReflect.Descriptor instead.
func (*DposCBQuery) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{26}
}

func (x *DposCBQuery) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *DposCBQuery) GetStopHeight() int64 {
	if x != nil {
		return x.StopHeight
	}
	return 0
}

func (x *DposCBQuery) GetStopHash() string {
	if x != nil {
		return x.StopHash
	}
	return ""
}

func (x *DposCBQuery) GetTy() int32 {
	if x != nil {
		return x.Ty
	}
	return 0
}

// DposCBReply cycle边界记录查询响应
type DposCBReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CbInfo *DposCBInfo `protobuf:"bytes,1,opt,name=cbInfo,proto3" json:"cbInfo,omitempty"`
}

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

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

func (*DposCBReply) ProtoMessage() {}

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

// Deprecated: Use DposCBReply.ProtoReflect.Descriptor instead.
func (*DposCBReply) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{27}
}

func (x *DposCBReply) GetCbInfo() *DposCBInfo {
	if x != nil {
		return x.CbInfo
	}
	return nil
}

// ReceiptCB CycleBoundary收据信息
type ReceiptCB struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index       int64                  `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey      []byte                 `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Status      int64                  `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
	Cycle       int64                  `protobuf:"varint,4,opt,name=cycle,proto3" json:"cycle,omitempty"`
	Height      int64                  `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	Time        int64                  `protobuf:"varint,6,opt,name=time,proto3" json:"time,omitempty"`
	CycleStart  int64                  `protobuf:"varint,7,opt,name=cycleStart,proto3" json:"cycleStart,omitempty"`
	CycleMiddle int64                  `protobuf:"varint,8,opt,name=cycleMiddle,proto3" json:"cycleMiddle,omitempty"`
	CycleStop   int64                  `protobuf:"varint,9,opt,name=cycleStop,proto3" json:"cycleStop,omitempty"`
	CbInfo      *DposCycleBoundaryInfo `protobuf:"bytes,10,opt,name=cbInfo,proto3" json:"cbInfo,omitempty"`
}

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

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

func (*ReceiptCB) ProtoMessage() {}

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

// Deprecated: Use ReceiptCB.ProtoReflect.Descriptor instead.
func (*ReceiptCB) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{28}
}

func (x *ReceiptCB) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *ReceiptCB) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *ReceiptCB) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ReceiptCB) GetCycle() int64 {
	if x != nil {
		return x.Cycle
	}
	return 0
}

func (x *ReceiptCB) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ReceiptCB) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

func (x *ReceiptCB) GetCycleStart() int64 {
	if x != nil {
		return x.CycleStart
	}
	return 0
}

func (x *ReceiptCB) GetCycleMiddle() int64 {
	if x != nil {
		return x.CycleMiddle
	}
	return 0
}

func (x *ReceiptCB) GetCycleStop() int64 {
	if x != nil {
		return x.CycleStop
	}
	return 0
}

func (x *ReceiptCB) GetCbInfo() *DposCycleBoundaryInfo {
	if x != nil {
		return x.CbInfo
	}
	return nil
}

// TopNCandidator topN候选者
type TopNCandidator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cands        []*Candidator `protobuf:"bytes,1,rep,name=cands,proto3" json:"cands,omitempty"`
	Hash         []byte        `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
	Height       int64         `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	SignerPubkey []byte        `protobuf:"bytes,4,opt,name=signerPubkey,proto3" json:"signerPubkey,omitempty"`
	Signature    []byte        `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
}

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

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

func (*TopNCandidator) ProtoMessage() {}

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

// Deprecated: Use TopNCandidator.ProtoReflect.Descriptor instead.
func (*TopNCandidator) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{29}
}

func (x *TopNCandidator) GetCands() []*Candidator {
	if x != nil {
		return x.Cands
	}
	return nil
}

func (x *TopNCandidator) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

func (x *TopNCandidator) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *TopNCandidator) GetSignerPubkey() []byte {
	if x != nil {
		return x.SignerPubkey
	}
	return nil
}

func (x *TopNCandidator) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

// TopNCandidators topN候选者(复数)
type TopNCandidators struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CandsVotes []*TopNCandidator `protobuf:"bytes,1,rep,name=candsVotes,proto3" json:"candsVotes,omitempty"`
	Version    int64             `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
	Status     int64             `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
	FinalCands []*Candidator     `protobuf:"bytes,4,rep,name=finalCands,proto3" json:"finalCands,omitempty"`
}

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

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

func (*TopNCandidators) ProtoMessage() {}

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

// Deprecated: Use TopNCandidators.ProtoReflect.Descriptor instead.
func (*TopNCandidators) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{30}
}

func (x *TopNCandidators) GetCandsVotes() []*TopNCandidator {
	if x != nil {
		return x.CandsVotes
	}
	return nil
}

func (x *TopNCandidators) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *TopNCandidators) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *TopNCandidators) GetFinalCands() []*Candidator {
	if x != nil {
		return x.FinalCands
	}
	return nil
}

// TopNCandidatorRegist topN候选者注册请求
type TopNCandidatorRegist struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Cand *TopNCandidator `protobuf:"bytes,1,opt,name=cand,proto3" json:"cand,omitempty"`
}

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

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

func (*TopNCandidatorRegist) ProtoMessage() {}

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

// Deprecated: Use TopNCandidatorRegist.ProtoReflect.Descriptor instead.
func (*TopNCandidatorRegist) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{31}
}

func (x *TopNCandidatorRegist) GetCand() *TopNCandidator {
	if x != nil {
		return x.Cand
	}
	return nil
}

// TopNCandidatorsQuery topN候选者查询请求
type TopNCandidatorsQuery struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Version int64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
}

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

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

func (*TopNCandidatorsQuery) ProtoMessage() {}

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

// Deprecated: Use TopNCandidatorsQuery.ProtoReflect.Descriptor instead.
func (*TopNCandidatorsQuery) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{32}
}

func (x *TopNCandidatorsQuery) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

// TopNCandidatorsReply topN候选者查询响应
type TopNCandidatorsReply struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TopN *TopNCandidators `protobuf:"bytes,1,opt,name=topN,proto3" json:"topN,omitempty"`
}

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

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

func (*TopNCandidatorsReply) ProtoMessage() {}

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

// Deprecated: Use TopNCandidatorsReply.ProtoReflect.Descriptor instead.
func (*TopNCandidatorsReply) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{33}
}

func (x *TopNCandidatorsReply) GetTopN() *TopNCandidators {
	if x != nil {
		return x.TopN
	}
	return nil
}

// ReceiptTopN topN注册的收据信息
type ReceiptTopN struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Index   int64           `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Pubkey  []byte          `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"`
	Status  int64           `protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
	Version int64           `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"`
	Height  int64           `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
	Time    int64           `protobuf:"varint,6,opt,name=time,proto3" json:"time,omitempty"`
	TopN    *TopNCandidator `protobuf:"bytes,10,opt,name=topN,proto3" json:"topN,omitempty"`
}

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

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

func (*ReceiptTopN) ProtoMessage() {}

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

// Deprecated: Use ReceiptTopN.ProtoReflect.Descriptor instead.
func (*ReceiptTopN) Descriptor() ([]byte, []int) {
	return file_dposvote_proto_rawDescGZIP(), []int{34}
}

func (x *ReceiptTopN) GetIndex() int64 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *ReceiptTopN) GetPubkey() []byte {
	if x != nil {
		return x.Pubkey
	}
	return nil
}

func (x *ReceiptTopN) GetStatus() int64 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *ReceiptTopN) GetVersion() int64 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *ReceiptTopN) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *ReceiptTopN) GetTime() int64 {
	if x != nil {
		return x.Time
	}
	return 0
}

func (x *ReceiptTopN) GetTopN() *TopNCandidator {
	if x != nil {
		return x.TopN
	}
	return nil
}

var File_dposvote_proto protoreflect.FileDescriptor

var file_dposvote_proto_rawDesc = []byte{
	0x0a, 0x0e, 0x64, 0x70, 0x6f, 0x73, 0x76, 0x6f, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x12, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x0e, 0x43, 0x61, 0x6e, 0x64,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75,
	0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b,
	0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02,
	0x49, 0x50, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x6f, 0x74,
	0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72,
	0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70,
	0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x54, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e,
	0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78,
	0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x08, 0x70, 0x72, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x0a, 0x06,
	0x76, 0x6f, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x52, 0x06,
	0x76, 0x6f, 0x74, 0x65, 0x72, 0x73, 0x22, 0x7f, 0x0a, 0x09, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f,
	0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x12,
	0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x14, 0x0a,
	0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e,
	0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x7c, 0x0a, 0x0a, 0x43, 0x61, 0x6e, 0x64, 0x69,
	0x64, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a,
	0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x58, 0x0a, 0x14, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x61, 0x6e,
	0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a,
	0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12,
	0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x22,
	0x4e, 0x0a, 0x1a, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a,
	0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22,
	0x54, 0x0a, 0x08, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66,
	0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
	0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
	0x76, 0x6f, 0x74, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x0e, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x61, 0x6e,
	0x63, 0x65, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
	0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xc3, 0x06, 0x0a, 0x0e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f,
	0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52,
	0x65, 0x67, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x12,
	0x47, 0x0a, 0x0c, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x70,
	0x6f, 0x73, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6e, 0x63,
	0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x63,
	0x65, 0x6c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, 0x52, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x52, 0x65, 0x67,
	0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f,
	0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x63, 0x61,
	0x6e, 0x63, 0x65, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x61, 0x6e, 0x63, 0x65,
	0x6c, 0x56, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x56,
	0x6f, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x48, 0x00, 0x52, 0x09, 0x76, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x37, 0x0a,
	0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x56, 0x72, 0x66, 0x4d, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x72,
	0x66, 0x4d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69,
	0x73, 0x74, 0x56, 0x72, 0x66, 0x4d, 0x12, 0x3a, 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
	0x56, 0x72, 0x66, 0x52, 0x50, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x72, 0x66, 0x52, 0x50, 0x52, 0x65, 0x67,
	0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x56, 0x72, 0x66,
	0x52, 0x50, 0x12, 0x31, 0x0a, 0x08, 0x76, 0x72, 0x66, 0x51, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f,
	0x73, 0x56, 0x72, 0x66, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x08, 0x76, 0x72, 0x66,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x43,
	0x42, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x44, 0x70, 0x6f, 0x73, 0x43, 0x42, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65,
	0x63, 0x6f, 0x72, 0x64, 0x43, 0x42, 0x12, 0x2e, 0x0a, 0x07, 0x63, 0x62, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x44, 0x70, 0x6f, 0x73, 0x43, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x07, 0x63,
	0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x3d, 0x0a, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
	0x54, 0x6f, 0x70, 0x4e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x73,
	0x74, 0x54, 0x6f, 0x70, 0x4e, 0x12, 0x3b, 0x0a, 0x09, 0x74, 0x6f, 0x70, 0x4e, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x54, 0x6f, 0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x09, 0x74, 0x6f, 0x70, 0x4e, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
	0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4f, 0x0a, 0x0f, 0x43,
	0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x18,
	0x0a, 0x07, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x07, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x70, 0x4e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x6f, 0x70, 0x4e, 0x12, 0x0e, 0x0a, 0x02,
	0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x22, 0x80, 0x01, 0x0a,
	0x0e, 0x4a, 0x53, 0x4f, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x12,
	0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65,
	0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49,
	0x50, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
	0x4a, 0x0a, 0x0f, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70,
	0x6c, 0x79, 0x12, 0x37, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x4a, 0x53, 0x4f, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0b,
	0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3d, 0x0a, 0x0d, 0x44,
	0x70, 0x6f, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07,
	0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x4a,
	0x53, 0x4f, 0x4e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08,
	0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b,
	0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65,
	0x22, 0x3b, 0x0a, 0x0d, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c,
	0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x53, 0x4f, 0x4e, 0x44, 0x70, 0x6f,
	0x73, 0x56, 0x6f, 0x74, 0x65, 0x72, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x22, 0xda, 0x02,
	0x0a, 0x11, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62,
	0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65,
	0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67,
	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x6f, 0x74, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x24, 0x0a, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x6f, 0x74, 0x65,
	0x72, 0x52, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41,
	0x64, 0x64, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x41,
	0x64, 0x64, 0x72, 0x12, 0x31, 0x0a, 0x08, 0x63, 0x61, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x61,
	0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x63, 0x61,
	0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x08, 0x44,
	0x70, 0x6f, 0x73, 0x56, 0x72, 0x66, 0x4d, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a,
	0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01,
	0x6d, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74,
	0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x79, 0x63, 0x6c, 0x65,
	0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x4d, 0x69,
	0x64, 0x64, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x79, 0x63, 0x6c,
	0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x79, 0x63, 0x6c, 0x65,
	0x53, 0x74, 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x79, 0x63, 0x6c,
	0x65, 0x53, 0x74, 0x6f, 0x70, 0x22, 0x85, 0x02, 0x0a, 0x09, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x72,
	0x66, 0x52, 0x50, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62,
	0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65,
	0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x6d, 0x12, 0x0c, 0x0a,
	0x01, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x70,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a,
	0x0a, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0a, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x20, 0x0a,
	0x0b, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0b, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x09, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x22, 0x4c, 0x0a,
	0x0e, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x72, 0x66, 0x4d, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x12,
	0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0c, 0x0a,
	0x01, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x6d, 0x22, 0x5b, 0x0a, 0x0f, 0x44,
	0x70, 0x6f, 0x73, 0x56, 0x72, 0x66, 0x52, 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x12, 0x16,
	0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x01,
	0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x70, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x70, 0x22, 0x9e, 0x02, 0x0a, 0x0a, 0x52, 0x65, 0x63,
	0x65, 0x69, 0x70, 0x74, 0x56, 0x72, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a,
	0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a,
	0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79,
	0x63, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x6d,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x6d, 0x12, 0x0c, 0x0a, 0x01, 0x72, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x70, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x01, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x79, 0x63,
	0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63,
	0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x79, 0x63,
	0x6c, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
	0x63, 0x79, 0x63, 0x6c, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63,
	0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
	0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x22, 0xa3, 0x01, 0x0a, 0x07, 0x56, 0x72,
	0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x70,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x6d, 0x12,
	0x0c, 0x0a, 0x01, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x72, 0x12, 0x0c, 0x0a,
	0x01, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x01, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22,
	0x6c, 0x0a, 0x0c, 0x44, 0x70, 0x6f, 0x73, 0x56, 0x72, 0x66, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12,
	0x18, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x07, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x22, 0xa7, 0x01,
	0x0a, 0x0b, 0x4a, 0x53, 0x4f, 0x4e, 0x56, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a,
	0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x49, 0x6e,
	0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63,
	0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c,
	0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x6d, 0x12, 0x0c, 0x0a, 0x01, 0x72, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x01, 0x72, 0x12, 0x0c, 0x0a, 0x01, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x01, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x34, 0x0a, 0x0c, 0x44, 0x70, 0x6f, 0x73, 0x56,
	0x72, 0x66, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x76, 0x72, 0x66, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4a, 0x53, 0x4f,
	0x4e, 0x56, 0x72, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x76, 0x72, 0x66, 0x22, 0x9f, 0x01,
	0x0a, 0x15, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64,
	0x61, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a,
	0x0a, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a,
	0x08, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x08, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62,
	0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65,
	0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22,
	0x94, 0x01, 0x0a, 0x0a, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x42, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14,
	0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63,
	0x79, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x61, 0x73, 0x68,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x61, 0x73, 0x68,
	0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67,
	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x6f, 0x0a, 0x0b, 0x44, 0x70, 0x6f, 0x73, 0x43, 0x42,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73,
	0x74, 0x6f, 0x70, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0a, 0x73, 0x74, 0x6f, 0x70, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73,
	0x74, 0x6f, 0x70, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,
	0x74, 0x6f, 0x70, 0x48, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x22, 0x38, 0x0a, 0x0b, 0x44, 0x70, 0x6f, 0x73, 0x43,
	0x42, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x62, 0x49, 0x6e, 0x66, 0x6f,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44,
	0x70, 0x6f, 0x73, 0x43, 0x42, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x62, 0x49, 0x6e, 0x66,
	0x6f, 0x22, 0xa9, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x42, 0x12,
	0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
	0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x79, 0x63, 0x6c, 0x65,
	0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x79, 0x63,
	0x6c, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x79, 0x63, 0x6c, 0x65,
	0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x79,
	0x63, 0x6c, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x79, 0x63,
	0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x79,
	0x63, 0x6c, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x62, 0x49, 0x6e, 0x66,
	0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x44, 0x70, 0x6f, 0x73, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72,
	0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa7, 0x01,
	0x0a, 0x0e, 0x54, 0x6f, 0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
	0x12, 0x27, 0x0a, 0x05, 0x63, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74,
	0x6f, 0x72, 0x52, 0x05, 0x63, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73,
	0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x50,
	0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x69, 0x67,
	0x6e, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67,
	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69,
	0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x0f, 0x54, 0x6f, 0x70, 0x4e,
	0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x63,
	0x61, 0x6e, 0x64, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64,
	0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x64, 0x73, 0x56, 0x6f, 0x74,
	0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0a, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x61, 0x6e,
	0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x66, 0x69, 0x6e,
	0x61, 0x6c, 0x43, 0x61, 0x6e, 0x64, 0x73, 0x22, 0x41, 0x0a, 0x14, 0x54, 0x6f, 0x70, 0x4e, 0x43,
	0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x12,
	0x29, 0x0a, 0x04, 0x63, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64,
	0x61, 0x74, 0x6f, 0x72, 0x52, 0x04, 0x63, 0x61, 0x6e, 0x64, 0x22, 0x30, 0x0a, 0x14, 0x54, 0x6f,
	0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x42, 0x0a, 0x14,
	0x54, 0x6f, 0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52,
	0x65, 0x70, 0x6c, 0x79, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x6f, 0x70, 0x4e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x4e, 0x43,
	0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x04, 0x74, 0x6f, 0x70, 0x4e,
	0x22, 0xc4, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x54, 0x6f, 0x70, 0x4e,
	0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x16,
	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04,
	0x74, 0x6f, 0x70, 0x4e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x54, 0x6f, 0x70, 0x4e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x6f,
	0x72, 0x52, 0x04, 0x74, 0x6f, 0x70, 0x4e, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_dposvote_proto_rawDescOnce sync.Once
	file_dposvote_proto_rawDescData = file_dposvote_proto_rawDesc
)

func file_dposvote_proto_rawDescGZIP() []byte {
	file_dposvote_proto_rawDescOnce.Do(func() {
		file_dposvote_proto_rawDescData = protoimpl.X.CompressGZIP(file_dposvote_proto_rawDescData)
	})
	return file_dposvote_proto_rawDescData
}

var file_dposvote_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
var file_dposvote_proto_goTypes = []interface{}{
	(*CandidatorInfo)(nil),             // 0: types.CandidatorInfo
	(*DposVoter)(nil),                  // 1: types.DposVoter
	(*Candidator)(nil),                 // 2: types.Candidator
	(*DposCandidatorRegist)(nil),       // 3: types.DposCandidatorRegist
	(*DposCandidatorCancelRegist)(nil), // 4: types.DposCandidatorCancelRegist
	(*DposVote)(nil),                   // 5: types.DposVote
	(*DposCancelVote)(nil),             // 6: types.DposCancelVote
	(*DposVoteAction)(nil),             // 7: types.DposVoteAction
	(*CandidatorQuery)(nil),            // 8: types.CandidatorQuery
	(*JSONCandidator)(nil),             // 9: types.JSONCandidator
	(*CandidatorReply)(nil),            // 10: types.CandidatorReply
	(*DposVoteQuery)(nil),              // 11: types.DposVoteQuery
	(*JSONDposVoter)(nil),              // 12: types.JSONDposVoter
	(*DposVoteReply)(nil),              // 13: types.DposVoteReply
	(*ReceiptCandicator)(nil),          // 14: types.ReceiptCandicator
	(*DposVrfM)(nil),                   // 15: types.DposVrfM
	(*DposVrfRP)(nil),                  // 16: types.DposVrfRP
	(*DposVrfMRegist)(nil),             // 17: types.DposVrfMRegist
	(*DposVrfRPRegist)(nil),            // 18: types.DposVrfRPRegist
	(*ReceiptVrf)(nil),                 // 19: types.ReceiptVrf
	(*VrfInfo)(nil),                    // 20: types.VrfInfo
	(*DposVrfQuery)(nil),               // 21: types.DposVrfQuery
	(*JSONVrfInfo)(nil),                // 22: types.JSONVrfInfo
	(*DposVrfReply)(nil),               // 23: types.DposVrfReply
	(*DposCycleBoundaryInfo)(nil),      // 24: types.DposCycleBoundaryInfo
	(*DposCBInfo)(nil),                 // 25: types.DposCBInfo
	(*DposCBQuery)(nil),                // 26: types.DposCBQuery
	(*DposCBReply)(nil),                // 27: types.DposCBReply
	(*ReceiptCB)(nil),                  // 28: types.ReceiptCB
	(*TopNCandidator)(nil),             // 29: types.TopNCandidator
	(*TopNCandidators)(nil),            // 30: types.TopNCandidators
	(*TopNCandidatorRegist)(nil),       // 31: types.TopNCandidatorRegist
	(*TopNCandidatorsQuery)(nil),       // 32: types.TopNCandidatorsQuery
	(*TopNCandidatorsReply)(nil),       // 33: types.TopNCandidatorsReply
	(*ReceiptTopN)(nil),                // 34: types.ReceiptTopN
}
var file_dposvote_proto_depIdxs = []int32{
	1,  // 0: types.CandidatorInfo.voters:type_name -> types.DposVoter
	3,  // 1: types.DposVoteAction.regist:type_name -> types.DposCandidatorRegist
	4,  // 2: types.DposVoteAction.cancelRegist:type_name -> types.DposCandidatorCancelRegist
	3,  // 3: types.DposVoteAction.reRegist:type_name -> types.DposCandidatorRegist
	5,  // 4: types.DposVoteAction.vote:type_name -> types.DposVote
	6,  // 5: types.DposVoteAction.cancelVote:type_name -> types.DposCancelVote
	8,  // 6: types.DposVoteAction.candidatorQuery:type_name -> types.CandidatorQuery
	11, // 7: types.DposVoteAction.voteQuery:type_name -> types.DposVoteQuery
	17, // 8: types.DposVoteAction.registVrfM:type_name -> types.DposVrfMRegist
	18, // 9: types.DposVoteAction.registVrfRP:type_name -> types.DposVrfRPRegist
	21, // 10: types.DposVoteAction.vrfQuery:type_name -> types.DposVrfQuery
	25, // 11: types.DposVoteAction.recordCB:type_name -> types.DposCBInfo
	26, // 12: types.DposVoteAction.cbQuery:type_name -> types.DposCBQuery
	31, // 13: types.DposVoteAction.registTopN:type_name -> types.TopNCandidatorRegist
	32, // 14: types.DposVoteAction.topNQuery:type_name -> types.TopNCandidatorsQuery
	9,  // 15: types.CandidatorReply.candidators:type_name -> types.JSONCandidator
	12, // 16: types.DposVoteReply.votes:type_name -> types.JSONDposVoter
	1,  // 17: types.ReceiptCandicator.vote:type_name -> types.DposVoter
	0,  // 18: types.ReceiptCandicator.candInfo:type_name -> types.CandidatorInfo
	22, // 19: types.DposVrfReply.vrf:type_name -> types.JSONVrfInfo
	25, // 20: types.DposCBReply.cbInfo:type_name -> types.DposCBInfo
	24, // 21: types.ReceiptCB.cbInfo:type_name -> types.DposCycleBoundaryInfo
	2,  // 22: types.TopNCandidator.cands:type_name -> types.Candidator
	29, // 23: types.TopNCandidators.candsVotes:type_name -> types.TopNCandidator
	2,  // 24: types.TopNCandidators.finalCands:type_name -> types.Candidator
	29, // 25: types.TopNCandidatorRegist.cand:type_name -> types.TopNCandidator
	30, // 26: types.TopNCandidatorsReply.topN:type_name -> types.TopNCandidators
	29, // 27: types.ReceiptTopN.topN:type_name -> types.TopNCandidator
	28, // [28:28] is the sub-list for method output_type
	28, // [28:28] is the sub-list for method input_type
	28, // [28:28] is the sub-list for extension type_name
	28, // [28:28] is the sub-list for extension extendee
	0,  // [0:28] is the sub-list for field type_name
}

func init() { file_dposvote_proto_init() }
func file_dposvote_proto_init() {
	if File_dposvote_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_dposvote_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CandidatorInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVoter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Candidator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposCandidatorRegist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposCandidatorCancelRegist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVote); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposCancelVote); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVoteAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CandidatorQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JSONCandidator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CandidatorReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVoteQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JSONDposVoter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVoteReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptCandicator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVrfM); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVrfRP); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVrfMRegist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVrfRPRegist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptVrf); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VrfInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVrfQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JSONVrfInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposVrfReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposCycleBoundaryInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposCBInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposCBQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DposCBReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptCB); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopNCandidator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopNCandidators); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopNCandidatorRegist); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopNCandidatorsQuery); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TopNCandidatorsReply); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_dposvote_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptTopN); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_dposvote_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*DposVoteAction_Regist)(nil),
		(*DposVoteAction_CancelRegist)(nil),
		(*DposVoteAction_ReRegist)(nil),
		(*DposVoteAction_Vote)(nil),
		(*DposVoteAction_CancelVote)(nil),
		(*DposVoteAction_CandidatorQuery)(nil),
		(*DposVoteAction_VoteQuery)(nil),
		(*DposVoteAction_RegistVrfM)(nil),
		(*DposVoteAction_RegistVrfRP)(nil),
		(*DposVoteAction_VrfQuery)(nil),
		(*DposVoteAction_RecordCB)(nil),
		(*DposVoteAction_CbQuery)(nil),
		(*DposVoteAction_RegistTopN)(nil),
		(*DposVoteAction_TopNQuery)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_dposvote_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   35,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_dposvote_proto_goTypes,
		DependencyIndexes: file_dposvote_proto_depIdxs,
		MessageInfos:      file_dposvote_proto_msgTypes,
	}.Build()
	File_dposvote_proto = out.File
	file_dposvote_proto_rawDesc = nil
	file_dposvote_proto_goTypes = nil
	file_dposvote_proto_depIdxs = nil
}
