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

package types

import (
	context "context"
	reflect "reflect"
	sync "sync"

	types "github.com/33cn/chain33/types"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	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)
)

// trade 交易部分
//
type Trade struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Value:
	//	*Trade_SellLimit
	//	*Trade_BuyMarket
	//	*Trade_RevokeSell
	//	*Trade_BuyLimit
	//	*Trade_SellMarket
	//	*Trade_RevokeBuy
	Value isTrade_Value `protobuf_oneof:"value"`
	Ty    int32         `protobuf:"varint,4,opt,name=ty,proto3" json:"ty,omitempty"`
}

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

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

func (*Trade) ProtoMessage() {}

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

func (m *Trade) GetValue() isTrade_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *Trade) GetSellLimit() *TradeForSell {
	if x, ok := x.GetValue().(*Trade_SellLimit); ok {
		return x.SellLimit
	}
	return nil
}

func (x *Trade) GetBuyMarket() *TradeForBuy {
	if x, ok := x.GetValue().(*Trade_BuyMarket); ok {
		return x.BuyMarket
	}
	return nil
}

func (x *Trade) GetRevokeSell() *TradeForRevokeSell {
	if x, ok := x.GetValue().(*Trade_RevokeSell); ok {
		return x.RevokeSell
	}
	return nil
}

func (x *Trade) GetBuyLimit() *TradeForBuyLimit {
	if x, ok := x.GetValue().(*Trade_BuyLimit); ok {
		return x.BuyLimit
	}
	return nil
}

func (x *Trade) GetSellMarket() *TradeForSellMarket {
	if x, ok := x.GetValue().(*Trade_SellMarket); ok {
		return x.SellMarket
	}
	return nil
}

func (x *Trade) GetRevokeBuy() *TradeForRevokeBuy {
	if x, ok := x.GetValue().(*Trade_RevokeBuy); ok {
		return x.RevokeBuy
	}
	return nil
}

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

type isTrade_Value interface {
	isTrade_Value()
}

type Trade_SellLimit struct {
	SellLimit *TradeForSell `protobuf:"bytes,1,opt,name=sellLimit,proto3,oneof"`
}

type Trade_BuyMarket struct {
	BuyMarket *TradeForBuy `protobuf:"bytes,2,opt,name=buyMarket,proto3,oneof"`
}

type Trade_RevokeSell struct {
	RevokeSell *TradeForRevokeSell `protobuf:"bytes,3,opt,name=revokeSell,proto3,oneof"`
}

type Trade_BuyLimit struct {
	BuyLimit *TradeForBuyLimit `protobuf:"bytes,5,opt,name=buyLimit,proto3,oneof"`
}

type Trade_SellMarket struct {
	SellMarket *TradeForSellMarket `protobuf:"bytes,6,opt,name=sellMarket,proto3,oneof"`
}

type Trade_RevokeBuy struct {
	RevokeBuy *TradeForRevokeBuy `protobuf:"bytes,7,opt,name=revokeBuy,proto3,oneof"`
}

func (*Trade_SellLimit) isTrade_Value() {}

func (*Trade_BuyMarket) isTrade_Value() {}

func (*Trade_RevokeSell) isTrade_Value() {}

func (*Trade_BuyLimit) isTrade_Value() {}

func (*Trade_SellMarket) isTrade_Value() {}

func (*Trade_RevokeBuy) isTrade_Value() {}

// 创建众筹交易,确定一手交易的token的数量，单价以及总共有多少手token可以进行众筹
type TradeForSell struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TokenSymbol string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	// 每一手出售的token的数量
	AmountPerBoardlot int64 `protobuf:"varint,2,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	// 起卖手数,必须达到这个门槛才允许进行交易
	MinBoardlot int64 `protobuf:"varint,3,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	// 每一手token的价格
	PricePerBoardlot int64 `protobuf:"varint,4,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot    int64 `protobuf:"varint,5,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	// 此次出售的起始时间，如果非众筹则可以忽略此时间
	Starttime int64 `protobuf:"varint,6,opt,name=starttime,proto3" json:"starttime,omitempty"`
	Stoptime  int64 `protobuf:"varint,7,opt,name=stoptime,proto3" json:"stoptime,omitempty"`
	Crowdfund bool  `protobuf:"varint,8,opt,name=crowdfund,proto3" json:"crowdfund,omitempty"`
	// 资产来源
	AssetExec string `protobuf:"bytes,9,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	// 定价资产
	PriceExec   string `protobuf:"bytes,10,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol string `protobuf:"bytes,11,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*TradeForSell) ProtoMessage() {}

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

func (x *TradeForSell) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *TradeForSell) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *TradeForSell) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *TradeForSell) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *TradeForSell) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *TradeForSell) GetStarttime() int64 {
	if x != nil {
		return x.Starttime
	}
	return 0
}

func (x *TradeForSell) GetStoptime() int64 {
	if x != nil {
		return x.Stoptime
	}
	return 0
}

func (x *TradeForSell) GetCrowdfund() bool {
	if x != nil {
		return x.Crowdfund
	}
	return false
}

func (x *TradeForSell) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *TradeForSell) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *TradeForSell) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

// 购买者发起交易用来购买token持有者之前挂单出售的token
// 其中的hash为token出售者发起出售交易的hash
type TradeForBuy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SellID      string `protobuf:"bytes,1,opt,name=sellID,proto3" json:"sellID,omitempty"`
	BoardlotCnt int64  `protobuf:"varint,2,opt,name=boardlotCnt,proto3" json:"boardlotCnt,omitempty"`
}

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

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

func (*TradeForBuy) ProtoMessage() {}

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

func (x *TradeForBuy) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

func (x *TradeForBuy) GetBoardlotCnt() int64 {
	if x != nil {
		return x.BoardlotCnt
	}
	return 0
}

// 允许token的持有者撤销之前未成交出售token的挂单
type TradeForRevokeSell struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SellID string `protobuf:"bytes,1,opt,name=sellID,proto3" json:"sellID,omitempty"`
}

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

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

func (*TradeForRevokeSell) ProtoMessage() {}

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

func (x *TradeForRevokeSell) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

// 限价买单构造请求
type TradeForBuyLimit struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TokenSymbol       string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	AmountPerBoardlot int64  `protobuf:"varint,2,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64  `protobuf:"varint,3,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	PricePerBoardlot  int64  `protobuf:"varint,4,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot     int64  `protobuf:"varint,5,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	AssetExec         string `protobuf:"bytes,6,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	// 定价资产
	PriceExec   string `protobuf:"bytes,7,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol string `protobuf:"bytes,8,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*TradeForBuyLimit) ProtoMessage() {}

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

func (x *TradeForBuyLimit) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *TradeForBuyLimit) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *TradeForBuyLimit) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *TradeForBuyLimit) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *TradeForBuyLimit) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *TradeForBuyLimit) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *TradeForBuyLimit) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *TradeForBuyLimit) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

// 现价卖单
type TradeForSellMarket struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BuyID       string `protobuf:"bytes,1,opt,name=buyID,proto3" json:"buyID,omitempty"`
	BoardlotCnt int64  `protobuf:"varint,2,opt,name=boardlotCnt,proto3" json:"boardlotCnt,omitempty"`
}

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

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

func (*TradeForSellMarket) ProtoMessage() {}

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

func (x *TradeForSellMarket) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

func (x *TradeForSellMarket) GetBoardlotCnt() int64 {
	if x != nil {
		return x.BoardlotCnt
	}
	return 0
}

// 撤销买单
type TradeForRevokeBuy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	BuyID string `protobuf:"bytes,1,opt,name=buyID,proto3" json:"buyID,omitempty"`
}

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

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

func (*TradeForRevokeBuy) ProtoMessage() {}

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

func (x *TradeForRevokeBuy) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

// 数据库部分
type SellOrder struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TokenSymbol string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	Address     string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	//每一手出售的token的数量
	AmountPerBoardlot int64 `protobuf:"varint,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64 `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	//每一手token的价格
	PricePerBoardlot int64 `protobuf:"varint,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot    int64 `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	SoldBoardlot     int64 `protobuf:"varint,7,opt,name=soldBoardlot,proto3" json:"soldBoardlot,omitempty"`
	//此次出售的起始时间，如果非众筹则可以忽略此时间
	Starttime int64 `protobuf:"varint,8,opt,name=starttime,proto3" json:"starttime,omitempty"`
	Stoptime  int64 `protobuf:"varint,9,opt,name=stoptime,proto3" json:"stoptime,omitempty"`
	Crowdfund bool  `protobuf:"varint,10,opt,name=crowdfund,proto3" json:"crowdfund,omitempty"`
	//此处使用tx的hash来指定
	SellID      string `protobuf:"bytes,11,opt,name=sellID,proto3" json:"sellID,omitempty"`
	Status      int32  `protobuf:"varint,12,opt,name=status,proto3" json:"status,omitempty"`
	Height      int64  `protobuf:"varint,13,opt,name=height,proto3" json:"height,omitempty"`
	AssetExec   string `protobuf:"bytes,14,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	PriceExec   string `protobuf:"bytes,15,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol string `protobuf:"bytes,16,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*SellOrder) ProtoMessage() {}

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

func (x *SellOrder) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

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

func (x *SellOrder) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *SellOrder) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *SellOrder) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *SellOrder) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *SellOrder) GetSoldBoardlot() int64 {
	if x != nil {
		return x.SoldBoardlot
	}
	return 0
}

func (x *SellOrder) GetStarttime() int64 {
	if x != nil {
		return x.Starttime
	}
	return 0
}

func (x *SellOrder) GetStoptime() int64 {
	if x != nil {
		return x.Stoptime
	}
	return 0
}

func (x *SellOrder) GetCrowdfund() bool {
	if x != nil {
		return x.Crowdfund
	}
	return false
}

func (x *SellOrder) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

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

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

func (x *SellOrder) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *SellOrder) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *SellOrder) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

// 限价买单数据库记录
type BuyLimitOrder struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TokenSymbol       string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	Address           string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	AmountPerBoardlot int64  `protobuf:"varint,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64  `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	PricePerBoardlot  int64  `protobuf:"varint,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot     int64  `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	BoughtBoardlot    int64  `protobuf:"varint,7,opt,name=boughtBoardlot,proto3" json:"boughtBoardlot,omitempty"`
	BuyID             string `protobuf:"bytes,8,opt,name=buyID,proto3" json:"buyID,omitempty"`
	Status            int32  `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"`
	Height            int64  `protobuf:"varint,10,opt,name=height,proto3" json:"height,omitempty"`
	AssetExec         string `protobuf:"bytes,11,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	PriceExec         string `protobuf:"bytes,12,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol       string `protobuf:"bytes,13,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*BuyLimitOrder) ProtoMessage() {}

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

func (x *BuyLimitOrder) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

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

func (x *BuyLimitOrder) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *BuyLimitOrder) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *BuyLimitOrder) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *BuyLimitOrder) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *BuyLimitOrder) GetBoughtBoardlot() int64 {
	if x != nil {
		return x.BoughtBoardlot
	}
	return 0
}

func (x *BuyLimitOrder) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

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

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

func (x *BuyLimitOrder) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *BuyLimitOrder) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *BuyLimitOrder) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

// 执行器日志部分
type ReceiptBuyBase struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TokenSymbol       string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	Owner             string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
	AmountPerBoardlot string `protobuf:"bytes,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64  `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	PricePerBoardlot  string `protobuf:"bytes,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot     int64  `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	BoughtBoardlot    int64  `protobuf:"varint,7,opt,name=boughtBoardlot,proto3" json:"boughtBoardlot,omitempty"`
	BuyID             string `protobuf:"bytes,8,opt,name=buyID,proto3" json:"buyID,omitempty"`
	Status            string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"`
	SellID            string `protobuf:"bytes,10,opt,name=sellID,proto3" json:"sellID,omitempty"`
	TxHash            string `protobuf:"bytes,11,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Height            int64  `protobuf:"varint,12,opt,name=height,proto3" json:"height,omitempty"`
	AssetExec         string `protobuf:"bytes,13,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	PriceExec         string `protobuf:"bytes,14,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol       string `protobuf:"bytes,15,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*ReceiptBuyBase) ProtoMessage() {}

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

func (x *ReceiptBuyBase) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *ReceiptBuyBase) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *ReceiptBuyBase) GetAmountPerBoardlot() string {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return ""
}

func (x *ReceiptBuyBase) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *ReceiptBuyBase) GetPricePerBoardlot() string {
	if x != nil {
		return x.PricePerBoardlot
	}
	return ""
}

func (x *ReceiptBuyBase) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *ReceiptBuyBase) GetBoughtBoardlot() int64 {
	if x != nil {
		return x.BoughtBoardlot
	}
	return 0
}

func (x *ReceiptBuyBase) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

func (x *ReceiptBuyBase) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *ReceiptBuyBase) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

func (x *ReceiptBuyBase) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

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

func (x *ReceiptBuyBase) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *ReceiptBuyBase) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *ReceiptBuyBase) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

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

	TokenSymbol string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	Owner       string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
	//每一手出售的token的数量
	AmountPerBoardlot string `protobuf:"bytes,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64  `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	//每一手token的价格
	PricePerBoardlot string `protobuf:"bytes,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot    int64  `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	SoldBoardlot     int64  `protobuf:"varint,7,opt,name=soldBoardlot,proto3" json:"soldBoardlot,omitempty"`
	//此次出售的起始时间，如果非众筹则可以忽略此时间
	Starttime int64 `protobuf:"varint,8,opt,name=starttime,proto3" json:"starttime,omitempty"`
	Stoptime  int64 `protobuf:"varint,9,opt,name=stoptime,proto3" json:"stoptime,omitempty"`
	Crowdfund bool  `protobuf:"varint,10,opt,name=crowdfund,proto3" json:"crowdfund,omitempty"`
	//此处使用tx的hash来指定
	SellID string `protobuf:"bytes,11,opt,name=sellID,proto3" json:"sellID,omitempty"`
	Status string `protobuf:"bytes,12,opt,name=status,proto3" json:"status,omitempty"`
	// buyid
	BuyID       string `protobuf:"bytes,13,opt,name=buyID,proto3" json:"buyID,omitempty"`
	TxHash      string `protobuf:"bytes,14,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Height      int64  `protobuf:"varint,15,opt,name=height,proto3" json:"height,omitempty"`
	AssetExec   string `protobuf:"bytes,16,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	PriceExec   string `protobuf:"bytes,17,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol string `protobuf:"bytes,18,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*ReceiptSellBase) ProtoMessage() {}

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

func (x *ReceiptSellBase) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *ReceiptSellBase) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *ReceiptSellBase) GetAmountPerBoardlot() string {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return ""
}

func (x *ReceiptSellBase) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *ReceiptSellBase) GetPricePerBoardlot() string {
	if x != nil {
		return x.PricePerBoardlot
	}
	return ""
}

func (x *ReceiptSellBase) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *ReceiptSellBase) GetSoldBoardlot() int64 {
	if x != nil {
		return x.SoldBoardlot
	}
	return 0
}

func (x *ReceiptSellBase) GetStarttime() int64 {
	if x != nil {
		return x.Starttime
	}
	return 0
}

func (x *ReceiptSellBase) GetStoptime() int64 {
	if x != nil {
		return x.Stoptime
	}
	return 0
}

func (x *ReceiptSellBase) GetCrowdfund() bool {
	if x != nil {
		return x.Crowdfund
	}
	return false
}

func (x *ReceiptSellBase) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

func (x *ReceiptSellBase) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *ReceiptSellBase) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

func (x *ReceiptSellBase) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

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

func (x *ReceiptSellBase) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *ReceiptSellBase) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *ReceiptSellBase) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

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

	Base *ReceiptBuyBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
}

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

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

func (*ReceiptTradeBuyMarket) ProtoMessage() {}

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

func (x *ReceiptTradeBuyMarket) GetBase() *ReceiptBuyBase {
	if x != nil {
		return x.Base
	}
	return nil
}

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

	Base *ReceiptBuyBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
}

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

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

func (*ReceiptTradeBuyLimit) ProtoMessage() {}

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

func (x *ReceiptTradeBuyLimit) GetBase() *ReceiptBuyBase {
	if x != nil {
		return x.Base
	}
	return nil
}

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

	Base *ReceiptBuyBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
}

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

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

func (*ReceiptTradeBuyRevoke) ProtoMessage() {}

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

func (x *ReceiptTradeBuyRevoke) GetBase() *ReceiptBuyBase {
	if x != nil {
		return x.Base
	}
	return nil
}

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

	Base *ReceiptSellBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
}

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

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

func (*ReceiptTradeSellLimit) ProtoMessage() {}

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

func (x *ReceiptTradeSellLimit) GetBase() *ReceiptSellBase {
	if x != nil {
		return x.Base
	}
	return nil
}

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

	Base *ReceiptSellBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
}

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

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

func (*ReceiptSellMarket) ProtoMessage() {}

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

func (x *ReceiptSellMarket) GetBase() *ReceiptSellBase {
	if x != nil {
		return x.Base
	}
	return nil
}

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

	Base *ReceiptSellBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
}

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

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

func (*ReceiptTradeSellRevoke) ProtoMessage() {}

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

func (x *ReceiptTradeSellRevoke) GetBase() *ReceiptSellBase {
	if x != nil {
		return x.Base
	}
	return nil
}

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

	Addr   string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Status int32  `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
	// ??
	Token     []string `protobuf:"bytes,3,rep,name=token,proto3" json:"token,omitempty"`
	Direction int32    `protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
	Count     int32    `protobuf:"varint,5,opt,name=count,proto3" json:"count,omitempty"`
	FromKey   string   `protobuf:"bytes,6,opt,name=fromKey,proto3" json:"fromKey,omitempty"`
}

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

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

func (*ReqAddrAssets) ProtoMessage() {}

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

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

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

func (x *ReqAddrAssets) GetToken() []string {
	if x != nil {
		return x.Token
	}
	return nil
}

func (x *ReqAddrAssets) GetDirection() int32 {
	if x != nil {
		return x.Direction
	}
	return 0
}

func (x *ReqAddrAssets) GetCount() int32 {
	if x != nil {
		return x.Count
	}
	return 0
}

func (x *ReqAddrAssets) GetFromKey() string {
	if x != nil {
		return x.FromKey
	}
	return ""
}

// 获取Token未完成卖单的交易列表
// 	 fromKey : 第一次传参为空，获取卖单单价最低的列表。 当要获得下一页时，
// 传当前页最后一个；当要获得上一页时， 传当前页第一个。 	 count
// :获取交易列表的个数。 	 direction :查找方式；0，上一页；1，下一页。
// 越靠后的也单价越贵
type ReqTokenSellOrder struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TokenSymbol string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	FromKey     string `protobuf:"bytes,2,opt,name=fromKey,proto3" json:"fromKey,omitempty"`
	Count       int32  `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
	Direction   int32  `protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
	Status      int32  `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`
}

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

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

func (*ReqTokenSellOrder) ProtoMessage() {}

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

func (x *ReqTokenSellOrder) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *ReqTokenSellOrder) GetFromKey() string {
	if x != nil {
		return x.FromKey
	}
	return ""
}

func (x *ReqTokenSellOrder) GetCount() int32 {
	if x != nil {
		return x.Count
	}
	return 0
}

func (x *ReqTokenSellOrder) GetDirection() int32 {
	if x != nil {
		return x.Direction
	}
	return 0
}

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

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

	TokenSymbol string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	FromKey     string `protobuf:"bytes,2,opt,name=fromKey,proto3" json:"fromKey,omitempty"`
	Count       int32  `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
	Direction   int32  `protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
	Status      int32  `protobuf:"varint,5,opt,name=status,proto3" json:"status,omitempty"`
}

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

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

func (*ReqTokenBuyOrder) ProtoMessage() {}

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

func (x *ReqTokenBuyOrder) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *ReqTokenBuyOrder) GetFromKey() string {
	if x != nil {
		return x.FromKey
	}
	return ""
}

func (x *ReqTokenBuyOrder) GetCount() int32 {
	if x != nil {
		return x.Count
	}
	return 0
}

func (x *ReqTokenBuyOrder) GetDirection() int32 {
	if x != nil {
		return x.Direction
	}
	return 0
}

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

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

	TokenSymbol       string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	Owner             string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
	AmountPerBoardlot int64  `protobuf:"varint,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64  `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	PricePerBoardlot  int64  `protobuf:"varint,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot     int64  `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	BoughtBoardlot    int64  `protobuf:"varint,7,opt,name=boughtBoardlot,proto3" json:"boughtBoardlot,omitempty"`
	BuyID             string `protobuf:"bytes,8,opt,name=buyID,proto3" json:"buyID,omitempty"`
	Status            int32  `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"`
	SellID            string `protobuf:"bytes,10,opt,name=sellID,proto3" json:"sellID,omitempty"`
	TxHash            string `protobuf:"bytes,11,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Height            int64  `protobuf:"varint,12,opt,name=height,proto3" json:"height,omitempty"`
	Key               string `protobuf:"bytes,13,opt,name=key,proto3" json:"key,omitempty"`
	AssetExec         string `protobuf:"bytes,14,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*ReplyBuyOrder) ProtoMessage() {}

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

func (x *ReplyBuyOrder) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *ReplyBuyOrder) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *ReplyBuyOrder) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *ReplyBuyOrder) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *ReplyBuyOrder) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *ReplyBuyOrder) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *ReplyBuyOrder) GetBoughtBoardlot() int64 {
	if x != nil {
		return x.BoughtBoardlot
	}
	return 0
}

func (x *ReplyBuyOrder) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

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

func (x *ReplyBuyOrder) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

func (x *ReplyBuyOrder) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

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

func (x *ReplyBuyOrder) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *ReplyBuyOrder) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

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

	TokenSymbol       string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	Owner             string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
	AmountPerBoardlot int64  `protobuf:"varint,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64  `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	PricePerBoardlot  int64  `protobuf:"varint,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot     int64  `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	SoldBoardlot      int64  `protobuf:"varint,7,opt,name=soldBoardlot,proto3" json:"soldBoardlot,omitempty"`
	BuyID             string `protobuf:"bytes,8,opt,name=buyID,proto3" json:"buyID,omitempty"`
	Status            int32  `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"`
	SellID            string `protobuf:"bytes,10,opt,name=sellID,proto3" json:"sellID,omitempty"`
	TxHash            string `protobuf:"bytes,11,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Height            int64  `protobuf:"varint,12,opt,name=height,proto3" json:"height,omitempty"`
	Key               string `protobuf:"bytes,13,opt,name=key,proto3" json:"key,omitempty"`
	AssetExec         string `protobuf:"bytes,14,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
}

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

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

func (*ReplySellOrder) ProtoMessage() {}

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

func (x *ReplySellOrder) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *ReplySellOrder) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *ReplySellOrder) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *ReplySellOrder) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *ReplySellOrder) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *ReplySellOrder) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *ReplySellOrder) GetSoldBoardlot() int64 {
	if x != nil {
		return x.SoldBoardlot
	}
	return 0
}

func (x *ReplySellOrder) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

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

func (x *ReplySellOrder) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

func (x *ReplySellOrder) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

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

func (x *ReplySellOrder) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *ReplySellOrder) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

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

	SellOrders []*ReplySellOrder `protobuf:"bytes,1,rep,name=sellOrders,proto3" json:"sellOrders,omitempty"`
}

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

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

func (*ReplySellOrders) ProtoMessage() {}

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

func (x *ReplySellOrders) GetSellOrders() []*ReplySellOrder {
	if x != nil {
		return x.SellOrders
	}
	return nil
}

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

	BuyOrders []*ReplyBuyOrder `protobuf:"bytes,1,rep,name=buyOrders,proto3" json:"buyOrders,omitempty"`
}

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

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

func (*ReplyBuyOrders) ProtoMessage() {}

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

func (x *ReplyBuyOrders) GetBuyOrders() []*ReplyBuyOrder {
	if x != nil {
		return x.BuyOrders
	}
	return nil
}

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

	TokenSymbol       string `protobuf:"bytes,1,opt,name=tokenSymbol,proto3" json:"tokenSymbol,omitempty"`
	Owner             string `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
	AmountPerBoardlot int64  `protobuf:"varint,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64  `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	PricePerBoardlot  int64  `protobuf:"varint,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot     int64  `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	TradedBoardlot    int64  `protobuf:"varint,7,opt,name=tradedBoardlot,proto3" json:"tradedBoardlot,omitempty"`
	BuyID             string `protobuf:"bytes,8,opt,name=buyID,proto3" json:"buyID,omitempty"`
	Status            int32  `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"`
	SellID            string `protobuf:"bytes,10,opt,name=sellID,proto3" json:"sellID,omitempty"`
	TxHash            string `protobuf:"bytes,11,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Height            int64  `protobuf:"varint,12,opt,name=height,proto3" json:"height,omitempty"`
	Key               string `protobuf:"bytes,13,opt,name=key,proto3" json:"key,omitempty"`
	BlockTime         int64  `protobuf:"varint,14,opt,name=blockTime,proto3" json:"blockTime,omitempty"`
	IsSellOrder       bool   `protobuf:"varint,15,opt,name=isSellOrder,proto3" json:"isSellOrder,omitempty"`
	AssetExec         string `protobuf:"bytes,16,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	PriceExec         string `protobuf:"bytes,17,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol       string `protobuf:"bytes,18,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*ReplyTradeOrder) ProtoMessage() {}

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

func (x *ReplyTradeOrder) GetTokenSymbol() string {
	if x != nil {
		return x.TokenSymbol
	}
	return ""
}

func (x *ReplyTradeOrder) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *ReplyTradeOrder) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *ReplyTradeOrder) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *ReplyTradeOrder) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *ReplyTradeOrder) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *ReplyTradeOrder) GetTradedBoardlot() int64 {
	if x != nil {
		return x.TradedBoardlot
	}
	return 0
}

func (x *ReplyTradeOrder) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

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

func (x *ReplyTradeOrder) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

func (x *ReplyTradeOrder) GetTxHash() string {
	if x != nil {
		return x.TxHash
	}
	return ""
}

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

func (x *ReplyTradeOrder) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *ReplyTradeOrder) GetBlockTime() int64 {
	if x != nil {
		return x.BlockTime
	}
	return 0
}

func (x *ReplyTradeOrder) GetIsSellOrder() bool {
	if x != nil {
		return x.IsSellOrder
	}
	return false
}

func (x *ReplyTradeOrder) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *ReplyTradeOrder) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *ReplyTradeOrder) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

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

	Orders []*ReplyTradeOrder `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"`
}

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

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

func (*ReplyTradeOrders) ProtoMessage() {}

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

func (x *ReplyTradeOrders) GetOrders() []*ReplyTradeOrder {
	if x != nil {
		return x.Orders
	}
	return nil
}

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

	Sell  *TradeForSell `protobuf:"bytes,1,opt,name=sell,proto3" json:"sell,omitempty"`
	Owner string        `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
}

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

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

func (*ReqSellToken) ProtoMessage() {}

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

func (x *ReqSellToken) GetSell() *TradeForSell {
	if x != nil {
		return x.Sell
	}
	return nil
}

func (x *ReqSellToken) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

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

	Revoke *TradeForRevokeSell `protobuf:"bytes,1,opt,name=revoke,proto3" json:"revoke,omitempty"`
	Owner  string              `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
}

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

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

func (*ReqRevokeSell) ProtoMessage() {}

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

func (x *ReqRevokeSell) GetRevoke() *TradeForRevokeSell {
	if x != nil {
		return x.Revoke
	}
	return nil
}

func (x *ReqRevokeSell) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

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

	Buy   *TradeForBuy `protobuf:"bytes,1,opt,name=buy,proto3" json:"buy,omitempty"`
	Buyer string       `protobuf:"bytes,2,opt,name=buyer,proto3" json:"buyer,omitempty"`
}

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

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

func (*ReqBuyToken) ProtoMessage() {}

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

func (x *ReqBuyToken) GetBuy() *TradeForBuy {
	if x != nil {
		return x.Buy
	}
	return nil
}

func (x *ReqBuyToken) GetBuyer() string {
	if x != nil {
		return x.Buyer
	}
	return ""
}

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

	AssetSymbol       string   `protobuf:"bytes,1,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Owner             string   `protobuf:"bytes,2,opt,name=owner,proto3" json:"owner,omitempty"`
	AmountPerBoardlot int64    `protobuf:"varint,3,opt,name=amountPerBoardlot,proto3" json:"amountPerBoardlot,omitempty"`
	MinBoardlot       int64    `protobuf:"varint,4,opt,name=minBoardlot,proto3" json:"minBoardlot,omitempty"`
	PricePerBoardlot  int64    `protobuf:"varint,5,opt,name=pricePerBoardlot,proto3" json:"pricePerBoardlot,omitempty"`
	TotalBoardlot     int64    `protobuf:"varint,6,opt,name=totalBoardlot,proto3" json:"totalBoardlot,omitempty"`
	TradedBoardlot    int64    `protobuf:"varint,7,opt,name=tradedBoardlot,proto3" json:"tradedBoardlot,omitempty"`
	BuyID             string   `protobuf:"bytes,8,opt,name=buyID,proto3" json:"buyID,omitempty"`
	Status            int32    `protobuf:"varint,9,opt,name=status,proto3" json:"status,omitempty"`
	SellID            string   `protobuf:"bytes,10,opt,name=sellID,proto3" json:"sellID,omitempty"`
	TxHash            []string `protobuf:"bytes,11,rep,name=txHash,proto3" json:"txHash,omitempty"`
	Height            int64    `protobuf:"varint,12,opt,name=height,proto3" json:"height,omitempty"`
	Key               string   `protobuf:"bytes,13,opt,name=key,proto3" json:"key,omitempty"`
	BlockTime         int64    `protobuf:"varint,14,opt,name=blockTime,proto3" json:"blockTime,omitempty"`
	IsSellOrder       bool     `protobuf:"varint,15,opt,name=isSellOrder,proto3" json:"isSellOrder,omitempty"`
	AssetExec         string   `protobuf:"bytes,16,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	TxIndex           string   `protobuf:"bytes,17,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
	IsFinished        bool     `protobuf:"varint,18,opt,name=isFinished,proto3" json:"isFinished,omitempty"`
	PriceExec         string   `protobuf:"bytes,19,opt,name=priceExec,proto3" json:"priceExec,omitempty"`
	PriceSymbol       string   `protobuf:"bytes,20,opt,name=priceSymbol,proto3" json:"priceSymbol,omitempty"`
}

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

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

func (*LocalOrder) ProtoMessage() {}

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

func (x *LocalOrder) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *LocalOrder) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *LocalOrder) GetAmountPerBoardlot() int64 {
	if x != nil {
		return x.AmountPerBoardlot
	}
	return 0
}

func (x *LocalOrder) GetMinBoardlot() int64 {
	if x != nil {
		return x.MinBoardlot
	}
	return 0
}

func (x *LocalOrder) GetPricePerBoardlot() int64 {
	if x != nil {
		return x.PricePerBoardlot
	}
	return 0
}

func (x *LocalOrder) GetTotalBoardlot() int64 {
	if x != nil {
		return x.TotalBoardlot
	}
	return 0
}

func (x *LocalOrder) GetTradedBoardlot() int64 {
	if x != nil {
		return x.TradedBoardlot
	}
	return 0
}

func (x *LocalOrder) GetBuyID() string {
	if x != nil {
		return x.BuyID
	}
	return ""
}

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

func (x *LocalOrder) GetSellID() string {
	if x != nil {
		return x.SellID
	}
	return ""
}

func (x *LocalOrder) GetTxHash() []string {
	if x != nil {
		return x.TxHash
	}
	return nil
}

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

func (x *LocalOrder) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *LocalOrder) GetBlockTime() int64 {
	if x != nil {
		return x.BlockTime
	}
	return 0
}

func (x *LocalOrder) GetIsSellOrder() bool {
	if x != nil {
		return x.IsSellOrder
	}
	return false
}

func (x *LocalOrder) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *LocalOrder) GetTxIndex() string {
	if x != nil {
		return x.TxIndex
	}
	return ""
}

func (x *LocalOrder) GetIsFinished() bool {
	if x != nil {
		return x.IsFinished
	}
	return false
}

func (x *LocalOrder) GetPriceExec() string {
	if x != nil {
		return x.PriceExec
	}
	return ""
}

func (x *LocalOrder) GetPriceSymbol() string {
	if x != nil {
		return x.PriceSymbol
	}
	return ""
}

var File_trade_proto protoreflect.FileDescriptor

var file_trade_proto_rawDesc = []byte{
	0x0a, 0x0b, 0x74, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x1a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf4, 0x02, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x64,
	0x65, 0x12, 0x33, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61,
	0x64, 0x65, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x6c,
	0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x62, 0x75, 0x79, 0x4d, 0x61, 0x72,
	0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x79, 0x48, 0x00, 0x52,
	0x09, 0x62, 0x75, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x72, 0x65,
	0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x52,
	0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x76,
	0x6f, 0x6b, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x62, 0x75, 0x79, 0x4c, 0x69,
	0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x79, 0x4c, 0x69, 0x6d,
	0x69, 0x74, 0x48, 0x00, 0x52, 0x08, 0x62, 0x75, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b,
	0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65,
	0x46, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52,
	0x0a, 0x73, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x72,
	0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x52,
	0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x79, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x76, 0x6f,
	0x6b, 0x65, 0x42, 0x75, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x02, 0x74, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x88,
	0x03, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x6c, 0x12,
	0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f,
	0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12,
	0x20, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f,
	0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69,
	0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a,
	0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x6c, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x74, 0x69, 0x6d,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a,
	0x09, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x66, 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x09, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x66, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61,
	0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69,
	0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72,
	0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65,
	0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72,
	0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x47, 0x0a, 0x0b, 0x54, 0x72, 0x61,
	0x64, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6c, 0x6c,
	0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44,
	0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x43, 0x6e, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x43,
	0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x52, 0x65,
	0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6c, 0x6c,
	0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44,
	0x22, 0xb4, 0x02, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x79,
	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79,
	0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65,
	0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65,
	0x45, 0x78, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63,
	0x65, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79,
	0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63,
	0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0x4c, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x64, 0x65,
	0x46, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x14, 0x0a,
	0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75,
	0x79, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x43,
	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x6c,
	0x6f, 0x74, 0x43, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f,
	0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75,
	0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x49, 0x44,
	0x22, 0x8b, 0x04, 0x0a, 0x09, 0x53, 0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20,
	0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	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, 0x2c, 0x0a, 0x11, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72,
	0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d,
	0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72,
	0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c,
	0x73, 0x6f, 0x6c, 0x64, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0c, 0x73, 0x6f, 0x6c, 0x64, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74,
	0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1a,
	0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x72,
	0x6f, 0x77, 0x64, 0x66, 0x75, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63,
	0x72, 0x6f, 0x77, 0x64, 0x66, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6c, 0x6c,
	0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x1c,
	0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b,
	0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0xb9,
	0x03, 0x0a, 0x0d, 0x42, 0x75, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72,
	0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62,
	0x6f, 0x6c, 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, 0x2c, 0x0a, 0x11,
	0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50,
	0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x69,
	0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10,
	0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72,
	0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x26,
	0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72,
	0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
	0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63,
	0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70,
	0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0xe6, 0x03, 0x0a, 0x0e, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x42, 0x75, 0x79, 0x42, 0x61, 0x73, 0x65, 0x12, 0x20, 0x0a,
	0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12,
	0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50,
	0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x6c, 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c,
	0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65,
	0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f,
	0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c,
	0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x67, 0x68,
	0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0e, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x62, 0x75, 0x79, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
	0x65, 0x6c, 0x6c, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a,
	0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78,
	0x65, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45,
	0x78, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63,
	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65,
	0x63, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d,
	0x62, 0x6f, 0x6c, 0x22, 0xbb, 0x04, 0x0a, 0x0f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x53,
	0x65, 0x6c, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12,
	0x2c, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x20, 0x0a,
	0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12,
	0x2a, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65,
	0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f,
	0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x6f, 0x6c, 0x64, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f,
	0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x6f, 0x6c, 0x64, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x74, 0x69,
	0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x74,
	0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x66, 0x75, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x09, 0x63, 0x72, 0x6f, 0x77, 0x64, 0x66, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
	0x65, 0x6c, 0x6c, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
	0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a,
	0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75,
	0x79, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63,
	0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65,
	0x63, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x18, 0x11,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x12,
	0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x12,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f,
	0x6c, 0x22, 0x42, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x54, 0x72, 0x61, 0x64,
	0x65, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x61,
	0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x42, 0x75, 0x79, 0x42, 0x61, 0x73, 0x65, 0x52,
	0x04, 0x62, 0x61, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74,
	0x54, 0x72, 0x61, 0x64, 0x65, 0x42, 0x75, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a,
	0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x42, 0x75, 0x79, 0x42, 0x61,
	0x73, 0x65, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x22, 0x42, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x65,
	0x69, 0x70, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x42, 0x75, 0x79, 0x52, 0x65, 0x76, 0x6f, 0x6b,
	0x65, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x42,
	0x75, 0x79, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x22, 0x43, 0x0a, 0x15,
	0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x6c,
	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x65,
	0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x62, 0x61, 0x73,
	0x65, 0x22, 0x3f, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x6c,
	0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x63,
	0x65, 0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x6c, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x62, 0x61,
	0x73, 0x65, 0x22, 0x44, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x54, 0x72, 0x61,
	0x64, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x2a, 0x0a, 0x04,
	0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x53, 0x65, 0x6c, 0x6c, 0x42, 0x61,
	0x73, 0x65, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x71,
	0x41, 0x64, 0x64, 0x72, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64,
	0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x16,
	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x52,
	0x65, 0x71, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72,
	0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62,
	0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x71,
	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a,
	0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12,
	0x18, 0x0a, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x66, 0x72, 0x6f, 0x6d, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb7, 0x03, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42,
	0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
	0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12,
	0x2c, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x20, 0x0a,
	0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12,
	0x2a, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65,
	0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f,
	0x74, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x67, 0x68, 0x74, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x62, 0x6f, 0x75, 0x67, 0x68,
	0x74, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79,
	0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x12,
	0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49,
	0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44, 0x12,
	0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x22,
	0xb4, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64,
	0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f,
	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79,
	0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72,
	0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d,
	0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72,
	0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x22, 0x0a, 0x0c,
	0x73, 0x6f, 0x6c, 0x64, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x03, 0x52, 0x0c, 0x73, 0x6f, 0x6c, 0x64, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74,
	0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x62, 0x75, 0x79, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16,
	0x0a, 0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x73, 0x65, 0x6c, 0x6c, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68,
	0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16,
	0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
	0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x22, 0x48, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x53,
	0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x0a, 0x73, 0x65, 0x6c,
	0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x65, 0x6c, 0x6c, 0x4f,
	0x72, 0x64, 0x65, 0x72, 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73,
	0x22, 0x44, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65,
	0x72, 0x73, 0x12, 0x32, 0x0a, 0x09, 0x62, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65,
	0x70, 0x6c, 0x79, 0x42, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x09, 0x62, 0x75, 0x79,
	0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0xb9, 0x04, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x79,
	0x54, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05,
	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42,
	0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74,
	0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c,
	0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72,
	0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24,
	0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72,
	0x64, 0x6c, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x72,
	0x61, 0x64, 0x65, 0x64, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05,
	0x62, 0x75, 0x79, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79,
	0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65,
	0x6c, 0x6c, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x6c,
	0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d,
	0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x53, 0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65,
	0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x53, 0x65, 0x6c, 0x6c, 0x4f,
	0x72, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65,
	0x63, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78,
	0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x18,
	0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63,
	0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18,
	0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62,
	0x6f, 0x6c, 0x22, 0x42, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65,
	0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52,
	0x65, 0x70, 0x6c, 0x79, 0x54, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06,
	0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x4d, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x53, 0x65, 0x6c,
	0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61,
	0x64, 0x65, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x6c, 0x52, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x12,
	0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22, 0x58, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x52, 0x65, 0x76, 0x6f,
	0x6b, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54,
	0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x6c,
	0x6c, 0x52, 0x06, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x22,
	0x49, 0x0a, 0x0b, 0x52, 0x65, 0x71, 0x42, 0x75, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x24,
	0x0a, 0x03, 0x62, 0x75, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x79, 0x52,
	0x03, 0x62, 0x75, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x65, 0x72, 0x22, 0xee, 0x04, 0x0a, 0x0a, 0x4c,
	0x6f, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6f,
	0x77, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65,
	0x72, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f,
	0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12,
	0x20, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x69, 0x6e, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f,
	0x74, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69,
	0x63, 0x65, 0x50, 0x65, 0x72, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x24, 0x0a,
	0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x6f, 0x61, 0x72, 0x64,
	0x6c, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x42, 0x6f, 0x61,
	0x72, 0x64, 0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x72, 0x61,
	0x64, 0x65, 0x64, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62,
	0x75, 0x79, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x79, 0x49,
	0x44, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x6c,
	0x6c, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x6c, 0x49,
	0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69,
	0x67, 0x68, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65,
	0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x53, 0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x53, 0x65, 0x6c, 0x6c, 0x4f, 0x72,
	0x64, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63,
	0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65,
	0x63, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x69,
	0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0a, 0x69, 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70,
	0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x70, 0x72, 0x69, 0x63, 0x65, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x69,
	0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x32, 0xab, 0x03, 0x0a, 0x05,
	0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x3e, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
	0x61, 0x77, 0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x54, 0x78, 0x12, 0x13, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x53, 0x65,
	0x6c, 0x6c, 0x1a, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x73, 0x69, 0x67,
	0x6e, 0x54, 0x78, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52,
	0x61, 0x77, 0x54, 0x72, 0x61, 0x64, 0x65, 0x42, 0x75, 0x79, 0x54, 0x78, 0x12, 0x12, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x79,
	0x1a, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x54,
	0x78, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x61, 0x77,
	0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x54, 0x78, 0x12, 0x19, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x52, 0x65,
	0x76, 0x6f, 0x6b, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x1a, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x78, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x18, 0x43,
	0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61, 0x64, 0x65, 0x42, 0x75, 0x79,
	0x4c, 0x69, 0x6d, 0x69, 0x74, 0x54, 0x78, 0x12, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x75, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74,
	0x1a, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x54,
	0x78, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x61, 0x77,
	0x54, 0x72, 0x61, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54,
	0x78, 0x12, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46,
	0x6f, 0x72, 0x53, 0x65, 0x6c, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x1a, 0x0f, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x78, 0x22, 0x00, 0x12,
	0x48, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x61, 0x77, 0x54, 0x72, 0x61, 0x64,
	0x65, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x42, 0x75, 0x79, 0x54, 0x78, 0x12, 0x18, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x46, 0x6f, 0x72, 0x52, 0x65, 0x76,
	0x6f, 0x6b, 0x65, 0x42, 0x75, 0x79, 0x1a, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x55,
	0x6e, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x78, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_trade_proto_rawDescOnce sync.Once
	file_trade_proto_rawDescData = file_trade_proto_rawDesc
)

func file_trade_proto_rawDescGZIP() []byte {
	file_trade_proto_rawDescOnce.Do(func() {
		file_trade_proto_rawDescData = protoimpl.X.CompressGZIP(file_trade_proto_rawDescData)
	})
	return file_trade_proto_rawDescData
}

var file_trade_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_trade_proto_goTypes = []interface{}{
	(*Trade)(nil),                  // 0: types.Trade
	(*TradeForSell)(nil),           // 1: types.TradeForSell
	(*TradeForBuy)(nil),            // 2: types.TradeForBuy
	(*TradeForRevokeSell)(nil),     // 3: types.TradeForRevokeSell
	(*TradeForBuyLimit)(nil),       // 4: types.TradeForBuyLimit
	(*TradeForSellMarket)(nil),     // 5: types.TradeForSellMarket
	(*TradeForRevokeBuy)(nil),      // 6: types.TradeForRevokeBuy
	(*SellOrder)(nil),              // 7: types.SellOrder
	(*BuyLimitOrder)(nil),          // 8: types.BuyLimitOrder
	(*ReceiptBuyBase)(nil),         // 9: types.ReceiptBuyBase
	(*ReceiptSellBase)(nil),        // 10: types.ReceiptSellBase
	(*ReceiptTradeBuyMarket)(nil),  // 11: types.ReceiptTradeBuyMarket
	(*ReceiptTradeBuyLimit)(nil),   // 12: types.ReceiptTradeBuyLimit
	(*ReceiptTradeBuyRevoke)(nil),  // 13: types.ReceiptTradeBuyRevoke
	(*ReceiptTradeSellLimit)(nil),  // 14: types.ReceiptTradeSellLimit
	(*ReceiptSellMarket)(nil),      // 15: types.ReceiptSellMarket
	(*ReceiptTradeSellRevoke)(nil), // 16: types.ReceiptTradeSellRevoke
	(*ReqAddrAssets)(nil),          // 17: types.ReqAddrAssets
	(*ReqTokenSellOrder)(nil),      // 18: types.ReqTokenSellOrder
	(*ReqTokenBuyOrder)(nil),       // 19: types.ReqTokenBuyOrder
	(*ReplyBuyOrder)(nil),          // 20: types.ReplyBuyOrder
	(*ReplySellOrder)(nil),         // 21: types.ReplySellOrder
	(*ReplySellOrders)(nil),        // 22: types.ReplySellOrders
	(*ReplyBuyOrders)(nil),         // 23: types.ReplyBuyOrders
	(*ReplyTradeOrder)(nil),        // 24: types.ReplyTradeOrder
	(*ReplyTradeOrders)(nil),       // 25: types.ReplyTradeOrders
	(*ReqSellToken)(nil),           // 26: types.ReqSellToken
	(*ReqRevokeSell)(nil),          // 27: types.ReqRevokeSell
	(*ReqBuyToken)(nil),            // 28: types.ReqBuyToken
	(*LocalOrder)(nil),             // 29: types.LocalOrder
	(*types.UnsignTx)(nil),         // 30: types.UnsignTx
}
var file_trade_proto_depIdxs = []int32{
	1,  // 0: types.Trade.sellLimit:type_name -> types.TradeForSell
	2,  // 1: types.Trade.buyMarket:type_name -> types.TradeForBuy
	3,  // 2: types.Trade.revokeSell:type_name -> types.TradeForRevokeSell
	4,  // 3: types.Trade.buyLimit:type_name -> types.TradeForBuyLimit
	5,  // 4: types.Trade.sellMarket:type_name -> types.TradeForSellMarket
	6,  // 5: types.Trade.revokeBuy:type_name -> types.TradeForRevokeBuy
	9,  // 6: types.ReceiptTradeBuyMarket.base:type_name -> types.ReceiptBuyBase
	9,  // 7: types.ReceiptTradeBuyLimit.base:type_name -> types.ReceiptBuyBase
	9,  // 8: types.ReceiptTradeBuyRevoke.base:type_name -> types.ReceiptBuyBase
	10, // 9: types.ReceiptTradeSellLimit.base:type_name -> types.ReceiptSellBase
	10, // 10: types.ReceiptSellMarket.base:type_name -> types.ReceiptSellBase
	10, // 11: types.ReceiptTradeSellRevoke.base:type_name -> types.ReceiptSellBase
	21, // 12: types.ReplySellOrders.sellOrders:type_name -> types.ReplySellOrder
	20, // 13: types.ReplyBuyOrders.buyOrders:type_name -> types.ReplyBuyOrder
	24, // 14: types.ReplyTradeOrders.orders:type_name -> types.ReplyTradeOrder
	1,  // 15: types.ReqSellToken.sell:type_name -> types.TradeForSell
	3,  // 16: types.ReqRevokeSell.revoke:type_name -> types.TradeForRevokeSell
	2,  // 17: types.ReqBuyToken.buy:type_name -> types.TradeForBuy
	1,  // 18: types.trade.CreateRawTradeSellTx:input_type -> types.TradeForSell
	2,  // 19: types.trade.CreateRawTradeBuyTx:input_type -> types.TradeForBuy
	3,  // 20: types.trade.CreateRawTradeRevokeTx:input_type -> types.TradeForRevokeSell
	4,  // 21: types.trade.CreateRawTradeBuyLimitTx:input_type -> types.TradeForBuyLimit
	5,  // 22: types.trade.CreateRawTradeSellMarketTx:input_type -> types.TradeForSellMarket
	6,  // 23: types.trade.CreateRawTradeRevokeBuyTx:input_type -> types.TradeForRevokeBuy
	30, // 24: types.trade.CreateRawTradeSellTx:output_type -> types.UnsignTx
	30, // 25: types.trade.CreateRawTradeBuyTx:output_type -> types.UnsignTx
	30, // 26: types.trade.CreateRawTradeRevokeTx:output_type -> types.UnsignTx
	30, // 27: types.trade.CreateRawTradeBuyLimitTx:output_type -> types.UnsignTx
	30, // 28: types.trade.CreateRawTradeSellMarketTx:output_type -> types.UnsignTx
	30, // 29: types.trade.CreateRawTradeRevokeBuyTx:output_type -> types.UnsignTx
	24, // [24:30] is the sub-list for method output_type
	18, // [18:24] is the sub-list for method input_type
	18, // [18:18] is the sub-list for extension type_name
	18, // [18:18] is the sub-list for extension extendee
	0,  // [0:18] is the sub-list for field type_name
}

func init() { file_trade_proto_init() }
func file_trade_proto_init() {
	if File_trade_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_trade_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Trade); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TradeForSell); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TradeForBuy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TradeForRevokeSell); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TradeForBuyLimit); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TradeForSellMarket); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TradeForRevokeBuy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SellOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuyLimitOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptBuyBase); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSellBase); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptTradeBuyMarket); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptTradeBuyLimit); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptTradeBuyRevoke); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptTradeSellLimit); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptSellMarket); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptTradeSellRevoke); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqAddrAssets); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqTokenSellOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqTokenBuyOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyBuyOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplySellOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplySellOrders); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyBuyOrders); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyTradeOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReplyTradeOrders); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqSellToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqRevokeSell); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqBuyToken); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_trade_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LocalOrder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_trade_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*Trade_SellLimit)(nil),
		(*Trade_BuyMarket)(nil),
		(*Trade_RevokeSell)(nil),
		(*Trade_BuyLimit)(nil),
		(*Trade_SellMarket)(nil),
		(*Trade_RevokeBuy)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_trade_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   30,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_trade_proto_goTypes,
		DependencyIndexes: file_trade_proto_depIdxs,
		MessageInfos:      file_trade_proto_msgTypes,
	}.Build()
	File_trade_proto = out.File
	file_trade_proto_rawDesc = nil
	file_trade_proto_goTypes = nil
	file_trade_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// TradeClient is the client API for Trade service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type TradeClient interface {
	CreateRawTradeSellTx(ctx context.Context, in *TradeForSell, opts ...grpc.CallOption) (*types.UnsignTx, error)
	CreateRawTradeBuyTx(ctx context.Context, in *TradeForBuy, opts ...grpc.CallOption) (*types.UnsignTx, error)
	CreateRawTradeRevokeTx(ctx context.Context, in *TradeForRevokeSell, opts ...grpc.CallOption) (*types.UnsignTx, error)
	CreateRawTradeBuyLimitTx(ctx context.Context, in *TradeForBuyLimit, opts ...grpc.CallOption) (*types.UnsignTx, error)
	CreateRawTradeSellMarketTx(ctx context.Context, in *TradeForSellMarket, opts ...grpc.CallOption) (*types.UnsignTx, error)
	CreateRawTradeRevokeBuyTx(ctx context.Context, in *TradeForRevokeBuy, opts ...grpc.CallOption) (*types.UnsignTx, error)
}

type tradeClient struct {
	cc grpc.ClientConnInterface
}

func NewTradeClient(cc grpc.ClientConnInterface) TradeClient {
	return &tradeClient{cc}
}

func (c *tradeClient) CreateRawTradeSellTx(ctx context.Context, in *TradeForSell, opts ...grpc.CallOption) (*types.UnsignTx, error) {
	out := new(types.UnsignTx)
	err := c.cc.Invoke(ctx, "/types.trade/CreateRawTradeSellTx", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tradeClient) CreateRawTradeBuyTx(ctx context.Context, in *TradeForBuy, opts ...grpc.CallOption) (*types.UnsignTx, error) {
	out := new(types.UnsignTx)
	err := c.cc.Invoke(ctx, "/types.trade/CreateRawTradeBuyTx", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tradeClient) CreateRawTradeRevokeTx(ctx context.Context, in *TradeForRevokeSell, opts ...grpc.CallOption) (*types.UnsignTx, error) {
	out := new(types.UnsignTx)
	err := c.cc.Invoke(ctx, "/types.trade/CreateRawTradeRevokeTx", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tradeClient) CreateRawTradeBuyLimitTx(ctx context.Context, in *TradeForBuyLimit, opts ...grpc.CallOption) (*types.UnsignTx, error) {
	out := new(types.UnsignTx)
	err := c.cc.Invoke(ctx, "/types.trade/CreateRawTradeBuyLimitTx", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tradeClient) CreateRawTradeSellMarketTx(ctx context.Context, in *TradeForSellMarket, opts ...grpc.CallOption) (*types.UnsignTx, error) {
	out := new(types.UnsignTx)
	err := c.cc.Invoke(ctx, "/types.trade/CreateRawTradeSellMarketTx", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *tradeClient) CreateRawTradeRevokeBuyTx(ctx context.Context, in *TradeForRevokeBuy, opts ...grpc.CallOption) (*types.UnsignTx, error) {
	out := new(types.UnsignTx)
	err := c.cc.Invoke(ctx, "/types.trade/CreateRawTradeRevokeBuyTx", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// TradeServer is the server API for Trade service.
type TradeServer interface {
	CreateRawTradeSellTx(context.Context, *TradeForSell) (*types.UnsignTx, error)
	CreateRawTradeBuyTx(context.Context, *TradeForBuy) (*types.UnsignTx, error)
	CreateRawTradeRevokeTx(context.Context, *TradeForRevokeSell) (*types.UnsignTx, error)
	CreateRawTradeBuyLimitTx(context.Context, *TradeForBuyLimit) (*types.UnsignTx, error)
	CreateRawTradeSellMarketTx(context.Context, *TradeForSellMarket) (*types.UnsignTx, error)
	CreateRawTradeRevokeBuyTx(context.Context, *TradeForRevokeBuy) (*types.UnsignTx, error)
}

// UnimplementedTradeServer can be embedded to have forward compatible implementations.
type UnimplementedTradeServer struct {
}

func (*UnimplementedTradeServer) CreateRawTradeSellTx(context.Context, *TradeForSell) (*types.UnsignTx, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRawTradeSellTx not implemented")
}
func (*UnimplementedTradeServer) CreateRawTradeBuyTx(context.Context, *TradeForBuy) (*types.UnsignTx, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRawTradeBuyTx not implemented")
}
func (*UnimplementedTradeServer) CreateRawTradeRevokeTx(context.Context, *TradeForRevokeSell) (*types.UnsignTx, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRawTradeRevokeTx not implemented")
}
func (*UnimplementedTradeServer) CreateRawTradeBuyLimitTx(context.Context, *TradeForBuyLimit) (*types.UnsignTx, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRawTradeBuyLimitTx not implemented")
}
func (*UnimplementedTradeServer) CreateRawTradeSellMarketTx(context.Context, *TradeForSellMarket) (*types.UnsignTx, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRawTradeSellMarketTx not implemented")
}
func (*UnimplementedTradeServer) CreateRawTradeRevokeBuyTx(context.Context, *TradeForRevokeBuy) (*types.UnsignTx, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRawTradeRevokeBuyTx not implemented")
}

func RegisterTradeServer(s *grpc.Server, srv TradeServer) {
	s.RegisterService(&_Trade_serviceDesc, srv)
}

func _Trade_CreateRawTradeSellTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TradeForSell)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TradeServer).CreateRawTradeSellTx(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.trade/CreateRawTradeSellTx",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TradeServer).CreateRawTradeSellTx(ctx, req.(*TradeForSell))
	}
	return interceptor(ctx, in, info, handler)
}

func _Trade_CreateRawTradeBuyTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TradeForBuy)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TradeServer).CreateRawTradeBuyTx(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.trade/CreateRawTradeBuyTx",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TradeServer).CreateRawTradeBuyTx(ctx, req.(*TradeForBuy))
	}
	return interceptor(ctx, in, info, handler)
}

func _Trade_CreateRawTradeRevokeTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TradeForRevokeSell)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TradeServer).CreateRawTradeRevokeTx(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.trade/CreateRawTradeRevokeTx",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TradeServer).CreateRawTradeRevokeTx(ctx, req.(*TradeForRevokeSell))
	}
	return interceptor(ctx, in, info, handler)
}

func _Trade_CreateRawTradeBuyLimitTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TradeForBuyLimit)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TradeServer).CreateRawTradeBuyLimitTx(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.trade/CreateRawTradeBuyLimitTx",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TradeServer).CreateRawTradeBuyLimitTx(ctx, req.(*TradeForBuyLimit))
	}
	return interceptor(ctx, in, info, handler)
}

func _Trade_CreateRawTradeSellMarketTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TradeForSellMarket)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TradeServer).CreateRawTradeSellMarketTx(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.trade/CreateRawTradeSellMarketTx",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TradeServer).CreateRawTradeSellMarketTx(ctx, req.(*TradeForSellMarket))
	}
	return interceptor(ctx, in, info, handler)
}

func _Trade_CreateRawTradeRevokeBuyTx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TradeForRevokeBuy)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(TradeServer).CreateRawTradeRevokeBuyTx(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.trade/CreateRawTradeRevokeBuyTx",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(TradeServer).CreateRawTradeRevokeBuyTx(ctx, req.(*TradeForRevokeBuy))
	}
	return interceptor(ctx, in, info, handler)
}

var _Trade_serviceDesc = grpc.ServiceDesc{
	ServiceName: "types.trade",
	HandlerType: (*TradeServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateRawTradeSellTx",
			Handler:    _Trade_CreateRawTradeSellTx_Handler,
		},
		{
			MethodName: "CreateRawTradeBuyTx",
			Handler:    _Trade_CreateRawTradeBuyTx_Handler,
		},
		{
			MethodName: "CreateRawTradeRevokeTx",
			Handler:    _Trade_CreateRawTradeRevokeTx_Handler,
		},
		{
			MethodName: "CreateRawTradeBuyLimitTx",
			Handler:    _Trade_CreateRawTradeBuyLimitTx_Handler,
		},
		{
			MethodName: "CreateRawTradeSellMarketTx",
			Handler:    _Trade_CreateRawTradeSellMarketTx_Handler,
		},
		{
			MethodName: "CreateRawTradeRevokeBuyTx",
			Handler:    _Trade_CreateRawTradeRevokeBuyTx_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "trade.proto",
}
