// Code generated by protoc-gen-go. DO NOT EDIT.
// source: evmcontract.proto

package types

import (
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package

//合约对象信息
type EVMContractObject struct {
	Addr                 string            `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Data                 *EVMContractData  `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	State                *EVMContractState `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *EVMContractObject) Reset()         { *m = EVMContractObject{} }
func (m *EVMContractObject) String() string { return proto.CompactTextString(m) }
func (*EVMContractObject) ProtoMessage()    {}
func (*EVMContractObject) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{0}
}

func (m *EVMContractObject) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EVMContractObject.Unmarshal(m, b)
}
func (m *EVMContractObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EVMContractObject.Marshal(b, m, deterministic)
}
func (m *EVMContractObject) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EVMContractObject.Merge(m, src)
}
func (m *EVMContractObject) XXX_Size() int {
	return xxx_messageInfo_EVMContractObject.Size(m)
}
func (m *EVMContractObject) XXX_DiscardUnknown() {
	xxx_messageInfo_EVMContractObject.DiscardUnknown(m)
}

var xxx_messageInfo_EVMContractObject proto.InternalMessageInfo

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

func (m *EVMContractObject) GetData() *EVMContractData {
	if m != nil {
		return m.Data
	}
	return nil
}

func (m *EVMContractObject) GetState() *EVMContractState {
	if m != nil {
		return m.State
	}
	return nil
}

// 存放合约固定数据
type EVMContractData struct {
	Creator  string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"`
	Name     string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Alias    string `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
	Addr     string `protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,omitempty"`
	Code     []byte `protobuf:"bytes,5,opt,name=code,proto3" json:"code,omitempty"`
	CodeHash []byte `protobuf:"bytes,6,opt,name=codeHash,proto3" json:"codeHash,omitempty"`
	// 绑定ABI数据 ForkEVMABI
	Abi                  string   `protobuf:"bytes,7,opt,name=abi,proto3" json:"abi,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EVMContractData) Reset()         { *m = EVMContractData{} }
func (m *EVMContractData) String() string { return proto.CompactTextString(m) }
func (*EVMContractData) ProtoMessage()    {}
func (*EVMContractData) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{1}
}

func (m *EVMContractData) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EVMContractData.Unmarshal(m, b)
}
func (m *EVMContractData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EVMContractData.Marshal(b, m, deterministic)
}
func (m *EVMContractData) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EVMContractData.Merge(m, src)
}
func (m *EVMContractData) XXX_Size() int {
	return xxx_messageInfo_EVMContractData.Size(m)
}
func (m *EVMContractData) XXX_DiscardUnknown() {
	xxx_messageInfo_EVMContractData.DiscardUnknown(m)
}

var xxx_messageInfo_EVMContractData proto.InternalMessageInfo

func (m *EVMContractData) GetCreator() string {
	if m != nil {
		return m.Creator
	}
	return ""
}

func (m *EVMContractData) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *EVMContractData) GetAlias() string {
	if m != nil {
		return m.Alias
	}
	return ""
}

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

func (m *EVMContractData) GetCode() []byte {
	if m != nil {
		return m.Code
	}
	return nil
}

func (m *EVMContractData) GetCodeHash() []byte {
	if m != nil {
		return m.CodeHash
	}
	return nil
}

func (m *EVMContractData) GetAbi() string {
	if m != nil {
		return m.Abi
	}
	return ""
}

// 存放合约变化数据
type EVMContractState struct {
	Nonce                uint64            `protobuf:"varint,1,opt,name=nonce,proto3" json:"nonce,omitempty"`
	Suicided             bool              `protobuf:"varint,2,opt,name=suicided,proto3" json:"suicided,omitempty"`
	StorageHash          []byte            `protobuf:"bytes,3,opt,name=storageHash,proto3" json:"storageHash,omitempty"`
	Storage              map[string][]byte `protobuf:"bytes,4,rep,name=storage,proto3" json:"storage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *EVMContractState) Reset()         { *m = EVMContractState{} }
func (m *EVMContractState) String() string { return proto.CompactTextString(m) }
func (*EVMContractState) ProtoMessage()    {}
func (*EVMContractState) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{2}
}

func (m *EVMContractState) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EVMContractState.Unmarshal(m, b)
}
func (m *EVMContractState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EVMContractState.Marshal(b, m, deterministic)
}
func (m *EVMContractState) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EVMContractState.Merge(m, src)
}
func (m *EVMContractState) XXX_Size() int {
	return xxx_messageInfo_EVMContractState.Size(m)
}
func (m *EVMContractState) XXX_DiscardUnknown() {
	xxx_messageInfo_EVMContractState.DiscardUnknown(m)
}

var xxx_messageInfo_EVMContractState proto.InternalMessageInfo

func (m *EVMContractState) GetNonce() uint64 {
	if m != nil {
		return m.Nonce
	}
	return 0
}

func (m *EVMContractState) GetSuicided() bool {
	if m != nil {
		return m.Suicided
	}
	return false
}

func (m *EVMContractState) GetStorageHash() []byte {
	if m != nil {
		return m.StorageHash
	}
	return nil
}

func (m *EVMContractState) GetStorage() map[string][]byte {
	if m != nil {
		return m.Storage
	}
	return nil
}

// 创建/调用合约的请求结构
type EVMContractAction struct {
	// 转账金额
	Amount uint64 `protobuf:"varint,1,opt,name=amount,proto3" json:"amount,omitempty"`
	// 消耗限制，默认为Transaction.Fee
	GasLimit uint64 `protobuf:"varint,2,opt,name=gasLimit,proto3" json:"gasLimit,omitempty"`
	// gas价格，默认为1
	GasPrice uint32 `protobuf:"varint,3,opt,name=gasPrice,proto3" json:"gasPrice,omitempty"`
	// 合约数据
	Code []byte `protobuf:"bytes,4,opt,name=code,proto3" json:"code,omitempty"`
	// 合约别名，方便识别
	Alias string `protobuf:"bytes,5,opt,name=alias,proto3" json:"alias,omitempty"`
	// 交易备注
	Note string `protobuf:"bytes,6,opt,name=note,proto3" json:"note,omitempty"`
	// 创建或调用合约时携带的ABI数据 ForkEVMABI
	Abi                  string   `protobuf:"bytes,7,opt,name=abi,proto3" json:"abi,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EVMContractAction) Reset()         { *m = EVMContractAction{} }
func (m *EVMContractAction) String() string { return proto.CompactTextString(m) }
func (*EVMContractAction) ProtoMessage()    {}
func (*EVMContractAction) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{3}
}

func (m *EVMContractAction) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EVMContractAction.Unmarshal(m, b)
}
func (m *EVMContractAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EVMContractAction.Marshal(b, m, deterministic)
}
func (m *EVMContractAction) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EVMContractAction.Merge(m, src)
}
func (m *EVMContractAction) XXX_Size() int {
	return xxx_messageInfo_EVMContractAction.Size(m)
}
func (m *EVMContractAction) XXX_DiscardUnknown() {
	xxx_messageInfo_EVMContractAction.DiscardUnknown(m)
}

var xxx_messageInfo_EVMContractAction proto.InternalMessageInfo

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

func (m *EVMContractAction) GetGasLimit() uint64 {
	if m != nil {
		return m.GasLimit
	}
	return 0
}

func (m *EVMContractAction) GetGasPrice() uint32 {
	if m != nil {
		return m.GasPrice
	}
	return 0
}

func (m *EVMContractAction) GetCode() []byte {
	if m != nil {
		return m.Code
	}
	return nil
}

func (m *EVMContractAction) GetAlias() string {
	if m != nil {
		return m.Alias
	}
	return ""
}

func (m *EVMContractAction) GetNote() string {
	if m != nil {
		return m.Note
	}
	return ""
}

func (m *EVMContractAction) GetAbi() string {
	if m != nil {
		return m.Abi
	}
	return ""
}

// 合约创建/调用日志
type ReceiptEVMContract struct {
	Caller       string `protobuf:"bytes,1,opt,name=caller,proto3" json:"caller,omitempty"`
	ContractName string `protobuf:"bytes,2,opt,name=contractName,proto3" json:"contractName,omitempty"`
	ContractAddr string `protobuf:"bytes,3,opt,name=contractAddr,proto3" json:"contractAddr,omitempty"`
	UsedGas      uint64 `protobuf:"varint,4,opt,name=usedGas,proto3" json:"usedGas,omitempty"`
	// 创建合约返回的代码
	Ret []byte `protobuf:"bytes,5,opt,name=ret,proto3" json:"ret,omitempty"`
	// json格式化后的返回值
	JsonRet              string   `protobuf:"bytes,6,opt,name=jsonRet,proto3" json:"jsonRet,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReceiptEVMContract) Reset()         { *m = ReceiptEVMContract{} }
func (m *ReceiptEVMContract) String() string { return proto.CompactTextString(m) }
func (*ReceiptEVMContract) ProtoMessage()    {}
func (*ReceiptEVMContract) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{4}
}

func (m *ReceiptEVMContract) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReceiptEVMContract.Unmarshal(m, b)
}
func (m *ReceiptEVMContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReceiptEVMContract.Marshal(b, m, deterministic)
}
func (m *ReceiptEVMContract) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReceiptEVMContract.Merge(m, src)
}
func (m *ReceiptEVMContract) XXX_Size() int {
	return xxx_messageInfo_ReceiptEVMContract.Size(m)
}
func (m *ReceiptEVMContract) XXX_DiscardUnknown() {
	xxx_messageInfo_ReceiptEVMContract.DiscardUnknown(m)
}

var xxx_messageInfo_ReceiptEVMContract proto.InternalMessageInfo

func (m *ReceiptEVMContract) GetCaller() string {
	if m != nil {
		return m.Caller
	}
	return ""
}

func (m *ReceiptEVMContract) GetContractName() string {
	if m != nil {
		return m.ContractName
	}
	return ""
}

func (m *ReceiptEVMContract) GetContractAddr() string {
	if m != nil {
		return m.ContractAddr
	}
	return ""
}

func (m *ReceiptEVMContract) GetUsedGas() uint64 {
	if m != nil {
		return m.UsedGas
	}
	return 0
}

func (m *ReceiptEVMContract) GetRet() []byte {
	if m != nil {
		return m.Ret
	}
	return nil
}

func (m *ReceiptEVMContract) GetJsonRet() string {
	if m != nil {
		return m.JsonRet
	}
	return ""
}

// 用于保存EVM只能合约中的状态数据变更
type EVMStateChangeItem struct {
	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	PreValue             []byte   `protobuf:"bytes,2,opt,name=preValue,proto3" json:"preValue,omitempty"`
	CurrentValue         []byte   `protobuf:"bytes,3,opt,name=currentValue,proto3" json:"currentValue,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EVMStateChangeItem) Reset()         { *m = EVMStateChangeItem{} }
func (m *EVMStateChangeItem) String() string { return proto.CompactTextString(m) }
func (*EVMStateChangeItem) ProtoMessage()    {}
func (*EVMStateChangeItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{5}
}

func (m *EVMStateChangeItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EVMStateChangeItem.Unmarshal(m, b)
}
func (m *EVMStateChangeItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EVMStateChangeItem.Marshal(b, m, deterministic)
}
func (m *EVMStateChangeItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EVMStateChangeItem.Merge(m, src)
}
func (m *EVMStateChangeItem) XXX_Size() int {
	return xxx_messageInfo_EVMStateChangeItem.Size(m)
}
func (m *EVMStateChangeItem) XXX_DiscardUnknown() {
	xxx_messageInfo_EVMStateChangeItem.DiscardUnknown(m)
}

var xxx_messageInfo_EVMStateChangeItem proto.InternalMessageInfo

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

func (m *EVMStateChangeItem) GetPreValue() []byte {
	if m != nil {
		return m.PreValue
	}
	return nil
}

func (m *EVMStateChangeItem) GetCurrentValue() []byte {
	if m != nil {
		return m.CurrentValue
	}
	return nil
}

// 存放合约固定数据
type EVMContractDataCmd struct {
	Creator              string   `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"`
	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Alias                string   `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
	Addr                 string   `protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,omitempty"`
	Code                 string   `protobuf:"bytes,5,opt,name=code,proto3" json:"code,omitempty"`
	CodeHash             string   `protobuf:"bytes,6,opt,name=codeHash,proto3" json:"codeHash,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EVMContractDataCmd) Reset()         { *m = EVMContractDataCmd{} }
func (m *EVMContractDataCmd) String() string { return proto.CompactTextString(m) }
func (*EVMContractDataCmd) ProtoMessage()    {}
func (*EVMContractDataCmd) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{6}
}

func (m *EVMContractDataCmd) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EVMContractDataCmd.Unmarshal(m, b)
}
func (m *EVMContractDataCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EVMContractDataCmd.Marshal(b, m, deterministic)
}
func (m *EVMContractDataCmd) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EVMContractDataCmd.Merge(m, src)
}
func (m *EVMContractDataCmd) XXX_Size() int {
	return xxx_messageInfo_EVMContractDataCmd.Size(m)
}
func (m *EVMContractDataCmd) XXX_DiscardUnknown() {
	xxx_messageInfo_EVMContractDataCmd.DiscardUnknown(m)
}

var xxx_messageInfo_EVMContractDataCmd proto.InternalMessageInfo

func (m *EVMContractDataCmd) GetCreator() string {
	if m != nil {
		return m.Creator
	}
	return ""
}

func (m *EVMContractDataCmd) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *EVMContractDataCmd) GetAlias() string {
	if m != nil {
		return m.Alias
	}
	return ""
}

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

func (m *EVMContractDataCmd) GetCode() string {
	if m != nil {
		return m.Code
	}
	return ""
}

func (m *EVMContractDataCmd) GetCodeHash() string {
	if m != nil {
		return m.CodeHash
	}
	return ""
}

// 存放合约变化数据
type EVMContractStateCmd struct {
	Nonce                uint64            `protobuf:"varint,1,opt,name=nonce,proto3" json:"nonce,omitempty"`
	Suicided             bool              `protobuf:"varint,2,opt,name=suicided,proto3" json:"suicided,omitempty"`
	StorageHash          string            `protobuf:"bytes,3,opt,name=storageHash,proto3" json:"storageHash,omitempty"`
	Storage              map[string]string `protobuf:"bytes,4,rep,name=storage,proto3" json:"storage,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *EVMContractStateCmd) Reset()         { *m = EVMContractStateCmd{} }
func (m *EVMContractStateCmd) String() string { return proto.CompactTextString(m) }
func (*EVMContractStateCmd) ProtoMessage()    {}
func (*EVMContractStateCmd) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{7}
}

func (m *EVMContractStateCmd) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EVMContractStateCmd.Unmarshal(m, b)
}
func (m *EVMContractStateCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EVMContractStateCmd.Marshal(b, m, deterministic)
}
func (m *EVMContractStateCmd) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EVMContractStateCmd.Merge(m, src)
}
func (m *EVMContractStateCmd) XXX_Size() int {
	return xxx_messageInfo_EVMContractStateCmd.Size(m)
}
func (m *EVMContractStateCmd) XXX_DiscardUnknown() {
	xxx_messageInfo_EVMContractStateCmd.DiscardUnknown(m)
}

var xxx_messageInfo_EVMContractStateCmd proto.InternalMessageInfo

func (m *EVMContractStateCmd) GetNonce() uint64 {
	if m != nil {
		return m.Nonce
	}
	return 0
}

func (m *EVMContractStateCmd) GetSuicided() bool {
	if m != nil {
		return m.Suicided
	}
	return false
}

func (m *EVMContractStateCmd) GetStorageHash() string {
	if m != nil {
		return m.StorageHash
	}
	return ""
}

func (m *EVMContractStateCmd) GetStorage() map[string]string {
	if m != nil {
		return m.Storage
	}
	return nil
}

// 合约创建/调用日志
type ReceiptEVMContractCmd struct {
	Caller string `protobuf:"bytes,1,opt,name=caller,proto3" json:"caller,omitempty"`
	// 合约创建时才会返回此内容
	ContractName string `protobuf:"bytes,2,opt,name=contractName,proto3" json:"contractName,omitempty"`
	ContractAddr string `protobuf:"bytes,3,opt,name=contractAddr,proto3" json:"contractAddr,omitempty"`
	UsedGas      uint64 `protobuf:"varint,4,opt,name=usedGas,proto3" json:"usedGas,omitempty"`
	// 创建合约返回的代码
	Ret                  string   `protobuf:"bytes,5,opt,name=ret,proto3" json:"ret,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReceiptEVMContractCmd) Reset()         { *m = ReceiptEVMContractCmd{} }
func (m *ReceiptEVMContractCmd) String() string { return proto.CompactTextString(m) }
func (*ReceiptEVMContractCmd) ProtoMessage()    {}
func (*ReceiptEVMContractCmd) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{8}
}

func (m *ReceiptEVMContractCmd) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReceiptEVMContractCmd.Unmarshal(m, b)
}
func (m *ReceiptEVMContractCmd) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReceiptEVMContractCmd.Marshal(b, m, deterministic)
}
func (m *ReceiptEVMContractCmd) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReceiptEVMContractCmd.Merge(m, src)
}
func (m *ReceiptEVMContractCmd) XXX_Size() int {
	return xxx_messageInfo_ReceiptEVMContractCmd.Size(m)
}
func (m *ReceiptEVMContractCmd) XXX_DiscardUnknown() {
	xxx_messageInfo_ReceiptEVMContractCmd.DiscardUnknown(m)
}

var xxx_messageInfo_ReceiptEVMContractCmd proto.InternalMessageInfo

func (m *ReceiptEVMContractCmd) GetCaller() string {
	if m != nil {
		return m.Caller
	}
	return ""
}

func (m *ReceiptEVMContractCmd) GetContractName() string {
	if m != nil {
		return m.ContractName
	}
	return ""
}

func (m *ReceiptEVMContractCmd) GetContractAddr() string {
	if m != nil {
		return m.ContractAddr
	}
	return ""
}

func (m *ReceiptEVMContractCmd) GetUsedGas() uint64 {
	if m != nil {
		return m.UsedGas
	}
	return 0
}

func (m *ReceiptEVMContractCmd) GetRet() string {
	if m != nil {
		return m.Ret
	}
	return ""
}

type CheckEVMAddrReq struct {
	Addr                 string   `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *CheckEVMAddrReq) Reset()         { *m = CheckEVMAddrReq{} }
func (m *CheckEVMAddrReq) String() string { return proto.CompactTextString(m) }
func (*CheckEVMAddrReq) ProtoMessage()    {}
func (*CheckEVMAddrReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{9}
}

func (m *CheckEVMAddrReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CheckEVMAddrReq.Unmarshal(m, b)
}
func (m *CheckEVMAddrReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CheckEVMAddrReq.Marshal(b, m, deterministic)
}
func (m *CheckEVMAddrReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CheckEVMAddrReq.Merge(m, src)
}
func (m *CheckEVMAddrReq) XXX_Size() int {
	return xxx_messageInfo_CheckEVMAddrReq.Size(m)
}
func (m *CheckEVMAddrReq) XXX_DiscardUnknown() {
	xxx_messageInfo_CheckEVMAddrReq.DiscardUnknown(m)
}

var xxx_messageInfo_CheckEVMAddrReq proto.InternalMessageInfo

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

type CheckEVMAddrResp struct {
	Contract             bool     `protobuf:"varint,1,opt,name=contract,proto3" json:"contract,omitempty"`
	ContractAddr         string   `protobuf:"bytes,2,opt,name=contractAddr,proto3" json:"contractAddr,omitempty"`
	ContractName         string   `protobuf:"bytes,3,opt,name=contractName,proto3" json:"contractName,omitempty"`
	AliasName            string   `protobuf:"bytes,4,opt,name=aliasName,proto3" json:"aliasName,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *CheckEVMAddrResp) Reset()         { *m = CheckEVMAddrResp{} }
func (m *CheckEVMAddrResp) String() string { return proto.CompactTextString(m) }
func (*CheckEVMAddrResp) ProtoMessage()    {}
func (*CheckEVMAddrResp) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{10}
}

func (m *CheckEVMAddrResp) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CheckEVMAddrResp.Unmarshal(m, b)
}
func (m *CheckEVMAddrResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CheckEVMAddrResp.Marshal(b, m, deterministic)
}
func (m *CheckEVMAddrResp) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CheckEVMAddrResp.Merge(m, src)
}
func (m *CheckEVMAddrResp) XXX_Size() int {
	return xxx_messageInfo_CheckEVMAddrResp.Size(m)
}
func (m *CheckEVMAddrResp) XXX_DiscardUnknown() {
	xxx_messageInfo_CheckEVMAddrResp.DiscardUnknown(m)
}

var xxx_messageInfo_CheckEVMAddrResp proto.InternalMessageInfo

func (m *CheckEVMAddrResp) GetContract() bool {
	if m != nil {
		return m.Contract
	}
	return false
}

func (m *CheckEVMAddrResp) GetContractAddr() string {
	if m != nil {
		return m.ContractAddr
	}
	return ""
}

func (m *CheckEVMAddrResp) GetContractName() string {
	if m != nil {
		return m.ContractName
	}
	return ""
}

func (m *CheckEVMAddrResp) GetAliasName() string {
	if m != nil {
		return m.AliasName
	}
	return ""
}

type EstimateEVMGasReq struct {
	To                   string   `protobuf:"bytes,1,opt,name=to,proto3" json:"to,omitempty"`
	Code                 []byte   `protobuf:"bytes,2,opt,name=code,proto3" json:"code,omitempty"`
	Caller               string   `protobuf:"bytes,3,opt,name=caller,proto3" json:"caller,omitempty"`
	Amount               uint64   `protobuf:"varint,4,opt,name=amount,proto3" json:"amount,omitempty"`
	Abi                  string   `protobuf:"bytes,5,opt,name=abi,proto3" json:"abi,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EstimateEVMGasReq) Reset()         { *m = EstimateEVMGasReq{} }
func (m *EstimateEVMGasReq) String() string { return proto.CompactTextString(m) }
func (*EstimateEVMGasReq) ProtoMessage()    {}
func (*EstimateEVMGasReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{11}
}

func (m *EstimateEVMGasReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EstimateEVMGasReq.Unmarshal(m, b)
}
func (m *EstimateEVMGasReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EstimateEVMGasReq.Marshal(b, m, deterministic)
}
func (m *EstimateEVMGasReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EstimateEVMGasReq.Merge(m, src)
}
func (m *EstimateEVMGasReq) XXX_Size() int {
	return xxx_messageInfo_EstimateEVMGasReq.Size(m)
}
func (m *EstimateEVMGasReq) XXX_DiscardUnknown() {
	xxx_messageInfo_EstimateEVMGasReq.DiscardUnknown(m)
}

var xxx_messageInfo_EstimateEVMGasReq proto.InternalMessageInfo

func (m *EstimateEVMGasReq) GetTo() string {
	if m != nil {
		return m.To
	}
	return ""
}

func (m *EstimateEVMGasReq) GetCode() []byte {
	if m != nil {
		return m.Code
	}
	return nil
}

func (m *EstimateEVMGasReq) GetCaller() string {
	if m != nil {
		return m.Caller
	}
	return ""
}

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

func (m *EstimateEVMGasReq) GetAbi() string {
	if m != nil {
		return m.Abi
	}
	return ""
}

type EstimateEVMGasResp struct {
	Gas                  uint64   `protobuf:"varint,1,opt,name=gas,proto3" json:"gas,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EstimateEVMGasResp) Reset()         { *m = EstimateEVMGasResp{} }
func (m *EstimateEVMGasResp) String() string { return proto.CompactTextString(m) }
func (*EstimateEVMGasResp) ProtoMessage()    {}
func (*EstimateEVMGasResp) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{12}
}

func (m *EstimateEVMGasResp) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EstimateEVMGasResp.Unmarshal(m, b)
}
func (m *EstimateEVMGasResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EstimateEVMGasResp.Marshal(b, m, deterministic)
}
func (m *EstimateEVMGasResp) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EstimateEVMGasResp.Merge(m, src)
}
func (m *EstimateEVMGasResp) XXX_Size() int {
	return xxx_messageInfo_EstimateEVMGasResp.Size(m)
}
func (m *EstimateEVMGasResp) XXX_DiscardUnknown() {
	xxx_messageInfo_EstimateEVMGasResp.DiscardUnknown(m)
}

var xxx_messageInfo_EstimateEVMGasResp proto.InternalMessageInfo

func (m *EstimateEVMGasResp) GetGas() uint64 {
	if m != nil {
		return m.Gas
	}
	return 0
}

type EvmDebugReq struct {
	// 0 query, 1 set, -1 clear
	Optype               int32    `protobuf:"varint,1,opt,name=optype,proto3" json:"optype,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EvmDebugReq) Reset()         { *m = EvmDebugReq{} }
func (m *EvmDebugReq) String() string { return proto.CompactTextString(m) }
func (*EvmDebugReq) ProtoMessage()    {}
func (*EvmDebugReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{13}
}

func (m *EvmDebugReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvmDebugReq.Unmarshal(m, b)
}
func (m *EvmDebugReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvmDebugReq.Marshal(b, m, deterministic)
}
func (m *EvmDebugReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvmDebugReq.Merge(m, src)
}
func (m *EvmDebugReq) XXX_Size() int {
	return xxx_messageInfo_EvmDebugReq.Size(m)
}
func (m *EvmDebugReq) XXX_DiscardUnknown() {
	xxx_messageInfo_EvmDebugReq.DiscardUnknown(m)
}

var xxx_messageInfo_EvmDebugReq proto.InternalMessageInfo

func (m *EvmDebugReq) GetOptype() int32 {
	if m != nil {
		return m.Optype
	}
	return 0
}

type EvmDebugResp struct {
	DebugStatus          string   `protobuf:"bytes,1,opt,name=debugStatus,proto3" json:"debugStatus,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EvmDebugResp) Reset()         { *m = EvmDebugResp{} }
func (m *EvmDebugResp) String() string { return proto.CompactTextString(m) }
func (*EvmDebugResp) ProtoMessage()    {}
func (*EvmDebugResp) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{14}
}

func (m *EvmDebugResp) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvmDebugResp.Unmarshal(m, b)
}
func (m *EvmDebugResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvmDebugResp.Marshal(b, m, deterministic)
}
func (m *EvmDebugResp) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvmDebugResp.Merge(m, src)
}
func (m *EvmDebugResp) XXX_Size() int {
	return xxx_messageInfo_EvmDebugResp.Size(m)
}
func (m *EvmDebugResp) XXX_DiscardUnknown() {
	xxx_messageInfo_EvmDebugResp.DiscardUnknown(m)
}

var xxx_messageInfo_EvmDebugResp proto.InternalMessageInfo

func (m *EvmDebugResp) GetDebugStatus() string {
	if m != nil {
		return m.DebugStatus
	}
	return ""
}

type EvmQueryAbiReq struct {
	Address              string   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EvmQueryAbiReq) Reset()         { *m = EvmQueryAbiReq{} }
func (m *EvmQueryAbiReq) String() string { return proto.CompactTextString(m) }
func (*EvmQueryAbiReq) ProtoMessage()    {}
func (*EvmQueryAbiReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{15}
}

func (m *EvmQueryAbiReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvmQueryAbiReq.Unmarshal(m, b)
}
func (m *EvmQueryAbiReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvmQueryAbiReq.Marshal(b, m, deterministic)
}
func (m *EvmQueryAbiReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvmQueryAbiReq.Merge(m, src)
}
func (m *EvmQueryAbiReq) XXX_Size() int {
	return xxx_messageInfo_EvmQueryAbiReq.Size(m)
}
func (m *EvmQueryAbiReq) XXX_DiscardUnknown() {
	xxx_messageInfo_EvmQueryAbiReq.DiscardUnknown(m)
}

var xxx_messageInfo_EvmQueryAbiReq proto.InternalMessageInfo

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

type EvmQueryAbiResp struct {
	Address              string   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Abi                  string   `protobuf:"bytes,2,opt,name=abi,proto3" json:"abi,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EvmQueryAbiResp) Reset()         { *m = EvmQueryAbiResp{} }
func (m *EvmQueryAbiResp) String() string { return proto.CompactTextString(m) }
func (*EvmQueryAbiResp) ProtoMessage()    {}
func (*EvmQueryAbiResp) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{16}
}

func (m *EvmQueryAbiResp) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvmQueryAbiResp.Unmarshal(m, b)
}
func (m *EvmQueryAbiResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvmQueryAbiResp.Marshal(b, m, deterministic)
}
func (m *EvmQueryAbiResp) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvmQueryAbiResp.Merge(m, src)
}
func (m *EvmQueryAbiResp) XXX_Size() int {
	return xxx_messageInfo_EvmQueryAbiResp.Size(m)
}
func (m *EvmQueryAbiResp) XXX_DiscardUnknown() {
	xxx_messageInfo_EvmQueryAbiResp.DiscardUnknown(m)
}

var xxx_messageInfo_EvmQueryAbiResp proto.InternalMessageInfo

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

func (m *EvmQueryAbiResp) GetAbi() string {
	if m != nil {
		return m.Abi
	}
	return ""
}

type EvmQueryReq struct {
	Address              string   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Input                string   `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"`
	Caller               string   `protobuf:"bytes,3,opt,name=caller,proto3" json:"caller,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EvmQueryReq) Reset()         { *m = EvmQueryReq{} }
func (m *EvmQueryReq) String() string { return proto.CompactTextString(m) }
func (*EvmQueryReq) ProtoMessage()    {}
func (*EvmQueryReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{17}
}

func (m *EvmQueryReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvmQueryReq.Unmarshal(m, b)
}
func (m *EvmQueryReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvmQueryReq.Marshal(b, m, deterministic)
}
func (m *EvmQueryReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvmQueryReq.Merge(m, src)
}
func (m *EvmQueryReq) XXX_Size() int {
	return xxx_messageInfo_EvmQueryReq.Size(m)
}
func (m *EvmQueryReq) XXX_DiscardUnknown() {
	xxx_messageInfo_EvmQueryReq.DiscardUnknown(m)
}

var xxx_messageInfo_EvmQueryReq proto.InternalMessageInfo

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

func (m *EvmQueryReq) GetInput() string {
	if m != nil {
		return m.Input
	}
	return ""
}

func (m *EvmQueryReq) GetCaller() string {
	if m != nil {
		return m.Caller
	}
	return ""
}

type EvmQueryResp struct {
	Address              string   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Input                string   `protobuf:"bytes,2,opt,name=input,proto3" json:"input,omitempty"`
	Caller               string   `protobuf:"bytes,3,opt,name=caller,proto3" json:"caller,omitempty"`
	RawData              string   `protobuf:"bytes,4,opt,name=rawData,proto3" json:"rawData,omitempty"`
	JsonData             string   `protobuf:"bytes,5,opt,name=jsonData,proto3" json:"jsonData,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *EvmQueryResp) Reset()         { *m = EvmQueryResp{} }
func (m *EvmQueryResp) String() string { return proto.CompactTextString(m) }
func (*EvmQueryResp) ProtoMessage()    {}
func (*EvmQueryResp) Descriptor() ([]byte, []int) {
	return fileDescriptor_74353de561acd7c6, []int{18}
}

func (m *EvmQueryResp) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_EvmQueryResp.Unmarshal(m, b)
}
func (m *EvmQueryResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_EvmQueryResp.Marshal(b, m, deterministic)
}
func (m *EvmQueryResp) XXX_Merge(src proto.Message) {
	xxx_messageInfo_EvmQueryResp.Merge(m, src)
}
func (m *EvmQueryResp) XXX_Size() int {
	return xxx_messageInfo_EvmQueryResp.Size(m)
}
func (m *EvmQueryResp) XXX_DiscardUnknown() {
	xxx_messageInfo_EvmQueryResp.DiscardUnknown(m)
}

var xxx_messageInfo_EvmQueryResp proto.InternalMessageInfo

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

func (m *EvmQueryResp) GetInput() string {
	if m != nil {
		return m.Input
	}
	return ""
}

func (m *EvmQueryResp) GetCaller() string {
	if m != nil {
		return m.Caller
	}
	return ""
}

func (m *EvmQueryResp) GetRawData() string {
	if m != nil {
		return m.RawData
	}
	return ""
}

func (m *EvmQueryResp) GetJsonData() string {
	if m != nil {
		return m.JsonData
	}
	return ""
}

func init() {
	proto.RegisterType((*EVMContractObject)(nil), "types.EVMContractObject")
	proto.RegisterType((*EVMContractData)(nil), "types.EVMContractData")
	proto.RegisterType((*EVMContractState)(nil), "types.EVMContractState")
	proto.RegisterMapType((map[string][]byte)(nil), "types.EVMContractState.StorageEntry")
	proto.RegisterType((*EVMContractAction)(nil), "types.EVMContractAction")
	proto.RegisterType((*ReceiptEVMContract)(nil), "types.ReceiptEVMContract")
	proto.RegisterType((*EVMStateChangeItem)(nil), "types.EVMStateChangeItem")
	proto.RegisterType((*EVMContractDataCmd)(nil), "types.EVMContractDataCmd")
	proto.RegisterType((*EVMContractStateCmd)(nil), "types.EVMContractStateCmd")
	proto.RegisterMapType((map[string]string)(nil), "types.EVMContractStateCmd.StorageEntry")
	proto.RegisterType((*ReceiptEVMContractCmd)(nil), "types.ReceiptEVMContractCmd")
	proto.RegisterType((*CheckEVMAddrReq)(nil), "types.CheckEVMAddrReq")
	proto.RegisterType((*CheckEVMAddrResp)(nil), "types.CheckEVMAddrResp")
	proto.RegisterType((*EstimateEVMGasReq)(nil), "types.EstimateEVMGasReq")
	proto.RegisterType((*EstimateEVMGasResp)(nil), "types.EstimateEVMGasResp")
	proto.RegisterType((*EvmDebugReq)(nil), "types.EvmDebugReq")
	proto.RegisterType((*EvmDebugResp)(nil), "types.EvmDebugResp")
	proto.RegisterType((*EvmQueryAbiReq)(nil), "types.EvmQueryAbiReq")
	proto.RegisterType((*EvmQueryAbiResp)(nil), "types.EvmQueryAbiResp")
	proto.RegisterType((*EvmQueryReq)(nil), "types.EvmQueryReq")
	proto.RegisterType((*EvmQueryResp)(nil), "types.EvmQueryResp")
}

func init() { proto.RegisterFile("evmcontract.proto", fileDescriptor_74353de561acd7c6) }

var fileDescriptor_74353de561acd7c6 = []byte{
	// 833 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0x4b, 0x6f, 0x2b, 0x35,
	0x18, 0xd5, 0x24, 0x93, 0xc7, 0x7c, 0x09, 0xb7, 0xad, 0x81, 0x32, 0xaa, 0x58, 0x44, 0x16, 0x17,
	0xa2, 0x2b, 0x11, 0xa1, 0xcb, 0x06, 0x5d, 0x09, 0xa4, 0x28, 0x77, 0x54, 0x90, 0x08, 0x0f, 0x57,
	0x64, 0xef, 0xcc, 0x98, 0x74, 0xda, 0xcc, 0x83, 0xb1, 0x27, 0x28, 0x5b, 0xd6, 0x2c, 0x59, 0xb2,
	0x63, 0xc9, 0x92, 0x1d, 0x3f, 0x87, 0x15, 0x3f, 0x03, 0x7d, 0x1e, 0xcf, 0x2b, 0x4d, 0x2a, 0x21,
	0x55, 0x88, 0x55, 0x7d, 0xec, 0x63, 0xfb, 0x9c, 0xf9, 0xce, 0xe7, 0x06, 0x2e, 0xc4, 0x2e, 0xf2,
	0x93, 0x58, 0x65, 0xdc, 0x57, 0xb3, 0x34, 0x4b, 0x54, 0x42, 0x7a, 0x6a, 0x9f, 0x0a, 0x49, 0x7f,
	0xb2, 0xe0, 0xc2, 0x5b, 0x2d, 0x17, 0x66, 0xf1, 0xeb, 0xf5, 0x9d, 0xf0, 0x15, 0x21, 0x60, 0xf3,
	0x20, 0xc8, 0x5c, 0x6b, 0x62, 0x4d, 0x1d, 0xa6, 0xc7, 0xe4, 0x05, 0xd8, 0x01, 0x57, 0xdc, 0xed,
	0x4c, 0xac, 0xe9, 0xe8, 0xe5, 0xe5, 0x4c, 0xef, 0x9f, 0x35, 0xf6, 0xbe, 0xe6, 0x8a, 0x33, 0xcd,
	0x21, 0x1f, 0x42, 0x4f, 0x2a, 0xae, 0x84, 0xdb, 0xd5, 0xe4, 0x77, 0x1e, 0x92, 0x6f, 0x70, 0x99,
	0x15, 0x2c, 0xfa, 0xbb, 0x05, 0x67, 0x07, 0x07, 0x11, 0x17, 0x06, 0x7e, 0x26, 0xb8, 0x4a, 0x4a,
	0x15, 0x25, 0x44, 0x71, 0x31, 0x8f, 0x84, 0x16, 0xe2, 0x30, 0x3d, 0x26, 0x6f, 0x41, 0x8f, 0x6f,
	0x43, 0x2e, 0xf5, 0x85, 0x0e, 0x2b, 0x40, 0x65, 0xc3, 0x6e, 0xd8, 0x20, 0x60, 0xfb, 0x49, 0x20,
	0xdc, 0xde, 0xc4, 0x9a, 0x8e, 0x99, 0x1e, 0x93, 0x2b, 0x18, 0xe2, 0xdf, 0xcf, 0xb9, 0xbc, 0x75,
	0xfb, 0x7a, 0xbe, 0xc2, 0xe4, 0x1c, 0xba, 0x7c, 0x1d, 0xba, 0x03, 0x7d, 0x04, 0x0e, 0xe9, 0x5f,
	0x16, 0x9c, 0x1f, 0x3a, 0x41, 0x01, 0x71, 0x12, 0xfb, 0x42, 0x8b, 0xb5, 0x59, 0x01, 0xf0, 0x60,
	0x99, 0x87, 0x7e, 0x18, 0x88, 0x40, 0xcb, 0x1d, 0xb2, 0x0a, 0x93, 0x09, 0x8c, 0xa4, 0x4a, 0x32,
	0xbe, 0x29, 0xee, 0xed, 0xea, 0x7b, 0x9b, 0x53, 0xe4, 0x33, 0x18, 0x18, 0xe8, 0xda, 0x93, 0xee,
	0x74, 0xf4, 0xf2, 0xbd, 0x13, 0xdf, 0x71, 0x76, 0x53, 0xd0, 0xbc, 0x58, 0x65, 0x7b, 0x56, 0x6e,
	0xba, 0x7a, 0x05, 0xe3, 0xe6, 0x02, 0x5a, 0xb9, 0x17, 0x7b, 0xf3, 0x39, 0x71, 0x88, 0xaa, 0x77,
	0x7c, 0x9b, 0x17, 0xdf, 0x72, 0xcc, 0x0a, 0xf0, 0xaa, 0xf3, 0x89, 0x45, 0xff, 0x68, 0xe7, 0x62,
	0xee, 0xab, 0x30, 0x89, 0xc9, 0x25, 0xf4, 0x79, 0x94, 0xe4, 0xb1, 0x32, 0x36, 0x0d, 0x42, 0x9f,
	0x1b, 0x2e, 0xbf, 0x0c, 0xa3, 0x50, 0xe9, 0xa3, 0x6c, 0x56, 0x61, 0xb3, 0xf6, 0x4d, 0x16, 0xfa,
	0x45, 0x1c, 0xde, 0x60, 0x15, 0xae, 0x8a, 0x61, 0x37, 0x8a, 0x51, 0x95, 0xb2, 0x77, 0x50, 0xca,
	0x38, 0x51, 0x42, 0x97, 0x07, 0x8b, 0x9e, 0x28, 0x71, 0xa4, 0x34, 0x7f, 0x5a, 0x40, 0x98, 0xf0,
	0x45, 0x98, 0xaa, 0x86, 0x78, 0x94, 0xed, 0xf3, 0xed, 0x56, 0x94, 0x51, 0x32, 0x88, 0x50, 0x18,
	0x97, 0x5d, 0xf1, 0x55, 0x9d, 0xa8, 0xd6, 0x5c, 0x93, 0x33, 0xc7, 0x2c, 0x75, 0xdb, 0x1c, 0x9c,
	0xc3, 0xac, 0xe6, 0x52, 0x04, 0xd7, 0x5c, 0x6a, 0x27, 0x36, 0x2b, 0x21, 0x4a, 0xcc, 0x84, 0x32,
	0x61, 0xc3, 0x21, 0x72, 0xef, 0x64, 0x12, 0x33, 0xa1, 0x8c, 0x97, 0x12, 0xd2, 0xef, 0x81, 0x78,
	0xab, 0xa5, 0x2e, 0xe8, 0xe2, 0x96, 0xc7, 0x1b, 0xf1, 0x85, 0x12, 0xd1, 0x91, 0xa2, 0x5d, 0xc1,
	0x30, 0xcd, 0xc4, 0xaa, 0x51, 0xb7, 0x0a, 0x6b, 0xb5, 0x79, 0x96, 0x89, 0x58, 0x15, 0xeb, 0x45,
	0xaa, 0x5a, 0x73, 0xf4, 0x57, 0x4b, 0x5f, 0xd4, 0xec, 0xb6, 0x45, 0x14, 0xfc, 0x27, 0x0d, 0xe7,
	0x9c, 0x68, 0x38, 0xa7, 0x6e, 0x38, 0xfa, 0xb7, 0x05, 0x6f, 0x1e, 0x06, 0x1c, 0xf5, 0x3d, 0x49,
	0x87, 0x39, 0xed, 0x0e, 0x9b, 0x1f, 0x76, 0xd8, 0x07, 0x27, 0x3a, 0x6c, 0x11, 0x05, 0x4f, 0xd3,
	0x64, 0x4e, 0xb3, 0xc9, 0x7e, 0xb3, 0xe0, 0xed, 0x87, 0x71, 0x45, 0xb3, 0xff, 0x8b, 0xc4, 0x3a,
	0x3a, 0xb1, 0xf4, 0x39, 0x9c, 0x2d, 0x6e, 0x85, 0x7f, 0xef, 0xad, 0x96, 0xb8, 0x97, 0x89, 0x1f,
	0x8e, 0xfd, 0x7f, 0xa0, 0xbf, 0x58, 0x70, 0xde, 0xe6, 0xc9, 0xb4, 0x28, 0x74, 0x71, 0xaf, 0x26,
	0x0f, 0x59, 0x85, 0x1f, 0xe8, 0xec, 0x1c, 0xd1, 0x79, 0xe8, 0xb7, 0x7b, 0xc4, 0xef, 0xbb, 0xe0,
	0xe8, 0xf4, 0x69, 0x42, 0x91, 0xbc, 0x7a, 0x82, 0xee, 0xe1, 0xc2, 0x93, 0x2a, 0x8c, 0xb8, 0x12,
	0xde, 0x6a, 0x79, 0xcd, 0x25, 0xea, 0x7f, 0x06, 0x1d, 0x95, 0x18, 0xf5, 0x1d, 0x95, 0x54, 0x19,
	0xed, 0x34, 0xde, 0xa1, 0xba, 0x04, 0xdd, 0x56, 0x09, 0xea, 0x37, 0xd0, 0x6e, 0xbd, 0x81, 0xe6,
	0x35, 0xea, 0xd5, 0xaf, 0xd1, 0xfb, 0x40, 0x0e, 0xaf, 0x96, 0x29, 0xf2, 0x36, 0x5c, 0x9a, 0x14,
	0xe3, 0x90, 0x3e, 0x87, 0x91, 0xb7, 0x8b, 0x5e, 0x8b, 0x75, 0xbe, 0x41, 0x71, 0x97, 0xd0, 0x4f,
	0x52, 0x8c, 0xa1, 0xe6, 0xf4, 0x98, 0x41, 0xf4, 0x23, 0x18, 0xd7, 0x34, 0x99, 0x62, 0xbc, 0x03,
	0x04, 0x18, 0xd0, 0x5c, 0x1a, 0x37, 0xcd, 0x29, 0xfa, 0x02, 0x9e, 0x79, 0xbb, 0xe8, 0xdb, 0x5c,
	0x64, 0xfb, 0xf9, 0x3a, 0xc4, 0xb3, 0x5d, 0x18, 0x60, 0xb1, 0x84, 0x2c, 0xf9, 0x25, 0xa4, 0x9f,
	0xc2, 0x59, 0x8b, 0x2b, 0xd3, 0xd3, 0xe4, 0xd2, 0x6b, 0xa7, 0xf6, 0xfa, 0x9d, 0xf6, 0xa0, 0xb7,
	0x3f, 0x7a, 0x0f, 0x76, 0x43, 0x18, 0xa7, 0xb9, 0x2a, 0xbb, 0x41, 0x83, 0x53, 0x1f, 0x9b, 0xfe,
	0x6c, 0x69, 0xd3, 0xe6, 0xdc, 0x47, 0x35, 0xfd, 0xab, 0x83, 0xf1, 0x9c, 0x8c, 0xff, 0x88, 0x6f,
	0x9f, 0x89, 0x4c, 0x09, 0x31, 0xb2, 0xf8, 0x22, 0xeb, 0xa5, 0xa2, 0x98, 0x15, 0x5e, 0xf7, 0xf5,
	0x6f, 0xa7, 0x8f, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x22, 0x7b, 0xc5, 0xdf, 0x50, 0x09, 0x00,
	0x00,
}
