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

package types

import (
	reflect "reflect"
	sync "sync"

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

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

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

	PubKey   *ZkPubKey `protobuf:"bytes,1,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
	SignInfo string    `protobuf:"bytes,2,opt,name=signInfo,proto3" json:"signInfo,omitempty"`
	Msg      *ZkMsg    `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
}

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

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

func (*ZkSignature) ProtoMessage() {}

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

func (x *ZkSignature) GetPubKey() *ZkPubKey {
	if x != nil {
		return x.PubKey
	}
	return nil
}

func (x *ZkSignature) GetSignInfo() string {
	if x != nil {
		return x.SignInfo
	}
	return ""
}

func (x *ZkSignature) GetMsg() *ZkMsg {
	if x != nil {
		return x.Msg
	}
	return nil
}

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

	First  string `protobuf:"bytes,1,opt,name=first,proto3" json:"first,omitempty"`
	Second string `protobuf:"bytes,2,opt,name=second,proto3" json:"second,omitempty"`
	Third  string `protobuf:"bytes,3,opt,name=third,proto3" json:"third,omitempty"`
}

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

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

func (*ZkMsg) ProtoMessage() {}

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

func (x *ZkMsg) GetFirst() string {
	if x != nil {
		return x.First
	}
	return ""
}

func (x *ZkMsg) GetSecond() string {
	if x != nil {
		return x.Second
	}
	return ""
}

func (x *ZkMsg) GetThird() string {
	if x != nil {
		return x.Third
	}
	return ""
}

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

	X string `protobuf:"bytes,1,opt,name=x,proto3" json:"x,omitempty"`
	Y string `protobuf:"bytes,2,opt,name=y,proto3" json:"y,omitempty"`
}

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

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

func (*ZkPubKey) ProtoMessage() {}

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

func (x *ZkPubKey) GetX() string {
	if x != nil {
		return x.X
	}
	return ""
}

func (x *ZkPubKey) GetY() string {
	if x != nil {
		return x.Y
	}
	return ""
}

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

	Path   []string `protobuf:"bytes,1,rep,name=path,proto3" json:"path,omitempty"`
	Helper []string `protobuf:"bytes,2,rep,name=helper,proto3" json:"helper,omitempty"`
}

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

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

func (*SiblingPath) ProtoMessage() {}

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

func (x *SiblingPath) GetPath() []string {
	if x != nil {
		return x.Path
	}
	return nil
}

func (x *SiblingPath) GetHelper() []string {
	if x != nil {
		return x.Helper
	}
	return nil
}

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

	//代理地址都由用户自己指定，不能由代理地址指定，代理地址只能处理有限指定的操作
	Normal *ZkPubKey `protobuf:"bytes,1,opt,name=normal,proto3" json:"normal,omitempty"`
	System *ZkPubKey `protobuf:"bytes,2,opt,name=system,proto3" json:"system,omitempty"`
	Super  *ZkPubKey `protobuf:"bytes,3,opt,name=super,proto3" json:"super,omitempty"`
}

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

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

func (*AccountProxyPubKeys) ProtoMessage() {}

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

func (x *AccountProxyPubKeys) GetNormal() *ZkPubKey {
	if x != nil {
		return x.Normal
	}
	return nil
}

func (x *AccountProxyPubKeys) GetSystem() *ZkPubKey {
	if x != nil {
		return x.System
	}
	return nil
}

func (x *AccountProxyPubKeys) GetSuper() *ZkPubKey {
	if x != nil {
		return x.Super
	}
	return nil
}

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

	ID            uint64               `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
	EthAddr       string               `protobuf:"bytes,2,opt,name=ethAddr,proto3" json:"ethAddr,omitempty"`
	Chain33Addr   string               `protobuf:"bytes,3,opt,name=chain33Addr,proto3" json:"chain33Addr,omitempty"`
	TokenTreeRoot string               `protobuf:"bytes,4,opt,name=tokenTreeRoot,proto3" json:"tokenTreeRoot,omitempty"` //sub chain token tree root
	PubKey        *ZkPubKey            `protobuf:"bytes,5,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
	Sibling       *SiblingPath         `protobuf:"bytes,6,opt,name=sibling,proto3" json:"sibling,omitempty"`
	ProxyPubKeys  *AccountProxyPubKeys `protobuf:"bytes,7,opt,name=proxyPubKeys,proto3" json:"proxyPubKeys,omitempty"`
}

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

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

func (*AccountWitness) ProtoMessage() {}

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

func (x *AccountWitness) GetID() uint64 {
	if x != nil {
		return x.ID
	}
	return 0
}

func (x *AccountWitness) GetEthAddr() string {
	if x != nil {
		return x.EthAddr
	}
	return ""
}

func (x *AccountWitness) GetChain33Addr() string {
	if x != nil {
		return x.Chain33Addr
	}
	return ""
}

func (x *AccountWitness) GetTokenTreeRoot() string {
	if x != nil {
		return x.TokenTreeRoot
	}
	return ""
}

func (x *AccountWitness) GetPubKey() *ZkPubKey {
	if x != nil {
		return x.PubKey
	}
	return nil
}

func (x *AccountWitness) GetSibling() *SiblingPath {
	if x != nil {
		return x.Sibling
	}
	return nil
}

func (x *AccountWitness) GetProxyPubKeys() *AccountProxyPubKeys {
	if x != nil {
		return x.ProxyPubKeys
	}
	return nil
}

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

	ID      uint64       `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`          //eth contract define token ID
	Balance string       `protobuf:"bytes,2,opt,name=balance,proto3" json:"balance,omitempty"` //eth balance u128
	Sibling *SiblingPath `protobuf:"bytes,3,opt,name=sibling,proto3" json:"sibling,omitempty"`
}

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

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

func (*TokenWitness) ProtoMessage() {}

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

func (x *TokenWitness) GetID() uint64 {
	if x != nil {
		return x.ID
	}
	return 0
}

func (x *TokenWitness) GetBalance() string {
	if x != nil {
		return x.Balance
	}
	return ""
}

func (x *TokenWitness) GetSibling() *SiblingPath {
	if x != nil {
		return x.Sibling
	}
	return nil
}

//one operation branch
type OperationMetaBranch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AccountWitness *AccountWitness `protobuf:"bytes,1,opt,name=accountWitness,proto3" json:"accountWitness,omitempty"`
	TokenWitness   *TokenWitness   `protobuf:"bytes,2,opt,name=tokenWitness,proto3" json:"tokenWitness,omitempty"`
}

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

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

func (*OperationMetaBranch) ProtoMessage() {}

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

func (x *OperationMetaBranch) GetAccountWitness() *AccountWitness {
	if x != nil {
		return x.AccountWitness
	}
	return nil
}

func (x *OperationMetaBranch) GetTokenWitness() *TokenWitness {
	if x != nil {
		return x.TokenWitness
	}
	return nil
}

// before and after operation data
type OperationPairBranch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Before *OperationMetaBranch `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"`
	After  *OperationMetaBranch `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"`
}

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

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

func (*OperationPairBranch) ProtoMessage() {}

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

func (x *OperationPairBranch) GetBefore() *OperationMetaBranch {
	if x != nil {
		return x.Before
	}
	return nil
}

func (x *OperationPairBranch) GetAfter() *OperationMetaBranch {
	if x != nil {
		return x.After
	}
	return nil
}

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

	BlockHeight uint64   `protobuf:"varint,1,opt,name=blockHeight,proto3" json:"blockHeight,omitempty"`
	TxIndex     uint32   `protobuf:"varint,2,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
	OpIndex     uint32   `protobuf:"varint,3,opt,name=opIndex,proto3" json:"opIndex,omitempty"`
	TxType      uint32   `protobuf:"varint,4,opt,name=txType,proto3" json:"txType,omitempty"`
	TxHash      string   `protobuf:"bytes,5,opt,name=txHash,proto3" json:"txHash,omitempty"`
	Roots       []string `protobuf:"bytes,6,rep,name=roots,proto3" json:"roots,omitempty"` //每个操作后的root
	//每个operation data由一对 操作前后数据组成，不同操作可以有多个操作数据，deposit:1,transfer:2
	OperationBranches []*OperationPairBranch `protobuf:"bytes,7,rep,name=operationBranches,proto3" json:"operationBranches,omitempty"`
	//操作特殊数据,像订单数据
	SpecialInfo *OperationSpecialInfo `protobuf:"bytes,8,opt,name=specialInfo,proto3" json:"specialInfo,omitempty"`
}

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

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

func (*OperationInfo) ProtoMessage() {}

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

func (x *OperationInfo) GetBlockHeight() uint64 {
	if x != nil {
		return x.BlockHeight
	}
	return 0
}

func (x *OperationInfo) GetTxIndex() uint32 {
	if x != nil {
		return x.TxIndex
	}
	return 0
}

func (x *OperationInfo) GetOpIndex() uint32 {
	if x != nil {
		return x.OpIndex
	}
	return 0
}

func (x *OperationInfo) GetTxType() uint32 {
	if x != nil {
		return x.TxType
	}
	return 0
}

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

func (x *OperationInfo) GetRoots() []string {
	if x != nil {
		return x.Roots
	}
	return nil
}

func (x *OperationInfo) GetOperationBranches() []*OperationPairBranch {
	if x != nil {
		return x.OperationBranches
	}
	return nil
}

func (x *OperationInfo) GetSpecialInfo() *OperationSpecialInfo {
	if x != nil {
		return x.SpecialInfo
	}
	return nil
}

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

	Sell string `protobuf:"bytes,1,opt,name=sell,proto3" json:"sell,omitempty"`
	Buy  string `protobuf:"bytes,2,opt,name=buy,proto3" json:"buy,omitempty"`
}

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

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

func (*OrderPricePair) ProtoMessage() {}

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

func (x *OrderPricePair) GetSell() string {
	if x != nil {
		return x.Sell
	}
	return ""
}

func (x *OrderPricePair) GetBuy() string {
	if x != nil {
		return x.Buy
	}
	return ""
}

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

	AccountID     uint64            `protobuf:"varint,1,opt,name=accountID,proto3" json:"accountID,omitempty"`
	RecipientID   uint64            `protobuf:"varint,2,opt,name=recipientID,proto3" json:"recipientID,omitempty"`    //accountID侧设置的recipientID
	RecipientAddr string            `protobuf:"bytes,3,opt,name=recipientAddr,proto3" json:"recipientAddr,omitempty"` //accountID侧设置的recipientAddr
	Amount        []string          `protobuf:"bytes,4,rep,name=amount,proto3" json:"amount,omitempty"`               //accountID侧最初设置的amount
	ChainID       []uint32          `protobuf:"varint,5,rep,packed,name=chainID,proto3" json:"chainID,omitempty"`
	TokenID       []uint64          `protobuf:"varint,6,rep,packed,name=tokenID,proto3" json:"tokenID,omitempty"`
	PricePair     []*OrderPricePair `protobuf:"bytes,7,rep,name=pricePair,proto3" json:"pricePair,omitempty"`
	SigData       *ZkSignature      `protobuf:"bytes,8,opt,name=sigData,proto3" json:"sigData,omitempty"`
	ContentHash   []string          `protobuf:"bytes,9,rep,name=contentHash,proto3" json:"contentHash,omitempty"`
	PubKeyType    uint64            `protobuf:"varint,10,opt,name=pubKeyType,proto3" json:"pubKeyType,omitempty"`
	PubKey        *ZkPubKey         `protobuf:"bytes,11,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
}

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

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

func (*OperationSpecialData) ProtoMessage() {}

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

func (x *OperationSpecialData) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *OperationSpecialData) GetRecipientID() uint64 {
	if x != nil {
		return x.RecipientID
	}
	return 0
}

func (x *OperationSpecialData) GetRecipientAddr() string {
	if x != nil {
		return x.RecipientAddr
	}
	return ""
}

func (x *OperationSpecialData) GetAmount() []string {
	if x != nil {
		return x.Amount
	}
	return nil
}

func (x *OperationSpecialData) GetChainID() []uint32 {
	if x != nil {
		return x.ChainID
	}
	return nil
}

func (x *OperationSpecialData) GetTokenID() []uint64 {
	if x != nil {
		return x.TokenID
	}
	return nil
}

func (x *OperationSpecialData) GetPricePair() []*OrderPricePair {
	if x != nil {
		return x.PricePair
	}
	return nil
}

func (x *OperationSpecialData) GetSigData() *ZkSignature {
	if x != nil {
		return x.SigData
	}
	return nil
}

func (x *OperationSpecialData) GetContentHash() []string {
	if x != nil {
		return x.ContentHash
	}
	return nil
}

func (x *OperationSpecialData) GetPubKeyType() uint64 {
	if x != nil {
		return x.PubKeyType
	}
	return 0
}

func (x *OperationSpecialData) GetPubKey() *ZkPubKey {
	if x != nil {
		return x.PubKey
	}
	return nil
}

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

	Fee     string `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"`
	TokenID uint64 `protobuf:"varint,3,opt,name=tokenID,proto3" json:"tokenID,omitempty"` //默认是操作的币种，如果不同，则在此设置，比如NFT的交换
}

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

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

func (*ZkFee) ProtoMessage() {}

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

func (x *ZkFee) GetFee() string {
	if x != nil {
		return x.Fee
	}
	return ""
}

func (x *ZkFee) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

//optional, 记录operation的queue对应的tx的block height和txIndex，方便定位
type OpBlockInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height  int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	TxIndex int32 `protobuf:"varint,2,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
}

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

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

func (*OpBlockInfo) ProtoMessage() {}

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

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

func (x *OpBlockInfo) GetTxIndex() int32 {
	if x != nil {
		return x.TxIndex
	}
	return 0
}

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

	AccountID  uint64       `protobuf:"varint,1,opt,name=accountID,proto3" json:"accountID,omitempty"`
	TokenID    uint64       `protobuf:"varint,3,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount     string       `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`
	EthAddress string       `protobuf:"bytes,5,opt,name=ethAddress,proto3" json:"ethAddress,omitempty"`
	Layer2Addr string       `protobuf:"bytes,6,opt,name=layer2Addr,proto3" json:"layer2Addr,omitempty"`
	Signature  *ZkSignature `protobuf:"bytes,7,opt,name=signature,proto3" json:"signature,omitempty"`
	//记录deposit或fullExit对应的eth priorityID，方便查询对应区块高度和证明ID
	L1PriorityID int64        `protobuf:"varint,8,opt,name=l1PriorityID,proto3" json:"l1PriorityID,omitempty"`
	BlockInfo    *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkDepositWitnessInfo) ProtoMessage() {}

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

func (x *ZkDepositWitnessInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkDepositWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkDepositWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkDepositWitnessInfo) GetEthAddress() string {
	if x != nil {
		return x.EthAddress
	}
	return ""
}

func (x *ZkDepositWitnessInfo) GetLayer2Addr() string {
	if x != nil {
		return x.Layer2Addr
	}
	return ""
}

func (x *ZkDepositWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkDepositWitnessInfo) GetL1PriorityID() int64 {
	if x != nil {
		return x.L1PriorityID
	}
	return 0
}

func (x *ZkDepositWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	TokenID    uint64       `protobuf:"varint,1,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount     string       `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	AccountID  uint64       `protobuf:"varint,3,opt,name=accountID,proto3" json:"accountID,omitempty"`
	EthAddress string       `protobuf:"bytes,4,opt,name=ethAddress,proto3" json:"ethAddress,omitempty"`
	Signature  *ZkSignature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee        *ZkFee       `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo  *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkWithdrawWitnessInfo) ProtoMessage() {}

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

func (x *ZkWithdrawWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkWithdrawWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkWithdrawWitnessInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkWithdrawWitnessInfo) GetEthAddress() string {
	if x != nil {
		return x.EthAddress
	}
	return ""
}

func (x *ZkWithdrawWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkWithdrawWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkWithdrawWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	TokenID       uint64       `protobuf:"varint,1,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount        string       `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	FromAccountID uint64       `protobuf:"varint,3,opt,name=fromAccountID,proto3" json:"fromAccountID,omitempty"`
	ToAccountID   uint64       `protobuf:"varint,4,opt,name=toAccountID,proto3" json:"toAccountID,omitempty"`
	Signature     *ZkSignature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee           *ZkFee       `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo     *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkTransferWitnessInfo) ProtoMessage() {}

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

func (x *ZkTransferWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkTransferWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkTransferWitnessInfo) GetFromAccountID() uint64 {
	if x != nil {
		return x.FromAccountID
	}
	return 0
}

func (x *ZkTransferWitnessInfo) GetToAccountID() uint64 {
	if x != nil {
		return x.ToAccountID
	}
	return 0
}

func (x *ZkTransferWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkTransferWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkTransferWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	TokenID       uint64       `protobuf:"varint,1,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount        string       `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	FromAccountID uint64       `protobuf:"varint,3,opt,name=fromAccountID,proto3" json:"fromAccountID,omitempty"`
	ToAccountID   uint64       `protobuf:"varint,4,opt,name=toAccountID,proto3" json:"toAccountID,omitempty"`
	EthAddress    string       `protobuf:"bytes,5,opt,name=ethAddress,proto3" json:"ethAddress,omitempty"`
	Layer2Addr    string       `protobuf:"bytes,6,opt,name=layer2Addr,proto3" json:"layer2Addr,omitempty"`
	Signature     *ZkSignature `protobuf:"bytes,7,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee           *ZkFee       `protobuf:"bytes,8,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo     *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkTransferToNewWitnessInfo) ProtoMessage() {}

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

func (x *ZkTransferToNewWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkTransferToNewWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkTransferToNewWitnessInfo) GetFromAccountID() uint64 {
	if x != nil {
		return x.FromAccountID
	}
	return 0
}

func (x *ZkTransferToNewWitnessInfo) GetToAccountID() uint64 {
	if x != nil {
		return x.ToAccountID
	}
	return 0
}

func (x *ZkTransferToNewWitnessInfo) GetEthAddress() string {
	if x != nil {
		return x.EthAddress
	}
	return ""
}

func (x *ZkTransferToNewWitnessInfo) GetLayer2Addr() string {
	if x != nil {
		return x.Layer2Addr
	}
	return ""
}

func (x *ZkTransferToNewWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkTransferToNewWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkTransferToNewWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	ProxyID    uint64       `protobuf:"varint,1,opt,name=proxyID,proto3" json:"proxyID,omitempty"`
	TargetID   uint64       `protobuf:"varint,2,opt,name=targetID,proto3" json:"targetID,omitempty"`
	TokenID    uint64       `protobuf:"varint,3,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount     string       `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`
	Signature  *ZkSignature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
	EthAddress string       `protobuf:"bytes,7,opt,name=ethAddress,proto3" json:"ethAddress,omitempty"`
	Fee        *ZkFee       `protobuf:"bytes,8,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo  *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkProxyExitWitnessInfo) ProtoMessage() {}

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

func (x *ZkProxyExitWitnessInfo) GetProxyID() uint64 {
	if x != nil {
		return x.ProxyID
	}
	return 0
}

func (x *ZkProxyExitWitnessInfo) GetTargetID() uint64 {
	if x != nil {
		return x.TargetID
	}
	return 0
}

func (x *ZkProxyExitWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkProxyExitWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkProxyExitWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkProxyExitWitnessInfo) GetEthAddress() string {
	if x != nil {
		return x.EthAddress
	}
	return ""
}

func (x *ZkProxyExitWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkProxyExitWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	AccountID uint64       `protobuf:"varint,1,opt,name=accountID,proto3" json:"accountID,omitempty"`
	PubKey    *ZkPubKey    `protobuf:"bytes,2,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
	PubKeyTy  uint64       `protobuf:"varint,3,opt,name=pubKeyTy,proto3" json:"pubKeyTy,omitempty"`
	Signature *ZkSignature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"`
	BlockInfo *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkSetPubKeyWitnessInfo) ProtoMessage() {}

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

func (x *ZkSetPubKeyWitnessInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkSetPubKeyWitnessInfo) GetPubKey() *ZkPubKey {
	if x != nil {
		return x.PubKey
	}
	return nil
}

func (x *ZkSetPubKeyWitnessInfo) GetPubKeyTy() uint64 {
	if x != nil {
		return x.PubKeyTy
	}
	return 0
}

func (x *ZkSetPubKeyWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkSetPubKeyWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	AccountID  uint64       `protobuf:"varint,1,opt,name=accountID,proto3" json:"accountID,omitempty"`
	TokenID    uint64       `protobuf:"varint,2,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount     string       `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
	EthAddress string       `protobuf:"bytes,4,opt,name=ethAddress,proto3" json:"ethAddress,omitempty"`
	Signature  *ZkSignature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee        *ZkFee       `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo  *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkFullExitWitnessInfo) ProtoMessage() {}

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

func (x *ZkFullExitWitnessInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkFullExitWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkFullExitWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkFullExitWitnessInfo) GetEthAddress() string {
	if x != nil {
		return x.EthAddress
	}
	return ""
}

func (x *ZkFullExitWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkFullExitWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkFullExitWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	TokenID   uint64       `protobuf:"varint,1,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount    string       `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	AccountID uint64       `protobuf:"varint,3,opt,name=accountID,proto3" json:"accountID,omitempty"`
	Signature *ZkSignature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee       *ZkFee       `protobuf:"bytes,6,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkContractToTreeWitnessInfo) ProtoMessage() {}

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

func (x *ZkContractToTreeWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkContractToTreeWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkContractToTreeWitnessInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkContractToTreeWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkContractToTreeWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkContractToTreeWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

//直接产生新的tree地址
type ZkContractToTreeNewWitnessInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TokenID uint64 `protobuf:"varint,1,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount  string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	//  uint64 fromAcctID = 3;
	ToAccountID uint64       `protobuf:"varint,4,opt,name=toAccountID,proto3" json:"toAccountID,omitempty"`
	EthAddress  string       `protobuf:"bytes,5,opt,name=ethAddress,proto3" json:"ethAddress,omitempty"`
	Layer2Addr  string       `protobuf:"bytes,6,opt,name=layer2Addr,proto3" json:"layer2Addr,omitempty"`
	Signature   *ZkSignature `protobuf:"bytes,7,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee         *ZkFee       `protobuf:"bytes,8,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo   *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkContractToTreeNewWitnessInfo) ProtoMessage() {}

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

func (x *ZkContractToTreeNewWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkContractToTreeNewWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkContractToTreeNewWitnessInfo) GetToAccountID() uint64 {
	if x != nil {
		return x.ToAccountID
	}
	return 0
}

func (x *ZkContractToTreeNewWitnessInfo) GetEthAddress() string {
	if x != nil {
		return x.EthAddress
	}
	return ""
}

func (x *ZkContractToTreeNewWitnessInfo) GetLayer2Addr() string {
	if x != nil {
		return x.Layer2Addr
	}
	return ""
}

func (x *ZkContractToTreeNewWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkContractToTreeNewWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkContractToTreeNewWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	TokenID   uint64       `protobuf:"varint,1,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount    string       `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	AccountID uint64       `protobuf:"varint,3,opt,name=accountID,proto3" json:"accountID,omitempty"`
	Signature *ZkSignature `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee       *ZkFee       `protobuf:"bytes,5,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkTreeToContractWitnessInfo) ProtoMessage() {}

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

func (x *ZkTreeToContractWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkTreeToContractWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkTreeToContractWitnessInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkTreeToContractWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkTreeToContractWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkTreeToContractWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	AccountID uint64       `protobuf:"varint,1,opt,name=accountID,proto3" json:"accountID,omitempty"`
	TokenID   uint64       `protobuf:"varint,2,opt,name=tokenID,proto3" json:"tokenID,omitempty"`
	Amount    string       `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"`
	Signature *ZkSignature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
}

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

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

func (*ZkFeeWitnessInfo) ProtoMessage() {}

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

func (x *ZkFeeWitnessInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkFeeWitnessInfo) GetTokenID() uint64 {
	if x != nil {
		return x.TokenID
	}
	return 0
}

func (x *ZkFeeWitnessInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkFeeWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

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

	MintAcctID     uint64       `protobuf:"varint,1,opt,name=mintAcctID,proto3" json:"mintAcctID,omitempty"`
	RecipientID    uint64       `protobuf:"varint,2,opt,name=recipientID,proto3" json:"recipientID,omitempty"`
	ErcProtocol    uint64       `protobuf:"varint,3,opt,name=ercProtocol,proto3" json:"ercProtocol,omitempty"`
	ContentHash    []string     `protobuf:"bytes,4,rep,name=contentHash,proto3" json:"contentHash,omitempty"`
	NewNFTTokenID  uint64       `protobuf:"varint,5,opt,name=newNFTTokenID,proto3" json:"newNFTTokenID,omitempty"`
	CreateSerialID uint64       `protobuf:"varint,6,opt,name=createSerialID,proto3" json:"createSerialID,omitempty"`
	Amount         uint64       `protobuf:"varint,7,opt,name=amount,proto3" json:"amount,omitempty"`
	Signature      *ZkSignature `protobuf:"bytes,8,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee            *ZkFee       `protobuf:"bytes,9,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo      *OpBlockInfo `protobuf:"bytes,10,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkMintNFTWitnessInfo) ProtoMessage() {}

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

func (x *ZkMintNFTWitnessInfo) GetMintAcctID() uint64 {
	if x != nil {
		return x.MintAcctID
	}
	return 0
}

func (x *ZkMintNFTWitnessInfo) GetRecipientID() uint64 {
	if x != nil {
		return x.RecipientID
	}
	return 0
}

func (x *ZkMintNFTWitnessInfo) GetErcProtocol() uint64 {
	if x != nil {
		return x.ErcProtocol
	}
	return 0
}

func (x *ZkMintNFTWitnessInfo) GetContentHash() []string {
	if x != nil {
		return x.ContentHash
	}
	return nil
}

func (x *ZkMintNFTWitnessInfo) GetNewNFTTokenID() uint64 {
	if x != nil {
		return x.NewNFTTokenID
	}
	return 0
}

func (x *ZkMintNFTWitnessInfo) GetCreateSerialID() uint64 {
	if x != nil {
		return x.CreateSerialID
	}
	return 0
}

func (x *ZkMintNFTWitnessInfo) GetAmount() uint64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *ZkMintNFTWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkMintNFTWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkMintNFTWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	FromAcctID      uint64       `protobuf:"varint,1,opt,name=fromAcctID,proto3" json:"fromAcctID,omitempty"`
	NFTTokenID      uint64       `protobuf:"varint,2,opt,name=NFTTokenID,proto3" json:"NFTTokenID,omitempty"`
	WithdrawAmount  uint64       `protobuf:"varint,3,opt,name=withdrawAmount,proto3" json:"withdrawAmount,omitempty"`
	CreatorAcctID   uint64       `protobuf:"varint,4,opt,name=creatorAcctID,proto3" json:"creatorAcctID,omitempty"`
	ErcProtocol     uint64       `protobuf:"varint,5,opt,name=ercProtocol,proto3" json:"ercProtocol,omitempty"`
	ContentHash     []string     `protobuf:"bytes,6,rep,name=contentHash,proto3" json:"contentHash,omitempty"`
	CreatorSerialID uint64       `protobuf:"varint,7,opt,name=creatorSerialID,proto3" json:"creatorSerialID,omitempty"`
	InitMintAmount  uint64       `protobuf:"varint,8,opt,name=initMintAmount,proto3" json:"initMintAmount,omitempty"`
	Signature       *ZkSignature `protobuf:"bytes,9,opt,name=signature,proto3" json:"signature,omitempty"`
	EthAddress      string       `protobuf:"bytes,11,opt,name=ethAddress,proto3" json:"ethAddress,omitempty"`
	Fee             *ZkFee       `protobuf:"bytes,12,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo       *OpBlockInfo `protobuf:"bytes,15,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkWithdrawNFTWitnessInfo) ProtoMessage() {}

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

func (x *ZkWithdrawNFTWitnessInfo) GetFromAcctID() uint64 {
	if x != nil {
		return x.FromAcctID
	}
	return 0
}

func (x *ZkWithdrawNFTWitnessInfo) GetNFTTokenID() uint64 {
	if x != nil {
		return x.NFTTokenID
	}
	return 0
}

func (x *ZkWithdrawNFTWitnessInfo) GetWithdrawAmount() uint64 {
	if x != nil {
		return x.WithdrawAmount
	}
	return 0
}

func (x *ZkWithdrawNFTWitnessInfo) GetCreatorAcctID() uint64 {
	if x != nil {
		return x.CreatorAcctID
	}
	return 0
}

func (x *ZkWithdrawNFTWitnessInfo) GetErcProtocol() uint64 {
	if x != nil {
		return x.ErcProtocol
	}
	return 0
}

func (x *ZkWithdrawNFTWitnessInfo) GetContentHash() []string {
	if x != nil {
		return x.ContentHash
	}
	return nil
}

func (x *ZkWithdrawNFTWitnessInfo) GetCreatorSerialID() uint64 {
	if x != nil {
		return x.CreatorSerialID
	}
	return 0
}

func (x *ZkWithdrawNFTWitnessInfo) GetInitMintAmount() uint64 {
	if x != nil {
		return x.InitMintAmount
	}
	return 0
}

func (x *ZkWithdrawNFTWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkWithdrawNFTWitnessInfo) GetEthAddress() string {
	if x != nil {
		return x.EthAddress
	}
	return ""
}

func (x *ZkWithdrawNFTWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkWithdrawNFTWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	FromAccountID uint64       `protobuf:"varint,1,opt,name=fromAccountID,proto3" json:"fromAccountID,omitempty"`
	RecipientID   uint64       `protobuf:"varint,2,opt,name=recipientID,proto3" json:"recipientID,omitempty"`
	NFTTokenID    uint64       `protobuf:"varint,3,opt,name=NFTTokenID,proto3" json:"NFTTokenID,omitempty"`
	Amount        uint64       `protobuf:"varint,4,opt,name=amount,proto3" json:"amount,omitempty"`
	Signature     *ZkSignature `protobuf:"bytes,6,opt,name=signature,proto3" json:"signature,omitempty"`
	Fee           *ZkFee       `protobuf:"bytes,7,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo     *OpBlockInfo `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkTransferNFTWitnessInfo) ProtoMessage() {}

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

func (x *ZkTransferNFTWitnessInfo) GetFromAccountID() uint64 {
	if x != nil {
		return x.FromAccountID
	}
	return 0
}

func (x *ZkTransferNFTWitnessInfo) GetRecipientID() uint64 {
	if x != nil {
		return x.RecipientID
	}
	return 0
}

func (x *ZkTransferNFTWitnessInfo) GetNFTTokenID() uint64 {
	if x != nil {
		return x.NFTTokenID
	}
	return 0
}

func (x *ZkTransferNFTWitnessInfo) GetAmount() uint64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *ZkTransferNFTWitnessInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ZkTransferNFTWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkTransferNFTWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	AccountID uint64       `protobuf:"varint,1,opt,name=AccountID,proto3" json:"AccountID,omitempty"`
	Amount    string       `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"`
	RatioSell string       `protobuf:"bytes,3,opt,name=ratioSell,proto3" json:"ratioSell,omitempty"`
	RatioBuy  string       `protobuf:"bytes,4,opt,name=ratioBuy,proto3" json:"ratioBuy,omitempty"`
	Signature *ZkSignature `protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
}

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

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

func (*ZkSwapOrderInfo) ProtoMessage() {}

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

func (x *ZkSwapOrderInfo) GetAccountID() uint64 {
	if x != nil {
		return x.AccountID
	}
	return 0
}

func (x *ZkSwapOrderInfo) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *ZkSwapOrderInfo) GetRatioSell() string {
	if x != nil {
		return x.RatioSell
	}
	return ""
}

func (x *ZkSwapOrderInfo) GetRatioBuy() string {
	if x != nil {
		return x.RatioBuy
	}
	return ""
}

func (x *ZkSwapOrderInfo) GetSignature() *ZkSignature {
	if x != nil {
		return x.Signature
	}
	return nil
}

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

	LeftTokenID     uint64           `protobuf:"varint,1,opt,name=leftTokenID,proto3" json:"leftTokenID,omitempty"` //BTY-USDT 对
	RightTokenID    uint64           `protobuf:"varint,2,opt,name=rightTokenID,proto3" json:"rightTokenID,omitempty"`
	LeftDealAmount  string           `protobuf:"bytes,3,opt,name=leftDealAmount,proto3" json:"leftDealAmount,omitempty"`
	RightDealAmount string           `protobuf:"bytes,4,opt,name=rightDealAmount,proto3" json:"rightDealAmount,omitempty"`
	Left            *ZkSwapOrderInfo `protobuf:"bytes,5,opt,name=left,proto3" json:"left,omitempty"`
	Right           *ZkSwapOrderInfo `protobuf:"bytes,6,opt,name=right,proto3" json:"right,omitempty"`
	Fee             *ZkFee           `protobuf:"bytes,7,opt,name=fee,proto3" json:"fee,omitempty"`
	BlockInfo       *OpBlockInfo     `protobuf:"bytes,9,opt,name=blockInfo,proto3" json:"blockInfo,omitempty"`
}

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

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

func (*ZkSwapWitnessInfo) ProtoMessage() {}

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

func (x *ZkSwapWitnessInfo) GetLeftTokenID() uint64 {
	if x != nil {
		return x.LeftTokenID
	}
	return 0
}

func (x *ZkSwapWitnessInfo) GetRightTokenID() uint64 {
	if x != nil {
		return x.RightTokenID
	}
	return 0
}

func (x *ZkSwapWitnessInfo) GetLeftDealAmount() string {
	if x != nil {
		return x.LeftDealAmount
	}
	return ""
}

func (x *ZkSwapWitnessInfo) GetRightDealAmount() string {
	if x != nil {
		return x.RightDealAmount
	}
	return ""
}

func (x *ZkSwapWitnessInfo) GetLeft() *ZkSwapOrderInfo {
	if x != nil {
		return x.Left
	}
	return nil
}

func (x *ZkSwapWitnessInfo) GetRight() *ZkSwapOrderInfo {
	if x != nil {
		return x.Right
	}
	return nil
}

func (x *ZkSwapWitnessInfo) GetFee() *ZkFee {
	if x != nil {
		return x.Fee
	}
	return nil
}

func (x *ZkSwapWitnessInfo) GetBlockInfo() *OpBlockInfo {
	if x != nil {
		return x.BlockInfo
	}
	return nil
}

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

	//  repeated OperationSpecialData specialDatas = 111;
	//
	// Types that are assignable to Value:
	//	*OperationSpecialInfo_Deposit
	//	*OperationSpecialInfo_Withdraw
	//	*OperationSpecialInfo_Transfer
	//	*OperationSpecialInfo_TransferToNew
	//	*OperationSpecialInfo_ProxyExit
	//	*OperationSpecialInfo_SetPubKey
	//	*OperationSpecialInfo_FullExit
	//	*OperationSpecialInfo_Swap
	//	*OperationSpecialInfo_ContractToTree
	//	*OperationSpecialInfo_Contract2TreeNew
	//	*OperationSpecialInfo_TreeToContract
	//	*OperationSpecialInfo_Fee
	//	*OperationSpecialInfo_MintNFT
	//	*OperationSpecialInfo_WithdrawNFT
	//	*OperationSpecialInfo_TransferNFT
	Value isOperationSpecialInfo_Value `protobuf_oneof:"value"`
}

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

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

func (*OperationSpecialInfo) ProtoMessage() {}

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

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

func (m *OperationSpecialInfo) GetValue() isOperationSpecialInfo_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *OperationSpecialInfo) GetDeposit() *ZkDepositWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_Deposit); ok {
		return x.Deposit
	}
	return nil
}

func (x *OperationSpecialInfo) GetWithdraw() *ZkWithdrawWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_Withdraw); ok {
		return x.Withdraw
	}
	return nil
}

func (x *OperationSpecialInfo) GetTransfer() *ZkTransferWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_Transfer); ok {
		return x.Transfer
	}
	return nil
}

func (x *OperationSpecialInfo) GetTransferToNew() *ZkTransferToNewWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_TransferToNew); ok {
		return x.TransferToNew
	}
	return nil
}

func (x *OperationSpecialInfo) GetProxyExit() *ZkProxyExitWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_ProxyExit); ok {
		return x.ProxyExit
	}
	return nil
}

func (x *OperationSpecialInfo) GetSetPubKey() *ZkSetPubKeyWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_SetPubKey); ok {
		return x.SetPubKey
	}
	return nil
}

func (x *OperationSpecialInfo) GetFullExit() *ZkFullExitWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_FullExit); ok {
		return x.FullExit
	}
	return nil
}

func (x *OperationSpecialInfo) GetSwap() *ZkSwapWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_Swap); ok {
		return x.Swap
	}
	return nil
}

func (x *OperationSpecialInfo) GetContractToTree() *ZkContractToTreeWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_ContractToTree); ok {
		return x.ContractToTree
	}
	return nil
}

func (x *OperationSpecialInfo) GetContract2TreeNew() *ZkContractToTreeNewWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_Contract2TreeNew); ok {
		return x.Contract2TreeNew
	}
	return nil
}

func (x *OperationSpecialInfo) GetTreeToContract() *ZkTreeToContractWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_TreeToContract); ok {
		return x.TreeToContract
	}
	return nil
}

func (x *OperationSpecialInfo) GetFee() *ZkFeeWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_Fee); ok {
		return x.Fee
	}
	return nil
}

func (x *OperationSpecialInfo) GetMintNFT() *ZkMintNFTWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_MintNFT); ok {
		return x.MintNFT
	}
	return nil
}

func (x *OperationSpecialInfo) GetWithdrawNFT() *ZkWithdrawNFTWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_WithdrawNFT); ok {
		return x.WithdrawNFT
	}
	return nil
}

func (x *OperationSpecialInfo) GetTransferNFT() *ZkTransferNFTWitnessInfo {
	if x, ok := x.GetValue().(*OperationSpecialInfo_TransferNFT); ok {
		return x.TransferNFT
	}
	return nil
}

type isOperationSpecialInfo_Value interface {
	isOperationSpecialInfo_Value()
}

type OperationSpecialInfo_Deposit struct {
	Deposit *ZkDepositWitnessInfo `protobuf:"bytes,1,opt,name=deposit,proto3,oneof"`
}

type OperationSpecialInfo_Withdraw struct {
	Withdraw *ZkWithdrawWitnessInfo `protobuf:"bytes,2,opt,name=withdraw,proto3,oneof"`
}

type OperationSpecialInfo_Transfer struct {
	Transfer *ZkTransferWitnessInfo `protobuf:"bytes,3,opt,name=transfer,proto3,oneof"`
}

type OperationSpecialInfo_TransferToNew struct {
	TransferToNew *ZkTransferToNewWitnessInfo `protobuf:"bytes,4,opt,name=transferToNew,proto3,oneof"`
}

type OperationSpecialInfo_ProxyExit struct {
	ProxyExit *ZkProxyExitWitnessInfo `protobuf:"bytes,5,opt,name=proxyExit,proto3,oneof"`
}

type OperationSpecialInfo_SetPubKey struct {
	SetPubKey *ZkSetPubKeyWitnessInfo `protobuf:"bytes,6,opt,name=setPubKey,proto3,oneof"`
}

type OperationSpecialInfo_FullExit struct {
	FullExit *ZkFullExitWitnessInfo `protobuf:"bytes,7,opt,name=fullExit,proto3,oneof"`
}

type OperationSpecialInfo_Swap struct {
	Swap *ZkSwapWitnessInfo `protobuf:"bytes,8,opt,name=swap,proto3,oneof"`
}

type OperationSpecialInfo_ContractToTree struct {
	ContractToTree *ZkContractToTreeWitnessInfo `protobuf:"bytes,9,opt,name=contractToTree,proto3,oneof"`
}

type OperationSpecialInfo_Contract2TreeNew struct {
	Contract2TreeNew *ZkContractToTreeNewWitnessInfo `protobuf:"bytes,10,opt,name=contract2TreeNew,proto3,oneof"`
}

type OperationSpecialInfo_TreeToContract struct {
	TreeToContract *ZkTreeToContractWitnessInfo `protobuf:"bytes,11,opt,name=treeToContract,proto3,oneof"`
}

type OperationSpecialInfo_Fee struct {
	Fee *ZkFeeWitnessInfo `protobuf:"bytes,12,opt,name=fee,proto3,oneof"` //fee action
}

type OperationSpecialInfo_MintNFT struct {
	MintNFT *ZkMintNFTWitnessInfo `protobuf:"bytes,13,opt,name=mintNFT,proto3,oneof"`
}

type OperationSpecialInfo_WithdrawNFT struct {
	WithdrawNFT *ZkWithdrawNFTWitnessInfo `protobuf:"bytes,14,opt,name=withdrawNFT,proto3,oneof"`
}

type OperationSpecialInfo_TransferNFT struct {
	TransferNFT *ZkTransferNFTWitnessInfo `protobuf:"bytes,15,opt,name=transferNFT,proto3,oneof"`
}

func (*OperationSpecialInfo_Deposit) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_Withdraw) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_Transfer) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_TransferToNew) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_ProxyExit) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_SetPubKey) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_FullExit) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_Swap) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_ContractToTree) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_Contract2TreeNew) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_TreeToContract) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_Fee) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_MintNFT) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_WithdrawNFT) isOperationSpecialInfo_Value() {}

func (*OperationSpecialInfo_TransferNFT) isOperationSpecialInfo_Value() {}

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

	Ty int32                 `protobuf:"varint,1,opt,name=ty,proto3" json:"ty,omitempty"`
	Op *OperationSpecialInfo `protobuf:"bytes,2,opt,name=op,proto3" json:"op,omitempty"`
}

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

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

func (*ZkOperation) ProtoMessage() {}

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

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

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

func (x *ZkOperation) GetOp() *OperationSpecialInfo {
	if x != nil {
		return x.Op
	}
	return nil
}

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

	Ops []*ZkOperation `protobuf:"bytes,1,rep,name=ops,proto3" json:"ops,omitempty"`
}

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

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

func (*ZkBatchOperation) ProtoMessage() {}

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

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

func (x *ZkBatchOperation) GetOps() []*ZkOperation {
	if x != nil {
		return x.Ops
	}
	return nil
}

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

	AccountWitness *AccountWitness `protobuf:"bytes,1,opt,name=accountWitness,proto3" json:"accountWitness,omitempty"`
	TokenWitness   *TokenWitness   `protobuf:"bytes,2,opt,name=tokenWitness,proto3" json:"tokenWitness,omitempty"`
	TreeRoot       string          `protobuf:"bytes,3,opt,name=treeRoot,proto3" json:"treeRoot,omitempty"`
}

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

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

func (*ZkProofWitness) ProtoMessage() {}

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

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

func (x *ZkProofWitness) GetAccountWitness() *AccountWitness {
	if x != nil {
		return x.AccountWitness
	}
	return nil
}

func (x *ZkProofWitness) GetTokenWitness() *TokenWitness {
	if x != nil {
		return x.TokenWitness
	}
	return nil
}

func (x *ZkProofWitness) GetTreeRoot() string {
	if x != nil {
		return x.TreeRoot
	}
	return ""
}

var File_witness_proto protoreflect.FileDescriptor

var file_witness_proto_rawDesc = []byte{
	0x0a, 0x0d, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0x72, 0x0a, 0x0b, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b,
	0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1a,
	0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x03, 0x6d, 0x73,
	0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x5a, 0x6b, 0x4d, 0x73, 0x67, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x4b, 0x0a, 0x05, 0x5a, 0x6b,
	0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63,
	0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x6f, 0x6e,
	0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x68, 0x69, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x74, 0x68, 0x69, 0x72, 0x64, 0x22, 0x26, 0x0a, 0x08, 0x5a, 0x6b, 0x50, 0x75, 0x62,
	0x4b, 0x65, 0x79, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01,
	0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x79, 0x22,
	0x39, 0x0a, 0x0b, 0x53, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12,
	0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61,
	0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x13, 0x41,
	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x75, 0x62, 0x4b, 0x65,
	0x79, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x75, 0x62,
	0x4b, 0x65, 0x79, 0x52, 0x06, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x06, 0x73,
	0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x73, 0x79,
	0x73, 0x74, 0x65, 0x6d, 0x12, 0x25, 0x0a, 0x05, 0x73, 0x75, 0x70, 0x65, 0x72, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x75,
	0x62, 0x4b, 0x65, 0x79, 0x52, 0x05, 0x73, 0x75, 0x70, 0x65, 0x72, 0x22, 0x99, 0x02, 0x0a, 0x0e,
	0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x0e,
	0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18,
	0x0a, 0x07, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x69,
	0x6e, 0x33, 0x33, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63,
	0x68, 0x61, 0x69, 0x6e, 0x33, 0x33, 0x41, 0x64, 0x64, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x54, 0x72, 0x65, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x72, 0x65, 0x65, 0x52, 0x6f, 0x6f, 0x74,
	0x12, 0x27, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x75, 0x62, 0x4b, 0x65,
	0x79, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x69, 0x62,
	0x6c, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x53, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x74, 0x68, 0x52, 0x07,
	0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79,
	0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f,
	0x78, 0x79, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79,
	0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x66, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e,
	0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
	0x65, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x69, 0x62, 0x6c, 0x69,
	0x6e, 0x67, 0x50, 0x61, 0x74, 0x68, 0x52, 0x07, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x22,
	0x8d, 0x01, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
	0x61, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x3d, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57,
	0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57,
	0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x57,
	0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73,
	0x73, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x22,
	0x7b, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x69, 0x72,
	0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x42, 0x72, 0x61, 0x6e,
	0x63, 0x68, 0x52, 0x06, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x61, 0x66,
	0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x42,
	0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0xb4, 0x02, 0x0a,
	0x0d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20,
	0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x70,
	0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x6f, 0x70, 0x49,
	0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06,
	0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78,
	0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x06, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x11, 0x6f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18,
	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x42, 0x72, 0x61, 0x6e, 0x63,
	0x68, 0x52, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e,
	0x63, 0x68, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x69,
	0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x49,
	0x6e, 0x66, 0x6f, 0x22, 0x36, 0x0a, 0x0e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63,
	0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x75, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x75, 0x79, 0x22, 0x96, 0x03, 0x0a, 0x14,
	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c,
	0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49,
	0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49,
	0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65,
	0x6e, 0x74, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e,
	0x74, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x63,
	0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x18, 0x05, 0x20,
	0x03, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07,
	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x33, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50,
	0x61, 0x69, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72,
	0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x2c, 0x0a, 0x07, 0x73,
	0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x52, 0x07, 0x73, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x70,
	0x75, 0x62, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0a, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x70,
	0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x70, 0x75,
	0x62, 0x4b, 0x65, 0x79, 0x22, 0x33, 0x0a, 0x05, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x12, 0x10, 0x0a,
	0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12,
	0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x22, 0x3f, 0x0a, 0x0b, 0x4f, 0x70, 0x42,
	0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xae, 0x02, 0x0a, 0x14, 0x5a,
	0x6b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49,
	0x44, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x41, 0x64, 0x64,
	0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x41,
	0x64, 0x64, 0x72, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a,
	0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x31, 0x50, 0x72, 0x69, 0x6f, 0x72,
	0x69, 0x74, 0x79, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x31, 0x50,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x49, 0x44, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f,
	0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x8b, 0x02, 0x0a, 0x15,
	0x5a, 0x6b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12,
	0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69,
	0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46,
	0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x95, 0x02, 0x0a, 0x15, 0x5a, 0x6b,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49,
	0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a,
	0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61,
	0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x72,
	0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x74,
	0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0b, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x30, 0x0a,
	0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12,
	0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12,
	0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f,
	0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66,
	0x6f, 0x22, 0xda, 0x02, 0x0a, 0x1a, 0x5a, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
	0x54, 0x6f, 0x4e, 0x65, 0x77, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x41,
	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x41, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x74,
	0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x74,
	0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x61,
	0x79, 0x65, 0x72, 0x32, 0x41, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x6c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x41, 0x64, 0x64, 0x72, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69,
	0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03,
	0x66, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa4,
	0x02, 0x0a, 0x16, 0x5a, 0x6b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x78, 0x69, 0x74, 0x57, 0x69,
	0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f,
	0x78, 0x79, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78,
	0x79, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x44, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x44, 0x12,
	0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53,
	0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74,
	0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03,
	0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
	0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xdf, 0x01, 0x0a, 0x16, 0x5a, 0x6b, 0x53, 0x65, 0x74, 0x50,
	0x75, 0x62, 0x4b, 0x65, 0x79, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x27,
	0x0a, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52,
	0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x75, 0x62, 0x4b, 0x65,
	0x79, 0x54, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x75, 0x62, 0x4b, 0x65,
	0x79, 0x54, 0x79, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a,
	0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e,
	0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c,
	0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x8b, 0x02, 0x0a, 0x15, 0x5a, 0x6b, 0x46, 0x75,
	0x6c, 0x6c, 0x45, 0x78, 0x69, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12,
	0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
	0x73, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53,
	0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74,
	0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03,
	0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
	0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
	0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf1, 0x01, 0x0a, 0x1b, 0x5a, 0x6b, 0x43, 0x6f, 0x6e, 0x74,
	0x72, 0x61, 0x63, 0x74, 0x54, 0x6f, 0x54, 0x72, 0x65, 0x65, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12,
	0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69,
	0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46,
	0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb8, 0x02, 0x0a, 0x1e, 0x5a, 0x6b,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x6f, 0x54, 0x72, 0x65, 0x65, 0x4e, 0x65,
	0x77, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07,
	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20,
	0x0a, 0x0b, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x0b, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44,
	0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
	0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x41, 0x64, 0x64, 0x72, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x41, 0x64, 0x64, 0x72,
	0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x69,
	0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75,
	0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66,
	0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70,
	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
	0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf1, 0x01, 0x0a, 0x1b, 0x5a, 0x6b, 0x54, 0x72, 0x65, 0x65, 0x54,
	0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73,
	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16,
	0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x49, 0x44, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67,
	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65,
	0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x94, 0x01, 0x0a, 0x10, 0x5a, 0x6b, 0x46,
	0x65, 0x65, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a,
	0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x74,
	0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f,
	0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a,
	0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22,
	0x86, 0x03, 0x0a, 0x14, 0x5a, 0x6b, 0x4d, 0x69, 0x6e, 0x74, 0x4e, 0x46, 0x54, 0x57, 0x69, 0x74,
	0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x74,
	0x41, 0x63, 0x63, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6d, 0x69,
	0x6e, 0x74, 0x41, 0x63, 0x63, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x69,
	0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72,
	0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x72,
	0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0b, 0x65, 0x72, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x0b,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24,
	0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x4e, 0x46, 0x54, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x4e, 0x46, 0x54, 0x54, 0x6f, 0x6b,
	0x65, 0x6e, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65,
	0x72, 0x69, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06,
	0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67,
	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65,
	0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe2, 0x03, 0x0a, 0x18, 0x5a, 0x6b, 0x57,
	0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4e, 0x46, 0x54, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63,
	0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x41,
	0x63, 0x63, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x46, 0x54, 0x54, 0x6f, 0x6b, 0x65,
	0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x4e, 0x46, 0x54, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61,
	0x77, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x77,
	0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a,
	0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x74, 0x49, 0x44, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63,
	0x74, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x72, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x65, 0x72, 0x63, 0x50, 0x72, 0x6f,
	0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74,
	0x6f, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49,
	0x44, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x4d, 0x69, 0x6e, 0x74, 0x41, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x69, 0x74, 0x4d,
	0x69, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67,
	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65,
	0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x65,
	0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x65, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x03, 0x66,
	0x65, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x62,
	0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9e, 0x02,
	0x0a, 0x18, 0x5a, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x46, 0x54, 0x57,
	0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72,
	0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44,
	0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74,
	0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x46, 0x54, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x4e, 0x46, 0x54, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69,
	0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
	0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x03,
	0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb3,
	0x01, 0x0a, 0x0f, 0x5a, 0x6b, 0x53, 0x77, 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44,
	0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x53, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x53, 0x65, 0x6c, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x42,
	0x75, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x42,
	0x75, 0x79, 0x12, 0x30, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b,
	0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61,
	0x74, 0x75, 0x72, 0x65, 0x22, 0xd7, 0x02, 0x0a, 0x11, 0x5a, 0x6b, 0x53, 0x77, 0x61, 0x70, 0x57,
	0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x6c, 0x65,
	0x66, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0b, 0x6c, 0x65, 0x66, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c,
	0x72, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0c, 0x72, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x44,
	0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x65, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x65, 0x66, 0x74, 0x44, 0x65,
	0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x69, 0x67, 0x68,
	0x74, 0x44, 0x65, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x77, 0x61, 0x70, 0x4f,
	0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x2c,
	0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x77, 0x61, 0x70, 0x4f, 0x72, 0x64, 0x65,
	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1e, 0x0a, 0x03,
	0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x30, 0x0a, 0x09,
	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe6,
	0x07, 0x0a, 0x14, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63,
	0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x37, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73,
	0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x5a, 0x6b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74,
	0x12, 0x3a, 0x0a, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x57, 0x69, 0x74,
	0x68, 0x64, 0x72, 0x61, 0x77, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f,
	0x48, 0x00, 0x52, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x3a, 0x0a, 0x08,
	0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,
	0x72, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x08,
	0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e,
	0x73, 0x66, 0x65, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x21, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,
	0x65, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x77, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e,
	0x66, 0x6f, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x6f,
	0x4e, 0x65, 0x77, 0x12, 0x3d, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x78, 0x69, 0x74,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a,
	0x6b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x78, 0x69, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x78,
	0x69, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b,
	0x53, 0x65, 0x74, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73,
	0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x09, 0x73, 0x65, 0x74, 0x50, 0x75, 0x62, 0x4b, 0x65,
	0x79, 0x12, 0x3a, 0x0a, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x69, 0x74, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x75,
	0x6c, 0x6c, 0x45, 0x78, 0x69, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66,
	0x6f, 0x48, 0x00, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x69, 0x74, 0x12, 0x2e, 0x0a,
	0x04, 0x73, 0x77, 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x73, 0x77, 0x61, 0x70, 0x12, 0x4c, 0x0a,
	0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x6f, 0x54, 0x72, 0x65, 0x65, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x6f, 0x54, 0x72, 0x65, 0x65, 0x57, 0x69,
	0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x6f, 0x54, 0x72, 0x65, 0x65, 0x12, 0x53, 0x0a, 0x10, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x32, 0x54, 0x72, 0x65, 0x65, 0x4e, 0x65, 0x77, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x54, 0x6f, 0x54, 0x72, 0x65, 0x65, 0x4e, 0x65,
	0x77, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x10,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x32, 0x54, 0x72, 0x65, 0x65, 0x4e, 0x65, 0x77,
	0x12, 0x4c, 0x0a, 0x0e, 0x74, 0x72, 0x65, 0x65, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61,
	0x63, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x5a, 0x6b, 0x54, 0x72, 0x65, 0x65, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63,
	0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0e,
	0x74, 0x72, 0x65, 0x65, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x2b,
	0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x46, 0x65, 0x65, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73,
	0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6d,
	0x69, 0x6e, 0x74, 0x4e, 0x46, 0x54, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x4d, 0x69, 0x6e, 0x74, 0x4e, 0x46, 0x54, 0x57, 0x69,
	0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x69, 0x6e,
	0x74, 0x4e, 0x46, 0x54, 0x12, 0x43, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77,
	0x4e, 0x46, 0x54, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x5a, 0x6b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4e, 0x46, 0x54, 0x57,
	0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x69,
	0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x4e, 0x46, 0x54, 0x12, 0x43, 0x0a, 0x0b, 0x74, 0x72, 0x61,
	0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x46, 0x54, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,
	0x72, 0x4e, 0x46, 0x54, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x48,
	0x00, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x46, 0x54, 0x42, 0x07,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4a, 0x0a, 0x0b, 0x5a, 0x6b, 0x4f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x12, 0x2b, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x02, 0x6f, 0x70, 0x22, 0x38, 0x0a, 0x10, 0x5a, 0x6b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x03, 0x6f, 0x70, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x4f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x6f, 0x70, 0x73, 0x22, 0xa4, 0x01,
	0x0a, 0x0e, 0x5a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73,
	0x12, 0x3d, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65,
	0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52,
	0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12,
	0x37, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54, 0x6f,
	0x6b, 0x65, 0x6e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65,
	0x6e, 0x57, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x72, 0x65, 0x65,
	0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x65, 0x65,
	0x52, 0x6f, 0x6f, 0x74, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_witness_proto_rawDescOnce sync.Once
	file_witness_proto_rawDescData = file_witness_proto_rawDesc
)

func file_witness_proto_rawDescGZIP() []byte {
	file_witness_proto_rawDescOnce.Do(func() {
		file_witness_proto_rawDescData = protoimpl.X.CompressGZIP(file_witness_proto_rawDescData)
	})
	return file_witness_proto_rawDescData
}

var file_witness_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
var file_witness_proto_goTypes = []interface{}{
	(*ZkSignature)(nil),                    // 0: types.ZkSignature
	(*ZkMsg)(nil),                          // 1: types.ZkMsg
	(*ZkPubKey)(nil),                       // 2: types.ZkPubKey
	(*SiblingPath)(nil),                    // 3: types.SiblingPath
	(*AccountProxyPubKeys)(nil),            // 4: types.AccountProxyPubKeys
	(*AccountWitness)(nil),                 // 5: types.AccountWitness
	(*TokenWitness)(nil),                   // 6: types.TokenWitness
	(*OperationMetaBranch)(nil),            // 7: types.OperationMetaBranch
	(*OperationPairBranch)(nil),            // 8: types.OperationPairBranch
	(*OperationInfo)(nil),                  // 9: types.OperationInfo
	(*OrderPricePair)(nil),                 // 10: types.OrderPricePair
	(*OperationSpecialData)(nil),           // 11: types.OperationSpecialData
	(*ZkFee)(nil),                          // 12: types.ZkFee
	(*OpBlockInfo)(nil),                    // 13: types.OpBlockInfo
	(*ZkDepositWitnessInfo)(nil),           // 14: types.ZkDepositWitnessInfo
	(*ZkWithdrawWitnessInfo)(nil),          // 15: types.ZkWithdrawWitnessInfo
	(*ZkTransferWitnessInfo)(nil),          // 16: types.ZkTransferWitnessInfo
	(*ZkTransferToNewWitnessInfo)(nil),     // 17: types.ZkTransferToNewWitnessInfo
	(*ZkProxyExitWitnessInfo)(nil),         // 18: types.ZkProxyExitWitnessInfo
	(*ZkSetPubKeyWitnessInfo)(nil),         // 19: types.ZkSetPubKeyWitnessInfo
	(*ZkFullExitWitnessInfo)(nil),          // 20: types.ZkFullExitWitnessInfo
	(*ZkContractToTreeWitnessInfo)(nil),    // 21: types.ZkContractToTreeWitnessInfo
	(*ZkContractToTreeNewWitnessInfo)(nil), // 22: types.ZkContractToTreeNewWitnessInfo
	(*ZkTreeToContractWitnessInfo)(nil),    // 23: types.ZkTreeToContractWitnessInfo
	(*ZkFeeWitnessInfo)(nil),               // 24: types.ZkFeeWitnessInfo
	(*ZkMintNFTWitnessInfo)(nil),           // 25: types.ZkMintNFTWitnessInfo
	(*ZkWithdrawNFTWitnessInfo)(nil),       // 26: types.ZkWithdrawNFTWitnessInfo
	(*ZkTransferNFTWitnessInfo)(nil),       // 27: types.ZkTransferNFTWitnessInfo
	(*ZkSwapOrderInfo)(nil),                // 28: types.ZkSwapOrderInfo
	(*ZkSwapWitnessInfo)(nil),              // 29: types.ZkSwapWitnessInfo
	(*OperationSpecialInfo)(nil),           // 30: types.OperationSpecialInfo
	(*ZkOperation)(nil),                    // 31: types.ZkOperation
	(*ZkBatchOperation)(nil),               // 32: types.ZkBatchOperation
	(*ZkProofWitness)(nil),                 // 33: types.ZkProofWitness
}
var file_witness_proto_depIdxs = []int32{
	2,  // 0: types.ZkSignature.pubKey:type_name -> types.ZkPubKey
	1,  // 1: types.ZkSignature.msg:type_name -> types.ZkMsg
	2,  // 2: types.AccountProxyPubKeys.normal:type_name -> types.ZkPubKey
	2,  // 3: types.AccountProxyPubKeys.system:type_name -> types.ZkPubKey
	2,  // 4: types.AccountProxyPubKeys.super:type_name -> types.ZkPubKey
	2,  // 5: types.AccountWitness.pubKey:type_name -> types.ZkPubKey
	3,  // 6: types.AccountWitness.sibling:type_name -> types.SiblingPath
	4,  // 7: types.AccountWitness.proxyPubKeys:type_name -> types.AccountProxyPubKeys
	3,  // 8: types.TokenWitness.sibling:type_name -> types.SiblingPath
	5,  // 9: types.OperationMetaBranch.accountWitness:type_name -> types.AccountWitness
	6,  // 10: types.OperationMetaBranch.tokenWitness:type_name -> types.TokenWitness
	7,  // 11: types.OperationPairBranch.before:type_name -> types.OperationMetaBranch
	7,  // 12: types.OperationPairBranch.after:type_name -> types.OperationMetaBranch
	8,  // 13: types.OperationInfo.operationBranches:type_name -> types.OperationPairBranch
	30, // 14: types.OperationInfo.specialInfo:type_name -> types.OperationSpecialInfo
	10, // 15: types.OperationSpecialData.pricePair:type_name -> types.OrderPricePair
	0,  // 16: types.OperationSpecialData.sigData:type_name -> types.ZkSignature
	2,  // 17: types.OperationSpecialData.pubKey:type_name -> types.ZkPubKey
	0,  // 18: types.ZkDepositWitnessInfo.signature:type_name -> types.ZkSignature
	13, // 19: types.ZkDepositWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 20: types.ZkWithdrawWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 21: types.ZkWithdrawWitnessInfo.fee:type_name -> types.ZkFee
	13, // 22: types.ZkWithdrawWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 23: types.ZkTransferWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 24: types.ZkTransferWitnessInfo.fee:type_name -> types.ZkFee
	13, // 25: types.ZkTransferWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 26: types.ZkTransferToNewWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 27: types.ZkTransferToNewWitnessInfo.fee:type_name -> types.ZkFee
	13, // 28: types.ZkTransferToNewWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 29: types.ZkProxyExitWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 30: types.ZkProxyExitWitnessInfo.fee:type_name -> types.ZkFee
	13, // 31: types.ZkProxyExitWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	2,  // 32: types.ZkSetPubKeyWitnessInfo.pubKey:type_name -> types.ZkPubKey
	0,  // 33: types.ZkSetPubKeyWitnessInfo.signature:type_name -> types.ZkSignature
	13, // 34: types.ZkSetPubKeyWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 35: types.ZkFullExitWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 36: types.ZkFullExitWitnessInfo.fee:type_name -> types.ZkFee
	13, // 37: types.ZkFullExitWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 38: types.ZkContractToTreeWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 39: types.ZkContractToTreeWitnessInfo.fee:type_name -> types.ZkFee
	13, // 40: types.ZkContractToTreeWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 41: types.ZkContractToTreeNewWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 42: types.ZkContractToTreeNewWitnessInfo.fee:type_name -> types.ZkFee
	13, // 43: types.ZkContractToTreeNewWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 44: types.ZkTreeToContractWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 45: types.ZkTreeToContractWitnessInfo.fee:type_name -> types.ZkFee
	13, // 46: types.ZkTreeToContractWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 47: types.ZkFeeWitnessInfo.signature:type_name -> types.ZkSignature
	0,  // 48: types.ZkMintNFTWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 49: types.ZkMintNFTWitnessInfo.fee:type_name -> types.ZkFee
	13, // 50: types.ZkMintNFTWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 51: types.ZkWithdrawNFTWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 52: types.ZkWithdrawNFTWitnessInfo.fee:type_name -> types.ZkFee
	13, // 53: types.ZkWithdrawNFTWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 54: types.ZkTransferNFTWitnessInfo.signature:type_name -> types.ZkSignature
	12, // 55: types.ZkTransferNFTWitnessInfo.fee:type_name -> types.ZkFee
	13, // 56: types.ZkTransferNFTWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	0,  // 57: types.ZkSwapOrderInfo.signature:type_name -> types.ZkSignature
	28, // 58: types.ZkSwapWitnessInfo.left:type_name -> types.ZkSwapOrderInfo
	28, // 59: types.ZkSwapWitnessInfo.right:type_name -> types.ZkSwapOrderInfo
	12, // 60: types.ZkSwapWitnessInfo.fee:type_name -> types.ZkFee
	13, // 61: types.ZkSwapWitnessInfo.blockInfo:type_name -> types.OpBlockInfo
	14, // 62: types.OperationSpecialInfo.deposit:type_name -> types.ZkDepositWitnessInfo
	15, // 63: types.OperationSpecialInfo.withdraw:type_name -> types.ZkWithdrawWitnessInfo
	16, // 64: types.OperationSpecialInfo.transfer:type_name -> types.ZkTransferWitnessInfo
	17, // 65: types.OperationSpecialInfo.transferToNew:type_name -> types.ZkTransferToNewWitnessInfo
	18, // 66: types.OperationSpecialInfo.proxyExit:type_name -> types.ZkProxyExitWitnessInfo
	19, // 67: types.OperationSpecialInfo.setPubKey:type_name -> types.ZkSetPubKeyWitnessInfo
	20, // 68: types.OperationSpecialInfo.fullExit:type_name -> types.ZkFullExitWitnessInfo
	29, // 69: types.OperationSpecialInfo.swap:type_name -> types.ZkSwapWitnessInfo
	21, // 70: types.OperationSpecialInfo.contractToTree:type_name -> types.ZkContractToTreeWitnessInfo
	22, // 71: types.OperationSpecialInfo.contract2TreeNew:type_name -> types.ZkContractToTreeNewWitnessInfo
	23, // 72: types.OperationSpecialInfo.treeToContract:type_name -> types.ZkTreeToContractWitnessInfo
	24, // 73: types.OperationSpecialInfo.fee:type_name -> types.ZkFeeWitnessInfo
	25, // 74: types.OperationSpecialInfo.mintNFT:type_name -> types.ZkMintNFTWitnessInfo
	26, // 75: types.OperationSpecialInfo.withdrawNFT:type_name -> types.ZkWithdrawNFTWitnessInfo
	27, // 76: types.OperationSpecialInfo.transferNFT:type_name -> types.ZkTransferNFTWitnessInfo
	30, // 77: types.ZkOperation.op:type_name -> types.OperationSpecialInfo
	31, // 78: types.ZkBatchOperation.ops:type_name -> types.ZkOperation
	5,  // 79: types.ZkProofWitness.accountWitness:type_name -> types.AccountWitness
	6,  // 80: types.ZkProofWitness.tokenWitness:type_name -> types.TokenWitness
	81, // [81:81] is the sub-list for method output_type
	81, // [81:81] is the sub-list for method input_type
	81, // [81:81] is the sub-list for extension type_name
	81, // [81:81] is the sub-list for extension extendee
	0,  // [0:81] is the sub-list for field type_name
}

func init() { file_witness_proto_init() }
func file_witness_proto_init() {
	if File_witness_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_witness_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkSignature); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkMsg); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkPubKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SiblingPath); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccountProxyPubKeys); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccountWitness); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenWitness); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OperationMetaBranch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OperationPairBranch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OperationInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OrderPricePair); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OperationSpecialData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkFee); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OpBlockInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkDepositWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkWithdrawWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkTransferWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkTransferToNewWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkProxyExitWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkSetPubKeyWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkFullExitWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkContractToTreeWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkContractToTreeNewWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkTreeToContractWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkFeeWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkMintNFTWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkWithdrawNFTWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkTransferNFTWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkSwapOrderInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkSwapWitnessInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OperationSpecialInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkOperation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkBatchOperation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_witness_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkProofWitness); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_witness_proto_msgTypes[30].OneofWrappers = []interface{}{
		(*OperationSpecialInfo_Deposit)(nil),
		(*OperationSpecialInfo_Withdraw)(nil),
		(*OperationSpecialInfo_Transfer)(nil),
		(*OperationSpecialInfo_TransferToNew)(nil),
		(*OperationSpecialInfo_ProxyExit)(nil),
		(*OperationSpecialInfo_SetPubKey)(nil),
		(*OperationSpecialInfo_FullExit)(nil),
		(*OperationSpecialInfo_Swap)(nil),
		(*OperationSpecialInfo_ContractToTree)(nil),
		(*OperationSpecialInfo_Contract2TreeNew)(nil),
		(*OperationSpecialInfo_TreeToContract)(nil),
		(*OperationSpecialInfo_Fee)(nil),
		(*OperationSpecialInfo_MintNFT)(nil),
		(*OperationSpecialInfo_WithdrawNFT)(nil),
		(*OperationSpecialInfo_TransferNFT)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_witness_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   34,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_witness_proto_goTypes,
		DependencyIndexes: file_witness_proto_depIdxs,
		MessageInfos:      file_witness_proto_msgTypes,
	}.Build()
	File_witness_proto = out.File
	file_witness_proto_rawDesc = nil
	file_witness_proto_goTypes = nil
	file_witness_proto_depIdxs = nil
}
