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

/*
Package protoV2 is a generated protocol buffer package.

It is generated from these files:

	driver_v2.prot
	driver_v2.proto

-level messages:

	Empty
	Sessio

It has these top-level messages


	Empty
	Session
	BackupReq
	Ba
It has these top-level messages:
	Empty
	Session
	BackupReq
	BackupRes
	RecommendBackupStrategyReq
	RecommendBackupStrategyRes
	Param
	DSN
	Rule
	I18NRuleInfo
	Knowledge
	MetasResponse
	InitRequest
	InitResponse
	CloseRequest
	KillProcessRequest
	ParsedSQL
	ParseRequest
	Node
	ParseResponse
	AuditSQL
	AuditRequest
	I18NAuditResultInfo
	AuditResult
	AuditResults
	AuditResponse
	NeedRollbackSQL
	GenRollbackSQLRequest
	I18NRollbackSQLInfo
	RollbackSQL
	GenRollbackSQLResponse
	PingRequest
	ExecSQL
	ExecRequest
	ExecResult
	ExecBatchRequest
	ExecBatchResult
	ExecResponse
	TxRequest
	TxResponse
	ExecErr
	QuerySQL
	QueryConf
	QueryRequest
	QueryResponse
	QueryResultRow
	QueryResultValue
	ExplainSQL
	ExplainRequest
	ExplainResponse
	ExplainClassicResult
	GetDatabasesRequest
	Database
	GetDatabasesResponse
	Table
	GetTableMetaRequest
	GetTableMetaResponse
	TableMeta
	ColumnsInfo
	IndexesInfo
	TabularDataHead
	TabularDataRows
	TabularData
	ExtractedSQL
	ExtractTableFromSQLRequest
	ExtractTableFromSQLResponse
	AffectRowsSQL
	EstimateSQLAffectRowsRequest
	EstimateSQLAffectRowsResponse
	KillProcessResponse
	DatabaseObjectInfoRequest
	DatabaseSchemaInfo
	DatabaseObject
	DatabaseSchemaObjectResponse
	DatabaseSchemaObject
	DatabaseObjectDDL
	DatabaseDiffModifyRequest
	DatabasDiffSchemaInfo
	DatabaseDiffModifyRponse
	SchemaDiffModify
*/
package protoV2

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// 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 BackupStrategy int32

const (
	BackupStrategy_None        BackupStrategy = 0
	BackupStrategy_ReverseSql  BackupStrategy = 1
	BackupStrategy_OriginalRow BackupStrategy = 2
	BackupStrategy_Manually    BackupStrategy = 3
)

var BackupStrategy_name = map[int32]string{
	0: "None",
	1: "ReverseSql",
	2: "OriginalRow",
	3: "Manually",
}
var BackupStrategy_value = map[string]int32{
	"None":        0,
	"ReverseSql":  1,
	"OriginalRow": 2,
	"Manually":    3,
}

func (x BackupStrategy) String() string {
	return proto.EnumName(BackupStrategy_name, int32(x))
}
func (BackupStrategy) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

type OptionalModule int32

const (
	OptionalModule_GenRollbackSQL           OptionalModule = 0
	OptionalModule_Query                    OptionalModule = 1
	OptionalModule_Explain                  OptionalModule = 2
	OptionalModule_GetTableMeta             OptionalModule = 3
	OptionalModule_ExtractTableFromSQL      OptionalModule = 4
	OptionalModule_EstimateSQLAffectRows    OptionalModule = 5
	OptionalModule_KillProcess              OptionalModule = 6
	OptionalModule_ExecBatch                OptionalModule = 7
	OptionalModule_I18n                     OptionalModule = 8
	OptionalModule_GetDatabaseObjectDDL     OptionalModule = 9
	OptionalModule_GetDatabaseDiffModifySQL OptionalModule = 10
	OptionalModule_Backup                   OptionalModule = 11
)

var OptionalModule_name = map[int32]string{
	0:  "GenRollbackSQL",
	1:  "Query",
	2:  "Explain",
	3:  "GetTableMeta",
	4:  "ExtractTableFromSQL",
	5:  "EstimateSQLAffectRows",
	6:  "KillProcess",
	7:  "ExecBatch",
	8:  "I18n",
	9:  "GetDatabaseObjectDDL",
	10: "GetDatabaseDiffModifySQL",
	11: "Backup",
}
var OptionalModule_value = map[string]int32{
	"GenRollbackSQL":           0,
	"Query":                    1,
	"Explain":                  2,
	"GetTableMeta":             3,
	"ExtractTableFromSQL":      4,
	"EstimateSQLAffectRows":    5,
	"KillProcess":              6,
	"ExecBatch":                7,
	"I18n":                     8,
	"GetDatabaseObjectDDL":     9,
	"GetDatabaseDiffModifySQL": 10,
	"Backup":                   11,
}

func (x OptionalModule) String() string {
	return proto.EnumName(OptionalModule_name, int32(x))
}
func (OptionalModule) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

type Empty struct {
}

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

type Session struct {
	Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
}

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

func (m *Session) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

type BackupReq struct {
	Session        *Session       `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	BackupStrategy BackupStrategy `protobuf:"varint,2,opt,name=backupStrategy,enum=protoV2.BackupStrategy" json:"backupStrategy,omitempty"`
	Sql            string         `protobuf:"bytes,3,opt,name=sql" json:"sql,omitempty"`
	BackupMaxRows  uint64         `protobuf:"varint,4,opt,name=backupMaxRows" json:"backupMaxRows,omitempty"`
}

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

func (m *BackupReq) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *BackupReq) GetBackupStrategy() BackupStrategy {
	if m != nil {
		return m.BackupStrategy
	}
	return BackupStrategy_None
}

func (m *BackupReq) GetSql() string {
	if m != nil {
		return m.Sql
	}
	return ""
}

func (m *BackupReq) GetBackupMaxRows() uint64 {
	if m != nil {
		return m.BackupMaxRows
	}
	return 0
}

type BackupRes struct {
	BackupSql     []string `protobuf:"bytes,1,rep,name=backupSql" json:"backupSql,omitempty"`
	ExecuteResult string   `protobuf:"bytes,2,opt,name=executeResult" json:"executeResult,omitempty"`
}

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

func (m *BackupRes) GetBackupSql() []string {
	if m != nil {
		return m.BackupSql
	}
	return nil
}

func (m *BackupRes) GetExecuteResult() string {
	if m != nil {
		return m.ExecuteResult
	}
	return ""
}

type RecommendBackupStrategyReq struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     string   `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
}

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

func (m *RecommendBackupStrategyReq) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *RecommendBackupStrategyReq) GetSql() string {
	if m != nil {
		return m.Sql
	}
	return ""
}

type RecommendBackupStrategyRes struct {
	BackupStrategy    BackupStrategy `protobuf:"varint,1,opt,name=backupStrategy,enum=protoV2.BackupStrategy" json:"backupStrategy,omitempty"`
	BackupStrategyTip string         `protobuf:"bytes,2,opt,name=backupStrategyTip" json:"backupStrategyTip,omitempty"`
	TablesRefer       []string       `protobuf:"bytes,3,rep,name=tablesRefer" json:"tablesRefer,omitempty"`
	SchemasRefer      []string       `protobuf:"bytes,4,rep,name=schemasRefer" json:"schemasRefer,omitempty"`
}

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

func (m *RecommendBackupStrategyRes) GetBackupStrategy() BackupStrategy {
	if m != nil {
		return m.BackupStrategy
	}
	return BackupStrategy_None
}

func (m *RecommendBackupStrategyRes) GetBackupStrategyTip() string {
	if m != nil {
		return m.BackupStrategyTip
	}
	return ""
}

func (m *RecommendBackupStrategyRes) GetTablesRefer() []string {
	if m != nil {
		return m.TablesRefer
	}
	return nil
}

func (m *RecommendBackupStrategyRes) GetSchemasRefer() []string {
	if m != nil {
		return m.SchemasRefer
	}
	return nil
}

type Param struct {
	Key      string            `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"`
	Value    string            `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
	Desc     string            `protobuf:"bytes,3,opt,name=desc" json:"desc,omitempty"`
	Type     string            `protobuf:"bytes,4,opt,name=type" json:"type,omitempty"`
	I18NDesc map[string]string `protobuf:"bytes,5,rep,name=i18nDesc" json:"i18nDesc,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}

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

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

func (m *Param) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

func (m *Param) GetDesc() string {
	if m != nil {
		return m.Desc
	}
	return ""
}

func (m *Param) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

func (m *Param) GetI18NDesc() map[string]string {
	if m != nil {
		return m.I18NDesc
	}
	return nil
}

type DSN struct {
	Host             string   `protobuf:"bytes,1,opt,name=host" json:"host,omitempty"`
	Port             string   `protobuf:"bytes,2,opt,name=port" json:"port,omitempty"`
	User             string   `protobuf:"bytes,3,opt,name=user" json:"user,omitempty"`
	Password         string   `protobuf:"bytes,4,opt,name=password" json:"password,omitempty"`
	Database         string   `protobuf:"bytes,5,opt,name=database" json:"database,omitempty"`
	AdditionalParams []*Param `protobuf:"bytes,6,rep,name=additionalParams" json:"additionalParams,omitempty"`
}

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

func (m *DSN) GetHost() string {
	if m != nil {
		return m.Host
	}
	return ""
}

func (m *DSN) GetPort() string {
	if m != nil {
		return m.Port
	}
	return ""
}

func (m *DSN) GetUser() string {
	if m != nil {
		return m.User
	}
	return ""
}

func (m *DSN) GetPassword() string {
	if m != nil {
		return m.Password
	}
	return ""
}

func (m *DSN) GetDatabase() string {
	if m != nil {
		return m.Database
	}
	return ""
}

func (m *DSN) GetAdditionalParams() []*Param {
	if m != nil {
		return m.AdditionalParams
	}
	return nil
}

type Rule struct {
	Name         string                   `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Desc         string                   `protobuf:"bytes,2,opt,name=desc" json:"desc,omitempty"`
	Level        string                   `protobuf:"bytes,3,opt,name=level" json:"level,omitempty"`
	Category     string                   `protobuf:"bytes,4,opt,name=category" json:"category,omitempty"`
	Params       []*Param                 `protobuf:"bytes,5,rep,name=params" json:"params,omitempty"`
	Annotation   string                   `protobuf:"bytes,6,opt,name=annotation" json:"annotation,omitempty"`
	Knowledge    *Knowledge               `protobuf:"bytes,7,opt,name=knowledge" json:"knowledge,omitempty"`
	I18NRuleInfo map[string]*I18NRuleInfo `protobuf:"bytes,8,rep,name=i18nRuleInfo" json:"i18nRuleInfo,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Version      uint32                   `protobuf:"varint,9,opt,name=version" json:"version,omitempty"`
}

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

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

func (m *Rule) GetDesc() string {
	if m != nil {
		return m.Desc
	}
	return ""
}

func (m *Rule) GetLevel() string {
	if m != nil {
		return m.Level
	}
	return ""
}

func (m *Rule) GetCategory() string {
	if m != nil {
		return m.Category
	}
	return ""
}

func (m *Rule) GetParams() []*Param {
	if m != nil {
		return m.Params
	}
	return nil
}

func (m *Rule) GetAnnotation() string {
	if m != nil {
		return m.Annotation
	}
	return ""
}

func (m *Rule) GetKnowledge() *Knowledge {
	if m != nil {
		return m.Knowledge
	}
	return nil
}

func (m *Rule) GetI18NRuleInfo() map[string]*I18NRuleInfo {
	if m != nil {
		return m.I18NRuleInfo
	}
	return nil
}

func (m *Rule) GetVersion() uint32 {
	if m != nil {
		return m.Version
	}
	return 0
}

type I18NRuleInfo struct {
	Desc       string     `protobuf:"bytes,1,opt,name=desc" json:"desc,omitempty"`
	Category   string     `protobuf:"bytes,2,opt,name=category" json:"category,omitempty"`
	Annotation string     `protobuf:"bytes,3,opt,name=annotation" json:"annotation,omitempty"`
	Knowledge  *Knowledge `protobuf:"bytes,4,opt,name=knowledge" json:"knowledge,omitempty"`
}

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

func (m *I18NRuleInfo) GetDesc() string {
	if m != nil {
		return m.Desc
	}
	return ""
}

func (m *I18NRuleInfo) GetCategory() string {
	if m != nil {
		return m.Category
	}
	return ""
}

func (m *I18NRuleInfo) GetAnnotation() string {
	if m != nil {
		return m.Annotation
	}
	return ""
}

func (m *I18NRuleInfo) GetKnowledge() *Knowledge {
	if m != nil {
		return m.Knowledge
	}
	return nil
}

type Knowledge struct {
	Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"`
}

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

func (m *Knowledge) GetContent() string {
	if m != nil {
		return m.Content
	}
	return ""
}

// Metas
type MetasResponse struct {
	PluginName               string           `protobuf:"bytes,1,opt,name=pluginName" json:"pluginName,omitempty"`
	DatabaseDefaultPort      int64            `protobuf:"varint,2,opt,name=databaseDefaultPort" json:"databaseDefaultPort,omitempty"`
	DatabaseAdditionalParams []*Param         `protobuf:"bytes,3,rep,name=databaseAdditionalParams" json:"databaseAdditionalParams,omitempty"`
	Rules                    []*Rule          `protobuf:"bytes,4,rep,name=rules" json:"rules,omitempty"`
	EnabledOptionalModule    []OptionalModule `protobuf:"varint,5,rep,packed,name=enabledOptionalModule,enum=protoV2.OptionalModule" json:"enabledOptionalModule,omitempty"`
	Logo                     []byte           `protobuf:"bytes,6,opt,name=logo,proto3" json:"logo,omitempty"`
}

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

func (m *MetasResponse) GetPluginName() string {
	if m != nil {
		return m.PluginName
	}
	return ""
}

func (m *MetasResponse) GetDatabaseDefaultPort() int64 {
	if m != nil {
		return m.DatabaseDefaultPort
	}
	return 0
}

func (m *MetasResponse) GetDatabaseAdditionalParams() []*Param {
	if m != nil {
		return m.DatabaseAdditionalParams
	}
	return nil
}

func (m *MetasResponse) GetRules() []*Rule {
	if m != nil {
		return m.Rules
	}
	return nil
}

func (m *MetasResponse) GetEnabledOptionalModule() []OptionalModule {
	if m != nil {
		return m.EnabledOptionalModule
	}
	return nil
}

func (m *MetasResponse) GetLogo() []byte {
	if m != nil {
		return m.Logo
	}
	return nil
}

// Init
type InitRequest struct {
	Dsn   *DSN    `protobuf:"bytes,1,opt,name=dsn" json:"dsn,omitempty"`
	Rules []*Rule `protobuf:"bytes,2,rep,name=rules" json:"rules,omitempty"`
}

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

func (m *InitRequest) GetDsn() *DSN {
	if m != nil {
		return m.Dsn
	}
	return nil
}

func (m *InitRequest) GetRules() []*Rule {
	if m != nil {
		return m.Rules
	}
	return nil
}

type InitResponse struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
}

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

func (m *InitResponse) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

// Close
type CloseRequest struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
}

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

func (m *CloseRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

// Kill
type KillProcessRequest struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
}

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

func (m *KillProcessRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

// Parse
type ParsedSQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

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

func (m *ParsedSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type ParseRequest struct {
	Session *Session   `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     *ParsedSQL `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
}

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

func (m *ParseRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *ParseRequest) GetSql() *ParsedSQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

type Node struct {
	Text        string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
	Type        string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"`
	Fingerprint string `protobuf:"bytes,3,opt,name=fingerprint" json:"fingerprint,omitempty"`
	StartLine   uint64 `protobuf:"varint,4,opt,name=startLine" json:"startLine,omitempty"`
	BatchId     uint64 `protobuf:"varint,5,opt,name=batchId" json:"batchId,omitempty"`
}

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

func (m *Node) GetText() string {
	if m != nil {
		return m.Text
	}
	return ""
}

func (m *Node) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

func (m *Node) GetFingerprint() string {
	if m != nil {
		return m.Fingerprint
	}
	return ""
}

func (m *Node) GetStartLine() uint64 {
	if m != nil {
		return m.StartLine
	}
	return 0
}

func (m *Node) GetBatchId() uint64 {
	if m != nil {
		return m.BatchId
	}
	return 0
}

type ParseResponse struct {
	Nodes []*Node `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"`
}

func (m *ParseResponse) Reset()                    { *m = ParseResponse{} }
func (m *ParseResponse) String() string            { return proto.CompactTextString(m) }
func (*ParseResponse) ProtoMessage()               {}
func (*ParseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }

func (m *ParseResponse) GetNodes() []*Node {
	if m != nil {
		return m.Nodes
	}
	return nil
}

// Audit
type AuditSQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

func (m *AuditSQL) Reset()                    { *m = AuditSQL{} }
func (m *AuditSQL) String() string            { return proto.CompactTextString(m) }
func (*AuditSQL) ProtoMessage()               {}
func (*AuditSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }

func (m *AuditSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type AuditRequest struct {
	Session *Session    `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sqls    []*AuditSQL `protobuf:"bytes,2,rep,name=sqls" json:"sqls,omitempty"`
}

func (m *AuditRequest) Reset()                    { *m = AuditRequest{} }
func (m *AuditRequest) String() string            { return proto.CompactTextString(m) }
func (*AuditRequest) ProtoMessage()               {}
func (*AuditRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }

func (m *AuditRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *AuditRequest) GetSqls() []*AuditSQL {
	if m != nil {
		return m.Sqls
	}
	return nil
}

type I18NAuditResultInfo struct {
	Message   string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
	ErrorInfo string `protobuf:"bytes,2,opt,name=error_info,json=errorInfo" json:"error_info,omitempty"`
}

func (m *I18NAuditResultInfo) Reset()                    { *m = I18NAuditResultInfo{} }
func (m *I18NAuditResultInfo) String() string            { return proto.CompactTextString(m) }
func (*I18NAuditResultInfo) ProtoMessage()               {}
func (*I18NAuditResultInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }

func (m *I18NAuditResultInfo) GetMessage() string {
	if m != nil {
		return m.Message
	}
	return ""
}

func (m *I18NAuditResultInfo) GetErrorInfo() string {
	if m != nil {
		return m.ErrorInfo
	}
	return ""
}

type AuditResult struct {
	Message             string                          `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
	Level               string                          `protobuf:"bytes,2,opt,name=level" json:"level,omitempty"`
	RuleName            string                          `protobuf:"bytes,3,opt,name=rule_name,json=ruleName" json:"rule_name,omitempty"`
	I18NAuditResultInfo map[string]*I18NAuditResultInfo `protobuf:"bytes,4,rep,name=i18nAuditResultInfo" json:"i18nAuditResultInfo,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	ExecutionFailed     bool                            `protobuf:"varint,5,opt,name=execution_failed,json=executionFailed" json:"execution_failed,omitempty"`
	ErrorInfo           string                          `protobuf:"bytes,6,opt,name=error_info,json=errorInfo" json:"error_info,omitempty"`
}

func (m *AuditResult) Reset()                    { *m = AuditResult{} }
func (m *AuditResult) String() string            { return proto.CompactTextString(m) }
func (*AuditResult) ProtoMessage()               {}
func (*AuditResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }

func (m *AuditResult) GetMessage() string {
	if m != nil {
		return m.Message
	}
	return ""
}

func (m *AuditResult) GetLevel() string {
	if m != nil {
		return m.Level
	}
	return ""
}

func (m *AuditResult) GetRuleName() string {
	if m != nil {
		return m.RuleName
	}
	return ""
}

func (m *AuditResult) GetI18NAuditResultInfo() map[string]*I18NAuditResultInfo {
	if m != nil {
		return m.I18NAuditResultInfo
	}
	return nil
}

func (m *AuditResult) GetExecutionFailed() bool {
	if m != nil {
		return m.ExecutionFailed
	}
	return false
}

func (m *AuditResult) GetErrorInfo() string {
	if m != nil {
		return m.ErrorInfo
	}
	return ""
}

type AuditResults struct {
	Results []*AuditResult `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"`
}

func (m *AuditResults) Reset()                    { *m = AuditResults{} }
func (m *AuditResults) String() string            { return proto.CompactTextString(m) }
func (*AuditResults) ProtoMessage()               {}
func (*AuditResults) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }

func (m *AuditResults) GetResults() []*AuditResult {
	if m != nil {
		return m.Results
	}
	return nil
}

type AuditResponse struct {
	AuditResults []*AuditResults `protobuf:"bytes,1,rep,name=auditResults" json:"auditResults,omitempty"`
}

func (m *AuditResponse) Reset()                    { *m = AuditResponse{} }
func (m *AuditResponse) String() string            { return proto.CompactTextString(m) }
func (*AuditResponse) ProtoMessage()               {}
func (*AuditResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} }

func (m *AuditResponse) GetAuditResults() []*AuditResults {
	if m != nil {
		return m.AuditResults
	}
	return nil
}

// GenRollbackSQL
type NeedRollbackSQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

func (m *NeedRollbackSQL) Reset()                    { *m = NeedRollbackSQL{} }
func (m *NeedRollbackSQL) String() string            { return proto.CompactTextString(m) }
func (*NeedRollbackSQL) ProtoMessage()               {}
func (*NeedRollbackSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} }

func (m *NeedRollbackSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type GenRollbackSQLRequest struct {
	Session *Session         `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     *NeedRollbackSQL `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
}

func (m *GenRollbackSQLRequest) Reset()                    { *m = GenRollbackSQLRequest{} }
func (m *GenRollbackSQLRequest) String() string            { return proto.CompactTextString(m) }
func (*GenRollbackSQLRequest) ProtoMessage()               {}
func (*GenRollbackSQLRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }

func (m *GenRollbackSQLRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *GenRollbackSQLRequest) GetSql() *NeedRollbackSQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

type I18NRollbackSQLInfo struct {
	Message string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
}

func (m *I18NRollbackSQLInfo) Reset()                    { *m = I18NRollbackSQLInfo{} }
func (m *I18NRollbackSQLInfo) String() string            { return proto.CompactTextString(m) }
func (*I18NRollbackSQLInfo) ProtoMessage()               {}
func (*I18NRollbackSQLInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }

func (m *I18NRollbackSQLInfo) GetMessage() string {
	if m != nil {
		return m.Message
	}
	return ""
}

type RollbackSQL struct {
	Query               string                          `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
	Message             string                          `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
	I18NRollbackSQLInfo map[string]*I18NRollbackSQLInfo `protobuf:"bytes,3,rep,name=i18nRollbackSQLInfo" json:"i18nRollbackSQLInfo,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}

func (m *RollbackSQL) Reset()                    { *m = RollbackSQL{} }
func (m *RollbackSQL) String() string            { return proto.CompactTextString(m) }
func (*RollbackSQL) ProtoMessage()               {}
func (*RollbackSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }

func (m *RollbackSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

func (m *RollbackSQL) GetMessage() string {
	if m != nil {
		return m.Message
	}
	return ""
}

func (m *RollbackSQL) GetI18NRollbackSQLInfo() map[string]*I18NRollbackSQLInfo {
	if m != nil {
		return m.I18NRollbackSQLInfo
	}
	return nil
}

type GenRollbackSQLResponse struct {
	Sql *RollbackSQL `protobuf:"bytes,1,opt,name=sql" json:"sql,omitempty"`
}

func (m *GenRollbackSQLResponse) Reset()                    { *m = GenRollbackSQLResponse{} }
func (m *GenRollbackSQLResponse) String() string            { return proto.CompactTextString(m) }
func (*GenRollbackSQLResponse) ProtoMessage()               {}
func (*GenRollbackSQLResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }

func (m *GenRollbackSQLResponse) GetSql() *RollbackSQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

// Ping
type PingRequest struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
}

func (m *PingRequest) Reset()                    { *m = PingRequest{} }
func (m *PingRequest) String() string            { return proto.CompactTextString(m) }
func (*PingRequest) ProtoMessage()               {}
func (*PingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }

func (m *PingRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

// Exec
type ExecSQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

func (m *ExecSQL) Reset()                    { *m = ExecSQL{} }
func (m *ExecSQL) String() string            { return proto.CompactTextString(m) }
func (*ExecSQL) ProtoMessage()               {}
func (*ExecSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }

func (m *ExecSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type ExecRequest struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     *ExecSQL `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
}

func (m *ExecRequest) Reset()                    { *m = ExecRequest{} }
func (m *ExecRequest) String() string            { return proto.CompactTextString(m) }
func (*ExecRequest) ProtoMessage()               {}
func (*ExecRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }

func (m *ExecRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *ExecRequest) GetSql() *ExecSQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

type ExecResult struct {
	LastInsertId      int64  `protobuf:"varint,1,opt,name=lastInsertId" json:"lastInsertId,omitempty"`
	LastInsertIdError string `protobuf:"bytes,2,opt,name=lastInsertIdError" json:"lastInsertIdError,omitempty"`
	RowsAffected      int64  `protobuf:"varint,3,opt,name=rowsAffected" json:"rowsAffected,omitempty"`
	RowsAffectedError string `protobuf:"bytes,4,opt,name=rowsAffectedError" json:"rowsAffectedError,omitempty"`
}

func (m *ExecResult) Reset()                    { *m = ExecResult{} }
func (m *ExecResult) String() string            { return proto.CompactTextString(m) }
func (*ExecResult) ProtoMessage()               {}
func (*ExecResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }

func (m *ExecResult) GetLastInsertId() int64 {
	if m != nil {
		return m.LastInsertId
	}
	return 0
}

func (m *ExecResult) GetLastInsertIdError() string {
	if m != nil {
		return m.LastInsertIdError
	}
	return ""
}

func (m *ExecResult) GetRowsAffected() int64 {
	if m != nil {
		return m.RowsAffected
	}
	return 0
}

func (m *ExecResult) GetRowsAffectedError() string {
	if m != nil {
		return m.RowsAffectedError
	}
	return ""
}

type ExecBatchRequest struct {
	Session *Session   `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sqls    []*ExecSQL `protobuf:"bytes,2,rep,name=sqls" json:"sqls,omitempty"`
}

func (m *ExecBatchRequest) Reset()                    { *m = ExecBatchRequest{} }
func (m *ExecBatchRequest) String() string            { return proto.CompactTextString(m) }
func (*ExecBatchRequest) ProtoMessage()               {}
func (*ExecBatchRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }

func (m *ExecBatchRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *ExecBatchRequest) GetSqls() []*ExecSQL {
	if m != nil {
		return m.Sqls
	}
	return nil
}

type ExecBatchResult struct {
	Results []*ExecResult `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"`
}

func (m *ExecBatchResult) Reset()                    { *m = ExecBatchResult{} }
func (m *ExecBatchResult) String() string            { return proto.CompactTextString(m) }
func (*ExecBatchResult) ProtoMessage()               {}
func (*ExecBatchResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }

func (m *ExecBatchResult) GetResults() []*ExecResult {
	if m != nil {
		return m.Results
	}
	return nil
}

type ExecResponse struct {
	Result *ExecResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"`
}

func (m *ExecResponse) Reset()                    { *m = ExecResponse{} }
func (m *ExecResponse) String() string            { return proto.CompactTextString(m) }
func (*ExecResponse) ProtoMessage()               {}
func (*ExecResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }

func (m *ExecResponse) GetResult() *ExecResult {
	if m != nil {
		return m.Result
	}
	return nil
}

// Tx
type TxRequest struct {
	Session *Session   `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sqls    []*ExecSQL `protobuf:"bytes,2,rep,name=sqls" json:"sqls,omitempty"`
}

func (m *TxRequest) Reset()                    { *m = TxRequest{} }
func (m *TxRequest) String() string            { return proto.CompactTextString(m) }
func (*TxRequest) ProtoMessage()               {}
func (*TxRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }

func (m *TxRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *TxRequest) GetSqls() []*ExecSQL {
	if m != nil {
		return m.Sqls
	}
	return nil
}

type TxResponse struct {
	Results []*ExecResult `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"`
	ExecErr *ExecErr      `protobuf:"bytes,2,opt,name=execErr" json:"execErr,omitempty"`
}

func (m *TxResponse) Reset()                    { *m = TxResponse{} }
func (m *TxResponse) String() string            { return proto.CompactTextString(m) }
func (*TxResponse) ProtoMessage()               {}
func (*TxResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }

func (m *TxResponse) GetResults() []*ExecResult {
	if m != nil {
		return m.Results
	}
	return nil
}

func (m *TxResponse) GetExecErr() *ExecErr {
	if m != nil {
		return m.ExecErr
	}
	return nil
}

type ExecErr struct {
	ErrSqlIndex   uint32 `protobuf:"varint,1,opt,name=errSqlIndex" json:"errSqlIndex,omitempty"`
	SqlExecErrMsg string `protobuf:"bytes,2,opt,name=sqlExecErrMsg" json:"sqlExecErrMsg,omitempty"`
}

func (m *ExecErr) Reset()                    { *m = ExecErr{} }
func (m *ExecErr) String() string            { return proto.CompactTextString(m) }
func (*ExecErr) ProtoMessage()               {}
func (*ExecErr) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }

func (m *ExecErr) GetErrSqlIndex() uint32 {
	if m != nil {
		return m.ErrSqlIndex
	}
	return 0
}

func (m *ExecErr) GetSqlExecErrMsg() string {
	if m != nil {
		return m.SqlExecErrMsg
	}
	return ""
}

// Query
type QuerySQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

func (m *QuerySQL) Reset()                    { *m = QuerySQL{} }
func (m *QuerySQL) String() string            { return proto.CompactTextString(m) }
func (*QuerySQL) ProtoMessage()               {}
func (*QuerySQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} }

func (m *QuerySQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type QueryConf struct {
	TimeoutSecond uint32 `protobuf:"varint,1,opt,name=timeoutSecond" json:"timeoutSecond,omitempty"`
}

func (m *QueryConf) Reset()                    { *m = QueryConf{} }
func (m *QueryConf) String() string            { return proto.CompactTextString(m) }
func (*QueryConf) ProtoMessage()               {}
func (*QueryConf) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} }

func (m *QueryConf) GetTimeoutSecond() uint32 {
	if m != nil {
		return m.TimeoutSecond
	}
	return 0
}

type QueryRequest struct {
	Session *Session   `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     *QuerySQL  `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
	Conf    *QueryConf `protobuf:"bytes,3,opt,name=conf" json:"conf,omitempty"`
}

func (m *QueryRequest) Reset()                    { *m = QueryRequest{} }
func (m *QueryRequest) String() string            { return proto.CompactTextString(m) }
func (*QueryRequest) ProtoMessage()               {}
func (*QueryRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} }

func (m *QueryRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *QueryRequest) GetSql() *QuerySQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

func (m *QueryRequest) GetConf() *QueryConf {
	if m != nil {
		return m.Conf
	}
	return nil
}

type QueryResponse struct {
	Column []*Param          `protobuf:"bytes,1,rep,name=column" json:"column,omitempty"`
	Rows   []*QueryResultRow `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"`
}

func (m *QueryResponse) Reset()                    { *m = QueryResponse{} }
func (m *QueryResponse) String() string            { return proto.CompactTextString(m) }
func (*QueryResponse) ProtoMessage()               {}
func (*QueryResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} }

func (m *QueryResponse) GetColumn() []*Param {
	if m != nil {
		return m.Column
	}
	return nil
}

func (m *QueryResponse) GetRows() []*QueryResultRow {
	if m != nil {
		return m.Rows
	}
	return nil
}

type QueryResultRow struct {
	Values []*QueryResultValue `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"`
}

func (m *QueryResultRow) Reset()                    { *m = QueryResultRow{} }
func (m *QueryResultRow) String() string            { return proto.CompactTextString(m) }
func (*QueryResultRow) ProtoMessage()               {}
func (*QueryResultRow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} }

func (m *QueryResultRow) GetValues() []*QueryResultValue {
	if m != nil {
		return m.Values
	}
	return nil
}

type QueryResultValue struct {
	Value string `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"`
}

func (m *QueryResultValue) Reset()                    { *m = QueryResultValue{} }
func (m *QueryResultValue) String() string            { return proto.CompactTextString(m) }
func (*QueryResultValue) ProtoMessage()               {}
func (*QueryResultValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} }

func (m *QueryResultValue) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

// explain
type ExplainSQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

func (m *ExplainSQL) Reset()                    { *m = ExplainSQL{} }
func (m *ExplainSQL) String() string            { return proto.CompactTextString(m) }
func (*ExplainSQL) ProtoMessage()               {}
func (*ExplainSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} }

func (m *ExplainSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type ExplainRequest struct {
	Session *Session    `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     *ExplainSQL `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
}

func (m *ExplainRequest) Reset()                    { *m = ExplainRequest{} }
func (m *ExplainRequest) String() string            { return proto.CompactTextString(m) }
func (*ExplainRequest) ProtoMessage()               {}
func (*ExplainRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} }

func (m *ExplainRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *ExplainRequest) GetSql() *ExplainSQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

type ExplainResponse struct {
	ClassicResult *ExplainClassicResult `protobuf:"bytes,1,opt,name=classicResult" json:"classicResult,omitempty"`
}

func (m *ExplainResponse) Reset()                    { *m = ExplainResponse{} }
func (m *ExplainResponse) String() string            { return proto.CompactTextString(m) }
func (*ExplainResponse) ProtoMessage()               {}
func (*ExplainResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} }

func (m *ExplainResponse) GetClassicResult() *ExplainClassicResult {
	if m != nil {
		return m.ClassicResult
	}
	return nil
}

type ExplainClassicResult struct {
	Data *TabularData `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
}

func (m *ExplainClassicResult) Reset()                    { *m = ExplainClassicResult{} }
func (m *ExplainClassicResult) String() string            { return proto.CompactTextString(m) }
func (*ExplainClassicResult) ProtoMessage()               {}
func (*ExplainClassicResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }

func (m *ExplainClassicResult) GetData() *TabularData {
	if m != nil {
		return m.Data
	}
	return nil
}

// gETDatabases
type GetDatabasesRequest struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
}

func (m *GetDatabasesRequest) Reset()                    { *m = GetDatabasesRequest{} }
func (m *GetDatabasesRequest) String() string            { return proto.CompactTextString(m) }
func (*GetDatabasesRequest) ProtoMessage()               {}
func (*GetDatabasesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} }

func (m *GetDatabasesRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

type Database struct {
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}

func (m *Database) Reset()                    { *m = Database{} }
func (m *Database) String() string            { return proto.CompactTextString(m) }
func (*Database) ProtoMessage()               {}
func (*Database) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} }

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

type GetDatabasesResponse struct {
	Databases []*Database `protobuf:"bytes,1,rep,name=databases" json:"databases,omitempty"`
}

func (m *GetDatabasesResponse) Reset()                    { *m = GetDatabasesResponse{} }
func (m *GetDatabasesResponse) String() string            { return proto.CompactTextString(m) }
func (*GetDatabasesResponse) ProtoMessage()               {}
func (*GetDatabasesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} }

func (m *GetDatabasesResponse) GetDatabases() []*Database {
	if m != nil {
		return m.Databases
	}
	return nil
}

// GetTableMeta
type Table struct {
	Name   string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Schema string `protobuf:"bytes,2,opt,name=schema" json:"schema,omitempty"`
}

func (m *Table) Reset()                    { *m = Table{} }
func (m *Table) String() string            { return proto.CompactTextString(m) }
func (*Table) ProtoMessage()               {}
func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} }

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

func (m *Table) GetSchema() string {
	if m != nil {
		return m.Schema
	}
	return ""
}

type GetTableMetaRequest struct {
	Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Table   *Table   `protobuf:"bytes,2,opt,name=table" json:"table,omitempty"`
}

func (m *GetTableMetaRequest) Reset()                    { *m = GetTableMetaRequest{} }
func (m *GetTableMetaRequest) String() string            { return proto.CompactTextString(m) }
func (*GetTableMetaRequest) ProtoMessage()               {}
func (*GetTableMetaRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} }

func (m *GetTableMetaRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *GetTableMetaRequest) GetTable() *Table {
	if m != nil {
		return m.Table
	}
	return nil
}

type GetTableMetaResponse struct {
	TableMeta *TableMeta `protobuf:"bytes,1,opt,name=tableMeta" json:"tableMeta,omitempty"`
}

func (m *GetTableMetaResponse) Reset()                    { *m = GetTableMetaResponse{} }
func (m *GetTableMetaResponse) String() string            { return proto.CompactTextString(m) }
func (*GetTableMetaResponse) ProtoMessage()               {}
func (*GetTableMetaResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} }

func (m *GetTableMetaResponse) GetTableMeta() *TableMeta {
	if m != nil {
		return m.TableMeta
	}
	return nil
}

type TableMeta struct {
	ColumnsInfo    *ColumnsInfo `protobuf:"bytes,1,opt,name=columnsInfo" json:"columnsInfo,omitempty"`
	IndexesInfo    *IndexesInfo `protobuf:"bytes,2,opt,name=indexesInfo" json:"indexesInfo,omitempty"`
	CreateTableSQL string       `protobuf:"bytes,3,opt,name=createTableSQL" json:"createTableSQL,omitempty"`
	Message        string       `protobuf:"bytes,4,opt,name=message" json:"message,omitempty"`
}

func (m *TableMeta) Reset()                    { *m = TableMeta{} }
func (m *TableMeta) String() string            { return proto.CompactTextString(m) }
func (*TableMeta) ProtoMessage()               {}
func (*TableMeta) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} }

func (m *TableMeta) GetColumnsInfo() *ColumnsInfo {
	if m != nil {
		return m.ColumnsInfo
	}
	return nil
}

func (m *TableMeta) GetIndexesInfo() *IndexesInfo {
	if m != nil {
		return m.IndexesInfo
	}
	return nil
}

func (m *TableMeta) GetCreateTableSQL() string {
	if m != nil {
		return m.CreateTableSQL
	}
	return ""
}

func (m *TableMeta) GetMessage() string {
	if m != nil {
		return m.Message
	}
	return ""
}

type ColumnsInfo struct {
	Data *TabularData `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
}

func (m *ColumnsInfo) Reset()                    { *m = ColumnsInfo{} }
func (m *ColumnsInfo) String() string            { return proto.CompactTextString(m) }
func (*ColumnsInfo) ProtoMessage()               {}
func (*ColumnsInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} }

func (m *ColumnsInfo) GetData() *TabularData {
	if m != nil {
		return m.Data
	}
	return nil
}

type IndexesInfo struct {
	Data *TabularData `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
}

func (m *IndexesInfo) Reset()                    { *m = IndexesInfo{} }
func (m *IndexesInfo) String() string            { return proto.CompactTextString(m) }
func (*IndexesInfo) ProtoMessage()               {}
func (*IndexesInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} }

func (m *IndexesInfo) GetData() *TabularData {
	if m != nil {
		return m.Data
	}
	return nil
}

type TabularDataHead struct {
	Name     string            `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Desc     string            `protobuf:"bytes,2,opt,name=desc" json:"desc,omitempty"`
	I18NDesc map[string]string `protobuf:"bytes,3,rep,name=i18nDesc" json:"i18nDesc,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}

func (m *TabularDataHead) Reset()                    { *m = TabularDataHead{} }
func (m *TabularDataHead) String() string            { return proto.CompactTextString(m) }
func (*TabularDataHead) ProtoMessage()               {}
func (*TabularDataHead) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} }

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

func (m *TabularDataHead) GetDesc() string {
	if m != nil {
		return m.Desc
	}
	return ""
}

func (m *TabularDataHead) GetI18NDesc() map[string]string {
	if m != nil {
		return m.I18NDesc
	}
	return nil
}

type TabularDataRows struct {
	Items []string `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
}

func (m *TabularDataRows) Reset()                    { *m = TabularDataRows{} }
func (m *TabularDataRows) String() string            { return proto.CompactTextString(m) }
func (*TabularDataRows) ProtoMessage()               {}
func (*TabularDataRows) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} }

func (m *TabularDataRows) GetItems() []string {
	if m != nil {
		return m.Items
	}
	return nil
}

type TabularData struct {
	Columns []*TabularDataHead `protobuf:"bytes,1,rep,name=columns" json:"columns,omitempty"`
	Rows    []*TabularDataRows `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"`
}

func (m *TabularData) Reset()                    { *m = TabularData{} }
func (m *TabularData) String() string            { return proto.CompactTextString(m) }
func (*TabularData) ProtoMessage()               {}
func (*TabularData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} }

func (m *TabularData) GetColumns() []*TabularDataHead {
	if m != nil {
		return m.Columns
	}
	return nil
}

func (m *TabularData) GetRows() []*TabularDataRows {
	if m != nil {
		return m.Rows
	}
	return nil
}

// ExtractTableFromSQL
type ExtractedSQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

func (m *ExtractedSQL) Reset()                    { *m = ExtractedSQL{} }
func (m *ExtractedSQL) String() string            { return proto.CompactTextString(m) }
func (*ExtractedSQL) ProtoMessage()               {}
func (*ExtractedSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} }

func (m *ExtractedSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type ExtractTableFromSQLRequest struct {
	Session *Session      `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     *ExtractedSQL `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
}

func (m *ExtractTableFromSQLRequest) Reset()                    { *m = ExtractTableFromSQLRequest{} }
func (m *ExtractTableFromSQLRequest) String() string            { return proto.CompactTextString(m) }
func (*ExtractTableFromSQLRequest) ProtoMessage()               {}
func (*ExtractTableFromSQLRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} }

func (m *ExtractTableFromSQLRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *ExtractTableFromSQLRequest) GetSql() *ExtractedSQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

type ExtractTableFromSQLResponse struct {
	Tables []*Table `protobuf:"bytes,1,rep,name=tables" json:"tables,omitempty"`
}

func (m *ExtractTableFromSQLResponse) Reset()                    { *m = ExtractTableFromSQLResponse{} }
func (m *ExtractTableFromSQLResponse) String() string            { return proto.CompactTextString(m) }
func (*ExtractTableFromSQLResponse) ProtoMessage()               {}
func (*ExtractTableFromSQLResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} }

func (m *ExtractTableFromSQLResponse) GetTables() []*Table {
	if m != nil {
		return m.Tables
	}
	return nil
}

// EstimateSQLAffectRows
type AffectRowsSQL struct {
	Query string `protobuf:"bytes,1,opt,name=query" json:"query,omitempty"`
}

func (m *AffectRowsSQL) Reset()                    { *m = AffectRowsSQL{} }
func (m *AffectRowsSQL) String() string            { return proto.CompactTextString(m) }
func (*AffectRowsSQL) ProtoMessage()               {}
func (*AffectRowsSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} }

func (m *AffectRowsSQL) GetQuery() string {
	if m != nil {
		return m.Query
	}
	return ""
}

type EstimateSQLAffectRowsRequest struct {
	Session *Session       `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	Sql     *AffectRowsSQL `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"`
}

func (m *EstimateSQLAffectRowsRequest) Reset()                    { *m = EstimateSQLAffectRowsRequest{} }
func (m *EstimateSQLAffectRowsRequest) String() string            { return proto.CompactTextString(m) }
func (*EstimateSQLAffectRowsRequest) ProtoMessage()               {}
func (*EstimateSQLAffectRowsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} }

func (m *EstimateSQLAffectRowsRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *EstimateSQLAffectRowsRequest) GetSql() *AffectRowsSQL {
	if m != nil {
		return m.Sql
	}
	return nil
}

type EstimateSQLAffectRowsResponse struct {
	Count      int64  `protobuf:"varint,1,opt,name=count" json:"count,omitempty"`
	ErrMessage string `protobuf:"bytes,2,opt,name=errMessage" json:"errMessage,omitempty"`
}

func (m *EstimateSQLAffectRowsResponse) Reset()                    { *m = EstimateSQLAffectRowsResponse{} }
func (m *EstimateSQLAffectRowsResponse) String() string            { return proto.CompactTextString(m) }
func (*EstimateSQLAffectRowsResponse) ProtoMessage()               {}
func (*EstimateSQLAffectRowsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{68} }

func (m *EstimateSQLAffectRowsResponse) GetCount() int64 {
	if m != nil {
		return m.Count
	}
	return 0
}

func (m *EstimateSQLAffectRowsResponse) GetErrMessage() string {
	if m != nil {
		return m.ErrMessage
	}
	return ""
}

type KillProcessResponse struct {
	ErrMessage string `protobuf:"bytes,1,opt,name=errMessage" json:"errMessage,omitempty"`
}

func (m *KillProcessResponse) Reset()                    { *m = KillProcessResponse{} }
func (m *KillProcessResponse) String() string            { return proto.CompactTextString(m) }
func (*KillProcessResponse) ProtoMessage()               {}
func (*KillProcessResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{69} }

func (m *KillProcessResponse) GetErrMessage() string {
	if m != nil {
		return m.ErrMessage
	}
	return ""
}

type DatabaseObjectInfoRequest struct {
	Session            *Session              `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	DatabaseSchemaInfo []*DatabaseSchemaInfo `protobuf:"bytes,2,rep,name=databaseSchemaInfo" json:"databaseSchemaInfo,omitempty"`
}

func (m *DatabaseObjectInfoRequest) Reset()                    { *m = DatabaseObjectInfoRequest{} }
func (m *DatabaseObjectInfoRequest) String() string            { return proto.CompactTextString(m) }
func (*DatabaseObjectInfoRequest) ProtoMessage()               {}
func (*DatabaseObjectInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{70} }

func (m *DatabaseObjectInfoRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *DatabaseObjectInfoRequest) GetDatabaseSchemaInfo() []*DatabaseSchemaInfo {
	if m != nil {
		return m.DatabaseSchemaInfo
	}
	return nil
}

type DatabaseSchemaInfo struct {
	SchemaName     string            `protobuf:"bytes,1,opt,name=schemaName" json:"schemaName,omitempty"`
	DatabaseObject []*DatabaseObject `protobuf:"bytes,2,rep,name=databaseObject" json:"databaseObject,omitempty"`
}

func (m *DatabaseSchemaInfo) Reset()                    { *m = DatabaseSchemaInfo{} }
func (m *DatabaseSchemaInfo) String() string            { return proto.CompactTextString(m) }
func (*DatabaseSchemaInfo) ProtoMessage()               {}
func (*DatabaseSchemaInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} }

func (m *DatabaseSchemaInfo) GetSchemaName() string {
	if m != nil {
		return m.SchemaName
	}
	return ""
}

func (m *DatabaseSchemaInfo) GetDatabaseObject() []*DatabaseObject {
	if m != nil {
		return m.DatabaseObject
	}
	return nil
}

type DatabaseObject struct {
	ObjectName string `protobuf:"bytes,1,opt,name=objectName" json:"objectName,omitempty"`
	ObjectType string `protobuf:"bytes,2,opt,name=objectType" json:"objectType,omitempty"`
}

func (m *DatabaseObject) Reset()                    { *m = DatabaseObject{} }
func (m *DatabaseObject) String() string            { return proto.CompactTextString(m) }
func (*DatabaseObject) ProtoMessage()               {}
func (*DatabaseObject) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{72} }

func (m *DatabaseObject) GetObjectName() string {
	if m != nil {
		return m.ObjectName
	}
	return ""
}

func (m *DatabaseObject) GetObjectType() string {
	if m != nil {
		return m.ObjectType
	}
	return ""
}

type DatabaseSchemaObjectResponse struct {
	DatabaseSchemaObject []*DatabaseSchemaObject `protobuf:"bytes,1,rep,name=databaseSchemaObject" json:"databaseSchemaObject,omitempty"`
}

func (m *DatabaseSchemaObjectResponse) Reset()                    { *m = DatabaseSchemaObjectResponse{} }
func (m *DatabaseSchemaObjectResponse) String() string            { return proto.CompactTextString(m) }
func (*DatabaseSchemaObjectResponse) ProtoMessage()               {}
func (*DatabaseSchemaObjectResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} }

func (m *DatabaseSchemaObjectResponse) GetDatabaseSchemaObject() []*DatabaseSchemaObject {
	if m != nil {
		return m.DatabaseSchemaObject
	}
	return nil
}

type DatabaseSchemaObject struct {
	SchemaName        string               `protobuf:"bytes,1,opt,name=schemaName" json:"schemaName,omitempty"`
	SchemaDDL         string               `protobuf:"bytes,2,opt,name=schemaDDL" json:"schemaDDL,omitempty"`
	DatabaseObjectDDL []*DatabaseObjectDDL `protobuf:"bytes,3,rep,name=databaseObjectDDL" json:"databaseObjectDDL,omitempty"`
}

func (m *DatabaseSchemaObject) Reset()                    { *m = DatabaseSchemaObject{} }
func (m *DatabaseSchemaObject) String() string            { return proto.CompactTextString(m) }
func (*DatabaseSchemaObject) ProtoMessage()               {}
func (*DatabaseSchemaObject) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{74} }

func (m *DatabaseSchemaObject) GetSchemaName() string {
	if m != nil {
		return m.SchemaName
	}
	return ""
}

func (m *DatabaseSchemaObject) GetSchemaDDL() string {
	if m != nil {
		return m.SchemaDDL
	}
	return ""
}

func (m *DatabaseSchemaObject) GetDatabaseObjectDDL() []*DatabaseObjectDDL {
	if m != nil {
		return m.DatabaseObjectDDL
	}
	return nil
}

type DatabaseObjectDDL struct {
	DatabaseObject *DatabaseObject `protobuf:"bytes,1,opt,name=databaseObject" json:"databaseObject,omitempty"`
	ObjectDDL      string          `protobuf:"bytes,2,opt,name=objectDDL" json:"objectDDL,omitempty"`
}

func (m *DatabaseObjectDDL) Reset()                    { *m = DatabaseObjectDDL{} }
func (m *DatabaseObjectDDL) String() string            { return proto.CompactTextString(m) }
func (*DatabaseObjectDDL) ProtoMessage()               {}
func (*DatabaseObjectDDL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{75} }

func (m *DatabaseObjectDDL) GetDatabaseObject() *DatabaseObject {
	if m != nil {
		return m.DatabaseObject
	}
	return nil
}

func (m *DatabaseObjectDDL) GetObjectDDL() string {
	if m != nil {
		return m.ObjectDDL
	}
	return ""
}

type DatabaseDiffModifyRequest struct {
	Session       *Session                 `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"`
	CalibratedDSN *DSN                     `protobuf:"bytes,2,opt,name=calibratedDSN" json:"calibratedDSN,omitempty"`
	ObjInfos      []*DatabasDiffSchemaInfo `protobuf:"bytes,3,rep,name=objInfos" json:"objInfos,omitempty"`
}

func (m *DatabaseDiffModifyRequest) Reset()                    { *m = DatabaseDiffModifyRequest{} }
func (m *DatabaseDiffModifyRequest) String() string            { return proto.CompactTextString(m) }
func (*DatabaseDiffModifyRequest) ProtoMessage()               {}
func (*DatabaseDiffModifyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{76} }

func (m *DatabaseDiffModifyRequest) GetSession() *Session {
	if m != nil {
		return m.Session
	}
	return nil
}

func (m *DatabaseDiffModifyRequest) GetCalibratedDSN() *DSN {
	if m != nil {
		return m.CalibratedDSN
	}
	return nil
}

func (m *DatabaseDiffModifyRequest) GetObjInfos() []*DatabasDiffSchemaInfo {
	if m != nil {
		return m.ObjInfos
	}
	return nil
}

type DatabasDiffSchemaInfo struct {
	BaseSchemaName     string            `protobuf:"bytes,1,opt,name=baseSchemaName" json:"baseSchemaName,omitempty"`
	ComparedSchemaName string            `protobuf:"bytes,2,opt,name=comparedSchemaName" json:"comparedSchemaName,omitempty"`
	DatabaseObject     []*DatabaseObject `protobuf:"bytes,3,rep,name=databaseObject" json:"databaseObject,omitempty"`
}

func (m *DatabasDiffSchemaInfo) Reset()                    { *m = DatabasDiffSchemaInfo{} }
func (m *DatabasDiffSchemaInfo) String() string            { return proto.CompactTextString(m) }
func (*DatabasDiffSchemaInfo) ProtoMessage()               {}
func (*DatabasDiffSchemaInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{77} }

func (m *DatabasDiffSchemaInfo) GetBaseSchemaName() string {
	if m != nil {
		return m.BaseSchemaName
	}
	return ""
}

func (m *DatabasDiffSchemaInfo) GetComparedSchemaName() string {
	if m != nil {
		return m.ComparedSchemaName
	}
	return ""
}

func (m *DatabasDiffSchemaInfo) GetDatabaseObject() []*DatabaseObject {
	if m != nil {
		return m.DatabaseObject
	}
	return nil
}

type DatabaseDiffModifyRponse struct {
	SchemaDiffModify []*SchemaDiffModify `protobuf:"bytes,1,rep,name=schemaDiffModify" json:"schemaDiffModify,omitempty"`
}

func (m *DatabaseDiffModifyRponse) Reset()                    { *m = DatabaseDiffModifyRponse{} }
func (m *DatabaseDiffModifyRponse) String() string            { return proto.CompactTextString(m) }
func (*DatabaseDiffModifyRponse) ProtoMessage()               {}
func (*DatabaseDiffModifyRponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{78} }

func (m *DatabaseDiffModifyRponse) GetSchemaDiffModify() []*SchemaDiffModify {
	if m != nil {
		return m.SchemaDiffModify
	}
	return nil
}

type SchemaDiffModify struct {
	SchemaName string   `protobuf:"bytes,1,opt,name=schemaName" json:"schemaName,omitempty"`
	ModifySQLs []string `protobuf:"bytes,2,rep,name=modifySQLs" json:"modifySQLs,omitempty"`
}

func (m *SchemaDiffModify) Reset()                    { *m = SchemaDiffModify{} }
func (m *SchemaDiffModify) String() string            { return proto.CompactTextString(m) }
func (*SchemaDiffModify) ProtoMessage()               {}
func (*SchemaDiffModify) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{79} }

func (m *SchemaDiffModify) GetSchemaName() string {
	if m != nil {
		return m.SchemaName
	}
	return ""
}

func (m *SchemaDiffModify) GetModifySQLs() []string {
	if m != nil {
		return m.ModifySQLs
	}
	return nil
}

func init() {
	proto.RegisterType((*Empty)(nil), "protoV2.Empty")
	proto.RegisterType((*Session)(nil), "protoV2.Session")
	proto.RegisterType((*BackupReq)(nil), "protoV2.BackupReq")
	proto.RegisterType((*BackupRes)(nil), "protoV2.BackupRes")
	proto.RegisterType((*RecommendBackupStrategyReq)(nil), "protoV2.RecommendBackupStrategyReq")
	proto.RegisterType((*RecommendBackupStrategyRes)(nil), "protoV2.RecommendBackupStrategyRes")
	proto.RegisterType((*Param)(nil), "protoV2.Param")
	proto.RegisterType((*DSN)(nil), "protoV2.DSN")
	proto.RegisterType((*Rule)(nil), "protoV2.Rule")
	proto.RegisterType((*I18NRuleInfo)(nil), "protoV2.I18nRuleInfo")
	proto.RegisterType((*Knowledge)(nil), "protoV2.Knowledge")
	proto.RegisterType((*MetasResponse)(nil), "protoV2.MetasResponse")
	proto.RegisterType((*InitRequest)(nil), "protoV2.InitRequest")
	proto.RegisterType((*InitResponse)(nil), "protoV2.InitResponse")
	proto.RegisterType((*CloseRequest)(nil), "protoV2.CloseRequest")
	proto.RegisterType((*KillProcessRequest)(nil), "protoV2.KillProcessRequest")
	proto.RegisterType((*ParsedSQL)(nil), "protoV2.ParsedSQL")
	proto.RegisterType((*ParseRequest)(nil), "protoV2.ParseRequest")
	proto.RegisterType((*Node)(nil), "protoV2.Node")
	proto.RegisterType((*ParseResponse)(nil), "protoV2.ParseResponse")
	proto.RegisterType((*AuditSQL)(nil), "protoV2.AuditSQL")
	proto.RegisterType((*AuditRequest)(nil), "protoV2.AuditRequest")
	proto.RegisterType((*I18NAuditResultInfo)(nil), "protoV2.I18nAuditResultInfo")
	proto.RegisterType((*AuditResult)(nil), "protoV2.AuditResult")
	proto.RegisterType((*AuditResults)(nil), "protoV2.AuditResults")
	proto.RegisterType((*AuditResponse)(nil), "protoV2.AuditResponse")
	proto.RegisterType((*NeedRollbackSQL)(nil), "protoV2.NeedRollbackSQL")
	proto.RegisterType((*GenRollbackSQLRequest)(nil), "protoV2.GenRollbackSQLRequest")
	proto.RegisterType((*I18NRollbackSQLInfo)(nil), "protoV2.I18nRollbackSQLInfo")
	proto.RegisterType((*RollbackSQL)(nil), "protoV2.RollbackSQL")
	proto.RegisterType((*GenRollbackSQLResponse)(nil), "protoV2.GenRollbackSQLResponse")
	proto.RegisterType((*PingRequest)(nil), "protoV2.PingRequest")
	proto.RegisterType((*ExecSQL)(nil), "protoV2.ExecSQL")
	proto.RegisterType((*ExecRequest)(nil), "protoV2.ExecRequest")
	proto.RegisterType((*ExecResult)(nil), "protoV2.ExecResult")
	proto.RegisterType((*ExecBatchRequest)(nil), "protoV2.ExecBatchRequest")
	proto.RegisterType((*ExecBatchResult)(nil), "protoV2.ExecBatchResult")
	proto.RegisterType((*ExecResponse)(nil), "protoV2.ExecResponse")
	proto.RegisterType((*TxRequest)(nil), "protoV2.TxRequest")
	proto.RegisterType((*TxResponse)(nil), "protoV2.TxResponse")
	proto.RegisterType((*ExecErr)(nil), "protoV2.ExecErr")
	proto.RegisterType((*QuerySQL)(nil), "protoV2.QuerySQL")
	proto.RegisterType((*QueryConf)(nil), "protoV2.QueryConf")
	proto.RegisterType((*QueryRequest)(nil), "protoV2.QueryRequest")
	proto.RegisterType((*QueryResponse)(nil), "protoV2.QueryResponse")
	proto.RegisterType((*QueryResultRow)(nil), "protoV2.QueryResultRow")
	proto.RegisterType((*QueryResultValue)(nil), "protoV2.QueryResultValue")
	proto.RegisterType((*ExplainSQL)(nil), "protoV2.ExplainSQL")
	proto.RegisterType((*ExplainRequest)(nil), "protoV2.ExplainRequest")
	proto.RegisterType((*ExplainResponse)(nil), "protoV2.ExplainResponse")
	proto.RegisterType((*ExplainClassicResult)(nil), "protoV2.ExplainClassicResult")
	proto.RegisterType((*GetDatabasesRequest)(nil), "protoV2.GetDatabasesRequest")
	proto.RegisterType((*Database)(nil), "protoV2.Database")
	proto.RegisterType((*GetDatabasesResponse)(nil), "protoV2.GetDatabasesResponse")
	proto.RegisterType((*Table)(nil), "protoV2.Table")
	proto.RegisterType((*GetTableMetaRequest)(nil), "protoV2.GetTableMetaRequest")
	proto.RegisterType((*GetTableMetaResponse)(nil), "protoV2.GetTableMetaResponse")
	proto.RegisterType((*TableMeta)(nil), "protoV2.TableMeta")
	proto.RegisterType((*ColumnsInfo)(nil), "protoV2.ColumnsInfo")
	proto.RegisterType((*IndexesInfo)(nil), "protoV2.IndexesInfo")
	proto.RegisterType((*TabularDataHead)(nil), "protoV2.TabularDataHead")
	proto.RegisterType((*TabularDataRows)(nil), "protoV2.TabularDataRows")
	proto.RegisterType((*TabularData)(nil), "protoV2.TabularData")
	proto.RegisterType((*ExtractedSQL)(nil), "protoV2.ExtractedSQL")
	proto.RegisterType((*ExtractTableFromSQLRequest)(nil), "protoV2.ExtractTableFromSQLRequest")
	proto.RegisterType((*ExtractTableFromSQLResponse)(nil), "protoV2.ExtractTableFromSQLResponse")
	proto.RegisterType((*AffectRowsSQL)(nil), "protoV2.AffectRowsSQL")
	proto.RegisterType((*EstimateSQLAffectRowsRequest)(nil), "protoV2.EstimateSQLAffectRowsRequest")
	proto.RegisterType((*EstimateSQLAffectRowsResponse)(nil), "protoV2.EstimateSQLAffectRowsResponse")
	proto.RegisterType((*KillProcessResponse)(nil), "protoV2.KillProcessResponse")
	proto.RegisterType((*DatabaseObjectInfoRequest)(nil), "protoV2.DatabaseObjectInfoRequest")
	proto.RegisterType((*DatabaseSchemaInfo)(nil), "protoV2.DatabaseSchemaInfo")
	proto.RegisterType((*DatabaseObject)(nil), "protoV2.DatabaseObject")
	proto.RegisterType((*DatabaseSchemaObjectResponse)(nil), "protoV2.DatabaseSchemaObjectResponse")
	proto.RegisterType((*DatabaseSchemaObject)(nil), "protoV2.DatabaseSchemaObject")
	proto.RegisterType((*DatabaseObjectDDL)(nil), "protoV2.DatabaseObjectDDL")
	proto.RegisterType((*DatabaseDiffModifyRequest)(nil), "protoV2.DatabaseDiffModifyRequest")
	proto.RegisterType((*DatabasDiffSchemaInfo)(nil), "protoV2.DatabasDiffSchemaInfo")
	proto.RegisterType((*DatabaseDiffModifyRponse)(nil), "protoV2.DatabaseDiffModifyRponse")
	proto.RegisterType((*SchemaDiffModify)(nil), "protoV2.SchemaDiffModify")
	proto.RegisterEnum("protoV2.BackupStrategy", BackupStrategy_name, BackupStrategy_value)
	proto.RegisterEnum("protoV2.OptionalModule", OptionalModule_name, OptionalModule_value)
}

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

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

// Client API for Driver service

type DriverClient interface {
	// Metas returns some base info from plugin server.
	Metas(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*MetasResponse, error)
	// Init will should be called at first before calling following methods.
	// It will pass some necessary info to plugin server. In the beginning,
	// we consider that put this info to the executable binary environment.
	// We put all communication on gRPC for unification in the end.
	Init(ctx context.Context, in *InitRequest, opts ...grpc.CallOption) (*InitResponse, error)
	Close(ctx context.Context, in *CloseRequest, opts ...grpc.CallOption) (*Empty, error)
	KillProcess(ctx context.Context, in *KillProcessRequest, opts ...grpc.CallOption) (*KillProcessResponse, error)
	// db audit
	Parse(ctx context.Context, in *ParseRequest, opts ...grpc.CallOption) (*ParseResponse, error)
	Audit(ctx context.Context, in *AuditRequest, opts ...grpc.CallOption) (*AuditResponse, error)
	// Deprecated By Backup and RecommendBackupStrategy
	GenRollbackSQL(ctx context.Context, in *GenRollbackSQLRequest, opts ...grpc.CallOption) (*GenRollbackSQLResponse, error)
	// db executor
	Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error)
	Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error)
	ExecBatch(ctx context.Context, in *ExecBatchRequest, opts ...grpc.CallOption) (*ExecBatchResult, error)
	Tx(ctx context.Context, in *TxRequest, opts ...grpc.CallOption) (*TxResponse, error)
	Query(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResponse, error)
	Explain(ctx context.Context, in *ExplainRequest, opts ...grpc.CallOption) (*ExplainResponse, error)
	// db backup
	RecommendBackupStrategy(ctx context.Context, in *RecommendBackupStrategyReq, opts ...grpc.CallOption) (*RecommendBackupStrategyRes, error)
	Backup(ctx context.Context, in *BackupReq, opts ...grpc.CallOption) (*BackupRes, error)
	// db metadata
	GetDatabases(ctx context.Context, in *GetDatabasesRequest, opts ...grpc.CallOption) (*GetDatabasesResponse, error)
	GetTableMeta(ctx context.Context, in *GetTableMetaRequest, opts ...grpc.CallOption) (*GetTableMetaResponse, error)
	ExtractTableFromSQL(ctx context.Context, in *ExtractTableFromSQLRequest, opts ...grpc.CallOption) (*ExtractTableFromSQLResponse, error)
	EstimateSQLAffectRows(ctx context.Context, in *EstimateSQLAffectRowsRequest, opts ...grpc.CallOption) (*EstimateSQLAffectRowsResponse, error)
	GetDatabaseObjectDDL(ctx context.Context, in *DatabaseObjectInfoRequest, opts ...grpc.CallOption) (*DatabaseSchemaObjectResponse, error)
	GetDatabaseDiffModifySQL(ctx context.Context, in *DatabaseDiffModifyRequest, opts ...grpc.CallOption) (*DatabaseDiffModifyRponse, error)
}

type driverClient struct {
	cc *grpc.ClientConn
}

func NewDriverClient(cc *grpc.ClientConn) DriverClient {
	return &driverClient{cc}
}

func (c *driverClient) Metas(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*MetasResponse, error) {
	out := new(MetasResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Metas", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Init(ctx context.Context, in *InitRequest, opts ...grpc.CallOption) (*InitResponse, error) {
	out := new(InitResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Init", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Close(ctx context.Context, in *CloseRequest, opts ...grpc.CallOption) (*Empty, error) {
	out := new(Empty)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Close", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) KillProcess(ctx context.Context, in *KillProcessRequest, opts ...grpc.CallOption) (*KillProcessResponse, error) {
	out := new(KillProcessResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/KillProcess", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Parse(ctx context.Context, in *ParseRequest, opts ...grpc.CallOption) (*ParseResponse, error) {
	out := new(ParseResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Parse", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Audit(ctx context.Context, in *AuditRequest, opts ...grpc.CallOption) (*AuditResponse, error) {
	out := new(AuditResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Audit", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) GenRollbackSQL(ctx context.Context, in *GenRollbackSQLRequest, opts ...grpc.CallOption) (*GenRollbackSQLResponse, error) {
	out := new(GenRollbackSQLResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/GenRollbackSQL", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*Empty, error) {
	out := new(Empty)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Ping", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Exec(ctx context.Context, in *ExecRequest, opts ...grpc.CallOption) (*ExecResponse, error) {
	out := new(ExecResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Exec", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) ExecBatch(ctx context.Context, in *ExecBatchRequest, opts ...grpc.CallOption) (*ExecBatchResult, error) {
	out := new(ExecBatchResult)
	err := grpc.Invoke(ctx, "/protoV2.Driver/ExecBatch", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Tx(ctx context.Context, in *TxRequest, opts ...grpc.CallOption) (*TxResponse, error) {
	out := new(TxResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Tx", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Query(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResponse, error) {
	out := new(QueryResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Query", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Explain(ctx context.Context, in *ExplainRequest, opts ...grpc.CallOption) (*ExplainResponse, error) {
	out := new(ExplainResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Explain", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) RecommendBackupStrategy(ctx context.Context, in *RecommendBackupStrategyReq, opts ...grpc.CallOption) (*RecommendBackupStrategyRes, error) {
	out := new(RecommendBackupStrategyRes)
	err := grpc.Invoke(ctx, "/protoV2.Driver/RecommendBackupStrategy", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) Backup(ctx context.Context, in *BackupReq, opts ...grpc.CallOption) (*BackupRes, error) {
	out := new(BackupRes)
	err := grpc.Invoke(ctx, "/protoV2.Driver/Backup", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) GetDatabases(ctx context.Context, in *GetDatabasesRequest, opts ...grpc.CallOption) (*GetDatabasesResponse, error) {
	out := new(GetDatabasesResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/GetDatabases", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) GetTableMeta(ctx context.Context, in *GetTableMetaRequest, opts ...grpc.CallOption) (*GetTableMetaResponse, error) {
	out := new(GetTableMetaResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/GetTableMeta", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) ExtractTableFromSQL(ctx context.Context, in *ExtractTableFromSQLRequest, opts ...grpc.CallOption) (*ExtractTableFromSQLResponse, error) {
	out := new(ExtractTableFromSQLResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/ExtractTableFromSQL", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) EstimateSQLAffectRows(ctx context.Context, in *EstimateSQLAffectRowsRequest, opts ...grpc.CallOption) (*EstimateSQLAffectRowsResponse, error) {
	out := new(EstimateSQLAffectRowsResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/EstimateSQLAffectRows", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) GetDatabaseObjectDDL(ctx context.Context, in *DatabaseObjectInfoRequest, opts ...grpc.CallOption) (*DatabaseSchemaObjectResponse, error) {
	out := new(DatabaseSchemaObjectResponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/GetDatabaseObjectDDL", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *driverClient) GetDatabaseDiffModifySQL(ctx context.Context, in *DatabaseDiffModifyRequest, opts ...grpc.CallOption) (*DatabaseDiffModifyRponse, error) {
	out := new(DatabaseDiffModifyRponse)
	err := grpc.Invoke(ctx, "/protoV2.Driver/GetDatabaseDiffModifySQL", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Driver service

type DriverServer interface {
	// Metas returns some base info from plugin server.
	Metas(context.Context, *Empty) (*MetasResponse, error)
	// Init will should be called at first before calling following methods.
	// It will pass some necessary info to plugin server. In the beginning,
	// we consider that put this info to the executable binary environment.
	// We put all communication on gRPC for unification in the end.
	Init(context.Context, *InitRequest) (*InitResponse, error)
	Close(context.Context, *CloseRequest) (*Empty, error)
	KillProcess(context.Context, *KillProcessRequest) (*KillProcessResponse, error)
	// db audit
	Parse(context.Context, *ParseRequest) (*ParseResponse, error)
	Audit(context.Context, *AuditRequest) (*AuditResponse, error)
	// Deprecated By Backup and RecommendBackupStrategy
	GenRollbackSQL(context.Context, *GenRollbackSQLRequest) (*GenRollbackSQLResponse, error)
	// db executor
	Ping(context.Context, *PingRequest) (*Empty, error)
	Exec(context.Context, *ExecRequest) (*ExecResponse, error)
	ExecBatch(context.Context, *ExecBatchRequest) (*ExecBatchResult, error)
	Tx(context.Context, *TxRequest) (*TxResponse, error)
	Query(context.Context, *QueryRequest) (*QueryResponse, error)
	Explain(context.Context, *ExplainRequest) (*ExplainResponse, error)
	// db backup
	RecommendBackupStrategy(context.Context, *RecommendBackupStrategyReq) (*RecommendBackupStrategyRes, error)
	Backup(context.Context, *BackupReq) (*BackupRes, error)
	// db metadata
	GetDatabases(context.Context, *GetDatabasesRequest) (*GetDatabasesResponse, error)
	GetTableMeta(context.Context, *GetTableMetaRequest) (*GetTableMetaResponse, error)
	ExtractTableFromSQL(context.Context, *ExtractTableFromSQLRequest) (*ExtractTableFromSQLResponse, error)
	EstimateSQLAffectRows(context.Context, *EstimateSQLAffectRowsRequest) (*EstimateSQLAffectRowsResponse, error)
	GetDatabaseObjectDDL(context.Context, *DatabaseObjectInfoRequest) (*DatabaseSchemaObjectResponse, error)
	GetDatabaseDiffModifySQL(context.Context, *DatabaseDiffModifyRequest) (*DatabaseDiffModifyRponse, error)
}

func RegisterDriverServer(s *grpc.Server, srv DriverServer) {
	s.RegisterService(&_Driver_serviceDesc, srv)
}

func _Driver_Metas_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Metas(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Metas",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Metas(ctx, req.(*Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Init_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(InitRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Init(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Init",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Init(ctx, req.(*InitRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Close_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CloseRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Close(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Close",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Close(ctx, req.(*CloseRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_KillProcess_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(KillProcessRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).KillProcess(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/KillProcess",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).KillProcess(ctx, req.(*KillProcessRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Parse_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ParseRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Parse(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Parse",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Parse(ctx, req.(*ParseRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Audit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AuditRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Audit(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Audit",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Audit(ctx, req.(*AuditRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_GenRollbackSQL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GenRollbackSQLRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).GenRollbackSQL(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/GenRollbackSQL",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).GenRollbackSQL(ctx, req.(*GenRollbackSQLRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PingRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Ping(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Ping",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Ping(ctx, req.(*PingRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Exec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ExecRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Exec(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Exec",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Exec(ctx, req.(*ExecRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_ExecBatch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ExecBatchRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).ExecBatch(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/ExecBatch",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).ExecBatch(ctx, req.(*ExecBatchRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Tx_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TxRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Tx(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Tx",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Tx(ctx, req.(*TxRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Query_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(QueryRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Query(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Query",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Query(ctx, req.(*QueryRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Explain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ExplainRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Explain(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Explain",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Explain(ctx, req.(*ExplainRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_RecommendBackupStrategy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RecommendBackupStrategyReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).RecommendBackupStrategy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/RecommendBackupStrategy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).RecommendBackupStrategy(ctx, req.(*RecommendBackupStrategyReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_Backup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(BackupReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).Backup(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/Backup",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).Backup(ctx, req.(*BackupReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_GetDatabases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDatabasesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).GetDatabases(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/GetDatabases",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).GetDatabases(ctx, req.(*GetDatabasesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_GetTableMeta_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTableMetaRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).GetTableMeta(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/GetTableMeta",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).GetTableMeta(ctx, req.(*GetTableMetaRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_ExtractTableFromSQL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ExtractTableFromSQLRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).ExtractTableFromSQL(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/ExtractTableFromSQL",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).ExtractTableFromSQL(ctx, req.(*ExtractTableFromSQLRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_EstimateSQLAffectRows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(EstimateSQLAffectRowsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).EstimateSQLAffectRows(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/EstimateSQLAffectRows",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).EstimateSQLAffectRows(ctx, req.(*EstimateSQLAffectRowsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_GetDatabaseObjectDDL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DatabaseObjectInfoRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).GetDatabaseObjectDDL(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/GetDatabaseObjectDDL",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).GetDatabaseObjectDDL(ctx, req.(*DatabaseObjectInfoRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Driver_GetDatabaseDiffModifySQL_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DatabaseDiffModifyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DriverServer).GetDatabaseDiffModifySQL(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/protoV2.Driver/GetDatabaseDiffModifySQL",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DriverServer).GetDatabaseDiffModifySQL(ctx, req.(*DatabaseDiffModifyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Driver_serviceDesc = grpc.ServiceDesc{
	ServiceName: "protoV2.Driver",
	HandlerType: (*DriverServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Metas",
			Handler:    _Driver_Metas_Handler,
		},
		{
			MethodName: "Init",
			Handler:    _Driver_Init_Handler,
		},
		{
			MethodName: "Close",
			Handler:    _Driver_Close_Handler,
		},
		{
			MethodName: "KillProcess",
			Handler:    _Driver_KillProcess_Handler,
		},
		{
			MethodName: "Parse",
			Handler:    _Driver_Parse_Handler,
		},
		{
			MethodName: "Audit",
			Handler:    _Driver_Audit_Handler,
		},
		{
			MethodName: "GenRollbackSQL",
			Handler:    _Driver_GenRollbackSQL_Handler,
		},
		{
			MethodName: "Ping",
			Handler:    _Driver_Ping_Handler,
		},
		{
			MethodName: "Exec",
			Handler:    _Driver_Exec_Handler,
		},
		{
			MethodName: "ExecBatch",
			Handler:    _Driver_ExecBatch_Handler,
		},
		{
			MethodName: "Tx",
			Handler:    _Driver_Tx_Handler,
		},
		{
			MethodName: "Query",
			Handler:    _Driver_Query_Handler,
		},
		{
			MethodName: "Explain",
			Handler:    _Driver_Explain_Handler,
		},
		{
			MethodName: "RecommendBackupStrategy",
			Handler:    _Driver_RecommendBackupStrategy_Handler,
		},
		{
			MethodName: "Backup",
			Handler:    _Driver_Backup_Handler,
		},
		{
			MethodName: "GetDatabases",
			Handler:    _Driver_GetDatabases_Handler,
		},
		{
			MethodName: "GetTableMeta",
			Handler:    _Driver_GetTableMeta_Handler,
		},
		{
			MethodName: "ExtractTableFromSQL",
			Handler:    _Driver_ExtractTableFromSQL_Handler,
		},
		{
			MethodName: "EstimateSQLAffectRows",
			Handler:    _Driver_EstimateSQLAffectRows_Handler,
		},
		{
			MethodName: "GetDatabaseObjectDDL",
			Handler:    _Driver_GetDatabaseObjectDDL_Handler,
		},
		{
			MethodName: "GetDatabaseDiffModifySQL",
			Handler:    _Driver_GetDatabaseDiffModifySQL_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "driver_v2.proto",
}

func init() { proto.RegisterFile("driver_v2.proto", fileDescriptor0) }

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