From 1d0ce09952a8df244c5ea28559b92a1ee72b22c0 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 27 Dec 2024 11:00:54 +0800 Subject: [PATCH 01/74] update ci --- .gitlab-ci.yml | 51 ++++++++++++++++++++------------------------------ 1 file changed, 20 insertions(+), 31 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2fb8ee8..8e2e145 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,15 +1,14 @@ stages: - lock - build - - save - - sync - unlock variables: - ProjectPath: "mongo.games.com/game" # 项目相对于GOPATH的路径 + GOPROXY: "https://goproxy.cn,direct" + GOPATH: "/home/gopath" + GoServerSrcPath: "mongo.games.com/goserver" # 项目相对于GOPATH/src的路径 BetaBinPath: "/home/game/" # beta环境部署路径 DevelopBinPath: "/home/game/" # develop环境部署路径 - GOPROXY: "https://goproxy.cn,direct" default: tags: @@ -26,12 +25,12 @@ lock_job: stage: lock script: - | - if [ -f /tmp/ci_lock ]; then - echo "流水线已在运行,等待..." + if [ -f /tmp/ci_lock_$CI_COMMIT_REF_NAME ]; then + echo "流水线($CI_COMMIT_REF_NAME)已在运行,等待..." exit 1 else - touch /tmp/ci_lock - echo "获得锁定,开始流水线。" + touch /tmp/ci_lock_$CI_COMMIT_REF_NAME + echo "获得锁定,开始流水线($CI_COMMIT_REF_NAME)。" fi build-job: @@ -40,20 +39,21 @@ build-job: - develop - release script: + # 拉取代码 - git checkout $CI_COMMIT_REF_NAME - git pull origin $CI_COMMIT_REF_NAME + + # 替换 go.mod 中的 ../goserver + - sed -i "s|mongo.games.com/goserver => .*|mongo.games.com/goserver => $GOPATH/src/$GoServerSrcPath|" go.mod + - if [ ! -z "$(git status --porcelain go.mod go.sum)" ]; then GOMODTIDY=1; fi - # 拷贝到GOPATH - - echo '拷贝到GOPATH' - - rsync -rvc --no-perms --delete ./* $GOPATH/src/$ProjectPath - # 进入项目目录 - - cd $GOPATH/src/$ProjectPath + # 编译 - echo '编译' - if [ "$GOMODTIDY" == 1 ]; then - go mod tidy; + go mod tidy; fi - | while IFS= read -r line || [[ -n $line ]] @@ -64,19 +64,13 @@ build-job: cd .. done < ./programs.txt -save-job: - stage: save - only: - - develop - - release - script: - - cd $GOPATH/src/$ProjectPath # 拷贝文件 - echo '拷贝文件' - rm -rf ./temp - mkdir ./temp - mkdir ./temp/data - cp -rfp ./data/* ./temp/data + # 删除自定义配置 - echo '删除自定义配置' - | @@ -85,6 +79,7 @@ save-job: echo "删除 $line 配置" rm ./temp/data/$line done < ./exclude.txt + # 拷贝可执行程序 - echo '拷贝可执行程序' - | @@ -94,13 +89,7 @@ save-job: mv ./$line/$line ./temp/$line done < ./programs.txt -sync_job: - stage: sync - only: - - develop - - release - script: - - cd $GOPATH/src/$ProjectPath + # 获取部署环境信息 - if [ "$CI_COMMIT_BRANCH" == "develop" ]; then SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_DEVELOP"; REMOTE_HOST="$REMOTE_HOST_DEVELOP"; @@ -129,7 +118,7 @@ sync_job: - echo "同步到服务器" - echo "Deploying to remote server using rsync... $BinPath" - rsync -rvz --delete ./temp/ $REMOTE_USER@$REMOTE_HOST:$BinPath - + # 触发部署 - "curl -X POST --fail -F token=$SERVER_CI_TOKEN -F ref=release -F variables[ServerName]=$ServerName https://git.pogorockgames.com/api/v4/projects/31/trigger/pipeline" @@ -137,6 +126,6 @@ sync_job: unlock_job: stage: unlock script: - - rm -f /tmp/ci_lock - - echo "释放锁定,流水线结束。" + - rm -f /tmp/ci_lock_$CI_COMMIT_REF_NAME + - echo "释放锁定,流水线结束(/$CI_COMMIT_REF_NAME)。" when: always \ No newline at end of file From d8bee4bd7318ec6279ceb97f0bc46d9d9233f2c7 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 27 Dec 2024 10:35:07 +0800 Subject: [PATCH 02/74] update excel --- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 5519 -> 5519 bytes srvdata/db_game_bankruptcy.go | 77 ---------------------------------- 3 files changed, 77 deletions(-) delete mode 100644 srvdata/db_game_bankruptcy.go diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 4cba38b2ee99301479f655deafb1443fb5300d51..109f948e7fca12cd4f604e1b15095711569b7f8e 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ1(m-IrEfs# zn`r98IUwf4?17mNHWz3=iasD8-CUTv!0u7v1iPbQ?IRYhSPmAjLtqZL19bpQ1I!{^ W7Qh^Y>QQ!%ML>^!Vdi3>Ed&5&Dm*m+ literal 384 zcmd-w<6snElw#w!-o^~3FGJ}oQ2HvAz6PR|I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwf4>_JzL)jpuRVCI9(1MqhakM7Oq$h78Hkr9g5^3bOY`{9f)or Tii4EcITisu`h}T`fwm9;Why*1 diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 1ed281a3fdd7f732002366f1766bd22f975fc9cc..d5ee83faae86d0c2d63ff030e04c3aaf63e20efc 100644 GIT binary patch delta 256 zcmeCz?$@4BF385Qq?b)V#EXMtA&@>Wi)UkpI3t?qg*N8N8yJnDqH-{`Ew-D#Fh(;? zZs8G`oXoNdD1EVwS%3*DJz*jLWLu$N8Xz$_jwHjX7gmdM5qaYm@ Date: Tue, 24 Dec 2024 17:12:14 +0800 Subject: [PATCH 03/74] =?UTF-8?q?add=20rpc=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/config.json | 3 + dbproxy/monitormgr.go | 85 +++++++++++++++++++ dbproxy/rpcstate.go | 75 ++++++++++++++++ dbproxy/svc/m_monitor.go | 4 + gamesrv/base/monitormgr.go | 133 ----------------------------- gob_register.go | 47 +++++++++++ mgrsrv/monitormgr.go | 147 -------------------------------- model/monitor.go | 58 +++++++++++++ robot/base/monitormgr.go | 115 ------------------------- rpc/rpclient.go | 39 ++++++++- rpc/rpcstate.go | 29 +++++++ worldsrv/main.go | 1 + worldsrv/monitor.go | 51 +++++++++++ worldsrv/monitormgr.go | 169 ------------------------------------- 14 files changed, 389 insertions(+), 567 deletions(-) create mode 100644 dbproxy/monitormgr.go create mode 100644 dbproxy/rpcstate.go delete mode 100644 gamesrv/base/monitormgr.go create mode 100644 gob_register.go delete mode 100644 mgrsrv/monitormgr.go delete mode 100644 robot/base/monitormgr.go create mode 100644 rpc/rpcstate.go create mode 100644 worldsrv/monitor.go delete mode 100644 worldsrv/monitormgr.go diff --git a/dbproxy/config.json b/dbproxy/config.json index e97d4bb..f0eccd8 100644 --- a/dbproxy/config.json +++ b/dbproxy/config.json @@ -47,6 +47,9 @@ "data":{ "RootPath":"../data" }, + "mongox": { + "Path": "./etc/mgo.json" + }, "etcd": { "Url": ["127.0.0.1:2379"], "UserName": "", diff --git a/dbproxy/monitormgr.go b/dbproxy/monitormgr.go new file mode 100644 index 0000000..9be8493 --- /dev/null +++ b/dbproxy/monitormgr.go @@ -0,0 +1,85 @@ +package main + +import ( + "context" + "fmt" + "time" + + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" + "mongo.games.com/goserver/core/mongox" + "mongo.games.com/goserver/core/task" + + "mongo.games.com/game/common" + "mongo.games.com/game/model" +) + +func init() { + //module.RegisteModule(new(MonitorMgr), time.Second*30, 0) +} + +type MonitorData struct { + SrvId int32 //服务器id + SrvType int32 //服务器类型 + Key string //自定义key + Time time.Time //时间戳 + Data interface{} //数据体 +} + +type MonitorMgr struct { +} + +func (m *MonitorMgr) ModuleName() string { + return "MonitorMgr" +} + +func (m *MonitorMgr) Init() { + +} + +func (m *MonitorMgr) Update() { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + var updates []mongo.WriteModel + for k, v := range GetPPCState() { + d := &MonitorData{ + SrvId: int32(common.GetSelfSrvId()), + SrvType: int32(common.GetSelfSrvType()), + Key: k, + Time: time.Now(), + Data: v, + } + updates = append(updates, + mongo.NewUpdateOneModel(). + SetFilter(bson.M{"srvid": d.SrvId, "srvtype": d.SrvType, "key": d.Key}). + SetUpdate(bson.M{"$set": d}).SetUpsert(true)) + } + + if len(updates) == 0 { + return nil + } + + c, err := mongox.GetGlobalMonitorCollection(fmt.Sprintf("%s_rpc", model.MonitorPrefixName)) + if err != nil { + logger.Logger.Errorf("MonitorMgr Update get collection failed") + return nil + } + + opts := options.BulkWrite().SetOrdered(false) // SetOrdered(false) 表示并行执行 + _, err = c.BulkWrite(context.Background(), updates, opts) + if err != nil { + logger.Logger.Errorf("MonitorMgr Update bulk write failed: %v", err) + return nil + } + + return nil + }), nil, "MonitorMgr_Update").StartByFixExecutor("MonitorMgr") +} + +func (m *MonitorMgr) Shutdown() { + module.UnregisteModule(m) +} diff --git a/dbproxy/rpcstate.go b/dbproxy/rpcstate.go new file mode 100644 index 0000000..4f94637 --- /dev/null +++ b/dbproxy/rpcstate.go @@ -0,0 +1,75 @@ +package main + +import ( + "sync" + "time" +) + +const Timeout = 30 * time.Second + +type RPCState struct { + RunTimes int64 //执行次数 + TotalRuningTime int64 //总执行时间 + MaxRuningTime int64 //最长执行时间 + TimeoutTimes int64 //执行超时次数 大于30秒的次数 + FailTimes int64 //执行失败次数 + SuccessTimes int64 //执行成功次数 +} + +var RPCStateMgr = make(map[string]*RPCState) +var RPCStateMgrLock = sync.RWMutex{} + +func GetPPCState() map[string]*RPCState { + ret := make(map[string]*RPCState) + RPCStateMgrLock.RLock() + defer RPCStateMgrLock.RUnlock() + for k, v := range RPCStateMgr { + e := *v // 复制一份 + ret[k] = &e + } + return ret +} + +//func loggingMiddleware(h http.Handler) http.Handler { +// return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { +// RPCStateMgrLock.Lock() +// state, ok := RPCStateMgr[r.URL.Path] +// if !ok { +// state = &RPCState{} +// RPCStateMgr[r.URL.Path] = state +// } +// RPCStateMgrLock.Unlock() +// +// // 记录请求的时间戳 +// start := time.Now() +// +// var buf bytes.Buffer +// if r.Body != nil { +// tee := io.TeeReader(r.Body, &buf) +// r.Body = io.NopCloser(tee) +// } +// +// logger.Logger.Infof("==>RPC %s %s %s", r.Method, r.URL.Path, buf.String()) +// // 包装响应写入器以捕获响应内容 +// rw := &responseWriter{w, http.StatusOK} +// h.ServeHTTP(rw, r) +// // 记录请求完成时间和响应状态码 +// duration := time.Since(start).Milliseconds() +// +// RPCStateMgrLock.Lock() +// state.RunTimes++ +// state.TotalRuningTime += duration +// if duration > state.MaxRuningTime { +// state.MaxRuningTime = duration +// } +// if duration > Timeout.Milliseconds() { +// state.TimeoutTimes++ +// } +// if rw.statusCode != http.StatusOK { +// state.FailTimes++ +// } else { +// state.SuccessTimes++ +// } +// RPCStateMgrLock.Unlock() +// }) +//} diff --git a/dbproxy/svc/m_monitor.go b/dbproxy/svc/m_monitor.go index f3ffef5..1c84975 100644 --- a/dbproxy/svc/m_monitor.go +++ b/dbproxy/svc/m_monitor.go @@ -13,6 +13,7 @@ import ( "mongo.games.com/game/dbproxy/mongo" "mongo.games.com/game/mgrsrv/api" "mongo.games.com/game/model" + rpcx "mongo.games.com/game/rpc" "mongo.games.com/game/webapi" "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" @@ -136,6 +137,9 @@ func init() { gob.Register(basic.CmdStats{}) gob.Register(map[string]basic.CmdStats{}) gob.Register(utils.RuntimeStats{}) + gob.Register(rpcx.State{}) + gob.Register(map[string]rpcx.State{}) + //gob registe rpc.Register(new(MonitorDataSvc)) diff --git a/gamesrv/base/monitormgr.go b/gamesrv/base/monitormgr.go deleted file mode 100644 index b2e3e39..0000000 --- a/gamesrv/base/monitormgr.go +++ /dev/null @@ -1,133 +0,0 @@ -package base - -import ( - "encoding/gob" - "mongo.games.com/game/common" - "mongo.games.com/game/model" - "mongo.games.com/goserver/core" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/module" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/core/profile" - "mongo.games.com/goserver/core/schedule" - "mongo.games.com/goserver/core/task" - "mongo.games.com/goserver/core/transact" - "mongo.games.com/goserver/core/utils" - "time" -) - -var MonitorMgrSington = &MonitorMgr{} - -type MonitorMgr struct { -} - -func (this *MonitorMgr) ModuleName() string { - return "MonitorMgr" -} - -func (this *MonitorMgr) Init() { - -} - -func (this *MonitorMgr) Update() { - //logic stats - logicStats := profile.GetStats() - if len(logicStats) > 0 { - logLogic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", logicStats) - if logLogic != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("logic", logLogic) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //net session stats - netStats := netlib.Stats() - if len(netStats) > 0 { - logNet := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", netStats) - if logNet != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("net", logNet) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //schedule stats - jobStats := schedule.Stats() - if len(jobStats) > 0 { - logJob := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", jobStats) - if logJob != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("job", logJob) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //trans stats - transStats := transact.Stats() - if len(transStats) > 0 { - logTrans := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", transStats) - if logTrans != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("transact", logTrans) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //panic stats - panicStats := utils.GetPanicStats() - if len(panicStats) > 0 { - for key, stats := range panicStats { - logPanic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), key, stats) - if logPanic != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("panic", logPanic) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - } - - //object command quene stats - objStats := core.AppCtx.GetStats() - if len(objStats) > 0 { - logCmd := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "obj", objStats) - if logCmd != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("cmdque", logCmd) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //gorouting count, eg. system info - runtimeStats := utils.StatsRuntime() - logRuntime := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", runtimeStats) - if logRuntime != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.InsertMonitorData("runtime", logRuntime) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } -} - -func (this *MonitorMgr) Shutdown() { - module.UnregisteModule(this) -} - -func init() { - //gob registe - gob.Register(profile.TimeElement{}) - gob.Register(map[string]profile.TimeElement{}) - gob.Register(netlib.ServiceStats{}) - gob.Register(map[int]netlib.ServiceStats{}) - gob.Register(schedule.TaskStats{}) - gob.Register(map[string]schedule.TaskStats{}) - gob.Register(transact.TransStats{}) - gob.Register(map[int]transact.TransStats{}) - gob.Register(utils.PanicStackInfo{}) - gob.Register(map[string]utils.PanicStackInfo{}) - gob.Register(basic.CmdStats{}) - gob.Register(map[string]basic.CmdStats{}) - gob.Register(utils.RuntimeStats{}) - //gob registe - - module.RegisteModule(MonitorMgrSington, time.Minute*5, 0) -} diff --git a/gob_register.go b/gob_register.go new file mode 100644 index 0000000..04eabc0 --- /dev/null +++ b/gob_register.go @@ -0,0 +1,47 @@ +package win88 + +import ( + "encoding/gob" + + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/core/profile" + "mongo.games.com/goserver/core/schedule" + "mongo.games.com/goserver/core/transact" + "mongo.games.com/goserver/core/utils" + + "mongo.games.com/game/mgrsrv/api" + "mongo.games.com/game/model" + "mongo.games.com/game/rpc" +) + +func init() { + gob.Register(utils.RuntimeStats{}) + + gob.Register(model.PlayerOLStats{}) + gob.Register(map[string]*model.APITransactStats{}) + + gob.Register(rpc.State{}) + gob.Register(map[string]rpc.State{}) + + gob.Register(api.ApiStats{}) + gob.Register(map[string]api.ApiStats{}) + + gob.Register(profile.TimeElement{}) + gob.Register(map[string]profile.TimeElement{}) + + gob.Register(netlib.ServiceStats{}) + gob.Register(map[int]netlib.ServiceStats{}) + + gob.Register(schedule.TaskStats{}) + gob.Register(map[string]schedule.TaskStats{}) + + gob.Register(transact.TransStats{}) + gob.Register(map[int]transact.TransStats{}) + + gob.Register(utils.PanicStackInfo{}) + gob.Register(map[string]utils.PanicStackInfo{}) + + gob.Register(basic.CmdStats{}) + gob.Register(map[string]basic.CmdStats{}) +} diff --git a/mgrsrv/monitormgr.go b/mgrsrv/monitormgr.go deleted file mode 100644 index c24567b..0000000 --- a/mgrsrv/monitormgr.go +++ /dev/null @@ -1,147 +0,0 @@ -package main - -import ( - "encoding/gob" - "mongo.games.com/game/common" - "mongo.games.com/game/mgrsrv/api" - "mongo.games.com/game/model" - "mongo.games.com/goserver/core" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/module" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/core/profile" - "mongo.games.com/goserver/core/schedule" - "mongo.games.com/goserver/core/task" - "mongo.games.com/goserver/core/transact" - "mongo.games.com/goserver/core/utils" - "time" -) - -var MonitorMgrSington = &MonitorMgr{} - -type MonitorMgr struct { -} - -func (this *MonitorMgr) ModuleName() string { - return "MonitorMgr" -} - -func (this *MonitorMgr) Init() { - -} - -func (this *MonitorMgr) Update() { - //webapi stats - apiStats := api.Stats() - if len(apiStats) > 0 { - log := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", apiStats) - if log != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("webapi", log) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //logic stats - logicStats := profile.GetStats() - if len(logicStats) > 0 { - logLogic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", logicStats) - if logLogic != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("logic", logLogic) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //net session stats - netStats := netlib.Stats() - if len(netStats) > 0 { - logNet := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", netStats) - if logNet != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("net", logNet) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //schedule stats - jobStats := schedule.Stats() - if len(jobStats) > 0 { - logJob := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", jobStats) - if logJob != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("job", logJob) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //trans stats - transStats := transact.Stats() - if len(transStats) > 0 { - logTrans := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", transStats) - if logTrans != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("transact", logTrans) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //panic stats - panicStats := utils.GetPanicStats() - if len(panicStats) > 0 { - for key, stats := range panicStats { - logPanic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), key, stats) - if logPanic != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("panic", logPanic) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - } - - //object command quene stats - objStats := core.AppCtx.GetStats() - if len(objStats) > 0 { - logCmd := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "obj", objStats) - if logCmd != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("cmdque", logCmd) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //gorouting count, eg. system info - runtimeStats := utils.StatsRuntime() - logRuntime := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", runtimeStats) - if logRuntime != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.InsertMonitorData("runtime", logRuntime) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } -} - -func (this *MonitorMgr) Shutdown() { - module.UnregisteModule(this) -} - -func init() { - //gob registe - gob.Register(api.ApiStats{}) - gob.Register(map[string]api.ApiStats{}) - gob.Register(profile.TimeElement{}) - gob.Register(map[string]profile.TimeElement{}) - gob.Register(netlib.ServiceStats{}) - gob.Register(map[int]netlib.ServiceStats{}) - gob.Register(schedule.TaskStats{}) - gob.Register(map[string]schedule.TaskStats{}) - gob.Register(transact.TransStats{}) - gob.Register(map[int]transact.TransStats{}) - gob.Register(utils.PanicStackInfo{}) - gob.Register(map[string]utils.PanicStackInfo{}) - gob.Register(basic.CmdStats{}) - gob.Register(map[string]basic.CmdStats{}) - gob.Register(utils.RuntimeStats{}) - //gob registe - - module.RegisteModule(MonitorMgrSington, time.Minute*5, 0) -} diff --git a/model/monitor.go b/model/monitor.go index 1085f9c..db1215a 100644 --- a/model/monitor.go +++ b/model/monitor.go @@ -5,7 +5,11 @@ import ( "github.com/globalsign/mgo" "github.com/globalsign/mgo/bson" + "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/task" + + "mongo.games.com/game/common" ) var ( @@ -85,6 +89,60 @@ func RemoveMonitorData(t time.Time) (chged []*mgo.ChangeInfo, err error) { return } +type MonitorTool[T any] struct { + CollectionName string +} + +func NewMonitorTool[T any](collectionName string) *MonitorTool[T] { + return &MonitorTool[T]{ + CollectionName: collectionName, + } +} + +func (m *MonitorTool[T]) Insert(key string, state *T) { + d := NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), key, state) + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + return InsertMonitorData(m.CollectionName, d) + }), nil, "InsertMonitorData").StartByFixExecutor("monitor") + +} + +func (m *MonitorTool[T]) InsertKV(kv map[string]*T) { + // todo 批量插入 + for k, v := range kv { + m.Insert(k, v) + } +} + +func (m *MonitorTool[T]) Upsert(key string, state *T) { + d := NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), key, state) + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + return UpsertMonitorData(m.CollectionName, d) + }), nil, "UpsertMonitorData").StartByFixExecutor("monitor") +} + +func (m *MonitorTool[T]) UpsertKV(kv map[string]*T) { + //todo 批量更新 + for k, v := range kv { + m.Upsert(k, v) + } +} + +// Remove 清理监控日志 +func Remove(t time.Time) { + if t.IsZero() { + return + } + + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + _, err := RemoveMonitorData(t) + if err != nil { + logger.Logger.Error("RemoveMonitorData error:", err) + } + return nil + }), nil, "RemoveMonitorData").StartByFixExecutor("monitor") +} + type PlayerOLStats struct { PlatformStats map[string]*PlayerStats RobotStats PlayerStats diff --git a/robot/base/monitormgr.go b/robot/base/monitormgr.go deleted file mode 100644 index 6e96738..0000000 --- a/robot/base/monitormgr.go +++ /dev/null @@ -1,115 +0,0 @@ -package base - -import ( - "mongo.games.com/goserver/core/module" -) - -var MonitorMgrSington = &MonitorMgr{} - -type MonitorMgr struct { -} - -func (this *MonitorMgr) ModuleName() string { - return "MonitorMgr" -} - -func (this *MonitorMgr) Init() { - -} - -func (this *MonitorMgr) Update() { - //mongodb stats - //mgo.SetStats(true) - //mgoStats := mgo.GetStats() - //logMgo := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", mgoStats) - //if logMgo != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.InsertMonitorData("mgo", logMgo) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - //} - // - ////logic stats - //logicStats := profile.GetStats() - //if len(logicStats) > 0 { - // logLogic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", logicStats) - // if logLogic != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.UpsertMonitorData("logic", logLogic) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - // } - //} - // - ////net session stats - //netStats := netlib.Stats() - //if len(netStats) > 0 { - // logNet := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", netStats) - // if logNet != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.UpsertMonitorData("net", logNet) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - // } - //} - // - ////schedule stats - //jobStats := schedule.Stats() - //if len(jobStats) > 0 { - // logJob := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", jobStats) - // if logJob != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.UpsertMonitorData("job", logJob) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - // } - //} - // - ////trans stats - //transStats := transact.Stats() - //if len(transStats) > 0 { - // logTrans := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", transStats) - // if logTrans != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.UpsertMonitorData("transact", logTrans) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - // } - //} - // - ////panic stats - //panicStats := utils.GetPanicStats() - //if len(panicStats) > 0 { - // for key, stats := range panicStats { - // logPanic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), key, stats) - // if logPanic != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.UpsertMonitorData("panic", logPanic) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - // } - // } - //} - // - ////object command quene stats - //objStats := core.AppCtx.GetStats() - //if len(objStats) > 0 { - // logCmd := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "obj", objStats) - // if logCmd != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.UpsertMonitorData("cmdque", logCmd) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - // } - //} - // - ////gorouting count, eg. system info - //runtimeStats := utils.StatsRuntime() - //logRuntime := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", runtimeStats) - //if logRuntime != nil { - // task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // return model.InsertMonitorData("runtime", logRuntime) - // }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - //} -} - -func (this *MonitorMgr) Shutdown() { - module.UnregisteModule(this) -} - -func init() { - //module.RegisteModule(MonitorMgrSington, time.Minute*5, 0) -} diff --git a/rpc/rpclient.go b/rpc/rpclient.go index 3b810a2..86ece61 100644 --- a/rpc/rpclient.go +++ b/rpc/rpclient.go @@ -79,6 +79,41 @@ func (this *RPClient) Call(serviceMethod string, args interface{}, reply interfa } func (this *RPClient) CallWithTimeout(serviceMethod string, args interface{}, reply interface{}, d time.Duration) error { + var err error + start := time.Now() + + defer func() { + // 记录请求完成时间和响应状态码 + duration := time.Since(start).Milliseconds() + StateMgrLock.Lock() + state, ok := StateMgr[serviceMethod] + if !ok { + state = new(State) + StateMgr[serviceMethod] = state + } + // 执行次数 + state.RunTimes++ + // 执行总时长 + state.TotalRuningTime += duration + // 最长执行时长 + if duration > state.MaxRuningTime { + state.MaxRuningTime = duration + } + switch { + case errors.Is(err, ErrRPClientNoConn): + state.NoConnTimes++ + case errors.Is(err, ErrRPClientCallTimeout): + state.TimeoutTimes++ + default: + if err != nil { + state.FailTimes++ + } else { + state.SuccessTimes++ + } + } + StateMgrLock.Unlock() + }() + if this.client == nil { return ErrRPClientNoConn } @@ -87,8 +122,6 @@ func (this *RPClient) CallWithTimeout(serviceMethod string, args interface{}, re d = time.Second } - start := time.Now() - var err error call := this.client.Go(serviceMethod, args, reply, make(chan *rpc.Call, 1)) select { case <-time.After(d): @@ -96,7 +129,7 @@ func (this *RPClient) CallWithTimeout(serviceMethod string, args interface{}, re case call = <-call.Done: err = call.Error } - if err != nil && (err == rpc.ErrShutdown || err == io.ErrUnexpectedEOF) { + if err != nil && (errors.Is(err, rpc.ErrShutdown) || errors.Is(err, io.ErrUnexpectedEOF)) { var dailed chan struct{} if atomic.CompareAndSwapInt32(&this.connecting, 0, 1) { dailed = make(chan struct{}) diff --git a/rpc/rpcstate.go b/rpc/rpcstate.go new file mode 100644 index 0000000..f63ef5e --- /dev/null +++ b/rpc/rpcstate.go @@ -0,0 +1,29 @@ +package rpc + +import ( + "sync" +) + +type State struct { + RunTimes int64 //执行次数 + TotalRuningTime int64 //总执行时间 + MaxRuningTime int64 //最长执行时间 + TimeoutTimes int64 //执行超时次数 大于30秒的次数 + FailTimes int64 //执行失败次数 + SuccessTimes int64 //执行成功次数 + NoConnTimes int64 //无连接次数 +} + +var StateMgr = make(map[string]*State) +var StateMgrLock = sync.RWMutex{} + +func GetState() map[string]*State { + ret := make(map[string]*State) + StateMgrLock.RLock() + defer StateMgrLock.RUnlock() + for k, v := range StateMgr { + e := *v // 复制一份 + ret[k] = &e + } + return ret +} diff --git a/worldsrv/main.go b/worldsrv/main.go index 6170ab1..366b8e2 100644 --- a/worldsrv/main.go +++ b/worldsrv/main.go @@ -54,5 +54,6 @@ func main() { schedule.StartTask() //启动业务模块 waiter := module.Start() + StartMonitor() waiter.Wait("main()") } diff --git a/worldsrv/monitor.go b/worldsrv/monitor.go new file mode 100644 index 0000000..ef25742 --- /dev/null +++ b/worldsrv/monitor.go @@ -0,0 +1,51 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/timer" + + "mongo.games.com/game/model" + "mongo.games.com/game/rpc" +) + +var ( + monitorRpc = model.NewMonitorTool[rpc.State]("rpc") +) + +func StartMonitor() { + timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { + //monitorRpc.InsertKV(rpc.GetState()) + + //保存到本地文件 + go func() { + err := saveToFile("rpc.json", rpc.GetState()) + if err != nil { + logger.Logger.Errorf("rpc.json failed to save to file: %v", err) + } + }() + + return true + }), nil, time.Second*10, -1) +} + +// 保存变量到文件(覆盖方式) +func saveToFile(filename string, data interface{}) error { + // 将数据转换为JSON字节 + content, err := json.MarshalIndent(data, "", " ") + if err != nil { + return fmt.Errorf("failed to serialize data: %w", err) + } + + // 写入文件,覆盖模式 + err = os.WriteFile(filename, content, 0644) + if err != nil { + return fmt.Errorf("failed to write to file: %w", err) + } + + return nil +} diff --git a/worldsrv/monitormgr.go b/worldsrv/monitormgr.go deleted file mode 100644 index aa5e845..0000000 --- a/worldsrv/monitormgr.go +++ /dev/null @@ -1,169 +0,0 @@ -package main - -import ( - "encoding/gob" - "time" - - "mongo.games.com/goserver/core" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/module" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/core/profile" - "mongo.games.com/goserver/core/schedule" - "mongo.games.com/goserver/core/task" - "mongo.games.com/goserver/core/transact" - "mongo.games.com/goserver/core/utils" - - "mongo.games.com/game/common" - "mongo.games.com/game/model" - "mongo.games.com/game/webapi" -) - -var MonitorMgrSington = &MonitorMgr{} - -type MonitorMgr struct { -} - -func (this *MonitorMgr) ModuleName() string { - return "MonitorMgr" -} - -func (this *MonitorMgr) Init() { - -} - -func (this *MonitorMgr) Update() { - //player online stats - olStats := PlayerMgrSington.StatsOnline() - log := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", olStats) - if log != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.InsertMonitorData("online", log) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - - //api stats - if len(WebAPIStats) > 0 { - log := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", WebAPIStats) - if log != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("webapi", log) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - apiStats := webapi.Stats() - if len(apiStats) > 0 { - log := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "api", apiStats) - if log != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("webapi", log) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //logic stats - logicStats := profile.GetStats() - if len(logicStats) > 0 { - logLogic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", logicStats) - if logLogic != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("logic", logLogic) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //net session stats - netStats := netlib.Stats() - if len(netStats) > 0 { - logNet := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", netStats) - if logNet != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("net", logNet) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //schedule stats - jobStats := schedule.Stats() - if len(jobStats) > 0 { - logJob := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", jobStats) - if logJob != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("job", logJob) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //trans stats - transStats := transact.Stats() - if len(transStats) > 0 { - logTrans := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", transStats) - if logTrans != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("transact", logTrans) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //panic stats - panicStats := utils.GetPanicStats() - if len(panicStats) > 0 { - for key, stats := range panicStats { - logPanic := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), key, stats) - if logPanic != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("panic", logPanic) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - } - - //object command quene stats - objStats := core.AppCtx.GetStats() - if len(objStats) > 0 { - logCmd := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "obj", objStats) - if logCmd != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.UpsertMonitorData("cmdque", logCmd) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } - } - - //gorouting count, eg. system info - runtimeStats := utils.StatsRuntime() - logRuntime := model.NewMonitorData(int32(common.GetSelfSrvId()), int32(common.GetSelfSrvType()), "", runtimeStats) - if logRuntime != nil { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.InsertMonitorData("runtime", logRuntime) - }), nil, "InsertMonitorData").StartByFixExecutor("monitor") - } -} - -func (this *MonitorMgr) Shutdown() { - module.UnregisteModule(this) -} - -func init() { - - //gob registe - gob.Register(model.PlayerOLStats{}) - gob.Register(map[string]*model.APITransactStats{}) - gob.Register(webapi.ApiStats{}) - gob.Register(map[string]webapi.ApiStats{}) - gob.Register(profile.TimeElement{}) - gob.Register(map[string]profile.TimeElement{}) - gob.Register(netlib.ServiceStats{}) - gob.Register(map[int]netlib.ServiceStats{}) - gob.Register(schedule.TaskStats{}) - gob.Register(map[string]schedule.TaskStats{}) - gob.Register(transact.TransStats{}) - gob.Register(map[int]transact.TransStats{}) - gob.Register(utils.PanicStackInfo{}) - gob.Register(map[string]utils.PanicStackInfo{}) - gob.Register(basic.CmdStats{}) - gob.Register(map[string]basic.CmdStats{}) - gob.Register(utils.RuntimeStats{}) - //gob registe - - module.RegisteModule(MonitorMgrSington, time.Minute*5, 0) -} From e0629e341927cc045143ccd387a2bafd67cb9bef Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 27 Dec 2024 18:00:27 +0800 Subject: [PATCH 04/74] no message --- worldsrv/monitor.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/monitor.go b/worldsrv/monitor.go index ef25742..00bb027 100644 --- a/worldsrv/monitor.go +++ b/worldsrv/monitor.go @@ -30,7 +30,7 @@ func StartMonitor() { }() return true - }), nil, time.Second*10, -1) + }), nil, time.Minute*5, -1) } // 保存变量到文件(覆盖方式) From 47be044d4a2b76e1919d578a34385de5f698d63e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 30 Dec 2024 09:23:25 +0800 Subject: [PATCH 05/74] no message --- gob_register.go | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 gob_register.go diff --git a/gob_register.go b/gob_register.go deleted file mode 100644 index 04eabc0..0000000 --- a/gob_register.go +++ /dev/null @@ -1,47 +0,0 @@ -package win88 - -import ( - "encoding/gob" - - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/core/profile" - "mongo.games.com/goserver/core/schedule" - "mongo.games.com/goserver/core/transact" - "mongo.games.com/goserver/core/utils" - - "mongo.games.com/game/mgrsrv/api" - "mongo.games.com/game/model" - "mongo.games.com/game/rpc" -) - -func init() { - gob.Register(utils.RuntimeStats{}) - - gob.Register(model.PlayerOLStats{}) - gob.Register(map[string]*model.APITransactStats{}) - - gob.Register(rpc.State{}) - gob.Register(map[string]rpc.State{}) - - gob.Register(api.ApiStats{}) - gob.Register(map[string]api.ApiStats{}) - - gob.Register(profile.TimeElement{}) - gob.Register(map[string]profile.TimeElement{}) - - gob.Register(netlib.ServiceStats{}) - gob.Register(map[int]netlib.ServiceStats{}) - - gob.Register(schedule.TaskStats{}) - gob.Register(map[string]schedule.TaskStats{}) - - gob.Register(transact.TransStats{}) - gob.Register(map[int]transact.TransStats{}) - - gob.Register(utils.PanicStackInfo{}) - gob.Register(map[string]utils.PanicStackInfo{}) - - gob.Register(basic.CmdStats{}) - gob.Register(map[string]basic.CmdStats{}) -} From b308f93cdf75639c51bf35914499b3b117068d21 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 30 Dec 2024 09:33:27 +0800 Subject: [PATCH 06/74] =?UTF-8?q?modify=20=E4=BF=AE=E6=94=B9=E5=8D=81?= =?UTF-8?q?=E4=B8=89=E5=BC=A0=E9=80=89=E7=89=8C=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamerule/thirteen/constants.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamerule/thirteen/constants.go b/gamerule/thirteen/constants.go index aeeded7..c18cf4d 100644 --- a/gamerule/thirteen/constants.go +++ b/gamerule/thirteen/constants.go @@ -41,7 +41,7 @@ const ( ThirteenWaterSceneWaitTimeout = time.Second * 2 //等待倒计时 ThirteenWaterStartTimeout = time.Second * 3 //开始倒计时 ThirteenWaterSendCardsTimeout = time.Second * 3 //开始发牌 - ThirteenWaterOptCardTimeout = time.Second * 30 //30选牌换牌 + ThirteenWaterOptCardTimeout = time.Second * 45 //45选牌换牌 ThirteenWaterShowCardsTimeout = time.Second * 1 //轮流看牌时间 ThirteenWaterHitTimeout = time.Second * 2 //打枪 ThirteenWaterBilledTimeout = time.Second * 5 //结算 From 309fe3b9441de024baa6bc3fa1adef40f82893cb Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 30 Dec 2024 11:04:37 +0800 Subject: [PATCH 07/74] =?UTF-8?q?modify=20=E5=8D=81=E4=B8=89=E5=BC=A0?= =?UTF-8?q?=E9=80=89=E7=89=8C=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamerule/thirteen/constants.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamerule/thirteen/constants.go b/gamerule/thirteen/constants.go index c18cf4d..0c234f5 100644 --- a/gamerule/thirteen/constants.go +++ b/gamerule/thirteen/constants.go @@ -41,7 +41,7 @@ const ( ThirteenWaterSceneWaitTimeout = time.Second * 2 //等待倒计时 ThirteenWaterStartTimeout = time.Second * 3 //开始倒计时 ThirteenWaterSendCardsTimeout = time.Second * 3 //开始发牌 - ThirteenWaterOptCardTimeout = time.Second * 45 //45选牌换牌 + ThirteenWaterOptCardTimeout = time.Second * 48 //48选牌换牌 ThirteenWaterShowCardsTimeout = time.Second * 1 //轮流看牌时间 ThirteenWaterHitTimeout = time.Second * 2 //打枪 ThirteenWaterBilledTimeout = time.Second * 5 //结算 From d3d722c8975fcba139e9fe78068c7717a44695b3 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 30 Dec 2024 11:53:38 +0800 Subject: [PATCH 08/74] no message --- gamerule/thirteen/constants.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamerule/thirteen/constants.go b/gamerule/thirteen/constants.go index 0c234f5..be20e9c 100644 --- a/gamerule/thirteen/constants.go +++ b/gamerule/thirteen/constants.go @@ -41,7 +41,7 @@ const ( ThirteenWaterSceneWaitTimeout = time.Second * 2 //等待倒计时 ThirteenWaterStartTimeout = time.Second * 3 //开始倒计时 ThirteenWaterSendCardsTimeout = time.Second * 3 //开始发牌 - ThirteenWaterOptCardTimeout = time.Second * 48 //48选牌换牌 + ThirteenWaterOptCardTimeout = time.Second * 47 //47选牌换牌 ThirteenWaterShowCardsTimeout = time.Second * 1 //轮流看牌时间 ThirteenWaterHitTimeout = time.Second * 2 //打枪 ThirteenWaterBilledTimeout = time.Second * 5 //结算 From 7066d7c441f8ba008523b8f00b604d44b8b63679 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 30 Dec 2024 13:55:32 +0800 Subject: [PATCH 09/74] =?UTF-8?q?fix=20=E6=AF=94=E8=B5=9B=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/tournament.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go index fc6fc2e..0dd17c9 100644 --- a/worldsrv/tournament.go +++ b/worldsrv/tournament.go @@ -1803,6 +1803,9 @@ func (this *Tournament) GetSCTMInfosPack(platform, channelName string) *tourname } tMInfo.SignupCostItem = signupCost } + if info.MatchTimeType == 0 { + tMInfo.MatchTimeStamp = []int64{} + } pack.TMInfo = append(pack.TMInfo, tMInfo) } } From 44acf8b5e7b93d2ed051e248b0c0b196bb3be244 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 30 Dec 2024 18:17:11 +0800 Subject: [PATCH 10/74] =?UTF-8?q?fix=20=E8=83=8C=E5=8C=85=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=A2=E5=A4=B1=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/svc/l_itemlog.go | 77 +++++++++++--------- model/baginfo.go | 2 +- model/itemdatalog.go | 15 ++-- worldsrv/bagmgr.go | 147 ++++++++++++++++++++------------------- 4 files changed, 131 insertions(+), 110 deletions(-) diff --git a/dbproxy/svc/l_itemlog.go b/dbproxy/svc/l_itemlog.go index 3606e7e..ed8eebc 100644 --- a/dbproxy/svc/l_itemlog.go +++ b/dbproxy/svc/l_itemlog.go @@ -30,6 +30,7 @@ func ItemLogsCollection(plt string) *mongo.Collection { c_itemlog.EnsureIndex(mgo.Index{Key: []string{"typeid", "roomconfigid"}, Background: true, Sparse: true}) c_itemlog.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true}) c_itemlog.EnsureIndex(mgo.Index{Key: []string{"-ts"}, Background: true, Sparse: true}) + c_itemlog.EnsureIndex(mgo.Index{Key: []string{"seq"}, Background: true, Sparse: true}) c_itemlog.EnsureIndex(mgo.Index{Key: []string{"gamedif"}, Background: true, Sparse: true}) } return c_itemlog @@ -43,6 +44,7 @@ type ItemLogSvc struct { func (svc *ItemLogSvc) InsertItemLog(log *model.ItemLog, ret *bool) (err error) { clog := ItemLogsCollection(log.Platform) if clog == nil { + logger.Logger.Errorf("ItemLogSvc.InsertItemLog get collection fail platform:%v", log.Platform) return } err = clog.Insert(log) @@ -54,10 +56,46 @@ func (svc *ItemLogSvc) InsertItemLog(log *model.ItemLog, ret *bool) (err error) return } +func (svc *ItemLogSvc) Insert(req *model.InsertItemLogReq, res *bool) error { + if len(req.Logs) == 0 { + return nil + } + + clog := ItemLogsCollection(req.Logs[0].Platform) + if clog == nil { + logger.Logger.Errorf("ItemLogSvc.Insert get collection fail platform:%v", req.Logs[0].Platform) + return nil + } + var docs []interface{} + for _, v := range req.Logs { + docs = append(docs, v) + } + if err := clog.Insert(docs...); err != nil { + logger.Logger.Errorf("ItemLogSvc.Insert error: %v", err) + return err + } + *res = true + return nil +} + +func (svc *ItemLogSvc) UpdateState(req *model.UpdateParam, res *model.UpdateRes) error { + c := ItemLogsCollection(req.Platform) + if c == nil { + logger.Logger.Errorf("ItemLogSvc.UpdateState get collection fail platform:%v", req.Platform) + return nil + } + err := c.UpdateId(req.LogId, bson.M{"$set": bson.M{"status": req.State}}) + if err != nil { + logger.Logger.Errorf("ItemLogSvc.UpdateState error: %v", err) + } + return err +} + // GetItemCount 获取v卡兑换消耗数量 func GetItemCount(platform string, snid, id int32, tp int) (count int64) { c := ItemLogsCollection(platform) if c == nil { + logger.Logger.Errorf("ItemLogSvc.GetItemCount get collection fail platform:%v", platform) return 0 } var err error @@ -73,7 +111,7 @@ func GetItemCount(platform string, snid, id int32, tp int) (count int64) { {"$group": bson.M{"_id": nil, "count": bson.M{"$sum": "$count"}}}, }).AllowDiskUse().One(tc) if err != nil && !errors.Is(err, mgo.ErrNotFound) { - logger.Logger.Warn("GetItemCount swapN error:", err) + logger.Logger.Error("GetItemCount swapN error:", err) return 0 } swapN = tc.Count @@ -85,7 +123,7 @@ func GetItemCount(platform string, snid, id int32, tp int) (count int64) { {"$group": bson.M{"_id": nil, "count": bson.M{"$sum": "$count"}}}, }).AllowDiskUse().One(tc) if err != nil && !errors.Is(err, mgo.ErrNotFound) { - logger.Logger.Warn("GetItemCount costN error:", err) + logger.Logger.Error("GetItemCount costN error:", err) return 0 } costN = tc.Count @@ -107,15 +145,6 @@ func (svc *ItemLogSvc) GetItemCount(req *model.ItemCountParam, count *int64) err return nil } -func (svc *ItemLogSvc) UpdateState(req *model.UpdateParam, res *model.UpdateRes) error { - c := ItemLogsCollection(req.Platform) - if c == nil { - return nil - } - err := c.UpdateId(req.LogId, bson.M{"$set": bson.M{"status": req.State}}) - return err -} - func (svc *ItemLogSvc) GetClawdollItemLog(args *model.ClawdollItemLogReq, ret *model.GetClawdollItemLogRet) (err error) { limitDataNum := 200 @@ -229,38 +258,18 @@ func (svc *ItemLogSvc) GetClawdollSuccessItemLog(args *model.ClawdollSuccessItem func (svc *ItemLogSvc) GetItemLog(req *model.GetItemLogParam, res *model.GetItemLogRes) error { c := ItemLogsCollection(req.Plt) if c == nil { + logger.Logger.Errorf("ItemLogSvc.GetItemLog get collection fail platform:%v", req.Plt) return nil } - err := c.Find(bson.M{"snid": req.SnId, "ts": bson.M{"$gt": req.Ts}}).All(&res.Logs) + err := c.Find(bson.M{"snid": req.SnId, "ts": bson.M{"$gt": req.Ts}}).Sort("ts", "seq").All(&res.Logs) if err != nil && !errors.Is(err, mgo.ErrNotFound) { + logger.Logger.Errorf("ItemLogSvc.GetItemLog error: %v", err) return err } return nil } -func (svc *ItemLogSvc) Insert(req *model.InsertItemLogReq, res *bool) error { - if len(req.Logs) == 0 { - return nil - } - - clog := ItemLogsCollection(req.Logs[0].Platform) - if clog == nil { - logger.Logger.Errorf("ItemLogSvc.Insert collection not found Platform:%v", req.Logs[0].Platform) - return nil - } - var docs []interface{} - for _, v := range req.Logs { - docs = append(docs, v) - } - if err := clog.Insert(docs...); err != nil { - logger.Logger.Warn("ItemLogSvc.Insert error:", err) - return err - } - *res = true - return nil -} - func init() { rpc.Register(new(ItemLogSvc)) } diff --git a/model/baginfo.go b/model/baginfo.go index a44cf26..5df4ec5 100644 --- a/model/baginfo.go +++ b/model/baginfo.go @@ -55,7 +55,7 @@ func UpBagItem(args *BagInfo) error { ret := false err := rpcCli.CallWithTimeout("BagSvc.UpgradeBag", args, &ret, time.Second*30) if err != nil { - return fmt.Errorf("UpgradeBag err:%v SnId:%v BagId:%v", err, args.SnId, args.BagId) + return fmt.Errorf("UpgradeBag err:%v SnId:%v BagId:%v Ts:%v", err, args.SnId, args.BagId, args.Ts) } return nil diff --git a/model/itemdatalog.go b/model/itemdatalog.go index 16415d4..eca24ca 100644 --- a/model/itemdatalog.go +++ b/model/itemdatalog.go @@ -2,16 +2,19 @@ package model import ( "errors" - "github.com/globalsign/mgo/bson" - "mongo.games.com/game/protocol/server" - "mongo.games.com/goserver/core/logger" + "sync/atomic" "time" + + "github.com/globalsign/mgo/bson" + "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/protocol/server" ) var ( ItemLogDBName = "log" ItemLogCollName = "log_itemlog" - ClawDollItemIds = []int32{40003, 40004, 80001, 80002} + ItemSeq = int64(0) ) type ItemLog struct { @@ -24,6 +27,7 @@ type ItemLog struct { Count int64 //个数 CreateTs int64 //记录时间 Ts int64 // 纳秒时间戳 + Seq int64 // 序号 Remark string //备注 TypeId int32 // 变化类型 GameId int64 // 游戏id,游戏中获得时有值 @@ -55,7 +59,7 @@ type ItemParam struct { Cost []*Item // 消耗的道具 LogId string // 撤销的id,兑换失败 RoomConfigId int32 // 房间配置id - Offline int32 // 离线记录 + Offline int32 // 离线记录 1是 0否 } func NewItemLogEx(param ItemParam) *ItemLog { @@ -69,6 +73,7 @@ func NewItemLogEx(param ItemParam) *ItemLog { itemLog.Count = param.Count itemLog.CreateTs = now.Unix() itemLog.Ts = now.UnixNano() + itemLog.Seq = atomic.AddInt64(&ItemSeq, 1) itemLog.Remark = param.Remark itemLog.TypeId = param.TypeId itemLog.GameId = param.GameId diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index eb2ad7e..d936ec5 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -6,7 +6,6 @@ import ( "time" "github.com/globalsign/mgo/bson" - "golang.org/x/exp/maps" "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/i18n" "mongo.games.com/goserver/core/logger" @@ -172,8 +171,9 @@ type BagInfo struct { Ts int64 //更新时间戳 // 临时携带参数 - dirty bool `bson:"-"` //是否需要更新数据库 - LogId string `bson:"-"` //最后一次保存的日志id + ItemLogsOffline []*model.ItemLog + dirty bool `bson:"-"` //是否需要更新数据库 + LogId string `bson:"-"` //最后一次保存的日志id } func NewBagInfo(platform string, snid int32) *BagInfo { @@ -205,7 +205,9 @@ var BagMgrSingleton = &BagMgr{ //============================================================================= type LoadData struct { - BagInfo *model.BagInfo + BagInfo *model.BagInfo + ItemLogsOnline []*model.ItemLog + ItemLogsOffline []*model.ItemLog } func (this *BagMgr) Load(platform string, snid int32, player any) *internal.PlayerLoadReplay { @@ -225,12 +227,61 @@ func (this *BagMgr) Load(platform string, snid int32, player any) *internal.Play bagInfo.Ts = time.Now().UnixNano() } + // 根据时间戳对账 + itemLogs, err := model.GetItemLog(platform, snid, bagInfo.Ts) + if err != nil { + logger.Logger.Errorf("Load GetItemLog err: %v", err) + return &internal.PlayerLoadReplay{ + Platform: platform, + Snid: snid, + Err: err, + Data: nil, + } + } + + // 恢复道具 + endTs := time.Now().UnixNano() + var itemLogsOnline, itemLogsOffline []*model.ItemLog + for _, v := range itemLogs { + if v == nil { + continue + } + if v.Ts >= bagInfo.Ts && v.Ts < endTs { + num := v.Count + if v.LogType == 1 { + num = -num + } + if v.Ts > bagInfo.Ts { + bagInfo.Ts = v.Ts + } + if v.Offline == 0 { + // 在线数据恢复 + logger.Logger.Tracef("道具恢复 SnId:%v Item:%+v", snid, *v) + if _, ok := bagInfo.BagItem[v.ItemId]; !ok { + bagInfo.BagItem[v.ItemId] = &model.Item{ + ItemId: v.ItemId, + ItemNum: 0, + ObtainTime: v.CreateTs, + } + } + bagInfo.BagItem[v.ItemId].ItemNum += num + itemLogsOnline = append(itemLogsOnline, v) + } else { + // 离线时的变更 + logger.Logger.Tracef("处理离线道具变化 SnId:%v Item:%v", snid, *v) + itemLogsOffline = append(itemLogsOffline, v) + } + } + } + return &internal.PlayerLoadReplay{ Platform: platform, Snid: snid, Err: err, Data: &LoadData{ - BagInfo: bagInfo, + BagInfo: bagInfo, + ItemLogsOnline: itemLogsOnline, + ItemLogsOffline: itemLogsOffline, }, } } @@ -262,43 +313,25 @@ func (this *BagMgr) Callback(player any, ret *internal.PlayerLoadReplay) { logger.Logger.Error("InitBagInfo err: item is nil. ItemId:", bi.ItemId) } } + + newBagInfo.ItemLogsOffline = data.ItemLogsOffline this.PlayerBag[ret.Snid] = newBagInfo } type LoadAfterData struct { - GameID []int32 - ItemLogs []*model.ItemLog - StarTs, EndTs int64 + GameID []int32 } func (this *BagMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadReplay { - var err error // 查询最近游戏 gameID := model.GetRecentGame(platform, snid) - // 道具变更记录 - endTs := time.Now().UnixNano() - var itemLogs []*model.ItemLog - itemLogs, err = model.GetItemLog(platform, snid, this.PlayerBag[snid].Ts) - if err != nil { - logger.Logger.Errorf("LoadAfter GetItemLog err: %v", err) - return &internal.PlayerLoadReplay{ - Platform: platform, - Snid: snid, - Err: err, - Data: nil, - } - } - return &internal.PlayerLoadReplay{ Platform: platform, Snid: snid, Err: nil, Data: &LoadAfterData{ - GameID: gameID, - ItemLogs: itemLogs, - StarTs: this.PlayerBag[snid].Ts, - EndTs: endTs, + GameID: gameID, }, } } @@ -330,50 +363,21 @@ func (this *BagMgr) CallbackAfter(ret *internal.PlayerLoadReplay) { // 道具变更记录 bagInfo := this.PlayerBag[p.SnId] if bagInfo != nil { - changeItems := make(map[int32]struct{}) - for _, v := range param.ItemLogs { - if v == nil { - continue - } - if v.Ts > param.StarTs && v.Ts <= param.EndTs { - bagInfo.dirty = true - num := v.Count - if v.LogType == 1 { - num = -num - } - if v.Ts > bagInfo.Ts { - bagInfo.Ts = v.Ts - } - if v.Offline == 0 { - // 在线数据恢复 - logger.Logger.Tracef("道具恢复 SnId:%v Item:%+v", p.SnId, *v) - if _, ok := bagInfo.BagItem[v.ItemId]; !ok { - bagInfo.BagItem[v.ItemId] = &Item{ - ItemId: v.ItemId, - ItemNum: 0, - ObtainTime: v.CreateTs, - } - } - bagInfo.BagItem[v.ItemId].ItemNum += num - changeItems[v.ItemId] = struct{}{} - } else { - // 离线时的变更 - logger.Logger.Tracef("处理离线道具变化 SnId:%v Item:%v", p.SnId, *v) - this.OnChangeFuncs(&model.ChangeItemParam{ - SnId: p.SnId, - ItemId: v.ItemId, - ItemNum: v.Count, - GainWay: v.TypeId, - RoomConfigId: v.RoomConfigId, - GameId: v.GameId, - GameFreeId: v.GameFreeId, - Cost: v.Cost, - }) - } - } + // 离线时的变更 + for _, v := range bagInfo.ItemLogsOffline { + logger.Logger.Tracef("处理离线道具变化 SnId:%v Item:%v", p.SnId, *v) + this.OnChangeFuncs(&model.ChangeItemParam{ + SnId: p.SnId, + ItemId: v.ItemId, + ItemNum: v.Count, + GainWay: v.TypeId, + RoomConfigId: v.RoomConfigId, + GameId: v.GameId, + GameFreeId: v.GameFreeId, + Cost: v.Cost, + }) } - - this.SyncBagData(p.SnId, maps.Keys(changeItems)...) + bagInfo.ItemLogsOffline = nil } } @@ -399,6 +403,9 @@ func (this *BagMgr) Save(platform string, snid int32, isSync, force bool) { newBagInfo.BagItem[v.ItemId] = &model.Item{ItemId: v.ItemId, ItemNum: v.ItemNum, ObtainTime: v.ObtainTime} } err = model.UpBagItem(newBagInfo) + if err != nil { + logger.Logger.Errorf("SaveBagData err: %v", err) + } } cf := func() { From 3e93085537eeed7976b770b4555bc9c70558c8b1 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 31 Dec 2024 09:42:38 +0800 Subject: [PATCH 11/74] no message --- etcd/keyconf.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etcd/keyconf.go b/etcd/keyconf.go index f3dc6a5..4960b7c 100644 --- a/etcd/keyconf.go +++ b/etcd/keyconf.go @@ -15,7 +15,7 @@ const ( ETCDKEY_ACT_GIVE_PREFIX = "/game/plt/actgive/" ETCDKEY_SHOP_EXCHANGE = "/game/exchange_shop" ETCDKEY_GAME_NOTICE = "/game/common_notice" - ETCDKEY_SHOP_ITEM = "/game/item_shop" + ETCDKEY_SHOP_ITEM = "/game/item_shop/" ETCDKEY_GAME_MATCH = "/game/game_match" ETCDKEY_GAME_MATCH_TYPE = "/game/match_type" ETCDKEY_ACT_TURNPLATE = "/game/act_turnplate" @@ -34,7 +34,7 @@ const ( ETCDKEY_ACT_Invite = "/game/act_invite" // 邀请活动配置 ETCDKEY_ACT_Permit = "/game/act_permit" // 赛季通行证配置 ETCDKEY_DIAMOND_LOTTERY = "/game/diamond_lottery" // 钻石抽奖配置 - ETCDKEY_Item = "/game/item" // 道具列表 + ETCDKEY_Item = "/game/item/" // 道具列表 ETCDKEY_SKin = "/game/skin_config" // 皮肤配置 ETCDKEY_RANK_TYPE = "/game/RankType" // 排行榜奖励配置 ETCDKEY_AWARD_CONFIG = "/game/awardlog_config" //获奖记录 From cd1b4978dec2f9a696dc641ff65f56ba277266da Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 3 Jan 2025 08:43:19 +0800 Subject: [PATCH 12/74] fix go mod --- go.sum | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/go.sum b/go.sum index 50b60dc..ff0a805 100644 --- a/go.sum +++ b/go.sum @@ -386,8 +386,6 @@ github.com/xtaci/kcp-go v5.4.20+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45 github.com/xtaci/lossyconn v0.0.0-20200209145036-adba10fffc37 h1:EWU6Pktpas0n8lLQwDsRyZfmkPeRbdgPtW609es+/9E= github.com/xtaci/lossyconn v0.0.0-20200209145036-adba10fffc37/go.mod h1:HpMP7DB2CyokmAh4lp0EQnnWhmycP/TvwBGzvuie+H0= github.com/xuri/efp v0.0.0-20200605144744-ba689101faaf/go.mod h1:uBiSUepVYMhGTfDeBKKasV4GpgBlzJ46gXUBAqV8qLk= -github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d h1:llb0neMWDQe87IzJLS4Ci7psK/lVsjIS2otl+1WyRyY= -github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= github.com/xuri/efp v0.0.0-20241211021726-c4e992084aa6 h1:8m6DWBG+dlFNbx5ynvrE7NgI+Y7OlZVMVTpayoW+rCc= github.com/xuri/efp v0.0.0-20241211021726-c4e992084aa6/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= github.com/xuri/excelize/v2 v2.9.0 h1:1tgOaEq92IOEumR1/JfYS/eR0KHOCsRv/rYXXh6YJQE= @@ -441,8 +439,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -479,8 +475,6 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -493,8 +487,7 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -523,8 +516,6 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -537,8 +528,6 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 756f52dd63bf3671f2446a8ec892f70c7d40dd5f Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 3 Jan 2025 09:31:34 +0800 Subject: [PATCH 13/74] =?UTF-8?q?modify=20=E7=BA=A2=E5=8C=85=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/etcd.go | 40 ++++++++++++++++++++-------------------- worldsrv/welfmgr.go | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index a9bcd29..4f7b904 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -133,19 +133,19 @@ func init() { RedList: []*webapi.RedInfo{ { Num: 1, - Rate: 50, + Rate: 5000, }, { Num: 10, - Rate: 10, + Rate: 1000, }, { Num: 20, - Rate: 10, + Rate: 1000, }, { Num: 30, - Rate: 10, + Rate: 1000, }, }, }, @@ -162,19 +162,19 @@ func init() { RedList: []*webapi.RedInfo{ { Num: 1, - Rate: 50, + Rate: 5000, }, { Num: 10, - Rate: 10, + Rate: 1000, }, { Num: 20, - Rate: 10, + Rate: 1000, }, { Num: 30, - Rate: 10, + Rate: 1000, }, }, }, @@ -191,19 +191,19 @@ func init() { RedList: []*webapi.RedInfo{ { Num: 1, - Rate: 50, + Rate: 5000, }, { Num: 10, - Rate: 10, + Rate: 1000, }, { Num: 20, - Rate: 10, + Rate: 1000, }, { Num: 30, - Rate: 10, + Rate: 1000, }, }, }, @@ -220,19 +220,19 @@ func init() { RedList: []*webapi.RedInfo{ { Num: 1, - Rate: 50, + Rate: 5000, }, { Num: 10, - Rate: 10, + Rate: 1000, }, { Num: 20, - Rate: 10, + Rate: 1000, }, { Num: 30, - Rate: 10, + Rate: 1000, }, }, }, @@ -249,19 +249,19 @@ func init() { RedList: []*webapi.RedInfo{ { Num: 1, - Rate: 50, + Rate: 5000, }, { Num: 10, - Rate: 10, + Rate: 1000, }, { Num: 20, - Rate: 10, + Rate: 1000, }, { Num: 30, - Rate: 10, + Rate: 1000, }, }, }, diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 198d2c3..eb48281 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -2384,7 +2384,7 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr f := func() { // 概率抽奖 rate := 0 - n := rand.Int63n(100) + n := rand.Int63n(10000) for _, v := range cfg.GetRedList() { rate += int(v.GetRate()) if n < int64(rate) { From 66e6e20972c48f47b77a074798ce1fa03d70ad5e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 6 Jan 2025 16:13:57 +0800 Subject: [PATCH 14/74] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/Base/Slots/FortuneDragon/Bet.xlsx | Bin 13010 -> 13015 bytes .../excel/Base/Slots/FortuneMouse/Bet.xlsx | Bin 13009 -> 13010 bytes .../excel/Base/Slots/FortuneOx/Bet.xlsx | Bin 13059 -> 13056 bytes .../excel/Base/Slots/FortuneRabbit/Bet.xlsx | Bin 13033 -> 13054 bytes .../excel/Base/Slots/FortuneTiger/Bet.xlsx | Bin 13038 -> 13043 bytes .../exported/excel2go/base/cash_mania.go | 744 +++++++++--------- .../exported/excel2go/base/fortune_dragon.go | 386 ++++----- .../exported/excel2go/base/fortune_mouse.go | 284 +++---- .../exported/excel2go/base/fortune_ox.go | 310 ++++---- .../exported/excel2go/base/fortune_rabbit.go | 378 ++++----- .../exported/excel2go/base/fortune_tiger.go | 296 +++---- .../internal/exported/excel2go/base/matrix.go | 342 ++++---- 12 files changed, 1370 insertions(+), 1370 deletions(-) diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneDragon/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneDragon/Bet.xlsx index 229e2df9b4eb574723f8942cd50f7737707e5628..d4bc52e27c6a66c0ba3dc9f0d070e146267f7478 100644 GIT binary patch delta 5516 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 delta 5572 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 j_d6n0m39D`|pq_A3iV^2vo%X_v!xu-kJ;s diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneMouse/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneMouse/Bet.xlsx index 4502c038c8febb92ca40c96e4cd1ccaa9382e275..da3334f99fdfbf505fac0cc00d3519c0f5c5b477 100644 GIT binary patch delta 3140 zcmZ9OX*AUB8^>oP%P@oNVGjyF~bJ-2Hglm8D4sAc7w_aj%lt=~LeBS4NHi^-mcP*$19#5zb^I~E|Im)^4o6g4?y{hRDnL3tSo@ni1+Ww;0 znXRyWKhM3v;$`l#dQSQTVZ7e^;4cpzO&k{}CNL5?>dz$gjYZe*RDs+l?9DCH1sIRb zz4Nahd^j^xEB5r(-}j03*QyWTc5D&hcWspFdb$anOt-tVuI&^x_g>{Fm|Z=ID7||l zz0b2OW0Mf7M`4WHsU@GN?n3WrouTCbfj|tPFdd3=-CenOK_bH*S13Ya)^ ziM6C)g*7bBnE;`aL0XsHx(Kk*q7}ku>Dqm+{Rp}A((Pqa8;AM%W5@EE@oxt80<)24 z#gnc$!tqY<4g<6HWS84@+3MPD*rR^Bw7Xt@w#VQ&csYS~i3S3<6DuB}0f8{|01?6q z5a~H_2!@Co1^gV;+x7P=C)z5RRBbphPV%IQys1*Cj>A0zi4xw!69ppg>duaqf&Wcb z!ls;Xyudk@<*0?C$(*@SGS%RQ!dr*5VZvw}!6e^>GZ6|H*E$xokZ_0$p#GBe+?p zO82?l_NcO#Kz#5+;$Fb<=Y;N%4G-iZN#Cd8sLiADZa3jal|aKU8s};w<2*f_j>6yf zgbQc*5Ty2&1hLSo&!_bpeLJ4$ahM`aA*mY?g1 zT6x|Y0Q1`eFS9OY3 z-Hw{2=$bjZ#RFqCCTL>*`bJ5C#y3-*$vG(bf&8A%fk3;aCG)En0MDeT(`O~8Xo5RE zb;zo)j3mFW(-AZB2~GNt9Cl2jBZOX!byebUy@N`xY1Qk0y60OCGIYsj3B`Mk;HIaF zQ(`k<(W8TO?LvoP+`L4z8KyzCZzP@&$|Q```&m;`@{Y8a)jQ$!`sDY|0@kJA<=K#1 zXCR0?atl2z2*e8g7j-x6SzMyg*O)9B)<8?g6YxPGXkpw@m=~JyIi>;~UA4EhdRYe# z$2h$iEVpd7d-V`cGA;LGa9j2$==t92tki5^=k~o!T&+>)N|fe@6*I)kpA|y5F+vpb{e-zgo zVtanhKXO5$omqH5z&wgl_|oj9A;KUz64g4`Y2uREe}Rk=kWEDzcFe8h9MHz_-CD~* zGVM%c2QY;fPTn2$!dZ`2SX+EWu0hmB*^HKQ3^IF?ZETzWLT_km98yU^sO21%OG;~9 z+&`0t{sIT<9u!WS2lxmecenbqi0HqAEChqsg1H4PDk(-mHq>uOhgV`o9f^4jVm@=| zk-#6Z)ZSlygYMRE)KzBtK1J&gr2Y+QMi{IlI_j0Z=k)t6OVdh8hAdg14#onWJ| z{ztuWoh+Vvhl9^t`ez>ZFD>JeC5vRuT<3cSrB+^x?lNduLEZ;gH78~=S>cq$$3vGU zv;??Id~4}&%^-;IlbM6M*yQUgC4=d!s>1s@>1%V&4QW zk1Y%gwi6wgB(KZqYkou#fmNYsm1p;;5&IyoP4UpVh^h_Bisv=aY`KL7oTgm zv)!+54XR@>l4uPUbQXCuR^91QCd!)jv2+RoET_ccV7^8`1G;VHoh^RxabF~jWNM!e zcKU_6QvCY(hCe#tLLKjR=7)uyG-lr&GlXjkecOt703LbPBKBhCx$1;m0IL=-0ha0; zVx&Y1?$&eZ)*;xlvh$Q}rh0>tTX`Sid94)PlG+gGm{#VujPIkjru$m?796_XhmmWh z^<8l>D@{|(GCE>K?0XKUxBl32H_H~mdVX>CRq3`SZ$VS<=U!RSW4d!*w=~$+D#KR& zUG9{Sp@$*lm=ee8Nm7JZj^WiS-C{=;OY32}N_zQCjcWlyuN7Kzmo$DLw|DLA6&sBX zm*O?t5eLPk?UdY2jUxwX%FP;$Ahq%(P=V*~~mO!y5XE+|j&2qM6n1qG@95%WH|bas$;3VaZ|f zTwLw;9TL&q6E8nuDQ7)50Kuiut!KkeEwSfxSFoJ=vahqGkE@51jjOAZgzppQX#KA- z;~3V!;(u`AN3dFDV>|&;)%&h}xqZAn#@W-c@Hjw(v4q3WfcS=&EbBQ> zVP0qPvtLz4U9P#iTBXiB9Usm+wLiCla^8s`UHLB6PfMSEM614ryP2*8-Mi7$2-&p1 z05-a=St&u6`!5v)VFKsNs8GgUD{~{;!A#$5+2!lD?Opkw%99<#13#(gt2BvYfa!?CLSc<+JXkx%ISP#j!7era*zkMEaL|`d3KWC1|9H;!k zqoX{*Z&CI5K5P0foSmKgY1{hvVr3v<3)+`br#sfD?5%{mC-dm&0m&RTt)FOGnRh!( zF~WgMQ8P=S;HTnOj|MCa%>VsUFSu#gj6KV`|0=R^W+=e>a^xVFnRy7v;z;~Js+J8KX;*e+t`8g&aALAT)~2N*nN9{(?j;SDK$_& z2czViA0hqmm1k;$-%n`tF-XlBoh8)=rM__ ze7~a}@-$JyPGMs|1?_i%K^IQ@1wd3%ncnXdz*G1DK`8_fB?$w+1YS#Cr71-LeJBL5 zE{Os^0^k@GFehM!kpq)}SD35dE?@w2neV>@{~0_0ut+I@Q-M2D@-&^azzi)M@WQep z{-i(%3f%IJq?9GJi$h& z2yn@=O%mDhk+8>&SW~K+7*4Kv1XLbNdy3E7h;NxPJN^X1*qk_1Um7^L!@f8vu{fE8 z-J--cwdgpmFumX~;`6%5Syan%*AY7}iqxi8UA8aHF;v1=$z!qp*X7HU^u`%soBS?F z3x@S|c-4<-t2p$>@GHt3+~{_KFY3oE;8i=Oa?n~6re^%AoQV$m!9{8r<1!5}g&Ror z7na@)n-RiTWjD56dpsvm##TH@W^PpV$1FPw=%D8l#v>%!TN_FKDw+gP9W*fOCePK5 z%-_1Ck@{u=#b&nkHuNfn}JlhTRQaxkqx9Zaz9CdNASzjIbcrx92GB% z#$^mG`}_t24|nBm@FsheV&7GYn5Sq=2f-Sf&DJ@GA3Ns317aEW`Vf zvchhjygteVGp#bn+-dFj1AwN}L}f47wEEMZr{i za`N9VYS`__&gbUCFLg*IRYTH63M<*o+yFf1X&UAVhvEhwD_u3U1#OuiYezGNA?@4_ zRR2@`)yr}@I;bccG0OOSD|s$!e=cb7lYOY{8CaU0ZRp$HmV&J}G>`JHBaU)qhRjz| z?DWJ}6k#7OOg=}Q)z9#+k2K8ECJgNml=kzzsjqqE)7i4GC)#X$Pr#hkBvP4pq=B&# z+bGPJ7uzs*TwToh2^ORJXB!ztN3osHbAO|eN%9sI_74l4FVlbJJ>NkQay&CQ(k%o! z&iQek9sL*30H%g#WGlhMOA#r+l9$F?7DCkqYpFc7eS1jGh3%LNHGjWmM7)y@^gpc^hT5P- zHiZrIMzj;M@;K^8#P9vQW5yG&!JR$$WdIcP`Zj2eos1KAB3(ab@d;*BY(kGhR~*fn zckEftjvCeBo*)Y0MPcu_RQ#3C*NrlubmC|+LYFAnQ74sfk+*c@#SW{rgkYA_Vy<9R z&_&&hylUl-w82&08f~J>-LN$~u?w<|OsY=|elE(FmmfCYvu@B-e6tAG(pBr*Xo337 zSgr90FH(YA35IHV}U zU#6JWzVhN1q#Xg$&cCdY-Om+}HLUBWq)q^qLJBu2CLE3qxtEOqE z$If?3aT0vfV^m8*%=?^6ee4y?0zStINBekWc;=Q&7ya-#;pI`hgUfXqdvD>_ecC2= z2~W!9nkX{4Q<(B?;bg$dAJ`1xx<6d-Ox_mnh|hG>=W_D%o|!V# z7;%^w&|9`s0$1Ezj=Tmcgo0-K>V>NWZp`4~ZSPh0<9`Y|0lIkKpM0HBR3?Hvw^P<* zk)TZd5r_JRCP2}qgwMT5++H%DgLX%&;~x9R-otOx0YA2^Yd^GkxzCvkW!xx8ygw>J zPa(( z=hkG)kuay(c2+HdmxnwqkE(2{s>>F1&^B)YHkO}I+prlfb*L0*$S?*tKl25>X=CdV z-Cqb<;6L|jcZ=&14_CtR9G(3veA+&<*l*;bpd2>-gF8atQtaXERhB?qW%$my0Wurk zwbx0~iupQoQsW?pr}g5{Z1BQ5n##@p4$h*V1M~@kvtnX^>kWnq@*cVBkoOll(^B%G z6`!P&>`M%7X-mDX2T_qemh20ks5&$_2Bl@EfB!T&AN+1Vz>E|vtu<|EL30c%c@@KT z8D}X!!Me1f^Mxx(3gyPpqkSK;4~tptB%g@ia%pJtJMi{`$}vAtu;<35-ehG-cD=|n zq@^IpV$A@M&d1L{Ws-%%F#bLno;-q)s>AYJCq)s@3)G{86G<#8BM;fTW8N?K#-;Md zn=ACY4cWOTRfb4Dc=tQ$=+R>~{Q?w8j-)(7Q#7f?Bx)>WHeq3Rlyp{fcB8J_JSU#Q zKs;y+=~5gTvrS#!S0mURk*r^arCrMdl{4X5klszZT&76-B45jGBiCmmZvKRJk< z*r(XM= z!X`Eh7*lrD10z_MNJ|Lgp^a||qK?*G)ge@YDE->`e(A0iXX^6gqk~M%RV#%8EuzD~ z1-~BKk@!2|8S(Xw7l~m+P2OsOT|%6BJfqw=@916DAy)jmO){iyqy+Q1`+z(ThJxBv z0STH)=t7>}&B_;RSDFqs#Hw#UKi)Q;-*_nOUY#CtiQb%LJi{XzyV05=wF|c|6|SEe-umLkLCR>C`9s4mjE$X zLue34#Hv7Jz)Y+rQ#l6g$B2RJSPb+UD5_!vMS`v>I?z1usfs3)2GUjJME_aKKT$Lo z1j6$->reeJZUE%P=|P`?1e`8Y2Mip*p+GVYCHk-4K_Ei^@nU6qxA_A{r9>ki1KY6Okv2^VhP%Wxry0KLgUw z`uP`E2WGSy%JTbCNFZ>KKPUTkiyiE0?bZEMn+8*ZM>-7WTKJ+ASh(%Jdl%#Bx? zg*`FL+n}jP=SC;ud;s#o1QX&)0wr_T0AL0R+7Deo0)IAl!6n<8w^)$D)v+(6_LuYu=y`n;luA!rrrlUsc#@4DyPDY%Y4VgF- zO`Xy80`nS1avX>0%^wF?$bDFEV`*uJNfnc;@FTRYd3w7D{nE?Aw_+KU9Q@9^C^w1e zy+c!t@=Mz4`p{Duy01NX$Egu9nKY9wZ(G&eq-Q5sy5rD)kt{Aj?f30}NxUQ9n7o^Y zcao2(F_2Lg?ky_~zIN4$+FO@7Urc$1K)*Z8Rhtjx`-%7cXgy2$9txuYbfN z%fu(VjVSrFD`#BkYf24wXnNTE*vfq}!CUAqA4oZBBdlrJBv)PVW)9z{p`cKPa8Q7Ys>0x^qzO~(Bzgp1;8mr|rIUTbLfWt~fmW7EaP%9jG+Oy*jZ0F?CSvvUM+Faopn zfMvVE{z_VOc@mdPTp6(4V~>cAMureupDx^(-F;i|gA7LxlKm@A zna)?`4_H1I>~T*%3U>XoyWcSuMfdFFS)(-TsBZ!It^q$QN1%`RX`A24)Un#%PahCO zaMuuMbtq`7gx(%-fyv0s82*+$Aizk4ol1PA#2j(^-XGAf2(r~Y%hVBO_5p+DQTH&J zA#Y#S&yQ@DqVj&9UT&rbYc-$`nCA&)#xvqMGph|kC)@U4apEUYr-FOIxR|R_GGY6x z{3Rwli(g{XCHi%GPnMDIdRIG#)V8<Eg6;~j;Zbn5%C=7lrK$r6v-z=49x>q_3~E3 z_Av}zhe?8u?F6V*o^_vPY`HeAc{<-&VGkQHQPf8h?7hr zn_{|~=%4ht5JuXt>d)HGd)g(>!*q&~xxtiST00{`48K1{R!s6MWoNnCXx>kFdHSiW zvrgk^VzgudJ^TBbdA=QnV2f!w9*;X+ zd#1cu(a8aG>lIfmgM#{%Azs`}9s~`|7(m_?T z`Q1bwt<3<xsm-ELu29%5U!v!NA2nq9aU^?j!gHEnm{fU>Fe|_)9qZxUZ}YQtS+wHXwuQOS*wB`n zNL;SHF2|g)0{?n^S<-IUo{5RF5+eK8I+(4Fz!$Kzt@k>Gg1VWeZApkvPcm@fgIq{& z-(>$UuH)k2+gf);_#k^4&-*rWWi;E{zfC(XEIsK=5&azfv4*)U;?aQNRQSreWe5~c z2p=Rp^-^3_D|;+)@09~ZIS($A1+ohqmTstOf9Z2Pb6^8bJ95VQrRwZ9mfPk@`O z!q_QU`c|fKEOWp+FM01K$b;CgIwK$+Q~EO{Jc5@l{gTP8#pAi8R1XHK9Ofy{5)TN9>r@S<#EXIv`x_|(GQ-n?M>yB#s)BWS@+7D!A%<<*8C*)QA?BR|6v)DD{ zw(`u|J5+pLO*U4ncurfBOP?uQo$-hg_ayj3!?l_A?5GSit^*kCHa-#!qGOLS4e!{i ziDpfcT_oKGL&%FR=#Y^-?qXL*_RXoI9%H zr}2CuMAYslB+PW}(wd96R&rz>71qz09kGz(&h;#pb>Q}51HZL(#w|Cd_<*Py0|UtvsX+O8~+P&6TKn#s!#C4LQJ75t3Qv>ihZr8^3Yop zy;~;WubZ1MGH8+!Tv`39Z^<|MVWsf7vr=?%U^v}e<4oUI7E1a1eXO}uNFzu4urVE} z!FgaWxV+2Z30ARf#f_%#O~T$1#LahiM(+-RX>7;;fGL@;W}lsx8jFMM6mefDuJ2-M zFMgVHH^hjO z#6(a3dw5b9oTif9(jqUHYe?CDWs!b|DFnT#E-6MZ*{s*0pHGS5n)|uDA?bPayx{70 zxdAX${yA7@8>^SE#&DwfzLjV94cq4jB`u?Gu(u4}WE-R{_WW;ix}g)ixl=-ebg>tB}nM-g|5& z&U5l;ag)!0SN1%Wsmg)XAySrv`yDA2?+AsaV@-`R(|vCG%m^X~Q3r(rxiYdK0x%$> zKt3l4kR)M%psXY)9WavB0BHeERQdch)S^uyC|_uJaEaxYC;O zol0oVEyi~q8<&CeHE#;AFArAY@q43Hk>2lsrQ=yU~MROXX38RR22B30T@>hGmIz0 zRNP;^axll9jDQmquT|Kr^3!myrOb{{;fdwf`us!%FrRA&FRoRCqdvXy14uRt{s0pc zTtCKw=>##L=`z5n3^!s@BL;f~fkmQhjeC>o=ce{W(_e?AaAPZ8*cIAW`~G&}B4CuU znTc@({J{rzQV<)Rm`%4(1b2*v$^dMrVYee=XpqpimfrREc@c5=4iXvd$Ak-W3Rj%@ z4Q*vAlMI3rfR=HrXDW2Ww^bJGf+{Jm>&&fOeh%DT>pOX&a=;V2mA)8NnI|#8t=#~& z9&O39yK#jK9x7^9kT?e<{nF{Xx$87(2=>*5@nY>CPcqYGT% z+fm|bPu2Pv$z?oNI#cklbkaJ@8cJ9en6?w*)BdVY2KqkN*stSc`iH#f_Q`&UU@JFC zzi(#3C#pzd?*U1ZUE2MvA3Hr!z6K+(e4eVCH;1|USC0;g8dsO~82|(Dd&0B^{1eVW z%7tJfqqCOREND{?5y4V7!K2sCg!nJ~#t1ReE>%5!6I!k5h%Rz<^@+XF?b8$@y$Xk@;!*zG&prE8{!#R{K_`0#yWCGk!^1ws#}2n#0Q6 z{iVge3Q~+Du40YECKA7$Kkl#-crVwvY&FCljx`@FtD=MQ5P;1yF8V6h;yioS46?aM zTh^x(*kY|+(oeJ=^e#R^K_1xevcV>8Cr4iWoKW;Q`6FydNIICO0CvjJvqUnbmqPk= zu*T_%WzBV797O!Bw`h01qhbRizl2B_gO^nLorWVyAACwbtmSOEByfJj?>t@-&wHYh zTposULx<2X($=yKPzPChD+`E@(6qHiZ7A~DsAhkewh+=^A4ZPkp{bM7le~2fsml~M z#@)Ba`8<`#Obw4)$`p709!;+tUrMz3E}WGc_SHOp^;7=y*^@8+wuZJ*Ip?;l>CfiqM^OBeU0Lak}b@mvRc|eDw4O@0a&5qKj1@6n|!_`4r_Od z;oqg}fbPRrOQB(X2TVn75Y2dEuO zi#*>7xCD0hO3tj^?5Nq5J3g~{^yTWilQmd&0GB9D`q3_iV1{nnOy&pS<>k~^I5C}9 zkd(SXO&ISw@eaPPtEzoFp!ZQT`TJXdutF`oYQ&LvRP*vZr_s=I^m|CmJEp40K=oH~ z%_)W+Mrz*l!ppw269vu*NZ%Euu1=kz+8jBdN@^DL+S}Z1vIav!ZlXR@@0Wygc-mvmD0yr6@kB_w)hw0r+&#BpgmDz7 z;9TcTLEfyk-LAGB^v67Ln>k_Xc{L;ZDV=Ha^`GKG0pUh>S5__?+K(+aa82TX*tW?el@Ea;``hTAFOy*a!hf7s*<@RtcIk zD7K}q{)pB~tu55o!zfW&F5Rn+Qiq~q}On6B$n33wcM?b1(j;=Qw9v30X|UOv7Vx7 zYWnq^%)|NtdXF|I;WcFzD%_Xz8&_s1v)232TGpqwPc_%l9%EJxn4{g*2rFZ+RCE-s zfUr_gb@*z4pfKBY^OI=iuy{bV8rL=qcJ6!gtTeg4K~oCd9J4xHINU8BxO22kd8{OGKnfC(umaI$%nZ&8&U_(IjGR-5!a5 z?FmBfstH;?@+my6eNujynVHC9M!ZXcK;lb==Q_q; zEs(?e=$UKd{6Jv)pxw8ex#!l7ZiYdURCVZyFCd8S$h6#EgS<0KvY}o{rzy%P_d~kz z>#zk25PCK^IDfNI2U^nkka=iQ*>X?;UyUO=qbM2X7nU1SB2h|x$Y^v(C|VAkyXW7i zcyp7u)8aSmC6ZvMee;N5fs1ZPyhcGKi;1=i)G~7WhpAwt3qCPrziPF8uO9@7|0PM& zCNr+C7G%*2=6jz|rTp-yz-)!p{X!6SLHyss;ZFWlxBZ__69fK-J6vf<(fMN3tyOi` zo%^kUtm&@#38lHE&7+k@-t9wi%t7?Q=Cha9S1NmEzFS9I?O>5gbUqp}kTjWzc{1Uw)l^pqq_L`z`NCi*2Lc1wkV z|7SJYvVW4&L9{1)kE~069CqkAzWg$q`Ip&QWxEAgeuaqjZ7=rYidIuU+68T|$z^tY zn%%_Q_R$WQpn>0&JK3vBh^X?SR=OOeFf`XpN6Jrfn*E3NhIk#uO=DUd8An4scbWJ8DAR;JPkJv_3Hl33vu zqYeib@q39gs5;{%gst&@kgq+|hRT_$Q%X0CPH(@}qsatqzf>ACkH2|Tj#E#V9k3I^ zu1C?dKG&4lgHYy(q0>gbN`-MTw;rzC6SDt^Hqb)(YdT(y3T>L3(YzPPplWy0y#IE= zlJ*Y&x_%I)($vK0dR)#A>Y)#F?Ia)GF5M5Inzy5quWwW;Pei;>{<+s9K-OY*XoU(NDz?myHBc_r3*@Ns5C z=Ke@9>&{*p1V`5H6PTKPpTB5)2Eux1n;k%+a?Q~@ys^odz=7SNVS@0AK4y+$ZHT6Sk(x>0Jkj>UzEAjyca?81gAsCYtU?QHV7HtW)_rcdg*v86MR(AF1yLSxg0DSMZa4~-bOaJx8*(#|%(H>7661ls3} z<#tUTs+w06=pp3&BG;@zRcNZHbMqayU;&wmH@U&4fKe=Ns^9!>=4QgCsC%|qGM-1{ zTxsNyTThKBzc<1(3EZOcs;9;)e#reD)v~ta#}Cyx`@HbuAoEmz_PE+DiV8TudOB>dxmdt-I8(L|S_?fdF2Bn;ZYh|DVKoA-S^6ENPusH4 z@}V7^GIU#MTdAJu3W}Fuy=Wj7&RI(dyoosyRwhIV{GlqmC<8`MgawGfIEi5X!(kGO z%7Xs-AQe#tAQ#3=RGHZCk1FzY7RBg^vte+elt3J2KvV{}i~)+N6Qr|ZYFHUCwqk-n zHB7V^3^AvoOgcAS~GL4+4E!1z4pHMZ0~LBP(WO-5p_2;AOK*3>;zIHrZmENpphr) zL7=aJ_Li1e1a)#_H6~V%6*f($bDibb)QxS$61X=+ukpy|ljS#UCm!-n?skiZ_qEbj zMD1UGO>8%?uh4aeoa2E6wpJ|RppJ1rQaSPl5TQsxPAUUGO6k7u&D z0z=j)Rm!A{!h0F|B+bBWdDRCS8|O>!l~gr_!)x(98IN4-R2=vx9EevUeS= zfoS~;@b~3d%n_3ACv%@)S2wsIX6Qz+G-H>6s&Vb9#EnZ(_4-m1G6XuG-Sz&A4Aa^v%NyG1c=hukZRL>o`U4WWJe5(t7n!ti7q7G8%T?>3Hx$8 zw2@^NGw*ptKeSVM#)7y5f`aJte)*r29O&}~DAtVS+u&f(VJGBmt#8jrCTVuBj*{ph7!i?Xj~zo0AcqNl7S z%ffy~PK=0u7dd4M+)St4Qb`BDZs&o(F)!W62 z!ounE6*>=Rj&+Oe>V=xp-a9n3EG+4^({ILMbJArzbD$1$qVCr<>3i>@(pD_5-phA4 zhLfY|?Qe4rL>4@yMkZoOLx8oU`)L>e051*zKnXw=@KPfZbc{6@d7y9dP!AT@IVMJU zD92caN6udb3qFoEC~HuI;g_$QLx11UiY7SN_oHR4>GOUDueQ#Qj+QDUbK3XXW=%a) zVGC_aW^tXP`hC55xfMoYZD`ELXgq}GrwnMlxw8DO{M+6Uph{FAKvi9>8z(F%Pe8z* zqBFUn%;Jsc<#4%pE~tXZ9<0T*p`4oCPq4{(L`;4oPFY{!2NbHGe>S;5Cl_u(evy^Q z&Yv%ye$vA(aKJMsJ(1g&bFKVmaE!|k0Q_aJ&)w94x8`rc2g zSz$=n;fOa&PWk^MN63?a+$)O&YYzN|bmHQcRe4*i)K@zy3-) z^A0X{EPutFdbuW#QkM{wL+X+!1u(Xs#da6$g6Wi2I9 z{D*9k@@aI6P_i|b;?NXzektQ5xZQ`?`iDM(?%J4+$%A8!*aL<0V_JX9HG3Q4%<-DM zP!T1}8Y)PDt>~05E=m{8Pk~|nT;Qj8z)a{tkzR-C=9|m5oAxQf2rH+nk@L*v$VX*b zFGzBjJ|4qAts0aEeIWe0(RevZou~J?TX|`$tQggcGq`HG628n<_#Pv8;$cHIkwVpx zCo!oEAD$ah}M) zyy>m-Sdy9U8`Xqir|NKR-eTojzZX-_OId0eS!x-EFLr*GdXM%uEMc+{;x?)co0Z#< zVeu`>%9l*gl(`qL6(S1pB>TCN69Abs+PXMMp7`+C`b>i!m7urXabdP@6AiN1jrBx8 z7G3nGr3Qsd)Vn*`4wFgpUkkUMI~$#}?j80%>*oD@-7MT`d1p`SYD|wks5n5kRrTOW zrMjn2a|y@D!f2M3NZJ1i5Li5-#qi!hIUh79oHw-n+~AO!dW-;g`zFWg|I*Q}H_XBp zi?(POr&7=^T_M#f-eNUcX2m+P8*s&`7CQ)hzO9)pc@SFbuOc%RM#4uMlw{@kR+Mct z?X~yJoq*cmV;;A@pKml*GavgCnL)6{)AkeJAq;9RpBSdDT!uHBha6qvReJ4D#0(Nv z*a!rLGo=Z?PwhucMiOOLP)zv6u&;m8=QZ8xt3<~+7`LlHZyF4tza+72SWU3m|mlh){DcWl7_kDNvr0;v%?>ca`J9nY?rBw#p@V(lqcou48bb_ zeo{Q-^#wOq3YEAY_@@VGP*(3*-p~uJKNq$duXj1rV~ccN>^ZGrRS8@)o*s8)pz89LE|RGoLs}oue8eWp-MnyfEJ}6 zUOf_d?6@XMCaR}e`xe8R?gkuRRR>yq!?yBXN5VbAH*@d!%oJF)q-Bney<73{dAjzm zqH>7-Xs1`!!@pDByX)9BBxZmX4-R0A0-B^2{ho`m2W! zNzm!dO(RDbrc%FrIuZ2%bI4ONs@f*p>$BhMj?x$0xgz0Qd6rEw_qXXmgtA*A zn(Jo8w`@I_>kV&>c6G_PB_IQLu;&nmUhTk8I$`zcx9ZhBC`Uzi8=@RVME=R8 zO5BfJ2L(Z=c8nyxg)06;uFMib<}KXTf=c7(j0TojcUzNXMIIKjcZSgvFV93&m0nwD zNjWYNQc6JFK=LWci%&j`xq|y2V-)53nH-}D1y$*6lcmQmBf3cYxpVhSWipE6f=S2V zYl}Gp&uF8DC<0AS@wz?(@t_v-2(PqQjPfh`v?ZHoxGI;9c?nEkg|pSrRkvfx$wrh?pxwcDJE9Fc0Ms_@^InK<0CDu1J>a8UbQ6D~3uy7g?QABYWV)(n)j;N7?BKMZF^uBno&XS-oW4k8~ z%z?<5{%HHpg5vUV?wZ*r)(nAYqYUu0b&8g8yIVkRfRyAjD!~kuXuPxx)kS zIvB8$WiKMZ&O@#2$!ILbMG+cakgOcBpv8imMPw* zVkjxEjWl;q&P<*|Auxvjic3}UgT5;($7X>$>yS@zBNErsP7&foy*>9grSn1C?;g1|4KQ(KeZw;ANJ^`d6Qu|K05SPaLj|o zSDLoN*jx9-hMja|udDm~hD7FMj?GT#|+eyvM*VoDqSc~|n zUvdSO`sh(ZmZqAj>QnlJGgka2_T8l7gFU%7Ayj+f%y0FK)_XOGv^yquxH|a>_q`q5 zf4PWrzi!q47Li^*sw>0uljzZvI(b#$r>~-%pDmJ}X^(?X@gDx@O;S-lvn%VHP2$0I zt5E%A*Mu;WccUa$WX`S<4Lfem3D>WwHvITc5cHW7)gmUfaqf{4=~$-Z_pzL{D2=QY)cU#nv0t#J4;1rD`~^|5uWLa3T77!;P7Iu6lRq1$)*hjlL}FCSw0~ zkfsSaTyAT1R^5CZKW1}5aA$UZ{{&PjmGcRy_I2HHQoVhZQXPY*&KTf%&p()wX@Yi@ zGclOK!WQpcfkrtQP+4mD?nwVII?3iX=`qw>HCqo1>q%kJEB(a3TOSxQrg|Op;fEeb zpuF7A?xANFtR~Dw86<)xj1;eE@Zj5xE2XTQ($3_!~_B6qym& z|05d+0WLr1*9ki6u8TbQorLoUBClF!0he|h_t;s}k3bqN{9EBlK3Z@(hvtio%hjY* zYiLxVo`chE19jyBf=)x-{ZQ2cMyQ)>pPuXihzJ}T_+?d~-jiuT^@6Kom*ANY;s^@LT(Ku0yth?q5tt zWtbfh42{+b>N#r&CrNvXeiiAtb+0g4r!eHzBW99xMd+?Z$621gW4x_ebU!pAgx&d} z=qPIMQ^?XYx?Qgn6D_MIvtjbCZU_|d9NhMPk*GL-H`IhOLhXvxD3Z5S?&rI!BM^B8 zi~l&+;BG7lF?*9{m^?P7$~WStt!9SPq}hCLJ!uJjLpUi6NQvW{?fcbek9`kbrypxI z&EFo&$i-)A)CIjM7Q=rZD3;0jUv+RJv0?(#`Rk}Gn58O z(dt;HFFV6@oS&Vr_xsFNHt{Yz<|mScuIjMthww@P{ox}7<#<6k?doS=7omD@Iq8JV zdaT`U2$EuM#cL{-|H?+ptjc|E?SY`~+Az$+(fY2Xn+g_0I7NBfdyZ-Pfcd9EXKa{) zQa{2{_u1}7p1^1krb!DtL_xLR9*C}Ke*o73#2Q%90VLTPQmvQeKUiq2Osy1~MC>c? zf7Ot#v1LEah1L4nz4AH2KmH}}(iy6wb{f*69%b;^I)$eTcW6%c8=6GbVT3dj3;|x_ z#x4;`BB&4F1_cvu%*bHWV5B;jUOF51Q$ckE^LXm5<_SC<(;k@_$FmU`n>9wXowO<} zcHLj9+69#Ui|WmARG)y{F2fh|dULnX?tQqD?KuWtxX=(c4_DJ6Rt1)M$N<$g&3j(& zlDgo?*NA+#fvXakxi6dOk=liq>Aksq&yw(a~kL0;SIa0fMCQPSlq#_hu?@6MKnf;C!E)oFhXfMn}k6d;S8uqixh> zu4Yo|LT`hV3gXz*6{8S^e)4`cwAbX}$)vejd^+Y0B1Sc+P-N*ntlCu#CONMElg9Ja z^h^?T7d^W*C6*oUGC|KtUUX8q*KCd30Hg1L0Aa{gPAQ-xl7WjKn26NjLjITCc*-S6 z^S3F+_Q!mL{82K}KUUe_0|;RFGczKkxurk>e+nbN*W5@EUKlc;2LfzDHgF39my!G2 zioiG|ACEMFH2pt>rI}lc>h2$ md}OeH*LVMY(<#9}Q1l<@-)jEf5Fg1u&^R9%&M@cS2mcRNku|~q delta 5537 zcmZ9QWmFr?wuTcRxI=*A1b26Lx3;(z+G0ft#REZ#I{`{@f)|J2QYcQ*Leb(-ptuz% zcKN<@?>*;y^JCVUJ+s%EAJ3k7_j~_p_f-uNh;@Fric|pt0G99$ASFy+vxko~Yz6e7 zIOLy+^psFs3?9y*#xx{dQE;CHX9_V*Rz55vmmDJ?o6MJ4(90j1b>HPhy2&ZbnmAP7 zD(L~Dn-GQu@s`7$%}T+ZT39nkZ1?G4VUF}$l1 z%Y%?)xucFW6z^=$F69p$SIqI&yqIymt!fgEY^!qf1hMpdHU<$;)g>qq2J0#g?6YnO zcfijo49_bE(8O!+bIRHT5>442ml zY@I+oO;j{e004jqh|pP=W9cgQfeWH?!Uj9EGm0!E7UJ)X<)zrfym=j3!3%{(;IzDLY^vu^>a`P$Vlu~F$1>6wh2c`ws`UYB59|=3ljqdeCfI}n^pIt&l& zf{YNK)3EIPI@ZnX`~I`)#~np3uRSg8WOEf()lPCMmtDFGHsxeH;sw$D>(H^1Rw;oS zKq4hP1x+4Q)Sj;fhcBQp!-iZI`3O76cVr3MRb!f_!?)=536XMUXxbkH8RNJhDTB$# z)bl;bLN4XHIC_b>O}C#NqBt#`epP7mp(5rpSaG3|#HE5C&-^kctYnXPWb|#g$~{fWTY)2{f!m9K>SmkoKii33v!6zlL zD1@>xzvUF!i=vfKhL{jLH_mzsP=m9)5aw(B&+IJ%Gz%X0JniQ7=pF~>xJ=89tkRZJ zl9NU!TAGYFR4?nW%^XThczU+j#yKQ`63;54cT2Kc<*dVoq}{s@Vsx8G(0+qU95V9s zSq6WFM#~4Ue_=1mOr3&| z+qD*MlGeiPgNQdWs4Hn?+waIm*pehUeekSa5TFo{_`Ot2d=Jy1_GJMHtnrpLQ+a4` z{N8`aOk>VLKkIJFV>$y%Mn)3QJ6~-Q$`lpiSfQO9OOn$zLZDB~8AY79sX`Q^9b;_{ zvHQx|(}Xtsw!@ir>1_Ww;M3f-??OB5Q5fQ{yH@+o{LDh*s`T(_~ zhKih@MfOx}1$Ii2WD6WmENEcOrAhkyHcbLqTjNV7jp*awb=c@!wLfqm-$vaI?V8mY z4M>QWaPydnZgToDZfN8$x{$B;24^LG`E-F02-1iS(PWxA*leQWOdUVhH*KE@G+Cd* z78BDC8VgHlTwJ}99KooOR3?3vM|UL)9Xhd5A3Y(u;BmE6NS!tmbXh8Gvi7F!TUxrW zUAe{h@7m68*DhH?0RU7n;45fPU;;co&TryU&0H7hNe5O~4G8##l+#ojsQQn|^nPV> z;+y5kv5a)O>^obZG=Vbf7U@A|%{CMQ0dsD_cmp9#U8YT}jwtdb z!DuhZ4bcddi=3#}nW}8`-xFVy>)DuEGxowiUV*ifUMymT4?Z0waKlhen(&nB75U?o zoo@Gz$dB%Bdu*k{ITJ%&U~s;3!W(hbBiNz2ljYS&hqy+8woOrtz}P7CA-`K!!O&1t z(kuS_sb^FQT0eHAz#zXbR!`lhey61D&u?wE_v-WgBG7nh)-4i=zrGo282=ClC+L^| zL3cDNf{-*jriw@09LO>>mqoVo$yOc>~{k>wduG(u^^Eao=UWTy- zonkelxZfw#kgNX7C9H?TG#tac9(m{GL~6Kgr*#)gSVkLn(GsLmPLAI((b^##{p|d0 zKh^?r)_2V3*jY>Aa9Y6XbcdA<4XFV5~AgOk1?wH$af$Tp0Mk1u|nm3VS*)-MPa6A@~F zH#%m%bKn}(*?|m#OO3I(KPG};-;X)G^FJ{al!3v%V$lc_V?9e7RpX&Y`qNI{FGX$Y z)jXAqd@25&FR)=d)zN`>H^Qf^PFsW?=LG@okWn(M>b z>B}5tcl6VA1HEf#X%)b{do#yp?4mr|MUuYQU&mrr-lB}2JyRbS7jgzm++7U)hG;Ix zSRY+@y(%A`={el34EJL)A={v;TS&$VM_=3$wQHc1VuYWuGURCY%nJ1<1=nUV_XjAg zdA)4n8nioc}>26E;f^PC;+R6tpHx?7B3m zrz0t$82H5UXm}uw`Y;Yk#1&4ib(CG*!*sB^wu~Q085{9ImsSF&VvS`Zvw>7Nv(pSpY%KZb&S#WypNy@;_dX9 z_}jb|a-pU?%XK*(ziyZMm0Vrt7xEpw!RE-OhhB3wX99bNznA9*$N5DFs~))Q247n?iqrQOg_<7S_IZR=g*ugQ<0af$Kr z4E?_=rz?e-@&2)L*zx}UJ%s-HJyMMd zJ$xR5LJSlCsA(8ZQQYNm|EYP{SgNwUZRybCK#?n5q_B8zPg_t58|6hpoChgQdxoP< zqA{B{w@aPHm{q~gQzxM!W~yLz$3i07>uT$osj@+b{!=Gqr+j%a?kK?BL6QA}uJXL@uMA#@61*{ZiTGw+{(klM}7L{Hb`af#g&R1IN3HVCP>60T$8k>oGm6J5Fu)+ zAQx+x%x1@&_XVa0t}D>jOCtB&7lP!3eLW!nwP?gM^r9<8jBATgYhOXZ>nBH}$6;6z z8`%MORBJWr%(U^B#|F(5577N2onVdTimSi@6Y{PlK#M&UjCDA<~jQLY1?IgCHl%)4E5hTs7~XZJE*C@l~lz3)Ep%1 zSWqYKa}#LNJ)bNfsOab{(#{#gR9&g@ZU~#+SjUD=^*zOm`^IU02}XCSc5~*G8pJHq zTSjb{R;Z{cR#&uJASz=%-p(JFiPC#ilASGl5|us zVf*QUX*C|xr#3nL^3G?&EBk@P0%lu=&RDWL-j&cJOQ z^;i>_>oSAJC}Jx2BR_#J@_K9YF$!$(uweh_O|VuBnVqn94r zY1ABSbN}HVDwBl*0y2G6nPH&6-wENrRpxVT*R03>$mkcW21>B{o@vx^o{b^Sv@8|z ziOy~SHwH}gY_W~$q0^Rx?agmOeCu(abpYYjKvZQ?~pEjCS)E7lPLC*itNL^pIMSkc^=tN-%F5gE-Pbgd$JSG$t;xoH6Mi=NJUe)1sp881 zQYU5#N3WfTP4DeTp1DCQu`@tidh`k>SOep<8hW4da-WPP-B8K*P%=zmd34gA9Brga z89$XD^&bA9a+j3qitVSYx=1hu1GYFzjXC6Orle;Z)rGm%V1$jqLUOpBF`rIM$??Q0 zus}(;d(xjFu03vlqvCu`hTiKzZ2BzW*81H+#GdapTxMp@(MoXF%m;dCtjh%}qA>fZ zkT%8mkKItC&Lx{!`yUrYrPxfJ8mMn!Rz&^T&_~F&64Wn+qLO5Po|FRKibtfm9!j!x zvIF8yyNL6_~Y+Mw3lhZ7?1Ua|Y_TAliB5Su*BhLz$X)E^gPQ{k<>GlCIin07M znw2l!E=_fwO7d|Tb(_h=l3JGL{!_|(;>-#C8-0}Cc=s!S%v@%+5|RD{s;usAZ@RcO z87SLfZ);5@Oi`Q?dtAi&==H19tu<0Cq01XS(O z6T5$^g{Ia%OPK z87VCl1%sy8Q#3fCOI{p`7B|>R5w)?V?QqdoS~i7pmj_q{I}5})UqCUaG6l-czwM|} z*VRF1xx4mGyku}49!j7u+<^!FAC4o4R|M^EcTAR-3`hkx^OSOf3n69LY`Z}?cK z{t4t5tieDq>Vx6b(U}qSaJYV-%$}Fz8HjC&)tyWcz? zn1iRcs9&(RlGY8>GY4R9=a|>CX!_ewXy}Gv;z--e-_1e1vfG`BFMWQJKCMH;u*~sse;X+?#P#b6thn|#hyF!8*Va!{&EbAWi$X&s`O+H;%&2+HiEK9+onglkBtgyQ@_{A#(& zw_)K1CEeMs^fW@C6yrQ1d`)qq!Ow|B!^M8I>ca~SkfeXJ+Fy-^LRFcy)ga|8T?Fn) zOw|Art{KFO=6OSx!ONMHk`Oyk;C_i6p8aeq5lp}6k zW*3sWo}rs8#$>w+C);@ETGzz;FvK~@I(e(#Bj>M^=p}voyz2lF8)w}pjcVl)dFw?8 z9PxEIRxb*nQDB)>7XB{vo%Y2N=V?Rz<)rk6xY%Pl!;%^yZC^XNEH_}bhS;Ej$kSWh zYUf<-bo6t3(Sik=WDJ@tq>-%iwz+)S z&t0vpG=wr`Xq8p!ATqCi`{a=sXqVc&$io4Gi}}H5zINN_95=wynlMl4+Q%H%dYH_H zRP?HZ%PalHovg0l_WfsMWbMzbGBs5hx@eR1SW+mJkyI@q`=c+hA6mY!KnLV ziJw+wqT_H|iCN3oVDYmHl0>W=4Rxkr;wS>@wk_4b@*rGl2qKTJFyUdeeLlJOw&vZF zRpzJY7Lyaz%>#H^aa`&BST3}Lt7@f)-ZyNI<((YK$OxVRH?syz6G_!p-eRHGy*~%d z@iLPo1ir%|^X}n;<7ykN*GCo?%qF(;BF8#5$sI1*ci!UVC-=0LXAf3q`^Q7Gf?c{I zoGhJq;Ti2AqNrs`dW*yNxFuG|C&}9Ek4ls1Y@UHDW$5v^H&Y2d=^xxZVAMO+e&lGz5G}eh$W$C@*^gE2I^BOxDuWaurH?2xdzRDdBe43B<;zbPr zZ2Sw@ZthAW#^v|s| zt)lt@101y?O6Ioh2zm(uQSkA1dzHt zFHMk!TgU|Gde@V+j-qi$KIk>m+SSrun+C#4<3;`#X}}RZuQ!tzDjuEPN^42Oq;IOh zRgx@pmhpVWTH*`8&}{1$&HIdQ@eyXP-Rv_P%h|8jJ|l%VXw-NZxdB*$-(*+3>~`U< zLLa`iA+Uz&`dmJf$oT2=(B8sja7y2KlyQZp4#g@W%)cC`Mm$dy!S4MCPQXo zpxmU-py3Je@V)Jjruhv`>d6WAEPHu2@f=gQSjMfju*0`JTX!^BK<|!`F%;2vi*c@j*5-g+I?r2xjwh^tqz5{!;&5eSY0v(H@JOc%U70v+ zUeSl`wvU#5oJ!QI{lApEsl(tB<=vq(=v`z`?POQRz0zX;NvpfILA7?u;}?y;Mh^k{dP+? z%As;wi7v^^WD^n@gqacHwp^za_Cm88<7Gx#W6I4h7WzfLVAj$R3I>BdYgYq{#Waj9^` zq@cI*H!*bdp|Y=&wWnyX;;c2oT{dpCgy=1HekthF=~R&*GJ~w+naNx2Qex;%8A(5F zQfJkqDPbUwJTk{}?>s5o(MD)gu-(TGc0aGGep}YC^ zg4KQZbO2I?IQ|?&9-5f<%hVGonh!ck1HSLN^Ts=(aSlzPMm;R{e z=%1^>{>NUReC0y}9{4y11o-?Ts8)_CV^EIB(!n#1L&z480^l^IO$g`0o9fiTK zc%PmdfcV|7H&87E&M#SY{qAIr$j_JUP|nS2K#310qv{Z{=?C)T_xq{k;NdFK#Pm5) z+0Sc_OpEc-nm1p?i3!V&V;~I-kV7o(FJqE!^*Aq08OJehOH>T@9g_%Qz!>EV_*|@oQ#d3#Li9S*)U$%gXVK-jMg^ zkL#`rA`9+tV=$&atl4gY&1TZ$KwRjB(E>j9K>Ub~58M@%V|7DbN)Z)v96jUQX-Y`H zd=P!LN9tEII_YB(6WOC{kD-fyCWD9Qe$n7|)KHc*WKS$F>{v{;!s;}lWM-FzW-mPN zVU?YI2hEoHPW}6Vr7&#B>tM zk)(fbgl}U>uHLcU88l@7%*<7#VCc7m03;{h$&P_dKj=gfj)uW(*jCPf83%enwVdEj z0kp|N)S^QyY4qXlj4F{wBQqY?zk1N`4Ex=b8Ks{0S=+Y&tN1M=2;cDNScdhCrUE8Z z&IaVf&C2S~-n|R};F{!laawW$z!;pZ9PU4Uf?YXf(BIBgUOoX>gsYWT0{+CU%Nqb6 z~Q*l>dx##}h0^&wtw}H=aFa;U# nzaHjlkVTER+D+_1jC^t#;A)2!hA^F+%@ z6aWAK2mpsp;y}7Hky$Z<{a_fZr$WKOn!CORgjeshU>R zCT&u+?(*!wA+ZXW*-mKp>vwE}6B=5T2W*agzH`N1T|bwFcLX6BuM!gZA@QI}dB&<; zLVo?czlw<`6|FK_@Cp+00+L*>KYv;^Ts+A=fbx(~$%O2cs+U0^(>;__`n-mJ3RiM2 zN~-Wv>;hQ}pqWuBi(nLnv!JA`B9^ceA7Su3XDQtA^iV>jEJQ#-75Xpttd?HmGi;xtX;H?{QBs`cW3EJ4vc0CjtiikEj(QL$9UZ5p>dnMCtPP~#no3XK0qR^jAqFMJKC^Z>to#-G|eblPs*s71FeiX)I_q?k< zZq;#Y)nh+ioQ%)jw?1jraqOI*`p&YR3|S9s3QQ4n8?0A?Hy-{Xm4IyB~I0F6?oIChH0>_%(!(Wf0fG{!i9 zMyW$jUZJ%{A04|LJv8Rkp(B?NlsfcmSW&n9WhSSCIkeJo*gnI+*&uLcfRR(NnQNsT z@Km#2Y}i=?F3t^c^onSu&c!!~`g*twIyS^p?W~Vhx_HY+dqUV>=B()szEiPdmGlb8 zG4-K8#{>)e|Jx76Yg5rJS9rLY=^if_zy=QW`H*w2x(_@AH1iSEq4sK8gLq{B@IJ%i zg$ssPiMc@%QgfjMWlEnK7Itqa`UG=V-ugdKO9KRx5i%OHrwT{|3ZEFp?ivID09y@{ zp$Zv)G%k2;Y?W7AkE1peey`O3fc(CIbDfNmtQJt(O0Bf&^z!T>PGSvUYMe0JU*F>k z5F0Yu<{`l6bIx~eKA7$2_p%6XR5XlNJA}g+1+>cfkyYm%`ty&&rzaFNl2k`h@QUux zH`<`j`yYSUwp_e57fNLS7OG~4E>hOdQPkvr7g~}gdq+W9h_&S5`3jO^4e#MCD+A zr)}G?t(!2ftQU6)!t032^x8;XW<(OS-|7l{714fsWROKw`asar4t>GT2fRkGphf;- zv~BM014&+AXhCyHkI*Y9P(AR<`I{2_1)x|N*8<8U$tAndlorJf{WJ&h<{!L<;CCZC@(vIv_T#AJ8yrc?0k{n%sgD8fL~?7D*7wE(E=29 zXsL*DUVv5j4@#zb90etLH~t%oI1U#Jyy|{y6y!QxmQZ`!tIw=DTw9|)TZTA(n)kmC z)#p|nu2vnd{)hU)s>8KYUxq!iy7`cOW!2$o)i>dMt+N!FH0h$KKG|;tZv)tWL#l8! zQ9B$zFQCA=0>1zXX>Z{9wvV^b4QiO%wM1!Xy%zB9kTT^KXbnG-wLuxT=n zC$)y*sGgS5-9#>xc$T=PHq{027R4;IY~!)9?5zkwg+|9)5vBL=J6+kQ~8@f+AQ z--zEVdV4gprXJ;gdc3OhwYH^(wSI%_MivtEOhIZ zS*1rgm>zj>a@5n-3n#I-Z9*?Ysa+j)p)uy?z#JOQ`J^Ui`Wq2vRy9FEPw=veLpaL> z!W;?BgXFb-mA-Nb2Vi}BfsYUhXP8(W8Bd(c?g8Fr%H|7|*E*;xNlnEI`xm}>VA^rP z;B!NNW$aMRg%pHI_4+f$4%&)(8}^??`~Lt?O9KRxoiZAerwS9ZSQ4EI1h2jgvXl87 z9e>-7+At7(uhf5t{0_NrM}!ptqOJt16;QT)s=UdBSew|9Z7yxqfA2T}mcpvy$?Y@OSCy9_b)ql8^8(S3;Xsl8IooBY^IBh$pjFXC?FYn+ySMe#&))P2Z^l~JXqG1CzHq=8$phxb5> zSaMqgTbAKzui<#a9-d7;OWYW@YX*Du9yeQS&v-2MFD%xnPrOdAiBwhW3$RV9v45>z zql3YONu`&@KjsmOMw;zlMPH2?Eb z$;a3=M3*4UU$S3tg~94)NNMy6GJ_ptR~Q#tb_SJ#uR!CJ@(s+Gx>4A?KsG;6IAi=; zp=;)Ga@8u^QLAF>Vs43p_CKml5lDlRhtev@7< zlL-`kXNyY#003r_`YtyEGv!B Date: Tue, 7 Jan 2025 09:28:09 +0800 Subject: [PATCH 15/74] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 7589 -> 7589 bytes worldsrv/action_nian.go | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 735a0e1..318e11f 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c -< ((2Ÿ28@;JƸJPdX` +< ((2Ÿ28@;JJƸPdX` ?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 1eb2fae2187ccbedcd0f06773a8e11043997602b..c7726ebfdd3cd5c062d18189dc39e95772ab1137 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUweP%>mj6Q-^LZ%s#MwpgNd4Q0!6S1iPbQ?IRYhSPmAjL(m<7%Ofy@??4?2 Xa{$a?V2hO4ITisu`h}T`fwm9;WimW9 literal 384 zcmd-w<6snElw#w!+Qtl~uR-bSQ2H{Iz5=3^I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwfaQV%vC=nh==!`ufkmlN!chP97axMDe2usR&wBCtlF1t=au@;J=lcfby3 P=U4>v=oe-#2HHXZWwJaq diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 7a470a48a17a37f57a832fcb328186de3c56e8c8..8eed46c88eca9098dd4941132106299bf1a5ef8e 100644 GIT binary patch delta 317 zcmZ2#z0`U_xgZC}!d^Ck1G9L%*f^E|St1iV8U-OtE-#4Wg*N8NQjD!or9d7`>EsQJ zl~B=!&MK&=(Pk?qQKrcOoFbExS$;#M7aWoUN?&Ya7GRm2&)NdC0K|q{u+(QV3)@+s z=pvvCn4s1kXtACAh|O~H6j=dA*2y~TM<$ob2u^0?sGZCrD>%8IrJ14950(o}KF7Be VC@r{o3jYq?$(wlvC&$Wq005IGTW^4nVih>8z_CTjah&ND!t&4+~j=L7MKM~eSj8# 0 || damage > 0 { From 846234371531a2046cabd2fa98942a71dff25941 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Tue, 7 Jan 2025 11:25:21 +0800 Subject: [PATCH 16/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E7=A4=BC=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_nian.go | 4 +++- worldsrv/player.go | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go index bf00c6a..eb9ed35 100644 --- a/worldsrv/action_nian.go +++ b/worldsrv/action_nian.go @@ -713,7 +713,10 @@ func CSNianChange(s *netlib.Session, packetid int, data interface{}, sid int64) return nil } num := msg.Num + pack := &activity.SCNianChange{} if num <= 0 || num > 99 { + pack.OpRetCode = activity.OpResultCode_Nian_OPRC_Error_Nian + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianChange), pack) return nil } @@ -730,7 +733,6 @@ func CSNianChange(s *netlib.Session, packetid int, data interface{}, sid int64) break } } - pack := &activity.SCNianChange{} if p.Diamond < int64(diamond*int(num)) { pack.OpRetCode = activity.OpResultCode_Nian_OPRC_Error_Nian p.SendToClient(int(activity.NianPacketID_PACKET_SCNianChange), pack) diff --git a/worldsrv/player.go b/worldsrv/player.go index b2c4b72..064d9ba 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -2903,6 +2903,9 @@ func (this *Player) DoShopInfo(info *model.DbShop, isLogin bool) { } //年兽礼包 if info.PageId == ShopPageNian { + if this.WelfData.NianData.GiftShop == nil { + this.WelfData.NianData.GiftShop = map[int32]int32{} + } this.WelfData.NianData.GiftShop[info.ShopId] += 1 } From 2beffda5b63cbb865c713fa29092ff5f92cd0050 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Tue, 7 Jan 2025 11:42:28 +0800 Subject: [PATCH 17/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E7=A4=BC=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_nian.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go index eb9ed35..8a6bf7d 100644 --- a/worldsrv/action_nian.go +++ b/worldsrv/action_nian.go @@ -479,6 +479,9 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) if int32(otherItemNum)+p.WelfData.NianData.OtherAwardNum[info.Id] > info.DropUp { otherItemNum = int64(info.DropUp - p.WelfData.NianData.OtherAwardNum[info.Id]) } + if p.WelfData.NianData.OtherAwardNum == nil { + p.WelfData.NianData.OtherAwardNum = make(map[int32]int32) + } p.WelfData.NianData.OtherAwardNum[info.Id] += int32(otherItemNum) bossDieOther = append(bossDieOther, &model.Item{ ItemId: otherItemId, From ff09361a1cd03aaac1a763944de827e849865a5c Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 7 Jan 2025 13:30:27 +0800 Subject: [PATCH 18/74] add tools/benchmark --- tools/benchmark/action_login.go | 95 ++++++++++++++++++++++++++ tools/benchmark/config.go | 35 ++++++++++ tools/benchmark/config.yaml | 65 ++++++++++++++++++ tools/benchmark/connect.go | 69 +++++++++++++++++++ tools/benchmark/constants.go | 31 +++++++++ tools/benchmark/gatesessionhandler.go | 97 +++++++++++++++++++++++++++ tools/benchmark/logger.xml | 22 ++++++ tools/benchmark/main.go | 25 +++++++ 8 files changed, 439 insertions(+) create mode 100644 tools/benchmark/action_login.go create mode 100644 tools/benchmark/config.go create mode 100644 tools/benchmark/config.yaml create mode 100644 tools/benchmark/connect.go create mode 100644 tools/benchmark/constants.go create mode 100644 tools/benchmark/gatesessionhandler.go create mode 100644 tools/benchmark/logger.xml create mode 100644 tools/benchmark/main.go diff --git a/tools/benchmark/action_login.go b/tools/benchmark/action_login.go new file mode 100644 index 0000000..56cb89c --- /dev/null +++ b/tools/benchmark/action_login.go @@ -0,0 +1,95 @@ +package main + +import ( + "encoding/json" + "fmt" + "math/rand" + "mongo.games.com/goserver/core/timer" + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + + "mongo.games.com/game/model" + "mongo.games.com/game/proto" + loginproto "mongo.games.com/game/protocol/login" + playerproto "mongo.games.com/game/protocol/player" +) + +func init() { + // 心跳 + netlib.Register(int(loginproto.GatePacketID_PACKET_SC_PONG), loginproto.SCPong{}, SCPong) + // 登录 + netlib.Register(int(loginproto.LoginPacketID_PACKET_SC_LOGIN), loginproto.SCLogin{}, SCLogin) + // 玩家信息 + netlib.Register(int(playerproto.PlayerPacketID_PACKET_SC_PLAYERDATA), playerproto.SCPlayerData{}, SCPlayerData) +} + +func SCPong(s *netlib.Session, packetid int, data interface{}) error { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Tracef("SCPong username:%v %v", accountID, data) + return nil +} + +func SCLogin(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCLogin ", data) + + msg, ok := data.(*loginproto.SCLogin) + if !ok { + return nil + } + + if msg.GetOpRetCode() != loginproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Error("登录失败 ", accountID) + s.Close() + return nil + } + + csPlayerData := &playerproto.CSPlayerData{ + AccId: msg.GetAccId(), + } + pp := &model.PlayerParams{ + Platform: 1, + Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)), + City: "北京", + Logininmodel: "app", + } + d, err := json.Marshal(pp) + if err == nil { + csPlayerData.Params = proto.String(string(d)) + } + + s.Send(int(playerproto.PlayerPacketID_PACKET_CS_PLAYERDATA), csPlayerData) + logger.Logger.Info("登录成功 ", msg.GetAccId()) + return nil +} + +func SCPlayerData(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCPlayerData ", data) + msg, ok := data.(*playerproto.SCPlayerData) + if !ok { + return nil + } + + if msg.GetOpRetCode() != playerproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Errorf("获取玩家信息失败 %v", accountID) + s.Close() + return nil + } + + s.SetAttribute(SessionAttributeUser, msg) + + StartSessionPingTimer(s, timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { + if !s.IsConned() { + StopSessionPingTimer(s) + return false + } + pack := &loginproto.CSPing{} + s.Send(int(loginproto.GatePacketID_PACKET_CS_PING), pack) + return true + }), nil, time.Second*time.Duration(60+rand.Int31n(100)), -1) + + return nil +} diff --git a/tools/benchmark/config.go b/tools/benchmark/config.go new file mode 100644 index 0000000..a90ad75 --- /dev/null +++ b/tools/benchmark/config.go @@ -0,0 +1,35 @@ +package main + +import ( + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" +) + +var Config = &Configuration{} + +type Configuration struct { + Count int // 机器人总数 + AppId string // appID + Connects netlib.SessionConfig // 网络连接配置 +} + +func (this *Configuration) Name() string { + return "benchmark" +} + +func (this *Configuration) Init() error { + logger.Logger.Tracef("%+v", *this) + if this.Count == 0 { + this.Count = 20 + } + return nil +} + +func (this *Configuration) Close() error { + return nil +} + +func init() { + core.RegistePackage(Config) +} diff --git a/tools/benchmark/config.yaml b/tools/benchmark/config.yaml new file mode 100644 index 0000000..b8d3d9c --- /dev/null +++ b/tools/benchmark/config.yaml @@ -0,0 +1,65 @@ +netlib: + SrvInfo: + Name: BenchmarkServer + Type: 9 + Id: 902 + AreaID: 1 + Banner: + - ================= + - benchmark server + - ================= + IoServices: [] +module: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +executor: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 + Worker: + WorkerCnt: 8 + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 +timer: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +signal: + SupportSignal: true +benchmark: + Count: 100 + AppId: 5c56d1644966f078bfb90c71 + Connects: + Id: 402 + Type: 4 + AreaId: 1 + Name: ClientService + Ip: 127.0.0.1 + Port: 11001 + Protocol: tcp + Path: / + MaxDone: 200 + MaxPend: 200 + MaxPacket: 65535 + MaxConn: 2000 + RcvBuff: 4096 + SndBuff: 4096 + WriteTimeout: 3600 + ReadTimeout: 3600 + SoLinger: 10 + IsInnerLink: true + NoDelay: true + SupportFragment: true + AuthKey: www.jxjy.games.cn + IsClient: true + AllowMultiConn: true + FilterChain: + - session-filter-auth + HandlerChain: + - handler-gate-session diff --git a/tools/benchmark/connect.go b/tools/benchmark/connect.go new file mode 100644 index 0000000..a580173 --- /dev/null +++ b/tools/benchmark/connect.go @@ -0,0 +1,69 @@ +package main + +import ( + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" + "mongo.games.com/goserver/core/netlib" +) + +const ( + // RobotSessionStartId 机器人session开始id + RobotSessionStartId = 100000000 +) + +var ( + BenchMarkModule = &BenchMark{} + WaitConnectSessions []*netlib.SessionConfig +) + +// NewSession 新建session +// id 连接id, 默认自动分配 +func NewSession(id ...int) { + cfg := Config.Connects + if len(id) > 0 && id[0] > 0 { + cfg.Id = id[0] + } else { + BenchMarkModule.idx++ + cfg.Id = BenchMarkModule.idx + } + cfg.Init() + logger.Logger.Info("waite connect session id=", cfg.Id) + WaitConnectSessions = append(WaitConnectSessions, &cfg) +} + +type BenchMark struct { + idx int +} + +func (m *BenchMark) ModuleName() string { + return "benchmark-module" +} + +func (m *BenchMark) Init() { + m.idx = RobotSessionStartId + for i := 0; i < Config.Count; i++ { + NewSession() + } +} + +// Update 机器开始连接游戏服务器 +func (m *BenchMark) Update() { + n := len(WaitConnectSessions) + if n > 0 { + config := WaitConnectSessions[n-1] + WaitConnectSessions = WaitConnectSessions[:n-1] + if err := netlib.Connect(config); err != nil { + logger.Logger.Error("netlib.Connect error", err) + } + } +} + +func (m *BenchMark) Shutdown() { + module.UnregisteModule(m) +} + +func init() { + module.RegisteModule(BenchMarkModule, time.Millisecond, 1) +} diff --git a/tools/benchmark/constants.go b/tools/benchmark/constants.go new file mode 100644 index 0000000..8a87971 --- /dev/null +++ b/tools/benchmark/constants.go @@ -0,0 +1,31 @@ +package main + +import ( + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/core/timer" + "time" +) + +const ( + SessionAttributeClientAccountId int = iota // 账号 + SessionAttributeUser + SessionAttributePingTimer +) + +func StartSessionPingTimer(s *netlib.Session, act timer.TimerAction, ud interface{}, interval time.Duration, times int) bool { + StopSessionPingTimer(s) + if hTimer, ok := timer.StartTimer(act, ud, interval, times); ok { + s.SetAttribute(SessionAttributePingTimer, hTimer) + return true + } + return false +} + +func StopSessionPingTimer(s *netlib.Session) { + if h, ok := s.GetAttribute(SessionAttributePingTimer).(timer.TimerHandle); ok { + if h != timer.TimerHandle(0) { + timer.StopTimer(h) + s.RemoveAttribute(SessionAttributePingTimer) + } + } +} diff --git a/tools/benchmark/gatesessionhandler.go b/tools/benchmark/gatesessionhandler.go new file mode 100644 index 0000000..e6b06d7 --- /dev/null +++ b/tools/benchmark/gatesessionhandler.go @@ -0,0 +1,97 @@ +package main + +import ( + "crypto/md5" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "math/rand" + "mongo.games.com/game/common" + "mongo.games.com/game/model" + loginproto "mongo.games.com/game/protocol/login" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "strconv" + "sync/atomic" + "time" +) + +/* + 添加到客户端管理器,管理器负责登录 + 当连接断开时,从管理器中移除,判断是否需要重连 +*/ + +const ( + GateSessionHandlerName = "handler-gate-session" +) + +type GateSessionHandler struct { + netlib.BasicSessionHandler +} + +func (g *GateSessionHandler) GetName() string { + return GateSessionHandlerName +} + +func (g *GateSessionHandler) GetInterestOps() uint { + return 1< + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/benchmark/main.go b/tools/benchmark/main.go new file mode 100644 index 0000000..b1fe17b --- /dev/null +++ b/tools/benchmark/main.go @@ -0,0 +1,25 @@ +package main + +import ( + _ "mongo.games.com/game" + + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/module" +) + +func main() { + defer core.ClosePackages() + core.LoadPackages("config.yaml") + // core hook + core.RegisteHook(core.HOOK_BEFORE_START, func() error { + + return nil + }) + core.RegisteHook(core.HOOK_AFTER_STOP, func() error { + + return nil + }) + // module模块 + waiter := module.Start() + waiter.Wait("main()") +} From 97c826b5f8f2a370aced6d1f3da25e5851b08177 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 7 Jan 2025 14:27:06 +0800 Subject: [PATCH 19/74] =?UTF-8?q?add=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 1 + data/DB_GameFree.dat | Bin 26128 -> 26313 bytes data/DB_GameFree.json | 45 +++++++++++++++++++++++++--------- data/DB_GameRule.dat | Bin 1472 -> 1497 bytes data/DB_GameRule.json | 6 +++++ data/DB_NewYearRankReward.dat | 36 +++++++++++++-------------- data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 6587 -> 6587 bytes data/gameconfig/pushcoin.json | 9 +++++++ xlsx/DB_GameFree.xlsx | Bin 66855 -> 67214 bytes xlsx/DB_GameRule.xlsx | Bin 13519 -> 13622 bytes 12 files changed, 68 insertions(+), 31 deletions(-) create mode 100644 data/gameconfig/pushcoin.json diff --git a/common/constant.go b/common/constant.go index 6f68feb..96b3e89 100644 --- a/common/constant.go +++ b/common/constant.go @@ -99,6 +99,7 @@ const ( GameId_AngerUncle = 606 // 愤怒大叔 GameId_SmallRoket = 607 // 小火箭 GameId_Clawdoll = 608 // 娃娃机 + GameId_PushCoin = 609 // 推币机 __GameId_ThrGame_Min__ = 700 //################三方类################ GameId_Thr_Dg = 701 //DG Game GameId_Thr_XHJ = 901 ///DG Game diff --git a/data/DB_GameFree.dat b/data/DB_GameFree.dat index 752e96ad0e9db10049c6a4668827cae16eae72db..aa44140c4cad8e60165d49525a3f892510f090fd 100644 GIT binary patch delta 410 zcmbPmhVkTC#tr>WjJqdKaFXEXd^T;vv(E0Pb9O0QX0&)S`69dMhgm#51j20J`PTt@&737RVlNsGnoN>+_YeAhkmWEV$1$iZ%!5$b1h=`H zv%Qx}MRJ96OuY4(Nr>}V--@R@8lM3J?jeiCliSP=tR9RR%pHtC<_-|?ijl2DeS+VN m(hW?EhnSen3@lGDFWjGHG(nBga+<-*oZ;*X1m`89BB=_-2#4+!h1P z*K-GIHk=&bKAU9+Bgdi1hVDSkMw9tGKqjyE0GoW#18njUkR%7AiNX~|iwjF9|96=O eGXE$ delta 7 Ocmcb~eSmwz0agGFxdSBt diff --git a/data/DB_GameRule.json b/data/DB_GameRule.json index 4860e87..eacbcca 100644 --- a/data/DB_GameRule.json +++ b/data/DB_GameRule.json @@ -267,6 +267,12 @@ "Name": "娃娃机", "GameId": 608, "GameDif": "608" + }, + { + "Id": 60900, + "Name": "推币机", + "GameId": 609, + "GameDif": "609" } ] } \ No newline at end of file diff --git a/data/DB_NewYearRankReward.dat b/data/DB_NewYearRankReward.dat index 2b3cb98..c92b5e9 100644 --- a/data/DB_NewYearRankReward.dat +++ b/data/DB_NewYearRankReward.dat @@ -1,6 +1,6 @@ -"""d -"d"" +""d" +""d" ""d" ""d ""c @@ -12,7 +12,7 @@  ""^   ""] -  ""\ +  "\"   ""[ ""Z ""Y @@ -20,30 +20,30 @@ ""W ""V ""U -"T" +""T ""S ""R ""Q ""P ""O ""N -"M" +""M ""L ""K ""J ""I   ""H -!!"G" +!!""G """"F ##""E $$""D %%""C &&"B" ''""A -((""@ -)"""d +(("@" +)""d" *""d" -+"""d ++"d"" ,""d -""c .""b @@ -55,25 +55,25 @@ 3 ""] 4 ""\ 5 ""[ -6"Z" +6""Z 7""Y -8""X +8"X" 9"W" :""V ;""U <""T =""S ->""R -?"Q" +>"R" +?""Q @""P A""O B""N -C"M" +C""M D""L -E"K" -F""J +E""K +F"J" G""I -H "H" +H ""H I!""G J"""F K#""E @@ -81,4 +81,4 @@ M%""C N&""B O'""A -P("@" \ No newline at end of file +P(""@ \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 3a06af9..735a0e1 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c -< ((22Ÿ8@;JƸJPdX` +< ((2Ÿ28@;JƸJPdX` ?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index cc7f1961579ffb3a487a7ae7441980a203308cf4..92f7bc5071a0ff00ec26bae5bbd626a8aebaa965 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevm;IUweP%|WscWx~fEfU@0PHZJ17Hq;IRIwC T9k9dMITisu`h}T`fwm9;VzN9n diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 0bbbaa0ab05e8dafb8ad3e2199d1ec359f12da08..bcc88b2da37afd585132ee135f7824a785b2771b 100644 GIT binary patch delta 223 zcmdmOyxVvKC!-)6$C6$)0WL2Nj)g$_LL2jBDaKZ)s0fni2F6OLs1a1Op|fhU6%#9q z5GPpcg3~h?z1TP|wlNEcYz}05$|wji^1*T;pztD~;mniWIn05EfY_{1Llzv8+uYC5 z%{V!YS7fpt*Kepa6IA-ZES||$+(whHaf)qj;$~u;{ESOv^9-J+jFTsG3U2P>(`ABc PfO+6Ri|yt!0`EBh8p1#s delta 237 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 delta 50986 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 delta 4664 zcmZ`-WmuG3*PdZUS_B-1mLVM)hVG#SB&AzILc#$7$p<8*VdxZT38foU7&;Urq*Raw zr9lvR@x15zz8~K?`^UbXA8Xyuz4pEKwXbzII*&QMeg(b;c~n@Uf~^O01IzE9RZdV6m>zS#dR)#Nw4jjG(G~V+%B%3mbD` z&+ql%#n0#WRJ06!b`VK1F2#S+J6!s**y1eU)--3A?Io!28z#s9{Z^~NvU*b!W$>Um zF$d41&oiiElXz7x|F$ftE;3IdUQtT%v_6U(}^QBe=zwmW5AW#?x z1R?}QYAvC`iVj&=E(jlx5Hu6p*xg7UMNK@qkS@GHtf`mvShDBRtv6>WT+Gi`od3p{ zzgA;_0Ytoi;8Dt*tIcSM7P%G6sb9Vq%fs2tnM61%S;3Z>bz76_DBfE+Hr3$ zs6NqQYU}1kFo&(m$3${ZwOTqyzM3%_c`;&XYN%e3v)3z0e-n!;3VWSw@Gz*&FVb2% zoEF-u+j(Zua8wy;M!Fp1b&q0SJo=qTp|mEe*0QkLP0K~4$|ZY)+ZCjMgHQnGv{ds+ zO$*?+%RXn)?D0L4&YQcG$s@LhR2P1lfG@m~a`7NkyHrxH_7sFog3@85q4LBC&*;cP z5)kOCB=$N5EjB^;8ukE60X)l%?r2Cui+*N0Sj@%As(LP^x zOP$E?fEB6=emKVST!WKO@z&_ z(70`KZ|qg%XXIW;4-mNMBK9*ukB=WY#6GsQwT0XI`nV>jrec>E7U*c_`|Bv>htB|) z)ug*zD%o&++?;j-{Y#tsfjb#83m-3|Wcj43B(JFt0-~R`2F^RuUdi&;xi*g0sm^jA znRd#>)|N_-HqK?AStywm&rs!`oXf=&+)#3cPoyeFs~K(u900sRhn8zu-cy%@zA>Mj z#v`&PFLRCF^ZSf%8~YFE8Co^@wtxQZbC4nT`6Fi%4t_p;?sBjqQM%H=&lgj)b&-a8 zfBCRYv!;8iVPVt%=fPxrXH@GVz!ZJ)+g8J@!!7PZTu#UOT zrGqj$E+6N#`z{{F@!8Z?3fG&B`WRD*Wv?$2%$jVm{35^+6|{dld-mSF zX+%5Dy*_*@4HFrQwCm}243CA2(9oTP1ld`W$s+%yk{<4dLNS zFOf{F!)dQ^(GMlD3o3NY_*K0@z8I zWr$9^zYs8B$!$a}gd;SVW8Et>MfTZ|V7zq}{l&A@6%7P0T03%y@8buHH%KF<-sOl=Dcr1 z=yh-E@qT*DS<=+((!rcbv}iZj)0}~Gg{i-wI=`pTSagJNa&_9x zio!<(C)(liAv6fNG)mDfxy}lF!nh<0C{u~BN;X&#iu5QP}R>#o7JGVT_ z&bg!mr9LXr;XFfy!`{YC)I}&i=O}9>EYYaFk(Db}jnDC9E3`XUV#QR_IhzefFXm&2 z28;KPpT&>fai&P#)&jb^{O4ou3LS1mhS2tnxKQ&Ga`e;9dLTZD21}HXaplZ3WJ)|I zlTI@@Va!cR!F}M|n^33^n%bm-uBlgqHi1+V2WHPsJsAp(E$G$Ar=l$qkB-1V$PV03m~u+Tq0{IN#Znhf6wa~@E7)U^4X{#92DDf`=-m8~T+m{`l1$($F2 zq2^@KrdRa>dqmp0+5=3^A{W;ejz@hZi*M!ua{SJjA%{r)Z|+@t&I&Y^RFB;`*s@jT zZrz1=J<{cbqB+Mf0~*)Ynwu~OYW8~}?;r>WIwCk0L<>QI?TGtH6D1HN=rmbMQy0@F zA7dAM$(WjRH;D*`npO{6X4;s^1wNu>>zZr@9(?2qgG)`;@?vjbj3%W#{u^366dqtl z+7C_SLP8`QG1mp`Tm==t}x5Mj)CDI~1(ePlNK(_jf;o|DA zjPUG`QJa8d=RZI}DU``I#<`PfGz2jVFdIQM=bClQB*Td)UxX|O1+pXTCrlJX+(efI z4}&rxwII6<)&krrCT4R#X2)=j^fBBvotL!cR4)@oGGJT@jBc{UR(z0o7L9YWAT1uY z`3vg1nM*Pu3N-qUm5m&%Nb!h5a&f1x=evOmhb62PHBiSkb+~cR`tWD2N?dKVD*SLKr;z_U4sbz?EKmN9Z|0=@YxE8zbh*4XOGfK-4e{(T$J#v@!``m+urOi-Aj(@3AHrq$>idcs} z3jeE|=2auC)wS~XDbzZ>qt?9=FnAk~&+Zv;6o0vu~B4Byan{=Q|G!se-a`=aK2pP*g={&B5ECkY90schY2PP-?6;QGj$4H{(S%+t}<$+;( z5qSBNN+)S-)&JU4W2?MludK!xPvQq?!hUpyef?Q^F2MXrc+-z;`AeNy*eR*bpafpN z7t;f^&M^+`zce^-n8{H6>q}gx;To_Tk)R#_rKP-$w~uppTXd57>XF<{rbZY#vo#Qv zrFz`ZvT&-8wLV~%Ik;BUy{RE;$=Ky$snx(6NRin2!$&?eVU_;L%8x^;x0J;rd%pP- zKIA`NIh=7hs^lAs@UK%1P6Xv2Fx7Xm{6GzL-ExkcWR~LN6$3s@@2wwq$+@j-XRpAZ=LUc)t~e8Jfz`cg0kt~;3D0o&je zu~Xn@nnYzJy}$4Whr!Y}sB{z6IMr8yXMLedoJf!`!v47W9lUSsp1hMO1T8cS}pe|;+5{V(f^XRlWoTmMR0G@8UtzB5Y+tB^0s2E`F@k#G~ zQm1e95S=CWI)OnJ$C0FN%yQDPxWs&S9LvbpdEWz%ZgJzDO|lV_vb{o;MkA-u!FSwr zhUt!cgNlOJl`G6@n_gJKFx7627rXX{oV>?1364?6%iR;JKN`q_OkE;d)Pf)t29>T0 z!ux@$hs(9BvsI;&2~{mlWr2Y3xYx7jhWs>@u?iXWWcTw`@1%EAM^2%ZCy1@$f=9$G zFnon!1}nt)cH*nZ`|8nZ#5?c8!ym{b(C05S>pMGV`Fh7cqtCHj6ZdwD%C&8q@$6&V z{vEV^{AQ-_tK)L@q}1LhpKMEqJK3H^nXQrOnwH^ocKWqtqXDgL549X%>6WTSa__hcD!|9Cuq`VcaY0Iy3y*bqt$4)OsnJr&lT>^FR{6-T?53;Op^a4E->!b;ksn>%nwA9IUPhN+J+`>nlM=2O(C% zPGC1on6b*jL%sw~giM_xOnOs}Hm9Fu4l^$G6aeu5m;u<&Lhw2YrV1{c#=stp8@1U`d4J@k$U_Eg=c;V{DX=C^#G2C4>gYCJRf06R%!TIr0$ge)>u(QHkcwv-S@J%`_LWCTjL*P&Re*h59 BgdhL_ From ab6427c18c4190322d268014ea010022ec0f16fb Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 7 Jan 2025 16:00:01 +0800 Subject: [PATCH 20/74] =?UTF-8?q?add=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/doc.md | 4 + protocol/pushcoin/pushcoin.pb.go | 1156 ++++++++++++++++++++++++++++++ protocol/pushcoin/pushcoin.proto | 103 +++ 3 files changed, 1263 insertions(+) create mode 100644 protocol/pushcoin/pushcoin.pb.go create mode 100644 protocol/pushcoin/pushcoin.proto diff --git a/protocol/doc.md b/protocol/doc.md index e8d8f01..7d605b1 100644 --- a/protocol/doc.md +++ b/protocol/doc.md @@ -193,5 +193,9 @@ - 5660~5669 +### pushcoin.proto + +- 5670~5679 + ### game.proto(玩家离开) - 8000~8099 \ No newline at end of file diff --git a/protocol/pushcoin/pushcoin.pb.go b/protocol/pushcoin/pushcoin.pb.go new file mode 100644 index 0000000..c6219d5 --- /dev/null +++ b/protocol/pushcoin/pushcoin.pb.go @@ -0,0 +1,1156 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1-devel +// protoc v3.19.4 +// source: protocol/pushcoin/pushcoin.proto + +package pushcoin + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// 5670~5679 +type PushCoinPacketID int32 + +const ( + PushCoinPacketID_PACKET_PushCoin_ZERO PushCoinPacketID = 0 // 弃用消息号 + PushCoinPacketID_PACKET_SCPushCoinRoomInfo PushCoinPacketID = 5670 // 房间信息 + PushCoinPacketID_PACKET_SCPushCoinRoomState PushCoinPacketID = 5671 // 房间状态 + PushCoinPacketID_PACKET_CSPushCoinPlayerOp PushCoinPacketID = 5672 // 玩家操作 + PushCoinPacketID_PACKET_SCPushCoinPlayerOp PushCoinPacketID = 5673 // 玩家操作返回 +) + +// Enum value maps for PushCoinPacketID. +var ( + PushCoinPacketID_name = map[int32]string{ + 0: "PACKET_PushCoin_ZERO", + 5670: "PACKET_SCPushCoinRoomInfo", + 5671: "PACKET_SCPushCoinRoomState", + 5672: "PACKET_CSPushCoinPlayerOp", + 5673: "PACKET_SCPushCoinPlayerOp", + } + PushCoinPacketID_value = map[string]int32{ + "PACKET_PushCoin_ZERO": 0, + "PACKET_SCPushCoinRoomInfo": 5670, + "PACKET_SCPushCoinRoomState": 5671, + "PACKET_CSPushCoinPlayerOp": 5672, + "PACKET_SCPushCoinPlayerOp": 5673, + } +) + +func (x PushCoinPacketID) Enum() *PushCoinPacketID { + p := new(PushCoinPacketID) + *p = x + return p +} + +func (x PushCoinPacketID) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PushCoinPacketID) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_pushcoin_pushcoin_proto_enumTypes[0].Descriptor() +} + +func (PushCoinPacketID) Type() protoreflect.EnumType { + return &file_protocol_pushcoin_pushcoin_proto_enumTypes[0] +} + +func (x PushCoinPacketID) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushCoinPacketID.Descriptor instead. +func (PushCoinPacketID) EnumDescriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{0} +} + +type OpCodes int32 + +const ( + OpCodes_OP_Zero OpCodes = 0 + OpCodes_OP_Bet OpCodes = 1 // 下注 [下注金额] + OpCodes_OP_Gain OpCodes = 2 // 得分 [得分金额] + OpCodes_OP_Shake OpCodes = 3 // 震动 [消耗次数] + OpCodes_OP_Refresh OpCodes = 4 // 刷新 [桌面金额] + OpCodes_OP_Exchange OpCodes = 5 // 兑换 [兑换id] + OpCodes_OP_Draw OpCodes = 6 // 抽奖 [抽奖id] +) + +// Enum value maps for OpCodes. +var ( + OpCodes_name = map[int32]string{ + 0: "OP_Zero", + 1: "OP_Bet", + 2: "OP_Gain", + 3: "OP_Shake", + 4: "OP_Refresh", + 5: "OP_Exchange", + 6: "OP_Draw", + } + OpCodes_value = map[string]int32{ + "OP_Zero": 0, + "OP_Bet": 1, + "OP_Gain": 2, + "OP_Shake": 3, + "OP_Refresh": 4, + "OP_Exchange": 5, + "OP_Draw": 6, + } +) + +func (x OpCodes) Enum() *OpCodes { + p := new(OpCodes) + *p = x + return p +} + +func (x OpCodes) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpCodes) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_pushcoin_pushcoin_proto_enumTypes[1].Descriptor() +} + +func (OpCodes) Type() protoreflect.EnumType { + return &file_protocol_pushcoin_pushcoin_proto_enumTypes[1] +} + +func (x OpCodes) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpCodes.Descriptor instead. +func (OpCodes) EnumDescriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{1} +} + +type OpResultCode int32 + +const ( + OpResultCode_OPRC_Success OpResultCode = 0 //成功 + OpResultCode_OPRC_Error OpResultCode = 1 //失败 +) + +// Enum value maps for OpResultCode. +var ( + OpResultCode_name = map[int32]string{ + 0: "OPRC_Success", + 1: "OPRC_Error", + } + OpResultCode_value = map[string]int32{ + "OPRC_Success": 0, + "OPRC_Error": 1, + } +) + +func (x OpResultCode) Enum() *OpResultCode { + p := new(OpResultCode) + *p = x + return p +} + +func (x OpResultCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpResultCode) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_pushcoin_pushcoin_proto_enumTypes[2].Descriptor() +} + +func (OpResultCode) Type() protoreflect.EnumType { + return &file_protocol_pushcoin_pushcoin_proto_enumTypes[2] +} + +func (x OpResultCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpResultCode.Descriptor instead. +func (OpResultCode) EnumDescriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{2} +} + +//房间信息 +//PACKET_SCPushCoinRoomInfo +type SCPushCoinRoomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间id + GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id + RoomMode int32 `protobuf:"varint,3,opt,name=RoomMode,proto3" json:"RoomMode,omitempty"` //游戏模式 + Params []int32 `protobuf:"varint,4,rep,packed,name=Params,proto3" json:"Params,omitempty"` //规则参数 + State int32 `protobuf:"varint,5,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态 + TimeOut int32 `protobuf:"varint,6,opt,name=TimeOut,proto3" json:"TimeOut,omitempty"` //等待剩余时间 单位:秒 + Players []*PushCoinPlayerData `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` //房间内的玩家信息 + ExchangeList []*ExchangeInfo `protobuf:"bytes,8,rep,name=ExchangeList,proto3" json:"ExchangeList,omitempty"` //兑换信息 + DrawList []*DrawInfo `protobuf:"bytes,9,rep,name=DrawList,proto3" json:"DrawList,omitempty"` //抽奖信息 +} + +func (x *SCPushCoinRoomInfo) Reset() { + *x = SCPushCoinRoomInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinRoomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinRoomInfo) ProtoMessage() {} + +func (x *SCPushCoinRoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCPushCoinRoomInfo.ProtoReflect.Descriptor instead. +func (*SCPushCoinRoomInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{0} +} + +func (x *SCPushCoinRoomInfo) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetRoomMode() int32 { + if x != nil { + return x.RoomMode + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetParams() []int32 { + if x != nil { + return x.Params + } + return nil +} + +func (x *SCPushCoinRoomInfo) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetTimeOut() int32 { + if x != nil { + return x.TimeOut + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetPlayers() []*PushCoinPlayerData { + if x != nil { + return x.Players + } + return nil +} + +func (x *SCPushCoinRoomInfo) GetExchangeList() []*ExchangeInfo { + if x != nil { + return x.ExchangeList + } + return nil +} + +func (x *SCPushCoinRoomInfo) GetDrawList() []*DrawInfo { + if x != nil { + return x.DrawList + } + return nil +} + +type ItemInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 +} + +func (x *ItemInfo) Reset() { + *x = ItemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ItemInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ItemInfo) ProtoMessage() {} + +func (x *ItemInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ItemInfo.ProtoReflect.Descriptor instead. +func (*ItemInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{1} +} + +func (x *ItemInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *ItemInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +type ExchangeInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //兑换id + Cost []*ItemInfo `protobuf:"bytes,2,rep,name=Cost,proto3" json:"Cost,omitempty"` //消耗道具 + Gain []*ItemInfo `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty"` //获得道具 + ShakeTimes int32 `protobuf:"varint,4,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //获得震动次数 +} + +func (x *ExchangeInfo) Reset() { + *x = ExchangeInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExchangeInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExchangeInfo) ProtoMessage() {} + +func (x *ExchangeInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExchangeInfo.ProtoReflect.Descriptor instead. +func (*ExchangeInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{2} +} + +func (x *ExchangeInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ExchangeInfo) GetCost() []*ItemInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *ExchangeInfo) GetGain() []*ItemInfo { + if x != nil { + return x.Gain + } + return nil +} + +func (x *ExchangeInfo) GetShakeTimes() int32 { + if x != nil { + return x.ShakeTimes + } + return 0 +} + +type DrawInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //抽奖id + ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,3,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 + Coin int64 `protobuf:"varint,4,opt,name=Coin,proto3" json:"Coin,omitempty"` //价值 +} + +func (x *DrawInfo) Reset() { + *x = DrawInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DrawInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DrawInfo) ProtoMessage() {} + +func (x *DrawInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DrawInfo.ProtoReflect.Descriptor instead. +func (*DrawInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{3} +} + +func (x *DrawInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DrawInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *DrawInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *DrawInfo) GetCoin() int64 { + if x != nil { + return x.Coin + } + return 0 +} + +type PushCoinPlayerData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"` //名字 + SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` //账号 + Head int32 `protobuf:"varint,3,opt,name=Head,proto3" json:"Head,omitempty"` //头像 + Sex int32 `protobuf:"varint,4,opt,name=Sex,proto3" json:"Sex,omitempty"` //性别 + Coin int64 `protobuf:"varint,5,opt,name=Coin,proto3" json:"Coin,omitempty"` //金币 + Flag int32 `protobuf:"varint,6,opt,name=Flag,proto3" json:"Flag,omitempty"` //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备) + Params []string `protobuf:"bytes,7,rep,name=Params,proto3" json:"Params,omitempty"` //其他数据 如:ip 等 + VIP int32 `protobuf:"varint,8,opt,name=VIP,proto3" json:"VIP,omitempty"` + RoleId int32 `protobuf:"varint,9,opt,name=RoleId,proto3" json:"RoleId,omitempty"` //使用中的角色id + Level int64 `protobuf:"varint,10,opt,name=Level,proto3" json:"Level,omitempty"` //玩家等级 + Exp int64 `protobuf:"varint,11,opt,name=Exp,proto3" json:"Exp,omitempty"` //玩家经验 + SkinId int32 `protobuf:"varint,12,opt,name=SkinId,proto3" json:"SkinId,omitempty"` //皮肤id + ShakeTimes int32 `protobuf:"varint,13,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //可震动次数 + BaseCoin int64 `protobuf:"varint,14,opt,name=BaseCoin,proto3" json:"BaseCoin,omitempty"` //当前底分(单次投币金额) + PowerLine int64 `protobuf:"varint,15,opt,name=PowerLine,proto3" json:"PowerLine,omitempty"` // 当前能量值 + PowerLineMax int64 `protobuf:"varint,16,opt,name=PowerLineMax,proto3" json:"PowerLineMax,omitempty"` // 能量值上限 + RefreshTimes int64 `protobuf:"varint,17,opt,name=RefreshTimes,proto3" json:"RefreshTimes,omitempty"` // 刷新次数 +} + +func (x *PushCoinPlayerData) Reset() { + *x = PushCoinPlayerData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushCoinPlayerData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushCoinPlayerData) ProtoMessage() {} + +func (x *PushCoinPlayerData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushCoinPlayerData.ProtoReflect.Descriptor instead. +func (*PushCoinPlayerData) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{4} +} + +func (x *PushCoinPlayerData) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PushCoinPlayerData) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *PushCoinPlayerData) GetHead() int32 { + if x != nil { + return x.Head + } + return 0 +} + +func (x *PushCoinPlayerData) GetSex() int32 { + if x != nil { + return x.Sex + } + return 0 +} + +func (x *PushCoinPlayerData) GetCoin() int64 { + if x != nil { + return x.Coin + } + return 0 +} + +func (x *PushCoinPlayerData) GetFlag() int32 { + if x != nil { + return x.Flag + } + return 0 +} + +func (x *PushCoinPlayerData) GetParams() []string { + if x != nil { + return x.Params + } + return nil +} + +func (x *PushCoinPlayerData) GetVIP() int32 { + if x != nil { + return x.VIP + } + return 0 +} + +func (x *PushCoinPlayerData) GetRoleId() int32 { + if x != nil { + return x.RoleId + } + return 0 +} + +func (x *PushCoinPlayerData) GetLevel() int64 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *PushCoinPlayerData) GetExp() int64 { + if x != nil { + return x.Exp + } + return 0 +} + +func (x *PushCoinPlayerData) GetSkinId() int32 { + if x != nil { + return x.SkinId + } + return 0 +} + +func (x *PushCoinPlayerData) GetShakeTimes() int32 { + if x != nil { + return x.ShakeTimes + } + return 0 +} + +func (x *PushCoinPlayerData) GetBaseCoin() int64 { + if x != nil { + return x.BaseCoin + } + return 0 +} + +func (x *PushCoinPlayerData) GetPowerLine() int64 { + if x != nil { + return x.PowerLine + } + return 0 +} + +func (x *PushCoinPlayerData) GetPowerLineMax() int64 { + if x != nil { + return x.PowerLineMax + } + return 0 +} + +func (x *PushCoinPlayerData) GetRefreshTimes() int64 { + if x != nil { + return x.RefreshTimes + } + return 0 +} + +//房间状态 +//PACKET_SCPushCoinRoomState +type SCPushCoinRoomState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + State int32 `protobuf:"varint,1,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态 + SubState int32 `protobuf:"varint,2,opt,name=SubState,proto3" json:"SubState,omitempty"` //房间当前子状态 + Params []int32 `protobuf:"varint,3,rep,packed,name=Params,proto3" json:"Params,omitempty"` //状态参数 +} + +func (x *SCPushCoinRoomState) Reset() { + *x = SCPushCoinRoomState{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinRoomState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinRoomState) ProtoMessage() {} + +func (x *SCPushCoinRoomState) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCPushCoinRoomState.ProtoReflect.Descriptor instead. +func (*SCPushCoinRoomState) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{5} +} + +func (x *SCPushCoinRoomState) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *SCPushCoinRoomState) GetSubState() int32 { + if x != nil { + return x.SubState + } + return 0 +} + +func (x *SCPushCoinRoomState) GetParams() []int32 { + if x != nil { + return x.Params + } + return nil +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +type CSPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpCode OpCodes `protobuf:"varint,1,opt,name=OpCode,proto3,enum=pushcoin.OpCodes" json:"OpCode,omitempty"` + OpParam []int64 `protobuf:"varint,2,rep,packed,name=OpParam,proto3" json:"OpParam,omitempty"` +} + +func (x *CSPushCoinPlayerOp) Reset() { + *x = CSPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPushCoinPlayerOp) ProtoMessage() {} + +func (x *CSPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*CSPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{6} +} + +func (x *CSPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *CSPushCoinPlayerOp) GetOpParam() []int64 { + if x != nil { + return x.OpParam + } + return nil +} + +//PACKET_SCPushCoinPlayerOp +type SCPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=pushcoin.OpResultCode" json:"OpRetCode,omitempty"` + OpCode OpCodes `protobuf:"varint,2,opt,name=OpCode,proto3,enum=pushcoin.OpCodes" json:"OpCode,omitempty"` + Exchange *ExchangeInfo `protobuf:"bytes,3,opt,name=Exchange,proto3" json:"Exchange,omitempty"` // 兑换信息,加到背包 + Draw *DrawInfo `protobuf:"bytes,4,opt,name=Draw,proto3" json:"Draw,omitempty"` // 抽奖信息,掉落到桌面 +} + +func (x *SCPushCoinPlayerOp) Reset() { + *x = SCPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinPlayerOp) ProtoMessage() {} + +func (x *SCPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*SCPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{7} +} + +func (x *SCPushCoinPlayerOp) GetOpRetCode() OpResultCode { + if x != nil { + return x.OpRetCode + } + return OpResultCode_OPRC_Success +} + +func (x *SCPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *SCPushCoinPlayerOp) GetExchange() *ExchangeInfo { + if x != nil { + return x.Exchange + } + return nil +} + +func (x *SCPushCoinPlayerOp) GetDraw() *DrawInfo { + if x != nil { + return x.Draw + } + return nil +} + +var File_protocol_pushcoin_pushcoin_proto protoreflect.FileDescriptor + +var file_protocol_pushcoin_pushcoin_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, + 0x6f, 0x69, 0x6e, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x08, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x22, 0xcc, 0x02, 0x0a, + 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, + 0x6f, 0x69, 0x6e, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, + 0x3a, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, + 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x44, + 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x08, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, + 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, + 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, + 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, + 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x03, 0x0a, + 0x12, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, + 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, + 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x49, 0x50, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x56, 0x49, 0x50, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, + 0x45, 0x78, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, + 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x42, + 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, + 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, + 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, + 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x5f, 0x0a, + 0x13, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, + 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x75, + 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x59, + 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, + 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, + 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x53, 0x43, + 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, + 0x12, 0x34, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x4f, + 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, + 0x6e, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x72, 0x61, 0x77, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x44, + 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x2a, 0xad, 0x01, + 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x19, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, + 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xa6, 0x2c, 0x12, 0x1f, 0x0a, 0x1a, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, + 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xa7, 0x2c, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa8, 0x2c, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa9, 0x2c, 0x2a, 0x6b, 0x0a, + 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, + 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, + 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, + 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, + 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, + 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x12, 0x0b, 0x0a, + 0x07, 0x4f, 0x50, 0x5f, 0x44, 0x72, 0x61, 0x77, 0x10, 0x06, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, + 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x75, + 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protocol_pushcoin_pushcoin_proto_rawDescOnce sync.Once + file_protocol_pushcoin_pushcoin_proto_rawDescData = file_protocol_pushcoin_pushcoin_proto_rawDesc +) + +func file_protocol_pushcoin_pushcoin_proto_rawDescGZIP() []byte { + file_protocol_pushcoin_pushcoin_proto_rawDescOnce.Do(func() { + file_protocol_pushcoin_pushcoin_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_pushcoin_pushcoin_proto_rawDescData) + }) + return file_protocol_pushcoin_pushcoin_proto_rawDescData +} + +var file_protocol_pushcoin_pushcoin_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_protocol_pushcoin_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_protocol_pushcoin_pushcoin_proto_goTypes = []interface{}{ + (PushCoinPacketID)(0), // 0: pushcoin.PushCoinPacketID + (OpCodes)(0), // 1: pushcoin.OpCodes + (OpResultCode)(0), // 2: pushcoin.OpResultCode + (*SCPushCoinRoomInfo)(nil), // 3: pushcoin.SCPushCoinRoomInfo + (*ItemInfo)(nil), // 4: pushcoin.ItemInfo + (*ExchangeInfo)(nil), // 5: pushcoin.ExchangeInfo + (*DrawInfo)(nil), // 6: pushcoin.DrawInfo + (*PushCoinPlayerData)(nil), // 7: pushcoin.PushCoinPlayerData + (*SCPushCoinRoomState)(nil), // 8: pushcoin.SCPushCoinRoomState + (*CSPushCoinPlayerOp)(nil), // 9: pushcoin.CSPushCoinPlayerOp + (*SCPushCoinPlayerOp)(nil), // 10: pushcoin.SCPushCoinPlayerOp +} +var file_protocol_pushcoin_pushcoin_proto_depIdxs = []int32{ + 7, // 0: pushcoin.SCPushCoinRoomInfo.Players:type_name -> pushcoin.PushCoinPlayerData + 5, // 1: pushcoin.SCPushCoinRoomInfo.ExchangeList:type_name -> pushcoin.ExchangeInfo + 6, // 2: pushcoin.SCPushCoinRoomInfo.DrawList:type_name -> pushcoin.DrawInfo + 4, // 3: pushcoin.ExchangeInfo.Cost:type_name -> pushcoin.ItemInfo + 4, // 4: pushcoin.ExchangeInfo.Gain:type_name -> pushcoin.ItemInfo + 1, // 5: pushcoin.CSPushCoinPlayerOp.OpCode:type_name -> pushcoin.OpCodes + 2, // 6: pushcoin.SCPushCoinPlayerOp.OpRetCode:type_name -> pushcoin.OpResultCode + 1, // 7: pushcoin.SCPushCoinPlayerOp.OpCode:type_name -> pushcoin.OpCodes + 5, // 8: pushcoin.SCPushCoinPlayerOp.Exchange:type_name -> pushcoin.ExchangeInfo + 6, // 9: pushcoin.SCPushCoinPlayerOp.Draw:type_name -> pushcoin.DrawInfo + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name +} + +func init() { file_protocol_pushcoin_pushcoin_proto_init() } +func file_protocol_pushcoin_pushcoin_proto_init() { + if File_protocol_pushcoin_pushcoin_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protocol_pushcoin_pushcoin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinRoomInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ItemInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExchangeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DrawInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushCoinPlayerData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinRoomState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPushCoinPlayerOp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinPlayerOp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protocol_pushcoin_pushcoin_proto_rawDesc, + NumEnums: 3, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protocol_pushcoin_pushcoin_proto_goTypes, + DependencyIndexes: file_protocol_pushcoin_pushcoin_proto_depIdxs, + EnumInfos: file_protocol_pushcoin_pushcoin_proto_enumTypes, + MessageInfos: file_protocol_pushcoin_pushcoin_proto_msgTypes, + }.Build() + File_protocol_pushcoin_pushcoin_proto = out.File + file_protocol_pushcoin_pushcoin_proto_rawDesc = nil + file_protocol_pushcoin_pushcoin_proto_goTypes = nil + file_protocol_pushcoin_pushcoin_proto_depIdxs = nil +} diff --git a/protocol/pushcoin/pushcoin.proto b/protocol/pushcoin/pushcoin.proto new file mode 100644 index 0000000..0bb87bf --- /dev/null +++ b/protocol/pushcoin/pushcoin.proto @@ -0,0 +1,103 @@ +syntax = "proto3"; +package pushcoin; +option go_package = "mongo.games.com/game/protocol/pushcoin"; + +// 5670~5679 +enum PushCoinPacketID { + PACKET_PushCoin_ZERO = 0;// 弃用消息号 + PACKET_SCPushCoinRoomInfo = 5670; // 房间信息 + PACKET_SCPushCoinRoomState = 5671; // 房间状态 + PACKET_CSPushCoinPlayerOp = 5672; // 玩家操作 + PACKET_SCPushCoinPlayerOp = 5673; // 玩家操作返回 +} + +//房间信息 +//PACKET_SCPushCoinRoomInfo +message SCPushCoinRoomInfo { + int32 RoomId = 1; //房间id + int32 GameId = 2; //游戏id + int32 RoomMode = 3; //游戏模式 + repeated int32 Params = 4; //规则参数 + int32 State = 5; //房间当前状态 + int32 TimeOut = 6; //等待剩余时间 单位:秒 + repeated PushCoinPlayerData Players = 7; //房间内的玩家信息 + repeated ExchangeInfo ExchangeList = 8; //兑换信息 + repeated DrawInfo DrawList = 9; //抽奖信息 +} + +message ItemInfo{ + int32 ItemId = 1; //道具id + int32 ItemNum = 2; //道具数量 +} + +message ExchangeInfo{ + int32 Id = 1; //兑换id + repeated ItemInfo Cost = 2; //消耗道具 + repeated ItemInfo Gain = 3; //获得道具 + int32 ShakeTimes = 4; //获得震动次数 +} + +message DrawInfo{ + int32 Id = 1; //抽奖id + int32 ItemId = 2; //道具id + int32 ItemNum = 3; //道具数量 + int64 Coin = 4; //价值 +} + +message PushCoinPlayerData { + string Name = 1; //名字 + int32 SnId = 2; //账号 + int32 Head = 3; //头像 + int32 Sex = 4; //性别 + int64 Coin = 5; //金币 + int32 Flag = 6; //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备) + repeated string Params = 7; //其他数据 如:ip 等 + int32 VIP = 8; + int32 RoleId = 9; //使用中的角色id + int64 Level = 10; //玩家等级 + int64 Exp = 11; //玩家经验 + int32 SkinId = 12; //皮肤id + int32 ShakeTimes = 13; //可震动次数 + int64 BaseCoin = 14; //当前底分(单次投币金额) + int64 PowerLine = 15; // 当前能量值 + int64 PowerLineMax = 16; // 能量值上限 + int64 RefreshTimes = 17; // 刷新次数 +} + +//房间状态 +//PACKET_SCPushCoinRoomState +message SCPushCoinRoomState { + int32 State = 1; //房间当前状态 + int32 SubState = 2; //房间当前子状态 + repeated int32 Params = 3; //状态参数 +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +message CSPushCoinPlayerOp { + OpCodes OpCode = 1; + repeated int64 OpParam = 2; +} + +enum OpCodes { + OP_Zero = 0; + OP_Bet = 1; // 下注 [下注金额] + OP_Gain = 2; // 得分 [得分金额] + OP_Shake = 3; // 震动 [消耗次数] + OP_Refresh = 4; // 刷新 [桌面金额] + OP_Exchange = 5; // 兑换 [兑换id] + OP_Draw = 6; // 抽奖 [抽奖id] +} + +enum OpResultCode { + OPRC_Success = 0; //成功 + OPRC_Error = 1; //失败 +} + +//PACKET_SCPushCoinPlayerOp +message SCPushCoinPlayerOp { + OpResultCode OpRetCode = 1; + OpCodes OpCode = 2; + ExchangeInfo Exchange = 3; // 兑换信息,加到背包 + DrawInfo Draw = 4; // 抽奖信息,掉落到桌面 +} \ No newline at end of file From f6d0fa3b02e7ce92f5ebdbba2cbb8c47dace1fb6 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 8 Jan 2025 10:38:36 +0800 Subject: [PATCH 21/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E7=AD=BE=E5=88=B0?= =?UTF-8?q?=E9=A2=9D=E5=A4=96=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/player.go | 28 +-- protocol/activity/nian.pb.go | 363 +++++++++++++++++++++-------------- protocol/activity/nian.proto | 10 +- worldsrv/action_nian.go | 72 +++++++ 4 files changed, 318 insertions(+), 155 deletions(-) diff --git a/model/player.go b/model/player.go index 6266021..3964714 100644 --- a/model/player.go +++ b/model/player.go @@ -689,19 +689,21 @@ type WebPlayerDataParam struct { } type NianData struct { - ActivityStartTime int64 //活动开始时间 - ActivityEndTime int64 //活动结束时间 - BossHp int64 //Boss当前血量 - BuffStatus bool //Buff领取状态 - BuffCount int64 //Buff剩余生效次数 - SignAwardTime int64 //签到奖励领取时间 - BossDieCount int32 //BOSS死亡次数 - LittleHurt int32 //小爆竹次数 - BigHurt int32 //大爆竹次数 - OtherAwardNum map[int32]int32 //奖励掉落数量 - AttackMaxHp int64 //单次攻击最大血量 - AttackSumHp int64 //攻击总伤害 - GiftShop map[int32]int32 //购买每日礼包记录 + ActivityStartTime int64 //活动开始时间 + ActivityEndTime int64 //活动结束时间 + BossHp int64 //Boss当前血量 + BuffStatus bool //Buff领取状态 + BuffCount int64 //Buff剩余生效次数 + SignAwardTime int64 //签到奖励领取时间 + SignOtherAwardCount int32 //签到额外奖励掉落数量 + SignOtherAwardProp int32 //签到额外奖励掉落概率 + BossDieCount int32 //BOSS死亡次数 + LittleHurt int32 //小爆竹次数 + BigHurt int32 //大爆竹次数 + OtherAwardNum map[int32]int32 //奖励掉落数量 + AttackMaxHp int64 //单次攻击最大血量 + AttackSumHp int64 //攻击总伤害 + GiftShop map[int32]int32 //购买每日礼包记录 } func ConvertPlayerDataToWebData(param *WebPlayerDataParam) *webapi.PlayerData { diff --git a/protocol/activity/nian.pb.go b/protocol/activity/nian.pb.go index d810494..5525454 100644 --- a/protocol/activity/nian.pb.go +++ b/protocol/activity/nian.pb.go @@ -192,22 +192,26 @@ type SCNianData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ActivityStartTime int64 `protobuf:"varint,1,opt,name=ActivityStartTime,proto3" json:"ActivityStartTime,omitempty"` //活动开始时间 - ActivityEndTime int64 `protobuf:"varint,2,opt,name=ActivityEndTime,proto3" json:"ActivityEndTime,omitempty"` //活动结束时间 - BossMaxHp int64 `protobuf:"varint,3,opt,name=BossMaxHp,proto3" json:"BossMaxHp,omitempty"` //Boss最大血量 - BossHp int64 `protobuf:"varint,4,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //Boss当前血量 - RankData []*NianRankData `protobuf:"bytes,5,rep,name=RankData,proto3" json:"RankData,omitempty"` //排行榜奖励配置 - AwardTime int64 `protobuf:"varint,6,opt,name=AwardTime,proto3" json:"AwardTime,omitempty"` //每日签到领取时间 - BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //Buff剩余次数 - BuffStatus bool `protobuf:"varint,8,opt,name=BuffStatus,proto3" json:"BuffStatus,omitempty"` //Buff领取状态 - SignAwardTime int64 `protobuf:"varint,9,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` //签到领取时间 0-未领取 - BuffStartTime int64 `protobuf:"varint,10,opt,name=BuffStartTime,proto3" json:"BuffStartTime,omitempty"` //Buff开始领取时间 - BuffEndTime int64 `protobuf:"varint,11,opt,name=BuffEndTime,proto3" json:"BuffEndTime,omitempty"` //Buff结束领取时间 - ShopData []*ShopData `protobuf:"bytes,12,rep,name=shopData,proto3" json:"shopData,omitempty"` //购买礼包数量 - ChangeData string `protobuf:"bytes,13,opt,name=ChangeData,proto3" json:"ChangeData,omitempty"` //兑换数据 - LuckyRankNeed string `protobuf:"bytes,14,opt,name=LuckyRankNeed,proto3" json:"LuckyRankNeed,omitempty"` //幸运榜上榜条件 - RankNeed string `protobuf:"bytes,15,opt,name=RankNeed,proto3" json:"RankNeed,omitempty"` //总伤害榜上榜条件 - Switch int32 `protobuf:"varint,16,opt,name=Switch,proto3" json:"Switch,omitempty"` //活动开关 1.开启 2.关闭 + ActivityStartTime int64 `protobuf:"varint,1,opt,name=ActivityStartTime,proto3" json:"ActivityStartTime,omitempty"` //活动开始时间 + ActivityEndTime int64 `protobuf:"varint,2,opt,name=ActivityEndTime,proto3" json:"ActivityEndTime,omitempty"` //活动结束时间 + BossMaxHp int64 `protobuf:"varint,3,opt,name=BossMaxHp,proto3" json:"BossMaxHp,omitempty"` //Boss最大血量 + BossHp int64 `protobuf:"varint,4,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //Boss当前血量 + RankData []*NianRankData `protobuf:"bytes,5,rep,name=RankData,proto3" json:"RankData,omitempty"` //排行榜奖励配置 + AwardTime int64 `protobuf:"varint,6,opt,name=AwardTime,proto3" json:"AwardTime,omitempty"` //每日签到领取时间 + BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //Buff剩余次数 + BuffStatus bool `protobuf:"varint,8,opt,name=BuffStatus,proto3" json:"BuffStatus,omitempty"` //Buff领取状态 + SignAwardTime int64 `protobuf:"varint,9,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` //签到领取时间 0-未领取 + BuffStartTime int64 `protobuf:"varint,10,opt,name=BuffStartTime,proto3" json:"BuffStartTime,omitempty"` //Buff开始领取时间 + BuffEndTime int64 `protobuf:"varint,11,opt,name=BuffEndTime,proto3" json:"BuffEndTime,omitempty"` //Buff结束领取时间 + ShopData []*ShopData `protobuf:"bytes,12,rep,name=shopData,proto3" json:"shopData,omitempty"` //购买礼包数量 + ChangeData string `protobuf:"bytes,13,opt,name=ChangeData,proto3" json:"ChangeData,omitempty"` //兑换数据 + LuckyRankNeed string `protobuf:"bytes,14,opt,name=LuckyRankNeed,proto3" json:"LuckyRankNeed,omitempty"` //幸运榜上榜条件 + RankNeed string `protobuf:"bytes,15,opt,name=RankNeed,proto3" json:"RankNeed,omitempty"` //总伤害榜上榜条件 + Switch int32 `protobuf:"varint,16,opt,name=Switch,proto3" json:"Switch,omitempty"` //活动开关 1.开启 2.关闭 + OtherSignAwardCount int32 `protobuf:"varint,17,opt,name=OtherSignAwardCount,proto3" json:"OtherSignAwardCount,omitempty"` //额外奖励领取次数 + OtherSignAwardProp int32 `protobuf:"varint,18,opt,name=OtherSignAwardProp,proto3" json:"OtherSignAwardProp,omitempty"` //额外奖励概率 + OtherSignAward []*RankAwardData `protobuf:"bytes,19,rep,name=OtherSignAward,proto3" json:"OtherSignAward,omitempty"` //签到额外奖励 + OtherSignMaxCount int32 `protobuf:"varint,20,opt,name=OtherSignMaxCount,proto3" json:"OtherSignMaxCount,omitempty"` //额外奖励领取次数上限 } func (x *SCNianData) Reset() { @@ -354,6 +358,34 @@ func (x *SCNianData) GetSwitch() int32 { return 0 } +func (x *SCNianData) GetOtherSignAwardCount() int32 { + if x != nil { + return x.OtherSignAwardCount + } + return 0 +} + +func (x *SCNianData) GetOtherSignAwardProp() int32 { + if x != nil { + return x.OtherSignAwardProp + } + return 0 +} + +func (x *SCNianData) GetOtherSignAward() []*RankAwardData { + if x != nil { + return x.OtherSignAward + } + return nil +} + +func (x *SCNianData) GetOtherSignMaxCount() int32 { + if x != nil { + return x.OtherSignMaxCount + } + return 0 +} + type ShopData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -886,9 +918,12 @@ type SCNianSignAward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SignAwardTime int64 `protobuf:"varint,1,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` - SignAward []*RankAwardData `protobuf:"bytes,2,rep,name=SignAward,proto3" json:"SignAward,omitempty"` //签到奖励 - OpRetCode OpResultCode_Nian `protobuf:"varint,3,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_Nian" json:"OpRetCode,omitempty"` // 返回错误码 + SignAwardTime int64 `protobuf:"varint,1,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` + SignAward []*RankAwardData `protobuf:"bytes,2,rep,name=SignAward,proto3" json:"SignAward,omitempty"` //签到奖励 + OtherSignAward []*RankAwardData `protobuf:"bytes,3,rep,name=OtherSignAward,proto3" json:"OtherSignAward,omitempty"` //签到额外奖励 + OtherSignAwardCount int32 `protobuf:"varint,4,opt,name=OtherSignAwardCount,proto3" json:"OtherSignAwardCount,omitempty"` //额外奖励领取次数 + OtherSignAwardProp int32 `protobuf:"varint,5,opt,name=OtherSignAwardProp,proto3" json:"OtherSignAwardProp,omitempty"` //额外奖励概率 + OpRetCode OpResultCode_Nian `protobuf:"varint,6,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_Nian" json:"OpRetCode,omitempty"` // 返回错误码 } func (x *SCNianSignAward) Reset() { @@ -937,6 +972,27 @@ func (x *SCNianSignAward) GetSignAward() []*RankAwardData { return nil } +func (x *SCNianSignAward) GetOtherSignAward() []*RankAwardData { + if x != nil { + return x.OtherSignAward + } + return nil +} + +func (x *SCNianSignAward) GetOtherSignAwardCount() int32 { + if x != nil { + return x.OtherSignAwardCount + } + return 0 +} + +func (x *SCNianSignAward) GetOtherSignAwardProp() int32 { + if x != nil { + return x.OtherSignAwardProp + } + return 0 +} + func (x *SCNianSignAward) GetOpRetCode() OpResultCode_Nian { if x != nil { return x.OpRetCode @@ -1063,7 +1119,7 @@ var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2f, 0x6e, 0x69, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, - 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xc2, 0x04, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, + 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x93, 0x06, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, @@ -1099,113 +1155,136 @@ var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x61, 0x6e, 0x6b, 0x4e, 0x65, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x65, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x65, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x5c, 0x0a, 0x08, 0x53, - 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, - 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, - 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, - 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x22, 0x65, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, - 0x6e, 0x42, 0x75, 0x66, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, - 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x52, - 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, - 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, - 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x61, - 0x74, 0x61, 0x22, 0x55, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x13, 0x4f, + 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, + 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, + 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, + 0x72, 0x6f, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x3f, 0x0a, + 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, + 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2c, + 0x0a, 0x11, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x08, + 0x53, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, + 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, + 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x22, 0x65, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, + 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, + 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, + 0x52, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, + 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x52, 0x61, + 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x26, 0x0a, + 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x16, 0x0a, + 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, + 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0xe8, 0x02, 0x0a, 0x10, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, + 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x52, 0x61, 0x6e, - 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x26, 0x0a, 0x0c, - 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, - 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x64, 0x22, 0xe8, 0x02, 0x0a, 0x10, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, - 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, - 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x6b, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x74, 0x74, 0x61, - 0x63, 0x6b, 0x48, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x44, 0x69, - 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, - 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x6b, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x6b, 0x48, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x44, + 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, + 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, + 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x45, 0x78, 0x74, 0x72, + 0x61, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x22, 0xcc, 0x02, 0x0a, 0x0f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, + 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, + 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, + 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, - 0x44, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, - 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, - 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, - 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, - 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, - 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x20, - 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, - 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x4e, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, - 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, - 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0xe2, 0x02, - 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, - 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x5f, 0x5a, 0x45, - 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, 0x12, 0x16, 0x0a, 0x11, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x10, 0xe5, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, 0x12, 0x16, 0x0a, 0x11, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, - 0x66, 0x10, 0xe7, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, - 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 0x12, 0x18, 0x0a, 0x13, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x6b, 0x10, 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x10, 0xeb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xec, - 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, - 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xed, 0x14, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, - 0xef, 0x14, 0x2a, 0x3e, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, - 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x4e, 0x69, 0x61, 0x6e, - 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, + 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, + 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x22, 0x20, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x2a, 0xe2, 0x02, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, + 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, + 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, + 0xed, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, + 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x10, 0xef, 0x14, 0x2a, 0x3e, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, + 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, + 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1243,22 +1322,24 @@ var file_protocol_activity_nian_proto_goTypes = []interface{}{ var file_protocol_activity_nian_proto_depIdxs = []int32{ 7, // 0: activity.SCNianData.RankData:type_name -> activity.NianRankData 4, // 1: activity.SCNianData.shopData:type_name -> activity.ShopData - 1, // 2: activity.SCNianBuff.OpRetCode:type_name -> activity.OpResultCode_Nian - 8, // 3: activity.NianRankData.Data:type_name -> activity.NianRankInfo - 9, // 4: activity.NianRankInfo.Award:type_name -> activity.RankAwardData - 9, // 5: activity.SCNianAttackData.Award:type_name -> activity.RankAwardData - 9, // 6: activity.SCNianAttackData.DieAward:type_name -> activity.RankAwardData - 9, // 7: activity.SCNianAttackData.ExtraDrop:type_name -> activity.RankAwardData - 9, // 8: activity.SCNianAttackData.FloorReward:type_name -> activity.RankAwardData - 9, // 9: activity.SCNianSignAward.SignAward:type_name -> activity.RankAwardData - 1, // 10: activity.SCNianSignAward.OpRetCode:type_name -> activity.OpResultCode_Nian - 9, // 11: activity.SCNianChange.Award:type_name -> activity.RankAwardData - 1, // 12: activity.SCNianChange.OpRetCode:type_name -> activity.OpResultCode_Nian - 13, // [13:13] is the sub-list for method output_type - 13, // [13:13] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 9, // 2: activity.SCNianData.OtherSignAward:type_name -> activity.RankAwardData + 1, // 3: activity.SCNianBuff.OpRetCode:type_name -> activity.OpResultCode_Nian + 8, // 4: activity.NianRankData.Data:type_name -> activity.NianRankInfo + 9, // 5: activity.NianRankInfo.Award:type_name -> activity.RankAwardData + 9, // 6: activity.SCNianAttackData.Award:type_name -> activity.RankAwardData + 9, // 7: activity.SCNianAttackData.DieAward:type_name -> activity.RankAwardData + 9, // 8: activity.SCNianAttackData.ExtraDrop:type_name -> activity.RankAwardData + 9, // 9: activity.SCNianAttackData.FloorReward:type_name -> activity.RankAwardData + 9, // 10: activity.SCNianSignAward.SignAward:type_name -> activity.RankAwardData + 9, // 11: activity.SCNianSignAward.OtherSignAward:type_name -> activity.RankAwardData + 1, // 12: activity.SCNianSignAward.OpRetCode:type_name -> activity.OpResultCode_Nian + 9, // 13: activity.SCNianChange.Award:type_name -> activity.RankAwardData + 1, // 14: activity.SCNianChange.OpRetCode:type_name -> activity.OpResultCode_Nian + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_protocol_activity_nian_proto_init() } diff --git a/protocol/activity/nian.proto b/protocol/activity/nian.proto index d819df8..9bd9eba 100644 --- a/protocol/activity/nian.proto +++ b/protocol/activity/nian.proto @@ -45,6 +45,11 @@ message SCNianData{ string LuckyRankNeed = 14; //幸运榜上榜条件 string RankNeed = 15; //总伤害榜上榜条件 int32 Switch = 16; //活动开关 1.开启 2.关闭 + int32 OtherSignAwardCount = 17;//额外奖励领取次数 + int32 OtherSignAwardProp = 18;//额外奖励概率 + repeated RankAwardData OtherSignAward = 19;//签到额外奖励 + int32 OtherSignMaxCount = 20;//额外奖励领取次数上限 + } message ShopData{ @@ -102,7 +107,10 @@ message CSNianSignAward{ message SCNianSignAward{ int64 SignAwardTime = 1; repeated RankAwardData SignAward = 2;//签到奖励 - OpResultCode_Nian OpRetCode = 3; // 返回错误码 + repeated RankAwardData OtherSignAward = 3;//签到额外奖励 + int32 OtherSignAwardCount = 4;//额外奖励领取次数 + int32 OtherSignAwardProp = 5;//额外奖励概率 + OpResultCode_Nian OpRetCode = 6; // 返回错误码 } //兑换 //PACKET_CSNianChange diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go index 8a6bf7d..fcb3f58 100644 --- a/worldsrv/action_nian.go +++ b/worldsrv/action_nian.go @@ -140,6 +140,29 @@ func CSNianData(s *netlib.Session, packetid int, data interface{}, sid int64) er break } } + //签到额外奖励 + for _, value := range sData { + if value.Id == 2 { + strSlice := strings.Split(value.PropValue, ",") + itemId, _ := strconv.Atoi(strSlice[0]) + itemNum, _ := strconv.Atoi(strSlice[1]) + pack.OtherSignAward = append(pack.OtherSignAward, &activity.RankAwardData{ + ItemId: int32(itemId), + ItemNum: int64(itemNum), + }) + break + } + } + pack.OtherSignAwardCount = p.WelfData.NianData.SignOtherAwardCount + pack.OtherSignAwardProp = p.WelfData.NianData.SignOtherAwardProp + count := int64(0) + for _, value := range sData { + if value.Id == 3 { + count, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + pack.OtherSignMaxCount = int32(count) StartTs := common.IntToTime(int(pool.List[0].BuffStartTime)).Unix() EndTs := common.IntToTime(int(pool.List[0].BuffEndTime)).Unix() pack.BuffStartTime = StartTs @@ -673,6 +696,53 @@ func CSNianSignAward(s *netlib.Session, packetid int, data interface{}, sid int6 award.ItemNum = info.ItemNum pack.SignAward = append(pack.SignAward, award) } + //签到额外奖励 + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + count := int64(0) + for _, value := range sData { + if value.Id == 3 { + count, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + var prop int64 + if p.WelfData.NianData.SignOtherAwardProp == 0 { + for _, value := range sData { + if value.Id == 4 { + prop, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + p.WelfData.NianData.SignOtherAwardProp = int32(prop) + } + if p.WelfData.NianData.SignOtherAwardCount < int32(count) { + //概率 + if rand.Intn(100)+1 < int(p.WelfData.NianData.SignOtherAwardProp) { + for _, value := range sData { + if value.Id == 2 { + strSlice := strings.Split(value.PropValue, ",") + itemId, _ := strconv.Atoi(strSlice[0]) + itemNum, _ := strconv.Atoi(strSlice[1]) + items = append(items, &model.Item{ + ItemId: int32(itemId), + ItemNum: int64(itemNum), + }) + award := &activity.RankAwardData{} + award.ItemId = int32(itemId) + award.ItemNum = int64(itemNum) + pack.OtherSignAward = append(pack.OtherSignAward, award) + break + } + } + p.WelfData.NianData.SignOtherAwardCount += 1 + p.WelfData.NianData.SignOtherAwardProp = 60 + } else { + p.WelfData.NianData.SignOtherAwardProp += int32(prop) + if p.WelfData.NianData.SignOtherAwardProp > 100 { + p.WelfData.NianData.SignOtherAwardProp = 100 + } + } + } BagMgrSingleton.AddItems(&model.AddItemParam{ Platform: p.Platform, @@ -682,6 +752,8 @@ func CSNianSignAward(s *netlib.Session, packetid int, data interface{}, sid int6 Operator: "system", Remark: "年兽活动-领取签到奖励获得", }) + pack.OtherSignAwardCount = p.WelfData.NianData.SignOtherAwardCount + pack.OtherSignAwardProp = p.WelfData.NianData.SignOtherAwardProp p.SendToClient(int(activity.NianPacketID_PACKET_SCNianSignAward), pack) TaskSubjectSingleton.Touch(common.TaskTypeNianSign, &TaskData{SnId: p.SnId, Num: 1}) } From 33b93131a01e910fc9448d511d2e5cd6c1834b4c Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 8 Jan 2025 10:42:29 +0800 Subject: [PATCH 22/74] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_NewYearActivity.dat | 8 ++--- data/DB_NewYearActivity.json | 6 ++-- data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 7589 -> 7678 bytes data/DB_Task.json | 65 ++++++++++++++++++++--------------- xlsx/DB_NewYearActivity.xlsx | Bin 11984 -> 11991 bytes xlsx/DB_Task.xlsx | Bin 25364 -> 25585 bytes 8 files changed, 45 insertions(+), 36 deletions(-) diff --git a/data/DB_NewYearActivity.dat b/data/DB_NewYearActivity.dat index b28d448..bf7a14a 100644 --- a/data/DB_NewYearActivity.dat +++ b/data/DB_NewYearActivity.dat @@ -4,10 +4,10 @@ SignReward50014,10;100001,100000" 签到奖励 . SignExcReward50015,1"签到额外奖励 =SignExcRewardMax2"$签到额外奖励赠送次数上限 9SignExcRewardProp30"签到额外奖励赠送概率 - BossExp6000000" + BossExp6800000" BOSS血量 -9 -BossReward100001,100000;100002,10"BOSS击杀奖励 +: +BossReward100001,1000000;100002,10"BOSS击杀奖励 / LuckyRankNeed10000"幸运榜上榜条件 /RankNeed7000000"总伤害榜上榜条件 > LittleHurtGold @@ -26,4 +26,4 @@ GiftShopID991001,991002,991003"礼包ID @ GiftShopLimit3,0,0"&礼包每日限购次数,0为不限购 4 BossExcLimit30"年兽死亡额外掉落要求 " BuffCount1"Buff生效次数 -oExchangeDiamond 30,5,1000000"L单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量 \ No newline at end of file +oExchangeDiamond 30,5,1500000"L单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量 \ No newline at end of file diff --git a/data/DB_NewYearActivity.json b/data/DB_NewYearActivity.json index f60e84e..5005b8a 100644 --- a/data/DB_NewYearActivity.json +++ b/data/DB_NewYearActivity.json @@ -27,13 +27,13 @@ { "Id": 5, "PorpName": "BossExp", - "PropValue": "6000000", + "PropValue": "6800000", "PropDec": "BOSS血量" }, { "Id": 6, "PorpName": "BossReward", - "PropValue": "100001,100000;100002,10", + "PropValue": "100001,1000000;100002,10", "PropDec": "BOSS击杀奖励" }, { @@ -123,7 +123,7 @@ { "Id": 21, "PorpName": "ExchangeDiamond", - "PropValue": "30,5,1000000", + "PropValue": "30,5,1500000", "PropDec": "单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量" } ] diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 318e11f..735a0e1 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c -< ((2Ÿ28@;JJƸPdX` +< ((2Ÿ28@;JƸJPdX` ?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index c7726ebfdd3cd5c062d18189dc39e95772ab1137..4461b7584bf894064f2206ed82f8f9e9acbce714 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!*2WB`uS4m}Q2Gj#z6zq1I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevtAp7CGY8!rU~_=(Lv;ry*c}aPAF*)7a;IUweP%>mj6Q-^LZ%s#MwpgNd4Q0!6S1iPbQ?IRYhSPmAjL(m<7%Ofy@??4?2 Xa{$a?V2hO4ITisu`h}T`fwm9;WimW9 diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 8eed46c88eca9098dd4941132106299bf1a5ef8e..295310b546087694561eb612ade12096fef387a7 100644 GIT binary patch delta 587 zcmYLGO-LI-7-e>|n{l!+t88|&yU~LuFP;jzy46~f2u2YPUP})WucBByi3&jrCI0Yk zo@~+fR49ZN3Lc~s@ghdgV$h?Wdr^?i%x3ZQ&G)@G?|pCPD0~igS2}chSkq0bOzCG{ zPxg(yj~g9P)7VtY5zOiySx`9l3+Ip)_n@X@U;T-yVPP)u#L>%5)l9_bpKdH@)mZ9i zic1NcA)%k+U&|E2?I1GC@B?ywpCNO1>q(v_hXfuSBuww_D5k>uRPjF@ziH5WjQj3kz zM#ZGKw0p4RyeAo4IYnZ@$t`M4;fz`?ASzCCVNz_Mv1w4Z)E0>y@aVJdWKvqOxA^Mz zbL-XvSBF^vO*crF+vJO{f4@uciR-;`gt8Tnx4yNr0==%77P`GWmc33>;C(TE`{3Y{ z7sz!KoOyvE7h@r9R!j#M{7$c*B~6U@uO%siH9w+TIQ9qStPhX=s3sC9c#|Jfxdf{D bVk_f$z93Hw*{%Wpy}}^#k^}F$BHaBCWUHwd delta 520 zcmZvZJxjw-6oyICB-d-TiI}ua(t-~Dfr?Fy6}7rl2f7y5w8JoQV5K3-+Z87N4+AfyYNh1yi9aCmr1-8R>Cd(n6S%*H~|$|4?Tm z2q_PoAacUZTGoG8mL+cgHZvRZbn%~YU-XK*^6wINN&mL-S_B$&f3sOsg)B;jtG)%p zX*ZsYZjtsPX=Wu#`!Qqo%5+qq9?nfyp!hTg*_(-agwg?0E@%YbW;+g|lgzG0gD@9c zkZUwt#ey#%F;A`3=p*Qi52*^NRalJ=b3cuzcoze@vBd-O`K*e^T+6EuiX1iQX*skz~9lM9u&wq*GWVkox^r0M4usDqEBu diff --git a/data/DB_Task.json b/data/DB_Task.json index 8aef01a..d95a9a1 100644 --- a/data/DB_Task.json +++ b/data/DB_Task.json @@ -1245,7 +1245,8 @@ "TargetTimes": 1, "FinishTimes": 1, "Award": { - "50014": 10 + "50001": 5, + "50014": 1 } }, { @@ -1258,6 +1259,7 @@ "TargetTimes": 3600, "FinishTimes": 1, "Award": { + "100001": 100000, "50014": 10 } }, @@ -1271,7 +1273,8 @@ "TargetTimes": 1, "FinishTimes": 1, "Award": { - "50014": 10 + "50001": 5, + "50014": 5 } }, { @@ -1284,7 +1287,8 @@ "TargetTimes": 1, "FinishTimes": 1, "Award": { - "50014": 10 + "100002": 5, + "50014": 5 }, "GameType": 1 }, @@ -1298,7 +1302,8 @@ "TargetTimes": 10, "FinishTimes": 1, "Award": { - "50014": 10 + "100001": 30000, + "50014": 5 }, "GameType": 2 }, @@ -1312,7 +1317,7 @@ "TargetTimes": 1000000, "FinishTimes": 1, "Award": { - "50014": 10 + "50014": 5 } }, { @@ -1325,7 +1330,7 @@ "TargetTimes": 100, "FinishTimes": 1, "Award": { - "50014": 10 + "50014": 20 } }, { @@ -1351,7 +1356,7 @@ "TargetTimes": 10000000, "FinishTimes": 1, "Award": { - "50014": 10 + "50014": 15 } }, { @@ -1364,7 +1369,7 @@ "TargetTimes": 20000000, "FinishTimes": 1, "Award": { - "50014": 10 + "50014": 20 } }, { @@ -1390,7 +1395,7 @@ "TargetTimes": 500, "FinishTimes": 1, "Award": { - "50014": 10 + "50015": 5 } }, { @@ -1403,7 +1408,7 @@ "TargetTimes": 199, "FinishTimes": 1, "Award": { - "50015": 10 + "50015": 3 } }, { @@ -1416,7 +1421,7 @@ "TargetTimes": 1, "FinishTimes": 1, "Award": { - "50015": 10 + "50014": 5 } }, { @@ -1429,7 +1434,7 @@ "TargetTimes": 1000000, "FinishTimes": 1, "Award": { - "50015": 10 + "100001": 500000 } }, { @@ -1442,7 +1447,7 @@ "TargetTimes": 10000000, "FinishTimes": 1, "Award": { - "50015": 10 + "100002": 5 } }, { @@ -1455,7 +1460,8 @@ "TargetTimes": 999, "FinishTimes": 1, "Award": { - "50015": 10 + "100001": 1000000, + "50015": 5 } }, { @@ -1468,6 +1474,7 @@ "TargetTimes": 1999, "FinishTimes": 1, "Award": { + "100001": 10000000, "50015": 10 } }, @@ -1481,7 +1488,8 @@ "TargetTimes": 5999, "FinishTimes": 1, "Award": { - "50014": 10 + "100001": 30000000, + "50015": 20 } }, { @@ -1494,7 +1502,8 @@ "TargetTimes": 9999, "FinishTimes": 1, "Award": { - "50014": 10 + "100001": 50000000, + "50015": 45 } }, { @@ -1507,7 +1516,7 @@ "TargetTimes": 1, "FinishTimes": 1, "Award": { - "50014": 10 + "50015": 2 } }, { @@ -1520,7 +1529,7 @@ "TargetTimes": 2, "FinishTimes": 1, "Award": { - "50014": 10 + "50015": 5 } }, { @@ -1533,7 +1542,7 @@ "TargetTimes": 3, "FinishTimes": 1, "Award": { - "50014": 10 + "50015": 10 } }, { @@ -1546,7 +1555,7 @@ "TargetTimes": 5, "FinishTimes": 1, "Award": { - "50014": 10 + "50015": 15 } }, { @@ -1559,7 +1568,7 @@ "TargetTimes": 8, "FinishTimes": 1, "Award": { - "50014": 10 + "50015": 20 } }, { @@ -1572,7 +1581,7 @@ "TargetTimes": 10, "FinishTimes": 1, "Award": { - "50014": 10 + "50015": 45 } }, { @@ -1586,7 +1595,7 @@ "FinishTimes": 1, "Award": { "100001": 100000, - "100002": 1 + "50014": 2 } }, { @@ -1600,7 +1609,7 @@ "FinishTimes": 1, "Award": { "100001": 200000, - "100002": 2 + "50015": 2 } }, { @@ -1614,7 +1623,7 @@ "FinishTimes": 1, "Award": { "100001": 300000, - "100002": 3 + "50015": 5 } }, { @@ -1628,7 +1637,7 @@ "FinishTimes": 1, "Award": { "100001": 500000, - "100002": 5 + "50015": 10 } }, { @@ -1642,7 +1651,7 @@ "FinishTimes": 1, "Award": { "100001": 1000000, - "100002": 10 + "50015": 15 } }, { @@ -1656,7 +1665,7 @@ "FinishTimes": 1, "Award": { "100001": 2000000, - "100002": 20 + "50015": 25 } } ] diff --git a/xlsx/DB_NewYearActivity.xlsx b/xlsx/DB_NewYearActivity.xlsx index 809217afdb25d623bdd67c8c49b2a4e7422c835b..7325c5e7e4699948e742f9700e15344e17ab9644 100644 GIT binary patch delta 3215 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 B4YU9N delta 3223 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 JCn^8{005UW4A=kw diff --git a/xlsx/DB_Task.xlsx b/xlsx/DB_Task.xlsx index 2fe8af9b1822b426d13806ff253d3e44847c7dca..1e3690a6ed692161094752f0ec8bd92882186e03 100644 GIT binary patch delta 17290 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 delta 17135 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 JBcng8{|_G?#jpSX From d494205ede8f164fa5a12bdcba873a7e31c6b23c Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 8 Jan 2025 11:09:02 +0800 Subject: [PATCH 23/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/rankmatch.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index 7357426..e0633f8 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -1008,11 +1008,11 @@ func (r *RankMatchMgr) NianRankAward() { } // 发邮件 var newMsg *model.Message + title := i18n.Tr("languages", "NianLuckTitle") + content := i18n.Tr("languages", "NianLuckAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) + newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, + title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - title := i18n.Tr("languages", "NianLuckTitle") - content := i18n.Tr("languages", "NianLuckAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) - newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, - title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) if err != nil { logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err) @@ -1033,8 +1033,10 @@ func (r *RankMatchMgr) NianRankAward() { } log.RankData = append(log.RankData, rankData) rankId += 1 + logger.Logger.Infof("年兽幸运榜发奖 snid:%v rankData:%v", player.SnId, rankData) } mq.Write(log) + logger.Logger.Infof("年兽幸运榜发奖 log:%v", log) //清除幸运榜数值 err := model.ClearNianRank(&model.FindNianListArgs{ Platform: platform, @@ -1092,11 +1094,11 @@ func (r *RankMatchMgr) NianRankAward() { } // 发邮件 var newMsg *model.Message + title := i18n.Tr("languages", "NianDamageTitle") + content := i18n.Tr("languages", "NianDamageAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) + newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, + title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - title := i18n.Tr("languages", "NianDamageTitle") - content := i18n.Tr("languages", "NianDamageAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) - newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, - title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) if err != nil { logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err) @@ -1118,6 +1120,7 @@ func (r *RankMatchMgr) NianRankAward() { rankId += 1 } mq.Write(log) + logger.Logger.Infof("年兽伤害榜发奖 log:%v", log) //删除数据库数据 err := model.DelNianRank(&model.FindNianListArgs{ Platform: platform, From 88f2bf7f7c7b8a505aebb464bef3e2472f749700 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 8 Jan 2025 11:15:24 +0800 Subject: [PATCH 24/74] =?UTF-8?q?add=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 3 + data/DB_NewYearRankReward.dat | 32 +- data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 384 -> 512 bytes data/DB_PropExchange.json | 70 ++- data/DB_Task.dat | Bin 6587 -> 6587 bytes gamerule/pushcoin/constant.go | 11 + gamesrv/base/scene_policy.go | 27 +- gamesrv/pushcoin/action.go | 42 ++ gamesrv/pushcoin/player.go | 25 + gamesrv/pushcoin/scene.go | 74 +++ gamesrv/pushcoin/scenepolicy.go | 338 ++++++++++++ model/player.go | 8 + protocol/activity/actsign.pb.go | 515 ------------------ protocol/activity/actsign.proto | 43 -- protocol/activity/pushcoin.pb.go | 901 +++++++++++++++++++++++++++++++ protocol/activity/pushcoin.proto | 76 +++ protocol/pushcoin/pushcoin.pb.go | 204 +++---- protocol/pushcoin/pushcoin.proto | 1 + protocol/server/pbdata.pb.go | 683 ++++++++++++----------- protocol/server/pbdata.proto | 4 + worldsrv/action_pushcoin.go | 94 ++++ xlsx/DB_PropExchange.xlsx | Bin 11173 -> 11516 bytes 23 files changed, 2128 insertions(+), 1025 deletions(-) create mode 100644 gamerule/pushcoin/constant.go create mode 100644 gamesrv/pushcoin/action.go create mode 100644 gamesrv/pushcoin/player.go create mode 100644 gamesrv/pushcoin/scene.go create mode 100644 gamesrv/pushcoin/scenepolicy.go delete mode 100644 protocol/activity/actsign.pb.go delete mode 100644 protocol/activity/actsign.proto create mode 100644 protocol/activity/pushcoin.pb.go create mode 100644 protocol/activity/pushcoin.proto create mode 100644 worldsrv/action_pushcoin.go diff --git a/common/constant.go b/common/constant.go index 96b3e89..6bd21d2 100644 --- a/common/constant.go +++ b/common/constant.go @@ -119,6 +119,7 @@ const ( GameDifFruits = "306" // 水果机 GameDifRichblessed = "307" // 多彩多福 GameDifClawdoll = "608" // 娃娃机 + GameDifPushCoin = "609" // 推币机 ) // IsTienLenYuLe TienLen娱乐 @@ -334,6 +335,8 @@ const ( GainWayNianCost = 122 //年兽活动消耗 GainWayNianGain = 123 //年兽活动获得 GainWayRedPacket = 124 // 红包奖励 + GainWayPushCoinCost = 125 // 推币机消耗 + GainWayPushCoinGain = 126 // 推币机获得 ) // 后台选择 金币变化类型 的充值 类型id号起始 diff --git a/data/DB_NewYearRankReward.dat b/data/DB_NewYearRankReward.dat index c92b5e9..c03ab32 100644 --- a/data/DB_NewYearRankReward.dat +++ b/data/DB_NewYearRankReward.dat @@ -1,5 +1,5 @@ -""d" +"""d ""d" ""d" ""d @@ -14,7 +14,7 @@   ""]   "\"   ""[ -""Z +"Z" ""Y ""X ""W @@ -27,54 +27,54 @@ ""P ""O ""N -""M -""L +"M" +"L" ""K ""J ""I -  ""H +  "H" !!""G """"F ##""E $$""D %%""C -&&"B" +&&""B ''""A -(("@" +((""@ )""d" *""d" -+"d"" ++""d" ,""d -""c .""b -/""a +/"a" 0""` -1 ""_ +1 "_" 2 ""^ 3 ""] 4 ""\ 5 ""[ -6""Z +6"Z" 7""Y 8"X" -9"W" +9""W :""V ;""U <""T =""S ->"R" -?""Q +>""R +?"Q" @""P A""O B""N C""M D""L E""K -F"J" +F""J G""I H ""H -I!""G +I!"G" J"""F K#""E L$""D diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 735a0e1..3a06af9 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c -< ((2Ÿ28@;JƸJPdX` +< ((22Ÿ8@;JƸJPdX` ?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 92f7bc5071a0ff00ec26bae5bbd626a8aebaa965..42ec16121c9f6ab07fb25d1b0ae4c16e26aaaec9 100644 GIT binary patch literal 512 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ4VAwErEfy% zTWIRTIUwf4%!R3k>4({iVjs|5DCWW3sl*9(N5k4jEL^c1EGP~^Hwf$yphlR5Faz&E z9SZX}%wZ6ZvU4l~dh`o3mly}D025IA1E6v_B{q&jJAnQ+U;IUwevm56djzzs}0*qc991DT;ffn1%i&)y(CQs%R+icJ6%7`YvpqFj)R33e1 bNmOk>VJ>TqM^~5ycqT947u)=q{{$xhU6dRS delta 85 zcmdmOyxVxgM3%{4xdj**H!osoXA@-OSk%iVz~sfju@Fcfn8mZ%irb5E@-r@x%`= rule.GameStateMax { + return + } + this.states[id] = state +} + +func (this *Policy) GetSceneState(s *base.Scene, stateid int) base.SceneState { + if stateid >= 0 && stateid < rule.GameStateMax { + return this.states[stateid] + } + return nil +} + +func init() { + PolicySingleton.RegisteSceneState(&StateGaming{}) + core.RegisteHook(core.HOOK_BEFORE_START, func() error { + base.RegisteScenePolicy(common.GameId_PushCoin, 0, PolicySingleton) + return nil + }) +} diff --git a/model/player.go b/model/player.go index a76f239..c4b5dc3 100644 --- a/model/player.go +++ b/model/player.go @@ -554,6 +554,13 @@ type RedPacketData struct { JN int32 // 参与次数 } +type PushCoinData struct { + Shake int32 // 震动次数 + Refresh int64 // 刷新次数 + Power int64 // 能量值 + Base int64 // 底注 +} + type WelfareData struct { ReliefFundTimes int32 //救济金领取次数 Sign7 *NewSignData //七日签到 @@ -572,6 +579,7 @@ type WelfareData struct { PermitExchange map[int32][]int64 // 赛季通行证兑换次数, 多次的兑换时间 NianData *NianData //年兽活动数据 RedPacket map[int64]*RedPacketData // 红包活动 活动id:领取次数 + PushCoin *PushCoinData // 推币机活动 } func NewWelfareData() *WelfareData { diff --git a/protocol/activity/actsign.pb.go b/protocol/activity/actsign.pb.go deleted file mode 100644 index d2658b4..0000000 --- a/protocol/activity/actsign.pb.go +++ /dev/null @@ -1,515 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.1-devel -// protoc v3.19.4 -// source: protocol/activity/actsign.proto - -package activity - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -//操作结果 -type OpResultCode_ActSign int32 - -const ( - OpResultCode_ActSign_OPRC_Activity_Sign_Sucess OpResultCode_ActSign = 0 //成功 - OpResultCode_ActSign_OPRC_Activity_Sign_Error OpResultCode_ActSign = 1 //失败 - OpResultCode_ActSign_OPRC_Activity_Sign_Close OpResultCode_ActSign = 1001 //活动未开启 - OpResultCode_ActSign_OPRC_Activity_Sign_PayNum_Low OpResultCode_ActSign = 1002 //未达到最低充值金额 - OpResultCode_ActSign_OPRC_Activity_Sign_Config_Vip_Error OpResultCode_ActSign = 1003 //vip不匹配 - OpResultCode_ActSign_OPRC_Activity_Sign_Config_Day_Error OpResultCode_ActSign = 1004 //签到天数不匹配 - OpResultCode_ActSign_OPRC_Activity_Sign_Repeat OpResultCode_ActSign = 1005 //重复签到 -) - -// Enum value maps for OpResultCode_ActSign. -var ( - OpResultCode_ActSign_name = map[int32]string{ - 0: "OPRC_Activity_Sign_Sucess", - 1: "OPRC_Activity_Sign_Error", - 1001: "OPRC_Activity_Sign_Close", - 1002: "OPRC_Activity_Sign_PayNum_Low", - 1003: "OPRC_Activity_Sign_Config_Vip_Error", - 1004: "OPRC_Activity_Sign_Config_Day_Error", - 1005: "OPRC_Activity_Sign_Repeat", - } - OpResultCode_ActSign_value = map[string]int32{ - "OPRC_Activity_Sign_Sucess": 0, - "OPRC_Activity_Sign_Error": 1, - "OPRC_Activity_Sign_Close": 1001, - "OPRC_Activity_Sign_PayNum_Low": 1002, - "OPRC_Activity_Sign_Config_Vip_Error": 1003, - "OPRC_Activity_Sign_Config_Day_Error": 1004, - "OPRC_Activity_Sign_Repeat": 1005, - } -) - -func (x OpResultCode_ActSign) Enum() *OpResultCode_ActSign { - p := new(OpResultCode_ActSign) - *p = x - return p -} - -func (x OpResultCode_ActSign) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OpResultCode_ActSign) Descriptor() protoreflect.EnumDescriptor { - return file_protocol_activity_actsign_proto_enumTypes[0].Descriptor() -} - -func (OpResultCode_ActSign) Type() protoreflect.EnumType { - return &file_protocol_activity_actsign_proto_enumTypes[0] -} - -func (x OpResultCode_ActSign) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use OpResultCode_ActSign.Descriptor instead. -func (OpResultCode_ActSign) EnumDescriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{0} -} - -// 签到 -type ActSignPacketID int32 - -const ( - ActSignPacketID_PACKET_SignZero ActSignPacketID = 0 // 弃用消息号 - ActSignPacketID_PACKET_CSSign ActSignPacketID = 2662 // 签到 - ActSignPacketID_PACKET_SCSign ActSignPacketID = 2663 - ActSignPacketID_PACKET_CSSignData ActSignPacketID = 2664 // 签到数据 - ActSignPacketID_PACKET_SCSignData ActSignPacketID = 2665 -) - -// Enum value maps for ActSignPacketID. -var ( - ActSignPacketID_name = map[int32]string{ - 0: "PACKET_SignZero", - 2662: "PACKET_CSSign", - 2663: "PACKET_SCSign", - 2664: "PACKET_CSSignData", - 2665: "PACKET_SCSignData", - } - ActSignPacketID_value = map[string]int32{ - "PACKET_SignZero": 0, - "PACKET_CSSign": 2662, - "PACKET_SCSign": 2663, - "PACKET_CSSignData": 2664, - "PACKET_SCSignData": 2665, - } -) - -func (x ActSignPacketID) Enum() *ActSignPacketID { - p := new(ActSignPacketID) - *p = x - return p -} - -func (x ActSignPacketID) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ActSignPacketID) Descriptor() protoreflect.EnumDescriptor { - return file_protocol_activity_actsign_proto_enumTypes[1].Descriptor() -} - -func (ActSignPacketID) Type() protoreflect.EnumType { - return &file_protocol_activity_actsign_proto_enumTypes[1] -} - -func (x ActSignPacketID) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ActSignPacketID.Descriptor instead. -func (ActSignPacketID) EnumDescriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{1} -} - -//PACKET_CSSign -type CSSign struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SignIndex int32 `protobuf:"varint,1,opt,name=SignIndex,proto3" json:"SignIndex,omitempty"` - SignType int32 `protobuf:"varint,2,opt,name=SignType,proto3" json:"SignType,omitempty"` //0.普通签到 1.双倍签到 -} - -func (x *CSSign) Reset() { - *x = CSSign{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSSign) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSSign) ProtoMessage() {} - -func (x *CSSign) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CSSign.ProtoReflect.Descriptor instead. -func (*CSSign) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{0} -} - -func (x *CSSign) GetSignIndex() int32 { - if x != nil { - return x.SignIndex - } - return 0 -} - -func (x *CSSign) GetSignType() int32 { - if x != nil { - return x.SignType - } - return 0 -} - -//PACKET_SCSign -type SCSign struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SignIndex int32 `protobuf:"varint,1,opt,name=SignIndex,proto3" json:"SignIndex,omitempty"` - SignType int32 `protobuf:"varint,2,opt,name=SignType,proto3" json:"SignType,omitempty"` //0.普通签到 1.双倍签到 - OpRetCode OpResultCode_ActSign `protobuf:"varint,3,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_ActSign" json:"OpRetCode,omitempty"` -} - -func (x *SCSign) Reset() { - *x = SCSign{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCSign) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCSign) ProtoMessage() {} - -func (x *SCSign) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SCSign.ProtoReflect.Descriptor instead. -func (*SCSign) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{1} -} - -func (x *SCSign) GetSignIndex() int32 { - if x != nil { - return x.SignIndex - } - return 0 -} - -func (x *SCSign) GetSignType() int32 { - if x != nil { - return x.SignType - } - return 0 -} - -func (x *SCSign) GetOpRetCode() OpResultCode_ActSign { - if x != nil { - return x.OpRetCode - } - return OpResultCode_ActSign_OPRC_Activity_Sign_Sucess -} - -//PACKET_CSSignData -type CSSignData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSSignData) Reset() { - *x = CSSignData{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSSignData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSSignData) ProtoMessage() {} - -func (x *CSSignData) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CSSignData.ProtoReflect.Descriptor instead. -func (*CSSignData) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{2} -} - -//PACKET_SCSignData -type SCSignData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SignCount int32 `protobuf:"varint,1,opt,name=SignCount,proto3" json:"SignCount,omitempty"` - TodaySign int32 `protobuf:"varint,2,opt,name=TodaySign,proto3" json:"TodaySign,omitempty"` //0.未签到 1.已签到 -} - -func (x *SCSignData) Reset() { - *x = SCSignData{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCSignData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCSignData) ProtoMessage() {} - -func (x *SCSignData) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SCSignData.ProtoReflect.Descriptor instead. -func (*SCSignData) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{3} -} - -func (x *SCSignData) GetSignCount() int32 { - if x != nil { - return x.SignCount - } - return 0 -} - -func (x *SCSignData) GetTodaySign() int32 { - if x != nil { - return x.TodaySign - } - return 0 -} - -var File_protocol_activity_actsign_proto protoreflect.FileDescriptor - -var file_protocol_activity_actsign_proto_rawDesc = []byte{ - 0x0a, 0x1f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x2f, 0x61, 0x63, 0x74, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x42, 0x0a, 0x06, 0x43, - 0x53, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x80, 0x01, 0x0a, 0x06, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, - 0x67, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, - 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x69, 0x67, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, - 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x48, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, - 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x54, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x2a, 0x8a, 0x02, 0x0a, 0x14, 0x4f, - 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x41, 0x63, 0x74, 0x53, - 0x69, 0x67, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, - 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, - 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0xe9, 0x07, 0x12, - 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x50, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x5f, 0x4c, 0x6f, 0x77, - 0x10, 0xea, 0x07, 0x12, 0x28, 0x0a, 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x56, 0x69, 0x70, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xeb, 0x07, 0x12, 0x28, 0x0a, - 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, - 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x44, 0x61, 0x79, 0x5f, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0xec, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x52, 0x65, - 0x70, 0x65, 0x61, 0x74, 0x10, 0xed, 0x07, 0x2a, 0x7e, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x53, 0x69, - 0x67, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, - 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, - 0x10, 0xe6, 0x14, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x53, 0x69, 0x67, 0x6e, 0x10, 0xe7, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, 0x12, - 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, - 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_protocol_activity_actsign_proto_rawDescOnce sync.Once - file_protocol_activity_actsign_proto_rawDescData = file_protocol_activity_actsign_proto_rawDesc -) - -func file_protocol_activity_actsign_proto_rawDescGZIP() []byte { - file_protocol_activity_actsign_proto_rawDescOnce.Do(func() { - file_protocol_activity_actsign_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_activity_actsign_proto_rawDescData) - }) - return file_protocol_activity_actsign_proto_rawDescData -} - -var file_protocol_activity_actsign_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_protocol_activity_actsign_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_protocol_activity_actsign_proto_goTypes = []interface{}{ - (OpResultCode_ActSign)(0), // 0: activity.OpResultCode_ActSign - (ActSignPacketID)(0), // 1: activity.ActSignPacketID - (*CSSign)(nil), // 2: activity.CSSign - (*SCSign)(nil), // 3: activity.SCSign - (*CSSignData)(nil), // 4: activity.CSSignData - (*SCSignData)(nil), // 5: activity.SCSignData -} -var file_protocol_activity_actsign_proto_depIdxs = []int32{ - 0, // 0: activity.SCSign.OpRetCode:type_name -> activity.OpResultCode_ActSign - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_protocol_activity_actsign_proto_init() } -func file_protocol_activity_actsign_proto_init() { - if File_protocol_activity_actsign_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_protocol_activity_actsign_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSSign); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protocol_activity_actsign_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCSign); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protocol_activity_actsign_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSSignData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protocol_activity_actsign_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCSignData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_protocol_activity_actsign_proto_rawDesc, - NumEnums: 2, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_protocol_activity_actsign_proto_goTypes, - DependencyIndexes: file_protocol_activity_actsign_proto_depIdxs, - EnumInfos: file_protocol_activity_actsign_proto_enumTypes, - MessageInfos: file_protocol_activity_actsign_proto_msgTypes, - }.Build() - File_protocol_activity_actsign_proto = out.File - file_protocol_activity_actsign_proto_rawDesc = nil - file_protocol_activity_actsign_proto_goTypes = nil - file_protocol_activity_actsign_proto_depIdxs = nil -} diff --git a/protocol/activity/actsign.proto b/protocol/activity/actsign.proto deleted file mode 100644 index f7b6f65..0000000 --- a/protocol/activity/actsign.proto +++ /dev/null @@ -1,43 +0,0 @@ -syntax = "proto3"; -package activity; -option go_package = "mongo.games.com/game/protocol/activity"; - -//操作结果 -enum OpResultCode_ActSign { - OPRC_Activity_Sign_Sucess = 0; //成功 - OPRC_Activity_Sign_Error = 1; //失败 - OPRC_Activity_Sign_Close = 1001; //活动未开启 - OPRC_Activity_Sign_PayNum_Low = 1002; //未达到最低充值金额 - OPRC_Activity_Sign_Config_Vip_Error = 1003; //vip不匹配 - OPRC_Activity_Sign_Config_Day_Error = 1004; //签到天数不匹配 - OPRC_Activity_Sign_Repeat = 1005; //重复签到 -} -// 签到 -enum ActSignPacketID { - PACKET_SignZero = 0;// 弃用消息号 - PACKET_CSSign = 2662;// 签到 - PACKET_SCSign = 2663; - PACKET_CSSignData = 2664;// 签到数据 - PACKET_SCSignData = 2665; -} - -//PACKET_CSSign -message CSSign { - int32 SignIndex = 1; - int32 SignType = 2; //0.普通签到 1.双倍签到 -} -//PACKET_SCSign -message SCSign { - int32 SignIndex = 1; - int32 SignType = 2; //0.普通签到 1.双倍签到 - OpResultCode_ActSign OpRetCode = 3; -} - -//PACKET_CSSignData -message CSSignData { -} -//PACKET_SCSignData -message SCSignData { - int32 SignCount = 1; - int32 TodaySign = 2; //0.未签到 1.已签到 -} \ No newline at end of file diff --git a/protocol/activity/pushcoin.pb.go b/protocol/activity/pushcoin.pb.go new file mode 100644 index 0000000..1bdd09c --- /dev/null +++ b/protocol/activity/pushcoin.pb.go @@ -0,0 +1,901 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1-devel +// protoc v3.19.4 +// source: protocol/activity/pushcoin.proto + +package activity + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type PushCoinPacketID int32 + +const ( + PushCoinPacketID_PACKET_PushCoin_ZERO PushCoinPacketID = 0 // 弃用消息号 + PushCoinPacketID_PACKET_CSPushCoinInfo PushCoinPacketID = 2670 // 信息 + PushCoinPacketID_PACKET_SCPushCoinInfo PushCoinPacketID = 2671 // 信息返回 + PushCoinPacketID_PACKET_CSPushCoinPlayerOp PushCoinPacketID = 2672 // 玩家操作 + PushCoinPacketID_PACKET_SCPushCoinPlayerOp PushCoinPacketID = 2673 // 玩家操作返回 +) + +// Enum value maps for PushCoinPacketID. +var ( + PushCoinPacketID_name = map[int32]string{ + 0: "PACKET_PushCoin_ZERO", + 2670: "PACKET_CSPushCoinInfo", + 2671: "PACKET_SCPushCoinInfo", + 2672: "PACKET_CSPushCoinPlayerOp", + 2673: "PACKET_SCPushCoinPlayerOp", + } + PushCoinPacketID_value = map[string]int32{ + "PACKET_PushCoin_ZERO": 0, + "PACKET_CSPushCoinInfo": 2670, + "PACKET_SCPushCoinInfo": 2671, + "PACKET_CSPushCoinPlayerOp": 2672, + "PACKET_SCPushCoinPlayerOp": 2673, + } +) + +func (x PushCoinPacketID) Enum() *PushCoinPacketID { + p := new(PushCoinPacketID) + *p = x + return p +} + +func (x PushCoinPacketID) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PushCoinPacketID) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_pushcoin_proto_enumTypes[0].Descriptor() +} + +func (PushCoinPacketID) Type() protoreflect.EnumType { + return &file_protocol_activity_pushcoin_proto_enumTypes[0] +} + +func (x PushCoinPacketID) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushCoinPacketID.Descriptor instead. +func (PushCoinPacketID) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{0} +} + +type OpCodes int32 + +const ( + OpCodes_OP_Zero OpCodes = 0 + OpCodes_OP_Bet OpCodes = 1 // 下注 [下注金额] + OpCodes_OP_Gain OpCodes = 2 // 得分 [得分金额] + OpCodes_OP_Shake OpCodes = 3 // 震动 [消耗次数] + OpCodes_OP_Refresh OpCodes = 4 // 刷新 [桌面金额] + OpCodes_OP_Exchange OpCodes = 5 // 兑换 [兑换id] + OpCodes_OP_Draw OpCodes = 6 // 抽奖 [抽奖id] +) + +// Enum value maps for OpCodes. +var ( + OpCodes_name = map[int32]string{ + 0: "OP_Zero", + 1: "OP_Bet", + 2: "OP_Gain", + 3: "OP_Shake", + 4: "OP_Refresh", + 5: "OP_Exchange", + 6: "OP_Draw", + } + OpCodes_value = map[string]int32{ + "OP_Zero": 0, + "OP_Bet": 1, + "OP_Gain": 2, + "OP_Shake": 3, + "OP_Refresh": 4, + "OP_Exchange": 5, + "OP_Draw": 6, + } +) + +func (x OpCodes) Enum() *OpCodes { + p := new(OpCodes) + *p = x + return p +} + +func (x OpCodes) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpCodes) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_pushcoin_proto_enumTypes[1].Descriptor() +} + +func (OpCodes) Type() protoreflect.EnumType { + return &file_protocol_activity_pushcoin_proto_enumTypes[1] +} + +func (x OpCodes) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpCodes.Descriptor instead. +func (OpCodes) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{1} +} + +type OpResultPushCoinCode int32 + +const ( + OpResultPushCoinCode_OPRC_PushCoin_Success OpResultPushCoinCode = 0 //成功 + OpResultPushCoinCode_OPRC_PushCoin_Error OpResultPushCoinCode = 1 //失败 +) + +// Enum value maps for OpResultPushCoinCode. +var ( + OpResultPushCoinCode_name = map[int32]string{ + 0: "OPRC_PushCoin_Success", + 1: "OPRC_PushCoin_Error", + } + OpResultPushCoinCode_value = map[string]int32{ + "OPRC_PushCoin_Success": 0, + "OPRC_PushCoin_Error": 1, + } +) + +func (x OpResultPushCoinCode) Enum() *OpResultPushCoinCode { + p := new(OpResultPushCoinCode) + *p = x + return p +} + +func (x OpResultPushCoinCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpResultPushCoinCode) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_pushcoin_proto_enumTypes[2].Descriptor() +} + +func (OpResultPushCoinCode) Type() protoreflect.EnumType { + return &file_protocol_activity_pushcoin_proto_enumTypes[2] +} + +func (x OpResultPushCoinCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpResultPushCoinCode.Descriptor instead. +func (OpResultPushCoinCode) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{2} +} + +//信息 +//PACKET_CSPushCoinInfo +type CSPushCoinInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSPushCoinInfo) Reset() { + *x = CSPushCoinInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPushCoinInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPushCoinInfo) ProtoMessage() {} + +func (x *CSPushCoinInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSPushCoinInfo.ProtoReflect.Descriptor instead. +func (*CSPushCoinInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{0} +} + +//PACKET_SCPushCoinInfo +type SCPushCoinInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExchangeList []*ExchangeInfo `protobuf:"bytes,1,rep,name=ExchangeList,proto3" json:"ExchangeList,omitempty"` //兑换信息 + DrawList []*DrawInfo `protobuf:"bytes,2,rep,name=DrawList,proto3" json:"DrawList,omitempty"` //抽奖信息 + BetList []int64 `protobuf:"varint,3,rep,packed,name=BetList,proto3" json:"BetList,omitempty"` //下注金额列表 + ShakeTimes int32 `protobuf:"varint,4,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //可震动次数 + BaseCoin int64 `protobuf:"varint,5,opt,name=BaseCoin,proto3" json:"BaseCoin,omitempty"` //当前底分(单次投币金额) + PowerLine int64 `protobuf:"varint,6,opt,name=PowerLine,proto3" json:"PowerLine,omitempty"` // 当前能量值 + PowerLineMax int64 `protobuf:"varint,7,opt,name=PowerLineMax,proto3" json:"PowerLineMax,omitempty"` // 能量值上限 + RefreshTimes int64 `protobuf:"varint,8,opt,name=RefreshTimes,proto3" json:"RefreshTimes,omitempty"` // 刷新次数 +} + +func (x *SCPushCoinInfo) Reset() { + *x = SCPushCoinInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinInfo) ProtoMessage() {} + +func (x *SCPushCoinInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCPushCoinInfo.ProtoReflect.Descriptor instead. +func (*SCPushCoinInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{1} +} + +func (x *SCPushCoinInfo) GetExchangeList() []*ExchangeInfo { + if x != nil { + return x.ExchangeList + } + return nil +} + +func (x *SCPushCoinInfo) GetDrawList() []*DrawInfo { + if x != nil { + return x.DrawList + } + return nil +} + +func (x *SCPushCoinInfo) GetBetList() []int64 { + if x != nil { + return x.BetList + } + return nil +} + +func (x *SCPushCoinInfo) GetShakeTimes() int32 { + if x != nil { + return x.ShakeTimes + } + return 0 +} + +func (x *SCPushCoinInfo) GetBaseCoin() int64 { + if x != nil { + return x.BaseCoin + } + return 0 +} + +func (x *SCPushCoinInfo) GetPowerLine() int64 { + if x != nil { + return x.PowerLine + } + return 0 +} + +func (x *SCPushCoinInfo) GetPowerLineMax() int64 { + if x != nil { + return x.PowerLineMax + } + return 0 +} + +func (x *SCPushCoinInfo) GetRefreshTimes() int64 { + if x != nil { + return x.RefreshTimes + } + return 0 +} + +type ItemInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 +} + +func (x *ItemInfo) Reset() { + *x = ItemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ItemInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ItemInfo) ProtoMessage() {} + +func (x *ItemInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ItemInfo.ProtoReflect.Descriptor instead. +func (*ItemInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{2} +} + +func (x *ItemInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *ItemInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +type ExchangeInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //兑换id + Cost []*ItemInfo `protobuf:"bytes,2,rep,name=Cost,proto3" json:"Cost,omitempty"` //消耗道具 + Gain []*ItemInfo `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty"` //获得道具 + ShakeTimes int32 `protobuf:"varint,4,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //获得震动次数 +} + +func (x *ExchangeInfo) Reset() { + *x = ExchangeInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExchangeInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExchangeInfo) ProtoMessage() {} + +func (x *ExchangeInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExchangeInfo.ProtoReflect.Descriptor instead. +func (*ExchangeInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{3} +} + +func (x *ExchangeInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ExchangeInfo) GetCost() []*ItemInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *ExchangeInfo) GetGain() []*ItemInfo { + if x != nil { + return x.Gain + } + return nil +} + +func (x *ExchangeInfo) GetShakeTimes() int32 { + if x != nil { + return x.ShakeTimes + } + return 0 +} + +type DrawInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //抽奖id + ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,3,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 + Coin int64 `protobuf:"varint,4,opt,name=Coin,proto3" json:"Coin,omitempty"` //价值 +} + +func (x *DrawInfo) Reset() { + *x = DrawInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DrawInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DrawInfo) ProtoMessage() {} + +func (x *DrawInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DrawInfo.ProtoReflect.Descriptor instead. +func (*DrawInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{4} +} + +func (x *DrawInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DrawInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *DrawInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *DrawInfo) GetCoin() int64 { + if x != nil { + return x.Coin + } + return 0 +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +type CSPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpCode OpCodes `protobuf:"varint,1,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` + OpParam []int64 `protobuf:"varint,2,rep,packed,name=OpParam,proto3" json:"OpParam,omitempty"` +} + +func (x *CSPushCoinPlayerOp) Reset() { + *x = CSPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPushCoinPlayerOp) ProtoMessage() {} + +func (x *CSPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*CSPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{5} +} + +func (x *CSPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *CSPushCoinPlayerOp) GetOpParam() []int64 { + if x != nil { + return x.OpParam + } + return nil +} + +//PACKET_SCPushCoinPlayerOp +type SCPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultPushCoinCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=activity.OpResultPushCoinCode" json:"OpRetCode,omitempty"` + OpCode OpCodes `protobuf:"varint,2,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` + Exchange *ExchangeInfo `protobuf:"bytes,3,opt,name=Exchange,proto3" json:"Exchange,omitempty"` // 兑换信息,加到背包 + Draw *DrawInfo `protobuf:"bytes,4,opt,name=Draw,proto3" json:"Draw,omitempty"` // 抽奖信息,掉落到桌面 +} + +func (x *SCPushCoinPlayerOp) Reset() { + *x = SCPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinPlayerOp) ProtoMessage() {} + +func (x *SCPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*SCPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{6} +} + +func (x *SCPushCoinPlayerOp) GetOpRetCode() OpResultPushCoinCode { + if x != nil { + return x.OpRetCode + } + return OpResultPushCoinCode_OPRC_PushCoin_Success +} + +func (x *SCPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *SCPushCoinPlayerOp) GetExchange() *ExchangeInfo { + if x != nil { + return x.Exchange + } + return nil +} + +func (x *SCPushCoinPlayerOp) GetDraw() *DrawInfo { + if x != nil { + return x.Draw + } + return nil +} + +var File_protocol_activity_pushcoin_proto protoreflect.FileDescriptor + +var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x10, 0x0a, 0x0e, + 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb8, + 0x02, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3a, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, + 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, + 0x42, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, + 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, + 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, + 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, + 0x12, 0x26, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, + 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, + 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x53, + 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, + 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, + 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xd9, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x3c, 0x0a, 0x09, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x72, 0x61, + 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x72, 0x61, + 0x77, 0x2a, 0xa4, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xee, 0x14, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xef, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xf0, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xf1, 0x14, 0x2a, 0x6b, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, + 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x44, + 0x72, 0x61, 0x77, 0x10, 0x06, 0x2a, 0x4a, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, + 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, + 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_protocol_activity_pushcoin_proto_rawDescOnce sync.Once + file_protocol_activity_pushcoin_proto_rawDescData = file_protocol_activity_pushcoin_proto_rawDesc +) + +func file_protocol_activity_pushcoin_proto_rawDescGZIP() []byte { + file_protocol_activity_pushcoin_proto_rawDescOnce.Do(func() { + file_protocol_activity_pushcoin_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_activity_pushcoin_proto_rawDescData) + }) + return file_protocol_activity_pushcoin_proto_rawDescData +} + +var file_protocol_activity_pushcoin_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_protocol_activity_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{ + (PushCoinPacketID)(0), // 0: activity.PushCoinPacketID + (OpCodes)(0), // 1: activity.OpCodes + (OpResultPushCoinCode)(0), // 2: activity.OpResultPushCoinCode + (*CSPushCoinInfo)(nil), // 3: activity.CSPushCoinInfo + (*SCPushCoinInfo)(nil), // 4: activity.SCPushCoinInfo + (*ItemInfo)(nil), // 5: activity.ItemInfo + (*ExchangeInfo)(nil), // 6: activity.ExchangeInfo + (*DrawInfo)(nil), // 7: activity.DrawInfo + (*CSPushCoinPlayerOp)(nil), // 8: activity.CSPushCoinPlayerOp + (*SCPushCoinPlayerOp)(nil), // 9: activity.SCPushCoinPlayerOp +} +var file_protocol_activity_pushcoin_proto_depIdxs = []int32{ + 6, // 0: activity.SCPushCoinInfo.ExchangeList:type_name -> activity.ExchangeInfo + 7, // 1: activity.SCPushCoinInfo.DrawList:type_name -> activity.DrawInfo + 5, // 2: activity.ExchangeInfo.Cost:type_name -> activity.ItemInfo + 5, // 3: activity.ExchangeInfo.Gain:type_name -> activity.ItemInfo + 1, // 4: activity.CSPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes + 2, // 5: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode + 1, // 6: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes + 6, // 7: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo + 7, // 8: activity.SCPushCoinPlayerOp.Draw:type_name -> activity.DrawInfo + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_protocol_activity_pushcoin_proto_init() } +func file_protocol_activity_pushcoin_proto_init() { + if File_protocol_activity_pushcoin_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protocol_activity_pushcoin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPushCoinInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ItemInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExchangeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DrawInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPushCoinPlayerOp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinPlayerOp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_protocol_activity_pushcoin_proto_rawDesc, + NumEnums: 3, + NumMessages: 7, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protocol_activity_pushcoin_proto_goTypes, + DependencyIndexes: file_protocol_activity_pushcoin_proto_depIdxs, + EnumInfos: file_protocol_activity_pushcoin_proto_enumTypes, + MessageInfos: file_protocol_activity_pushcoin_proto_msgTypes, + }.Build() + File_protocol_activity_pushcoin_proto = out.File + file_protocol_activity_pushcoin_proto_rawDesc = nil + file_protocol_activity_pushcoin_proto_goTypes = nil + file_protocol_activity_pushcoin_proto_depIdxs = nil +} diff --git a/protocol/activity/pushcoin.proto b/protocol/activity/pushcoin.proto new file mode 100644 index 0000000..dd707fa --- /dev/null +++ b/protocol/activity/pushcoin.proto @@ -0,0 +1,76 @@ +syntax = "proto3"; +package activity; +option go_package = "mongo.games.com/game/protocol/activity"; + +enum PushCoinPacketID { + PACKET_PushCoin_ZERO = 0;// 弃用消息号 + PACKET_CSPushCoinInfo = 2670; // 信息 + PACKET_SCPushCoinInfo = 2671; // 信息返回 + PACKET_CSPushCoinPlayerOp = 2672; // 玩家操作 + PACKET_SCPushCoinPlayerOp = 2673; // 玩家操作返回 +} + +//信息 +//PACKET_CSPushCoinInfo +message CSPushCoinInfo { +} +//PACKET_SCPushCoinInfo +message SCPushCoinInfo { + repeated ExchangeInfo ExchangeList = 1; //兑换信息 + repeated DrawInfo DrawList = 2; //抽奖信息 + repeated int64 BetList = 3; //下注金额列表 + int32 ShakeTimes = 4; //可震动次数 + int64 BaseCoin = 5; //当前底分(单次投币金额) + int64 PowerLine = 6; // 当前能量值 + int64 PowerLineMax = 7; // 能量值上限 + int64 RefreshTimes = 8; // 刷新次数 +} + +message ItemInfo{ + int32 ItemId = 1; //道具id + int32 ItemNum = 2; //道具数量 +} + +message ExchangeInfo{ + int32 Id = 1; //兑换id + repeated ItemInfo Cost = 2; //消耗道具 + repeated ItemInfo Gain = 3; //获得道具 + int32 ShakeTimes = 4; //获得震动次数 +} + +message DrawInfo{ + int32 Id = 1; //抽奖id + int32 ItemId = 2; //道具id + int32 ItemNum = 3; //道具数量 + int64 Coin = 4; //价值 +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +message CSPushCoinPlayerOp { + OpCodes OpCode = 1; + repeated int64 OpParam = 2; +} + +enum OpCodes { + OP_Zero = 0; + OP_Bet = 1; // 下注 [下注金额] + OP_Gain = 2; // 得分 [得分金额] + OP_Shake = 3; // 震动 [消耗次数] + OP_Refresh = 4; // 刷新 [桌面金额] + OP_Exchange = 5; // 兑换 [兑换id] + OP_Draw = 6; // 抽奖 [抽奖id] +} + +enum OpResultPushCoinCode { + OPRC_PushCoin_Success = 0; //成功 + OPRC_PushCoin_Error = 1; //失败 +} + +//PACKET_SCPushCoinPlayerOp +message SCPushCoinPlayerOp { + OpResultPushCoinCode OpRetCode = 1; + OpCodes OpCode = 2; + ExchangeInfo Exchange = 3; // 兑换信息,加到背包 + DrawInfo Draw = 4; // 抽奖信息,掉落到桌面 +} \ No newline at end of file diff --git a/protocol/pushcoin/pushcoin.pb.go b/protocol/pushcoin/pushcoin.pb.go index c6219d5..eafa0fa 100644 --- a/protocol/pushcoin/pushcoin.pb.go +++ b/protocol/pushcoin/pushcoin.pb.go @@ -199,6 +199,7 @@ type SCPushCoinRoomInfo struct { Players []*PushCoinPlayerData `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` //房间内的玩家信息 ExchangeList []*ExchangeInfo `protobuf:"bytes,8,rep,name=ExchangeList,proto3" json:"ExchangeList,omitempty"` //兑换信息 DrawList []*DrawInfo `protobuf:"bytes,9,rep,name=DrawList,proto3" json:"DrawList,omitempty"` //抽奖信息 + BetList []int64 `protobuf:"varint,10,rep,packed,name=BetList,proto3" json:"BetList,omitempty"` //下注金额列表 } func (x *SCPushCoinRoomInfo) Reset() { @@ -296,6 +297,13 @@ func (x *SCPushCoinRoomInfo) GetDrawList() []*DrawInfo { return nil } +func (x *SCPushCoinRoomInfo) GetBetList() []int64 { + if x != nil { + return x.BetList + } + return nil +} + type ItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -867,7 +875,7 @@ var File_protocol_pushcoin_pushcoin_proto protoreflect.FileDescriptor var file_protocol_pushcoin_pushcoin_proto_rawDesc = []byte{ 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x08, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x22, 0xcc, 0x02, 0x0a, + 0x74, 0x6f, 0x12, 0x08, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x22, 0xe6, 0x02, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, @@ -888,102 +896,104 @@ var file_protocol_pushcoin_pushcoin_proto_rawDesc = []byte{ 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, - 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, - 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, - 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, - 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x03, 0x0a, - 0x12, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, - 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, - 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x49, 0x50, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x56, 0x49, 0x50, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x45, 0x78, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x0c, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, - 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x42, - 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, - 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, - 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, - 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, - 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x5f, 0x0a, - 0x13, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, - 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x75, - 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x59, - 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, - 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x53, 0x43, - 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, - 0x12, 0x34, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x4f, - 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, - 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, - 0x6e, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x72, 0x61, 0x77, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x44, - 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x2a, 0xad, 0x01, - 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, - 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x19, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xa6, 0x2c, 0x12, 0x1f, 0x0a, 0x1a, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xa7, 0x2c, 0x12, 0x1e, 0x0a, - 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, - 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa8, 0x2c, 0x12, 0x1e, 0x0a, - 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, - 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa9, 0x2c, 0x2a, 0x6b, 0x0a, - 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, - 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, - 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, - 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, - 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, - 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x12, 0x0b, 0x0a, - 0x07, 0x4f, 0x50, 0x5f, 0x44, 0x72, 0x61, 0x77, 0x10, 0x06, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, - 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x75, - 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x42, + 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, + 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x4e, 0x75, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, + 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, + 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, + 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x03, 0x0a, 0x12, 0x50, 0x75, 0x73, 0x68, 0x43, + 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x56, + 0x49, 0x50, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x49, 0x50, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, + 0x78, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, + 0x4d, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x5f, 0x0a, 0x13, 0x53, 0x43, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, + 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, + 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x34, 0x0a, 0x09, 0x4f, 0x70, + 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x11, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x26, 0x0a, 0x04, 0x44, 0x72, 0x61, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x2a, 0xad, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, + 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x10, 0xa6, 0x2c, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x10, 0xa7, 0x2c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa8, 0x2c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa9, 0x2c, 0x2a, 0x6b, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, + 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, + 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, + 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x44, 0x72, + 0x61, 0x77, 0x10, 0x06, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/pushcoin/pushcoin.proto b/protocol/pushcoin/pushcoin.proto index 0bb87bf..799e21f 100644 --- a/protocol/pushcoin/pushcoin.proto +++ b/protocol/pushcoin/pushcoin.proto @@ -23,6 +23,7 @@ message SCPushCoinRoomInfo { repeated PushCoinPlayerData Players = 7; //房间内的玩家信息 repeated ExchangeInfo ExchangeList = 8; //兑换信息 repeated DrawInfo DrawList = 9; //抽奖信息 + repeated int64 BetList = 10; //下注金额列表 } message ItemInfo{ diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index 712979b..c52cdbb 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -9142,10 +9142,12 @@ type DB_PropExchange struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - Group int32 `protobuf:"varint,2,opt,name=Group,proto3" json:"Group,omitempty"` - Cost map[int64]int64 `protobuf:"bytes,3,rep,name=Cost,proto3" json:"Cost,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - Gain map[int64]int64 `protobuf:"bytes,4,rep,name=Gain,proto3" json:"Gain,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Group int32 `protobuf:"varint,2,opt,name=Group,proto3" json:"Group,omitempty"` + Cost map[int64]int64 `protobuf:"bytes,3,rep,name=Cost,proto3" json:"Cost,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Gain map[int64]int64 `protobuf:"bytes,4,rep,name=Gain,proto3" json:"Gain,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Custom map[int64]int64 `protobuf:"bytes,5,rep,name=Custom,proto3" json:"Custom,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Times int32 `protobuf:"varint,6,opt,name=Times,proto3" json:"Times,omitempty"` } func (x *DB_PropExchange) Reset() { @@ -9208,6 +9210,20 @@ func (x *DB_PropExchange) GetGain() map[int64]int64 { return nil } +func (x *DB_PropExchange) GetCustom() map[int64]int64 { + if x != nil { + return x.Custom + } + return nil +} + +func (x *DB_PropExchange) GetTimes() int32 { + if x != nil { + return x.Times + } + return 0 +} + type DB_PropExchangeArray struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -12474,7 +12490,7 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, - 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, + 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x03, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, @@ -12484,301 +12500,310 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x47, - 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x1a, 0x37, - 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, - 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, - 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, - 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, - 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, - 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, - 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x83, 0x04, 0x0a, 0x07, 0x44, - 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, - 0x69, 0x6e, 0x50, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6b, 0x69, - 0x6e, 0x50, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, - 0x6e, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, - 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, - 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, - 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, - 0x65, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, - 0x79, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, - 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x20, 0x0a, 0x0b, - 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x26, - 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, - 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, - 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, - 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, - 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, - 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, - 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, - 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, + 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x3b, + 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, + 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, + 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, - 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, - 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, - 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, - 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, - 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, + 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, + 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, + 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, + 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, + 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, + 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, + 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x83, 0x04, 0x0a, 0x07, 0x44, 0x42, 0x5f, + 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6e, + 0x50, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, + 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x2e, + 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x53, + 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, + 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, + 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x53, + 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x1a, + 0x3d, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, + 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x38, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, + 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x6b, + 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, + 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, + 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, + 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x11, 0x44, + 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, + 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, + 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, + 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, + 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, + 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, + 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, + 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, + 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, + 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, + 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, + 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, + 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, + 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, + 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, + 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, + 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, + 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, + 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, + 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, + 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, - 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0c, - 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0xce, 0x06, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, - 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, - 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, - 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x39, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, - 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, - 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x7c, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x56, - 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, - 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, 0x73, 0x22, - 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, - 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, + 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, + 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, + 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, + 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xce, 0x06, + 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, + 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, + 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, + 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, + 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, + 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x15, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x12, + 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x53, 0x68, 0x6f, 0x77, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, + 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0x7c, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x49, 0x50, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x49, 0x50, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, 0x73, 0x22, 0x37, 0x0a, + 0x0f, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, + 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -12793,7 +12818,7 @@ func file_protocol_server_pbdata_proto_rawDescGZIP() []byte { return file_protocol_server_pbdata_proto_rawDescData } -var file_protocol_server_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 163) +var file_protocol_server_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 164) var file_protocol_server_pbdata_proto_goTypes = []interface{}{ (*DB_ActSign)(nil), // 0: server.DB_ActSign (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray @@ -12953,11 +12978,12 @@ var file_protocol_server_pbdata_proto_goTypes = []interface{}{ nil, // 155: server.DB_PigBank_Diamond.DiamondExcEntry nil, // 156: server.DB_PropExchange.CostEntry nil, // 157: server.DB_PropExchange.GainEntry - nil, // 158: server.DB_Skin.UnlockItemEntry - nil, // 159: server.DB_SkinLevel.UpItemEntry - nil, // 160: server.DB_Task.AwardEntry - nil, // 161: server.DB_VIP.Privilege7Entry - nil, // 162: server.DB_VIP.AwardEntry + nil, // 158: server.DB_PropExchange.CustomEntry + nil, // 159: server.DB_Skin.UnlockItemEntry + nil, // 160: server.DB_SkinLevel.UpItemEntry + nil, // 161: server.DB_Task.AwardEntry + nil, // 162: server.DB_VIP.Privilege7Entry + nil, // 163: server.DB_VIP.AwardEntry } var file_protocol_server_pbdata_proto_depIdxs = []int32{ 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign @@ -13031,30 +13057,31 @@ var file_protocol_server_pbdata_proto_depIdxs = []int32{ 116, // 68: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd 156, // 69: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry 157, // 70: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 118, // 71: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 120, // 72: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 122, // 73: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 124, // 74: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 126, // 75: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 158, // 76: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry - 128, // 77: server.DB_SkinArray.Arr:type_name -> server.DB_Skin - 159, // 78: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry - 130, // 79: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel - 132, // 80: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 134, // 81: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 160, // 82: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 136, // 83: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 138, // 84: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 140, // 85: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 161, // 86: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 162, // 87: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 142, // 88: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 144, // 89: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow - 90, // [90:90] is the sub-list for method output_type - 90, // [90:90] is the sub-list for method input_type - 90, // [90:90] is the sub-list for extension type_name - 90, // [90:90] is the sub-list for extension extendee - 0, // [0:90] is the sub-list for field type_name + 158, // 71: server.DB_PropExchange.Custom:type_name -> server.DB_PropExchange.CustomEntry + 118, // 72: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 120, // 73: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 122, // 74: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 124, // 75: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 126, // 76: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 159, // 77: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry + 128, // 78: server.DB_SkinArray.Arr:type_name -> server.DB_Skin + 160, // 79: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry + 130, // 80: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel + 132, // 81: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 134, // 82: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 161, // 83: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 136, // 84: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 138, // 85: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 140, // 86: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 162, // 87: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 163, // 88: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 142, // 89: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 144, // 90: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow + 91, // [91:91] is the sub-list for method output_type + 91, // [91:91] is the sub-list for method input_type + 91, // [91:91] is the sub-list for extension type_name + 91, // [91:91] is the sub-list for extension extendee + 0, // [0:91] is the sub-list for field type_name } func init() { file_protocol_server_pbdata_proto_init() } @@ -14822,7 +14849,7 @@ func file_protocol_server_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_server_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 163, + NumMessages: 164, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index 531f3fd..16184b7 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -1497,6 +1497,10 @@ message DB_PropExchange { map Gain = 4; + map Custom = 5; + + int32 Times = 6; + } message DB_PropExchangeArray { diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go new file mode 100644 index 0000000..8f9d038 --- /dev/null +++ b/worldsrv/action_pushcoin.go @@ -0,0 +1,94 @@ +package main + +import ( + "mongo.games.com/game/common" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/model" + "mongo.games.com/game/protocol/activity" + "mongo.games.com/game/srvdata" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "sort" +) + +const ( + PowerMax = 700000 + PowerInit = 400000 +) + +var BaseCoins = []int64{5000, 10000, 15000} + +func init() { + // 推币机活动信息 + common.Register(int(activity.PushCoinPacketID_PACKET_CSPushCoinInfo), activity.CSPushCoinInfo{}, CSPushCoinInfo) +} + +func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { + _, ok := data.(*activity.CSPushCoinInfo) + if !ok { + return nil + } + + p := base.PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warn("CSPushCoinInfo p == nil") + return nil + } + + if p.WelfData == nil { + logger.Logger.Warn("CSPushCoinInfo p.WelfData == nil") + return nil + } + + if p.WelfData.PushCoin == nil { + p.WelfData.PushCoin = &model.PushCoinData{ + Shake: 0, + Refresh: 0, + Power: PowerInit, + Base: BaseCoins[0], + } + } + + pack := &activity.SCPushCoinInfo{ + ShakeTimes: p.WelfData.PushCoin.Shake, + BaseCoin: p.WelfData.PushCoin.Base, + PowerLine: p.WelfData.PushCoin.Power, + PowerLineMax: PowerMax, + RefreshTimes: p.WelfData.PushCoin.Refresh, + } + + for _, v := range srvdata.PBDB_PropExchangeMgr.Datas.Arr { + if v.GetGroup() == 2 { + info := &activity.ExchangeInfo{ + Id: v.GetId(), + } + for kk, vv := range v.GetCost() { + info.Cost = append(info.Cost, &activity.ItemInfo{ + ItemId: int32(kk), + ItemNum: int32(vv), + }) + } + sort.Slice(info.Cost, func(i, j int) bool { + return info.Cost[i].ItemId < info.Cost[j].ItemId + }) + for kk, vv := range v.GetGain() { + info.Gain = append(info.Gain, &activity.ItemInfo{ + ItemId: int32(kk), + ItemNum: int32(vv), + }) + } + sort.Slice(info.Gain, func(i, j int) bool { + return info.Gain[i].ItemId < info.Gain[j].ItemId + }) + for kk, vv := range v.GetCustom() { + if kk == 1 { + info.ShakeTimes = int32(vv) + } + } + pack.ExchangeList = append(pack.ExchangeList, info) + } + } + + p.SendToClient(int(activity.PushCoinPacketID_PACKET_SCPushCoinInfo), pack) + return nil +} diff --git a/xlsx/DB_PropExchange.xlsx b/xlsx/DB_PropExchange.xlsx index 91badd0d15c28426eef4227c6d0433422059d1f1..ccdf616e54a6052ff92593bd88a7885f911e2bcd 100644 GIT binary patch delta 4430 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 E0n)t_nE(I) delta 4064 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 Date: Wed, 8 Jan 2025 11:24:09 +0800 Subject: [PATCH 25/74] =?UTF-8?q?fix=20=E7=BA=A2=E5=8C=85=E6=B4=BB?= =?UTF-8?q?=E5=8A=A8=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/welfmgr.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index c9eea81..ce183c9 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -5,6 +5,7 @@ import ( "math" "math/rand" "slices" + "sort" "time" "mongo.games.com/goserver/core/logger" @@ -2313,6 +2314,10 @@ func (this *WelfareMgr) SendRedPacketInfo(p *Player) *welfare.SCRedPacketInfo { } } + sort.Slice(pack.Info, func(i, j int) bool { + return pack.Info[i].StartTs < pack.Info[j].StartTs + }) + p.SendToClient(int(welfare.SPacketID_PACKET_SCRedPacketInfo), pack) return pack } From 6dffae75468aec87581f7dbf88a38c34fbfb58ac Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 8 Jan 2025 11:27:20 +0800 Subject: [PATCH 26/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/rankmatch.go | 108 ++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 52 deletions(-) diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index e0633f8..d968da3 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -769,24 +769,25 @@ func (r *RankMatchMgr) RankAward() { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindPlayerPermitList player is nil %v", list.List[k].SnId) continue } - var items []int64 - for _, award := range rankAward { - if award.RankLevelId == rankId { - for _, itemInfo := range award.Item { - items = append(items, int64(itemInfo.ItemId)) - items = append(items, itemInfo.ItemNum) - } - break - } - } - if len(items) == 0 { - break - } // 发邮件 var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + id := rankId + var items []int64 + for _, award := range rankAward { + if award.RankLevelId == rankId { + for _, itemInfo := range award.Item { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + break + } + } + if len(items) == 0 { + return nil + } title := i18n.Tr("languages", "PermitAwardTitle") - content := i18n.Tr("languages", "PermitAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) + content := i18n.Tr("languages", "PermitAward", []int{int(id), int(id), int(id), int(id)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -841,24 +842,25 @@ func (r *RankMatchMgr) RankAward() { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindWinCoinListTienlen player is nil %v", ret.List[k].SnId) continue } - var items []int64 - for _, award := range rankAward { - if award.RankLevelId == rankId { - for _, itemInfo := range award.Item { - items = append(items, int64(itemInfo.ItemId)) - items = append(items, itemInfo.ItemNum) - } - break - } - } - if len(items) == 0 { - break - } // 发邮件 var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + id := rankId + var items []int64 + for _, award := range rankAward { + if award.RankLevelId == id { + for _, itemInfo := range award.Item { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + break + } + } + if len(items) == 0 { + return nil + } title := i18n.Tr("languages", "PermitAwardTitle") - content := i18n.Tr("languages", "PermitAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) + content := i18n.Tr("languages", "PermitAward", []int{int(id), int(id), int(id), int(id)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -998,21 +1000,22 @@ func (r *RankMatchMgr) NianRankAward() { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList player is nil %v", list.List[k].SnId) continue } - var items []int64 - for _, award := range rankAward[rankId].Award { - items = append(items, int64(award.ItemId)) - items = append(items, award.ItemNum) - } - if len(items) == 0 { - break - } // 发邮件 var newMsg *model.Message - title := i18n.Tr("languages", "NianLuckTitle") - content := i18n.Tr("languages", "NianLuckAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) - newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, - title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + id := rankId + var items []int64 + for _, award := range rankAward[id].Award { + items = append(items, int64(award.ItemId)) + items = append(items, award.ItemNum) + } + if len(items) == 0 { + return nil + } + title := i18n.Tr("languages", "NianLuckTitle") + content := i18n.Tr("languages", "NianLuckAward", []int{int(id), int(id), int(id), int(id)}) + newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, + title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) if err != nil { logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err) @@ -1084,21 +1087,22 @@ func (r *RankMatchMgr) NianRankAward() { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList player is nil %v", list.List[k].SnId) continue } - var items []int64 - for _, award := range rankAward[rankId].Award { - items = append(items, int64(award.ItemId)) - items = append(items, award.ItemNum) - } - if len(items) == 0 { - break - } // 发邮件 var newMsg *model.Message - title := i18n.Tr("languages", "NianDamageTitle") - content := i18n.Tr("languages", "NianDamageAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) - newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, - title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + id := rankId + var items []int64 + for _, award := range rankAward[id].Award { + items = append(items, int64(award.ItemId)) + items = append(items, award.ItemNum) + } + if len(items) == 0 { + return nil + } + title := i18n.Tr("languages", "NianDamageTitle") + content := i18n.Tr("languages", "NianDamageAward", []int{int(id), int(id), int(id), int(id)}) + newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, + title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) if err != nil { logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err) From a92a04a81df4efda2c355fed0bcdc55bd2b0d774 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 8 Jan 2025 14:46:29 +0800 Subject: [PATCH 27/74] =?UTF-8?q?add=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 7 +- data/DB_ACTPushCoin.dat | 11 + data/DB_ACTPushCoin.json | 76 + data/DB_GameItem.dat | Bin 20889 -> 21074 bytes data/DB_GameItem.json | 75 + data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 384 -> 512 bytes data/DB_Task.dat | Bin 7678 -> 7678 bytes etcd/keyconf.go | 7 +- gamesrv/pushcoin/scenepolicy.go | 6 - model/config.go | 3 + model/player.go | 11 +- protocol/activity/pushcoin.pb.go | 264 +- protocol/activity/pushcoin.proto | 36 +- protocol/server/pbdata.pb.go | 4801 +++++++++++++++--------------- protocol/server/pbdata.proto | 16 + protocol/webapi/common.pb.go | 154 +- protocol/webapi/common.proto | 8 + srvdata/db_actpushcoin.go | 77 + worldsrv/action_pushcoin.go | 265 +- worldsrv/etcd.go | 4 + worldsrv/welfmgr.go | 27 +- xlsx/DB_ACTPushCoin.xlsx | Bin 0 -> 10545 bytes xlsx/DB_GameItem.xlsx | Bin 38013 -> 38246 bytes 24 files changed, 3384 insertions(+), 2466 deletions(-) create mode 100644 data/DB_ACTPushCoin.dat create mode 100644 data/DB_ACTPushCoin.json create mode 100644 srvdata/db_actpushcoin.go create mode 100644 xlsx/DB_ACTPushCoin.xlsx diff --git a/common/constant.go b/common/constant.go index a5eda1a..21bddbd 100644 --- a/common/constant.go +++ b/common/constant.go @@ -345,8 +345,10 @@ const ( GainWayNianGain_EveryDayTask = 132 //年兽活动每日任务 GainWayNianGain_Task = 133 //年兽活动任务 GainWayConsume = 134 //累消活动获得 - GainWayPushCoinCost = 135 // 推币机消耗 - GainWayPushCoinGain = 136 // 推币机获得 + GainWayPushCoinExchangeCost = 135 // 推币机兑换消耗 + GainWatPushCoinExchangeGain = 136 // 推币机兑换获得 + GainWayPushCoinGain = 137 // 推币机掉落获得 + GainWayPushCoinCost = 138 // 推币机消耗 ) // 后台选择 金币变化类型 的充值 类型id号起始 @@ -602,6 +604,7 @@ const ( ItemIDRoomCard = 40002 // 房卡 ItemIDLittleGuaranteed = 50014 //小爆竹 ItemIDBigGuaranteed = 50015 //大爆竹 + ItemIDBigCoin = 50017 //大金币 ) func ToItemId(id int32) int32 { diff --git a/data/DB_ACTPushCoin.dat b/data/DB_ACTPushCoin.dat new file mode 100644 index 0000000..977012f --- /dev/null +++ b/data/DB_ACTPushCoin.dat @@ -0,0 +1,11 @@ + +  + + І +  +  N + І +  + І +  + d / \ No newline at end of file diff --git a/data/DB_ACTPushCoin.json b/data/DB_ACTPushCoin.json new file mode 100644 index 0000000..75d6770 --- /dev/null +++ b/data/DB_ACTPushCoin.json @@ -0,0 +1,76 @@ +{ + "Arr": [ + { + "Id": 1, + "Rate": 4000, + "Gain": { + "100001": 5 + }, + "Value": 25000 + }, + { + "Id": 2, + "Rate": 1000, + "Gain": { + "100001": 10 + }, + "Value": 50000 + }, + { + "Id": 3, + "Rate": 450, + "Gain": { + "100001": 20 + }, + "Value": 100000 + }, + { + "Id": 4, + "Rate": 1500, + "Gain": { + "30001": 1 + }, + "Value": 10000 + }, + { + "Id": 5, + "Rate": 750, + "Gain": { + "30001": 5 + }, + "Value": 50000 + }, + { + "Id": 6, + "Rate": 250, + "Gain": { + "100002": 1 + }, + "Value": 100000 + }, + { + "Id": 7, + "Rate": 1000, + "Gain": { + "50017": 1 + }, + "Value": 50000 + }, + { + "Id": 8, + "Rate": 950, + "Gain": { + "50016": 1 + }, + "Value": 30000 + }, + { + "Id": 9, + "Rate": 100, + "Gain": { + "30006": 1 + }, + "Value": 100000000 + } + ] +} \ No newline at end of file diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index fb28f1078df546acd3fdaeaea40ef3d1ecd7d3a6..202ce8a63b01bc0d9f8c02a47c35f3a48ccb4107 100644 GIT binary patch delta 139 zcmbQanDNpQ#tkzArMMzE9<(tFu{~SV`l4&26f*+@gA$0)kez%xKyGpY54**)z7)DpwPrFt;ZJqe6chSqn$xmCibH#Ez1nTB|x@7sw_K84M*bI=xV?YHL08TwX AumAu6 delta 9 Qcmcb#gmLC##tkzA0T%8APXGV_ diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 954355e..36a6fe1 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -7300,6 +7300,81 @@ "CompositionMax": 9999, "Location": "0", "Describe": "可在年兽活动中击退年兽,获得奖品" + }, + { + "Id": 50016, + "Name": "梅花", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可在推币机活动兑换道具" + }, + { + "Id": 50017, + "Name": "大金币", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可在推币机活动兑换道具", + "Num": 10 } ] } \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index ea6f47d..735a0e1 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c < ((2Ÿ28@;JƸJPdX` -?/ 2(2Ÿ28@;JJƸPdX` \ No newline at end of file +?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 020eca0d824f7e767a067fbbda4dbfc2933c18a4..53398ce95f78f66e66ab5d213f0c60b9b6956b82 100644 GIT binary patch literal 512 zcmd-w<6snElw#w!-o^~3FGJ}oQ2HvAz6PR|I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevn+vlStRCnNnEklSg}8$g?2d-Dk65^3Iat6BL2)P+58*NpX7L@U!@&+z zV&_-{^yn96E-?;P0Vbev4}j8gN^Bg5b^!ftzzP&+gNt(k#X-uM4Y+{f>~L{bp!mjD wi~{@y{6KLIxHuzFeDNG$xEqK7#W|70A>q5>6(g4r2NyzIiv<)*TnyBQ0PN9HU;qFB literal 384 zcmd-w<6snElw#w!-o^~3FGJ}oQ2HvAz6PR|I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwf4)Wg)l>;s#R1iPbQ?IRYhSPmAjLtqYtc?6~rW&z9q dn87dy+<`h6<^Zq*mDo8J0X_PKnTvt85CCOTJT(9S diff --git a/data/DB_Task.dat b/data/DB_Task.dat index bf04f72fa7e839b4a3e0f7266303c8c089c11ad3..5bf6c506088feb59eb3ab0e71bd662f2ecb7ef08 100644 GIT binary patch delta 361 zcmexo{m**Cd`3YwjwQWp0wP`<91DT;g*N8R8yKaTCb#g2Ouo;&Y4TTY0Y=8ni&!d| zfGQUORj@);Hgr~P)?rtH2{S^47xc1CPUJL#DrSO;9+<^5c?sukplM>0OSuZ6vdDVA zbM2g*#w)V<2=^k!$s4#uCRg#cLzThY2DEXq5T7m<%>jJ5P*G;6g%6esO+LqG02PI~ zdBGvM$^86=KxYVU4&-m-mSp3&-^MJU>%|H7e8a=n;#}4ocT)vKC*PNr*~~6|927nv iCCDDRFJlH3g_#SoO-SSp#Ix*9sGfVw~mSU2mit1wM&;Srgf!l^&`1G~uN<(xa9y15X#Cl_#)fmQwD z+BP|jS7h@M?nR7~H*kwguHtQiccX0=it*9CuR%L?_>umf6fMeH<172WIg= hRWMDyFJp#cH%K4rWHniHpe-Oa%tJsoOwN;?002$xVy^%I diff --git a/etcd/keyconf.go b/etcd/keyconf.go index f7610b4..9ed59d3 100644 --- a/etcd/keyconf.go +++ b/etcd/keyconf.go @@ -34,7 +34,7 @@ const ( ETCDKEY_ACT_Invite = "/game/act_invite" // 邀请活动配置 ETCDKEY_ACT_Permit = "/game/act_permit" // 赛季通行证配置 ETCDKEY_DIAMOND_LOTTERY = "/game/diamond_lottery" // 钻石抽奖配置 - ETCDKEY_Item = "/game/item" // 道具列表 + ETCDKEY_Item = "/game/item/" // 道具列表 ETCDKEY_SKin = "/game/skin_config" // 皮肤配置 ETCDKEY_RANK_TYPE = "/game/RankType" // 排行榜奖励配置 ETCDKEY_AWARD_CONFIG = "/game/awardlog_config" //获奖记录 @@ -53,6 +53,7 @@ const ( ETCDKEY_PigBankProp = "/game/pigbank_prop" //存钱罐属性 ETCDKEY_NianConfig = "/game/activity_nian" //年兽活动配置 ETCDKEY_NianRankConfig = "/game/activity_nian_rank" //年兽排行榜配置 - KeyRedPacket = "/game/act_redpacket" //红包配置 - KeyActConsume = "/game/act_consume" //累计消耗活动配置 + KeyRedPacket = "/game/act_redpacket" //红包配置 + KeyActConsume = "/game/act_consume" //累计消耗活动配置 + KeyActPushCoin = "/game/act_pushcoin" //推金币活动配置 ) diff --git a/gamesrv/pushcoin/scenepolicy.go b/gamesrv/pushcoin/scenepolicy.go index 00a3eab..d92a042 100644 --- a/gamesrv/pushcoin/scenepolicy.go +++ b/gamesrv/pushcoin/scenepolicy.go @@ -286,13 +286,8 @@ func (this *StateGaming) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, p switch pushcoin.OpCodes(opcode) { case pushcoin.OpCodes_OP_Bet: - if p.GetCoin() < params[0] { - goto here - } - p.AddCoin(-params[0], common.GainWayPushCoinCost, base.SyncFlag_ToClient, "system", "推币机下注") case pushcoin.OpCodes_OP_Gain: - p.AddCoin(params[0], common.GainWayPushCoinGain, base.SyncFlag_ToClient, "system", "推币机获得") case pushcoin.OpCodes_OP_Shake: @@ -306,7 +301,6 @@ func (this *StateGaming) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, p return true } -here: p.SendToClient(int(pushcoin.PushCoinPacketID_PACKET_SCPushCoinPlayerOp), pack) return true } diff --git a/model/config.go b/model/config.go index 2080dbf..50540a2 100644 --- a/model/config.go +++ b/model/config.go @@ -26,6 +26,7 @@ const ( OpCollect = 6 OpNian = 7 OpConsume = 8 // 累计消耗活动 + OpPushCoin = 9 // 推金币活动 ) const ( @@ -175,6 +176,8 @@ type AllConfig struct { *webapi.RedPacketConfig // 累计消耗活动配置 *webapi.ConsumeConfig + // 推金币活动配置 + *webapi.PushCoinConfig } type GlobalConfig struct { diff --git a/model/player.go b/model/player.go index 259802e..bd7cf97 100644 --- a/model/player.go +++ b/model/player.go @@ -558,10 +558,13 @@ type RedPacketData struct { } type PushCoinData struct { - Shake int32 // 震动次数 - Refresh int64 // 刷新次数 - Power int64 // 能量值 - Base int64 // 底注 + Shake int32 // 震动次数 + Refresh int64 // 刷新次数 + Power int64 // 能量值 + Base int64 // 底注 + Value int64 // 价值 + Exchange map[int32]int32 // 兑换次数 兑换id:兑换次数 + Dram int // 抽奖次数 } type WelfareData struct { diff --git a/protocol/activity/pushcoin.pb.go b/protocol/activity/pushcoin.pb.go index 1bdd09c..5bf6f17 100644 --- a/protocol/activity/pushcoin.pb.go +++ b/protocol/activity/pushcoin.pb.go @@ -24,27 +24,33 @@ type PushCoinPacketID int32 const ( PushCoinPacketID_PACKET_PushCoin_ZERO PushCoinPacketID = 0 // 弃用消息号 - PushCoinPacketID_PACKET_CSPushCoinInfo PushCoinPacketID = 2670 // 信息 - PushCoinPacketID_PACKET_SCPushCoinInfo PushCoinPacketID = 2671 // 信息返回 - PushCoinPacketID_PACKET_CSPushCoinPlayerOp PushCoinPacketID = 2672 // 玩家操作 - PushCoinPacketID_PACKET_SCPushCoinPlayerOp PushCoinPacketID = 2673 // 玩家操作返回 + PushCoinPacketID_PACKET_CSPushCoinInfo PushCoinPacketID = 2680 // 信息 + PushCoinPacketID_PACKET_SCPushCoinInfo PushCoinPacketID = 2681 // 信息返回 + PushCoinPacketID_PACKET_CSPushCoinPlayerOp PushCoinPacketID = 2682 // 玩家操作 + PushCoinPacketID_PACKET_SCPushCoinPlayerOp PushCoinPacketID = 2683 // 玩家操作返回 + PushCoinPacketID_PACKET_NotifyPowerLine PushCoinPacketID = 2684 // 通知能量值 + PushCoinPacketID_PACKET_NotifyDrawInfo PushCoinPacketID = 2685 // 抽奖信息 ) // Enum value maps for PushCoinPacketID. var ( PushCoinPacketID_name = map[int32]string{ 0: "PACKET_PushCoin_ZERO", - 2670: "PACKET_CSPushCoinInfo", - 2671: "PACKET_SCPushCoinInfo", - 2672: "PACKET_CSPushCoinPlayerOp", - 2673: "PACKET_SCPushCoinPlayerOp", + 2680: "PACKET_CSPushCoinInfo", + 2681: "PACKET_SCPushCoinInfo", + 2682: "PACKET_CSPushCoinPlayerOp", + 2683: "PACKET_SCPushCoinPlayerOp", + 2684: "PACKET_NotifyPowerLine", + 2685: "PACKET_NotifyDrawInfo", } PushCoinPacketID_value = map[string]int32{ "PACKET_PushCoin_ZERO": 0, - "PACKET_CSPushCoinInfo": 2670, - "PACKET_SCPushCoinInfo": 2671, - "PACKET_CSPushCoinPlayerOp": 2672, - "PACKET_SCPushCoinPlayerOp": 2673, + "PACKET_CSPushCoinInfo": 2680, + "PACKET_SCPushCoinInfo": 2681, + "PACKET_CSPushCoinPlayerOp": 2682, + "PACKET_SCPushCoinPlayerOp": 2683, + "PACKET_NotifyPowerLine": 2684, + "PACKET_NotifyDrawInfo": 2685, } ) @@ -79,12 +85,11 @@ type OpCodes int32 const ( OpCodes_OP_Zero OpCodes = 0 - OpCodes_OP_Bet OpCodes = 1 // 下注 [下注金额] - OpCodes_OP_Gain OpCodes = 2 // 得分 [得分金额] - OpCodes_OP_Shake OpCodes = 3 // 震动 [消耗次数] - OpCodes_OP_Refresh OpCodes = 4 // 刷新 [桌面金额] - OpCodes_OP_Exchange OpCodes = 5 // 兑换 [兑换id] - OpCodes_OP_Draw OpCodes = 6 // 抽奖 [抽奖id] + OpCodes_OP_Bet OpCodes = 1 // 下注 OpParam 下注金额 + OpCodes_OP_Gain OpCodes = 2 // 得分 OpItem 获得道具 + OpCodes_OP_Shake OpCodes = 3 // 震动 OpParam 消耗次数 + OpCodes_OP_Refresh OpCodes = 4 // 刷新 OpParam 桌面金额 + OpCodes_OP_Exchange OpCodes = 5 // 兑换 OpParam 兑换id ) // Enum value maps for OpCodes. @@ -96,7 +101,6 @@ var ( 3: "OP_Shake", 4: "OP_Refresh", 5: "OP_Exchange", - 6: "OP_Draw", } OpCodes_value = map[string]int32{ "OP_Zero": 0, @@ -105,7 +109,6 @@ var ( "OP_Shake": 3, "OP_Refresh": 4, "OP_Exchange": 5, - "OP_Draw": 6, } ) @@ -390,6 +393,8 @@ type ExchangeInfo struct { Cost []*ItemInfo `protobuf:"bytes,2,rep,name=Cost,proto3" json:"Cost,omitempty"` //消耗道具 Gain []*ItemInfo `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty"` //获得道具 ShakeTimes int32 `protobuf:"varint,4,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //获得震动次数 + Times int64 `protobuf:"varint,5,opt,name=Times,proto3" json:"Times,omitempty"` //可兑换次数 -1无限 + TotalTimes int64 `protobuf:"varint,6,opt,name=TotalTimes,proto3" json:"TotalTimes,omitempty"` //总共兑换次数 -1无限 } func (x *ExchangeInfo) Reset() { @@ -452,6 +457,22 @@ func (x *ExchangeInfo) GetShakeTimes() int32 { return 0 } +func (x *ExchangeInfo) GetTimes() int64 { + if x != nil { + return x.Times + } + return 0 +} + +func (x *ExchangeInfo) GetTotalTimes() int64 { + if x != nil { + return x.TotalTimes + } + return 0 +} + +//抽奖信息 +//PACKET_NotifyDrawInfo type DrawInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -530,8 +551,9 @@ type CSPushCoinPlayerOp struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpCode OpCodes `protobuf:"varint,1,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` - OpParam []int64 `protobuf:"varint,2,rep,packed,name=OpParam,proto3" json:"OpParam,omitempty"` + OpCode OpCodes `protobuf:"varint,1,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` + OpParam int64 `protobuf:"varint,2,opt,name=OpParam,proto3" json:"OpParam,omitempty"` + OpItem []*ItemInfo `protobuf:"bytes,3,rep,name=OpItem,proto3" json:"OpItem,omitempty"` } func (x *CSPushCoinPlayerOp) Reset() { @@ -573,10 +595,17 @@ func (x *CSPushCoinPlayerOp) GetOpCode() OpCodes { return OpCodes_OP_Zero } -func (x *CSPushCoinPlayerOp) GetOpParam() []int64 { +func (x *CSPushCoinPlayerOp) GetOpParam() int64 { if x != nil { return x.OpParam } + return 0 +} + +func (x *CSPushCoinPlayerOp) GetOpItem() []*ItemInfo { + if x != nil { + return x.OpItem + } return nil } @@ -589,7 +618,6 @@ type SCPushCoinPlayerOp struct { OpRetCode OpResultPushCoinCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=activity.OpResultPushCoinCode" json:"OpRetCode,omitempty"` OpCode OpCodes `protobuf:"varint,2,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` Exchange *ExchangeInfo `protobuf:"bytes,3,opt,name=Exchange,proto3" json:"Exchange,omitempty"` // 兑换信息,加到背包 - Draw *DrawInfo `protobuf:"bytes,4,opt,name=Draw,proto3" json:"Draw,omitempty"` // 抽奖信息,掉落到桌面 } func (x *SCPushCoinPlayerOp) Reset() { @@ -645,11 +673,61 @@ func (x *SCPushCoinPlayerOp) GetExchange() *ExchangeInfo { return nil } -func (x *SCPushCoinPlayerOp) GetDraw() *DrawInfo { - if x != nil { - return x.Draw +//通知能量值 +//PACKET_NotifyPowerLine +type NotifyPowerLine struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PowerLine int64 `protobuf:"varint,1,opt,name=PowerLine,proto3" json:"PowerLine,omitempty"` // 当前能量值 + PowerLineMax int64 `protobuf:"varint,2,opt,name=PowerLineMax,proto3" json:"PowerLineMax,omitempty"` // 能量值上限 +} + +func (x *NotifyPowerLine) Reset() { + *x = NotifyPowerLine{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil +} + +func (x *NotifyPowerLine) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyPowerLine) ProtoMessage() {} + +func (x *NotifyPowerLine) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyPowerLine.ProtoReflect.Descriptor instead. +func (*NotifyPowerLine) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{7} +} + +func (x *NotifyPowerLine) GetPowerLine() int64 { + if x != nil { + return x.PowerLine + } + return 0 +} + +func (x *NotifyPowerLine) GetPowerLineMax() int64 { + if x != nil { + return x.PowerLineMax + } + return 0 } var File_protocol_activity_pushcoin_proto protoreflect.FileDescriptor @@ -682,7 +760,7 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0xc4, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, @@ -691,58 +769,69 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, - 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, - 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x53, - 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, - 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, - 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xd9, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, - 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x3c, 0x0a, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, - 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x72, 0x61, - 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x72, 0x61, - 0x77, 0x2a, 0xa4, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, + 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, + 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, + 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, + 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x22, 0x85, 0x01, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2a, 0x0a, 0x06, + 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xb1, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, + 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, + 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, + 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, + 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x53, 0x0a, 0x0f, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, + 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, - 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xee, 0x14, 0x12, 0x1a, 0x0a, 0x15, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xef, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf9, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xf0, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfa, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xf1, 0x14, 0x2a, 0x6b, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, - 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, - 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x44, - 0x72, 0x61, 0x77, 0x10, 0x06, 0x2a, 0x4a, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, - 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, - 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, + 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, + 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, + 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, + 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, + 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, + 0x05, 0x2a, 0x4a, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, + 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -758,7 +847,7 @@ func file_protocol_activity_pushcoin_proto_rawDescGZIP() []byte { } var file_protocol_activity_pushcoin_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_protocol_activity_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_protocol_activity_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{ (PushCoinPacketID)(0), // 0: activity.PushCoinPacketID (OpCodes)(0), // 1: activity.OpCodes @@ -770,6 +859,7 @@ var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{ (*DrawInfo)(nil), // 7: activity.DrawInfo (*CSPushCoinPlayerOp)(nil), // 8: activity.CSPushCoinPlayerOp (*SCPushCoinPlayerOp)(nil), // 9: activity.SCPushCoinPlayerOp + (*NotifyPowerLine)(nil), // 10: activity.NotifyPowerLine } var file_protocol_activity_pushcoin_proto_depIdxs = []int32{ 6, // 0: activity.SCPushCoinInfo.ExchangeList:type_name -> activity.ExchangeInfo @@ -777,10 +867,10 @@ var file_protocol_activity_pushcoin_proto_depIdxs = []int32{ 5, // 2: activity.ExchangeInfo.Cost:type_name -> activity.ItemInfo 5, // 3: activity.ExchangeInfo.Gain:type_name -> activity.ItemInfo 1, // 4: activity.CSPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes - 2, // 5: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode - 1, // 6: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes - 6, // 7: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo - 7, // 8: activity.SCPushCoinPlayerOp.Draw:type_name -> activity.DrawInfo + 5, // 5: activity.CSPushCoinPlayerOp.OpItem:type_name -> activity.ItemInfo + 2, // 6: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode + 1, // 7: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes + 6, // 8: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo 9, // [9:9] is the sub-list for method output_type 9, // [9:9] is the sub-list for method input_type 9, // [9:9] is the sub-list for extension type_name @@ -878,6 +968,18 @@ func file_protocol_activity_pushcoin_proto_init() { return nil } } + file_protocol_activity_pushcoin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotifyPowerLine); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -885,7 +987,7 @@ func file_protocol_activity_pushcoin_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_activity_pushcoin_proto_rawDesc, NumEnums: 3, - NumMessages: 7, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/activity/pushcoin.proto b/protocol/activity/pushcoin.proto index dd707fa..e0a2998 100644 --- a/protocol/activity/pushcoin.proto +++ b/protocol/activity/pushcoin.proto @@ -4,10 +4,12 @@ option go_package = "mongo.games.com/game/protocol/activity"; enum PushCoinPacketID { PACKET_PushCoin_ZERO = 0;// 弃用消息号 - PACKET_CSPushCoinInfo = 2670; // 信息 - PACKET_SCPushCoinInfo = 2671; // 信息返回 - PACKET_CSPushCoinPlayerOp = 2672; // 玩家操作 - PACKET_SCPushCoinPlayerOp = 2673; // 玩家操作返回 + PACKET_CSPushCoinInfo = 2680; // 信息 + PACKET_SCPushCoinInfo = 2681; // 信息返回 + PACKET_CSPushCoinPlayerOp = 2682; // 玩家操作 + PACKET_SCPushCoinPlayerOp = 2683; // 玩家操作返回 + PACKET_NotifyPowerLine = 2684; // 通知能量值 + PACKET_NotifyDrawInfo = 2685; // 抽奖信息 } //信息 @@ -36,8 +38,12 @@ message ExchangeInfo{ repeated ItemInfo Cost = 2; //消耗道具 repeated ItemInfo Gain = 3; //获得道具 int32 ShakeTimes = 4; //获得震动次数 + int64 Times = 5; //可兑换次数 -1无限 + int64 TotalTimes = 6; //总共兑换次数 -1无限 } +//抽奖信息 +//PACKET_NotifyDrawInfo message DrawInfo{ int32 Id = 1; //抽奖id int32 ItemId = 2; //道具id @@ -49,17 +55,17 @@ message DrawInfo{ //PACKET_CSPushCoinPlayerOp message CSPushCoinPlayerOp { OpCodes OpCode = 1; - repeated int64 OpParam = 2; + int64 OpParam = 2; + repeated ItemInfo OpItem = 3; } enum OpCodes { OP_Zero = 0; - OP_Bet = 1; // 下注 [下注金额] - OP_Gain = 2; // 得分 [得分金额] - OP_Shake = 3; // 震动 [消耗次数] - OP_Refresh = 4; // 刷新 [桌面金额] - OP_Exchange = 5; // 兑换 [兑换id] - OP_Draw = 6; // 抽奖 [抽奖id] + OP_Bet = 1; // 下注 OpParam 下注金额 + OP_Gain = 2; // 得分 OpItem 获得道具 + OP_Shake = 3; // 震动 OpParam 消耗次数 + OP_Refresh = 4; // 刷新 OpParam 桌面金额 + OP_Exchange = 5; // 兑换 OpParam 兑换id } enum OpResultPushCoinCode { @@ -72,5 +78,11 @@ message SCPushCoinPlayerOp { OpResultPushCoinCode OpRetCode = 1; OpCodes OpCode = 2; ExchangeInfo Exchange = 3; // 兑换信息,加到背包 - DrawInfo Draw = 4; // 抽奖信息,掉落到桌面 +} + +//通知能量值 +//PACKET_NotifyPowerLine +message NotifyPowerLine { + int64 PowerLine = 1; // 当前能量值 + int64 PowerLineMax = 2; // 能量值上限 } \ No newline at end of file diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index f84d412..9eea692 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -23,6 +23,124 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type DB_ACTPushCoin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Rate int32 `protobuf:"varint,2,opt,name=Rate,proto3" json:"Rate,omitempty"` + Gain map[int64]int64 `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Value int64 `protobuf:"varint,4,opt,name=Value,proto3" json:"Value,omitempty"` +} + +func (x *DB_ACTPushCoin) Reset() { + *x = DB_ACTPushCoin{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_server_pbdata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_ACTPushCoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_ACTPushCoin) ProtoMessage() {} + +func (x *DB_ACTPushCoin) ProtoReflect() protoreflect.Message { + mi := &file_protocol_server_pbdata_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_ACTPushCoin.ProtoReflect.Descriptor instead. +func (*DB_ACTPushCoin) Descriptor() ([]byte, []int) { + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{0} +} + +func (x *DB_ACTPushCoin) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_ACTPushCoin) GetRate() int32 { + if x != nil { + return x.Rate + } + return 0 +} + +func (x *DB_ACTPushCoin) GetGain() map[int64]int64 { + if x != nil { + return x.Gain + } + return nil +} + +func (x *DB_ACTPushCoin) GetValue() int64 { + if x != nil { + return x.Value + } + return 0 +} + +type DB_ACTPushCoinArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_ACTPushCoin `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_ACTPushCoinArray) Reset() { + *x = DB_ACTPushCoinArray{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_server_pbdata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_ACTPushCoinArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_ACTPushCoinArray) ProtoMessage() {} + +func (x *DB_ACTPushCoinArray) ProtoReflect() protoreflect.Message { + mi := &file_protocol_server_pbdata_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_ACTPushCoinArray.ProtoReflect.Descriptor instead. +func (*DB_ACTPushCoinArray) Descriptor() ([]byte, []int) { + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{1} +} + +func (x *DB_ACTPushCoinArray) GetArr() []*DB_ACTPushCoin { + if x != nil { + return x.Arr + } + return nil +} + type DB_ActSign struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -38,7 +156,7 @@ type DB_ActSign struct { func (x *DB_ActSign) Reset() { *x = DB_ActSign{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[0] + mi := &file_protocol_server_pbdata_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -51,7 +169,7 @@ func (x *DB_ActSign) String() string { func (*DB_ActSign) ProtoMessage() {} func (x *DB_ActSign) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[0] + mi := &file_protocol_server_pbdata_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64,7 +182,7 @@ func (x *DB_ActSign) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ActSign.ProtoReflect.Descriptor instead. func (*DB_ActSign) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{0} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{2} } func (x *DB_ActSign) GetId() int32 { @@ -113,7 +231,7 @@ type DB_ActSignArray struct { func (x *DB_ActSignArray) Reset() { *x = DB_ActSignArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[1] + mi := &file_protocol_server_pbdata_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -126,7 +244,7 @@ func (x *DB_ActSignArray) String() string { func (*DB_ActSignArray) ProtoMessage() {} func (x *DB_ActSignArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[1] + mi := &file_protocol_server_pbdata_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -139,7 +257,7 @@ func (x *DB_ActSignArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ActSignArray.ProtoReflect.Descriptor instead. func (*DB_ActSignArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{1} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{3} } func (x *DB_ActSignArray) GetArr() []*DB_ActSign { @@ -170,7 +288,7 @@ type DB_Activity1 struct { func (x *DB_Activity1) Reset() { *x = DB_Activity1{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[2] + mi := &file_protocol_server_pbdata_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -183,7 +301,7 @@ func (x *DB_Activity1) String() string { func (*DB_Activity1) ProtoMessage() {} func (x *DB_Activity1) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[2] + mi := &file_protocol_server_pbdata_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -196,7 +314,7 @@ func (x *DB_Activity1) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Activity1.ProtoReflect.Descriptor instead. func (*DB_Activity1) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{2} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{4} } func (x *DB_Activity1) GetId() int32 { @@ -287,7 +405,7 @@ type DB_Activity1Array struct { func (x *DB_Activity1Array) Reset() { *x = DB_Activity1Array{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[3] + mi := &file_protocol_server_pbdata_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -300,7 +418,7 @@ func (x *DB_Activity1Array) String() string { func (*DB_Activity1Array) ProtoMessage() {} func (x *DB_Activity1Array) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[3] + mi := &file_protocol_server_pbdata_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -313,7 +431,7 @@ func (x *DB_Activity1Array) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Activity1Array.ProtoReflect.Descriptor instead. func (*DB_Activity1Array) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{3} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{5} } func (x *DB_Activity1Array) GetArr() []*DB_Activity1 { @@ -336,7 +454,7 @@ type DB_AnimalColor struct { func (x *DB_AnimalColor) Reset() { *x = DB_AnimalColor{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[4] + mi := &file_protocol_server_pbdata_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -349,7 +467,7 @@ func (x *DB_AnimalColor) String() string { func (*DB_AnimalColor) ProtoMessage() {} func (x *DB_AnimalColor) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[4] + mi := &file_protocol_server_pbdata_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -362,7 +480,7 @@ func (x *DB_AnimalColor) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_AnimalColor.ProtoReflect.Descriptor instead. func (*DB_AnimalColor) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{4} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{6} } func (x *DB_AnimalColor) GetId() int32 { @@ -397,7 +515,7 @@ type DB_AnimalColorArray struct { func (x *DB_AnimalColorArray) Reset() { *x = DB_AnimalColorArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[5] + mi := &file_protocol_server_pbdata_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -410,7 +528,7 @@ func (x *DB_AnimalColorArray) String() string { func (*DB_AnimalColorArray) ProtoMessage() {} func (x *DB_AnimalColorArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[5] + mi := &file_protocol_server_pbdata_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -423,7 +541,7 @@ func (x *DB_AnimalColorArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_AnimalColorArray.ProtoReflect.Descriptor instead. func (*DB_AnimalColorArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{5} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{7} } func (x *DB_AnimalColorArray) GetArr() []*DB_AnimalColor { @@ -447,7 +565,7 @@ type DB_ArtilleryRate struct { func (x *DB_ArtilleryRate) Reset() { *x = DB_ArtilleryRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[6] + mi := &file_protocol_server_pbdata_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -460,7 +578,7 @@ func (x *DB_ArtilleryRate) String() string { func (*DB_ArtilleryRate) ProtoMessage() {} func (x *DB_ArtilleryRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[6] + mi := &file_protocol_server_pbdata_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -473,7 +591,7 @@ func (x *DB_ArtilleryRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtilleryRate.ProtoReflect.Descriptor instead. func (*DB_ArtilleryRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{6} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{8} } func (x *DB_ArtilleryRate) GetId() int32 { @@ -515,7 +633,7 @@ type DB_ArtilleryRateArray struct { func (x *DB_ArtilleryRateArray) Reset() { *x = DB_ArtilleryRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[7] + mi := &file_protocol_server_pbdata_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -528,7 +646,7 @@ func (x *DB_ArtilleryRateArray) String() string { func (*DB_ArtilleryRateArray) ProtoMessage() {} func (x *DB_ArtilleryRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[7] + mi := &file_protocol_server_pbdata_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -541,7 +659,7 @@ func (x *DB_ArtilleryRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtilleryRateArray.ProtoReflect.Descriptor instead. func (*DB_ArtilleryRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{7} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{9} } func (x *DB_ArtilleryRateArray) GetArr() []*DB_ArtilleryRate { @@ -581,7 +699,7 @@ type DB_ArtillerySkin struct { func (x *DB_ArtillerySkin) Reset() { *x = DB_ArtillerySkin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[8] + mi := &file_protocol_server_pbdata_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -594,7 +712,7 @@ func (x *DB_ArtillerySkin) String() string { func (*DB_ArtillerySkin) ProtoMessage() {} func (x *DB_ArtillerySkin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[8] + mi := &file_protocol_server_pbdata_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -607,7 +725,7 @@ func (x *DB_ArtillerySkin) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtillerySkin.ProtoReflect.Descriptor instead. func (*DB_ArtillerySkin) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{8} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{10} } func (x *DB_ArtillerySkin) GetId() int32 { @@ -761,7 +879,7 @@ type DB_ArtillerySkinArray struct { func (x *DB_ArtillerySkinArray) Reset() { *x = DB_ArtillerySkinArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[9] + mi := &file_protocol_server_pbdata_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -774,7 +892,7 @@ func (x *DB_ArtillerySkinArray) String() string { func (*DB_ArtillerySkinArray) ProtoMessage() {} func (x *DB_ArtillerySkinArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[9] + mi := &file_protocol_server_pbdata_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -787,7 +905,7 @@ func (x *DB_ArtillerySkinArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtillerySkinArray.ProtoReflect.Descriptor instead. func (*DB_ArtillerySkinArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{9} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{11} } func (x *DB_ArtillerySkinArray) GetArr() []*DB_ArtillerySkin { @@ -810,7 +928,7 @@ type DB_BlackWhite struct { func (x *DB_BlackWhite) Reset() { *x = DB_BlackWhite{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[10] + mi := &file_protocol_server_pbdata_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -823,7 +941,7 @@ func (x *DB_BlackWhite) String() string { func (*DB_BlackWhite) ProtoMessage() {} func (x *DB_BlackWhite) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[10] + mi := &file_protocol_server_pbdata_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -836,7 +954,7 @@ func (x *DB_BlackWhite) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_BlackWhite.ProtoReflect.Descriptor instead. func (*DB_BlackWhite) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{10} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{12} } func (x *DB_BlackWhite) GetId() int32 { @@ -871,7 +989,7 @@ type DB_BlackWhiteArray struct { func (x *DB_BlackWhiteArray) Reset() { *x = DB_BlackWhiteArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[11] + mi := &file_protocol_server_pbdata_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -884,7 +1002,7 @@ func (x *DB_BlackWhiteArray) String() string { func (*DB_BlackWhiteArray) ProtoMessage() {} func (x *DB_BlackWhiteArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[11] + mi := &file_protocol_server_pbdata_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -897,7 +1015,7 @@ func (x *DB_BlackWhiteArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_BlackWhiteArray.ProtoReflect.Descriptor instead. func (*DB_BlackWhiteArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{11} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{13} } func (x *DB_BlackWhiteArray) GetArr() []*DB_BlackWhite { @@ -934,7 +1052,7 @@ type DB_CardsJD struct { func (x *DB_CardsJD) Reset() { *x = DB_CardsJD{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[12] + mi := &file_protocol_server_pbdata_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -947,7 +1065,7 @@ func (x *DB_CardsJD) String() string { func (*DB_CardsJD) ProtoMessage() {} func (x *DB_CardsJD) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[12] + mi := &file_protocol_server_pbdata_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -960,7 +1078,7 @@ func (x *DB_CardsJD) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsJD.ProtoReflect.Descriptor instead. func (*DB_CardsJD) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{12} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{14} } func (x *DB_CardsJD) GetId() int32 { @@ -1093,7 +1211,7 @@ type DB_CardsJDArray struct { func (x *DB_CardsJDArray) Reset() { *x = DB_CardsJDArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[13] + mi := &file_protocol_server_pbdata_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1106,7 +1224,7 @@ func (x *DB_CardsJDArray) String() string { func (*DB_CardsJDArray) ProtoMessage() {} func (x *DB_CardsJDArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[13] + mi := &file_protocol_server_pbdata_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1119,7 +1237,7 @@ func (x *DB_CardsJDArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsJDArray.ProtoReflect.Descriptor instead. func (*DB_CardsJDArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{13} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{15} } func (x *DB_CardsJDArray) GetArr() []*DB_CardsJD { @@ -1156,7 +1274,7 @@ type DB_CardsYuLe struct { func (x *DB_CardsYuLe) Reset() { *x = DB_CardsYuLe{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[14] + mi := &file_protocol_server_pbdata_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1169,7 +1287,7 @@ func (x *DB_CardsYuLe) String() string { func (*DB_CardsYuLe) ProtoMessage() {} func (x *DB_CardsYuLe) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[14] + mi := &file_protocol_server_pbdata_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1182,7 +1300,7 @@ func (x *DB_CardsYuLe) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsYuLe.ProtoReflect.Descriptor instead. func (*DB_CardsYuLe) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{14} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{16} } func (x *DB_CardsYuLe) GetId() int32 { @@ -1315,7 +1433,7 @@ type DB_CardsYuLeArray struct { func (x *DB_CardsYuLeArray) Reset() { *x = DB_CardsYuLeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[15] + mi := &file_protocol_server_pbdata_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1328,7 +1446,7 @@ func (x *DB_CardsYuLeArray) String() string { func (*DB_CardsYuLeArray) ProtoMessage() {} func (x *DB_CardsYuLeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[15] + mi := &file_protocol_server_pbdata_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1341,7 +1459,7 @@ func (x *DB_CardsYuLeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsYuLeArray.ProtoReflect.Descriptor instead. func (*DB_CardsYuLeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{15} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{17} } func (x *DB_CardsYuLeArray) GetArr() []*DB_CardsYuLe { @@ -1368,7 +1486,7 @@ type DB_ChessBilledRules struct { func (x *DB_ChessBilledRules) Reset() { *x = DB_ChessBilledRules{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[16] + mi := &file_protocol_server_pbdata_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1381,7 +1499,7 @@ func (x *DB_ChessBilledRules) String() string { func (*DB_ChessBilledRules) ProtoMessage() {} func (x *DB_ChessBilledRules) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[16] + mi := &file_protocol_server_pbdata_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1394,7 +1512,7 @@ func (x *DB_ChessBilledRules) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessBilledRules.ProtoReflect.Descriptor instead. func (*DB_ChessBilledRules) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{16} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{18} } func (x *DB_ChessBilledRules) GetId() int32 { @@ -1457,7 +1575,7 @@ type DB_ChessBilledRulesArray struct { func (x *DB_ChessBilledRulesArray) Reset() { *x = DB_ChessBilledRulesArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[17] + mi := &file_protocol_server_pbdata_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1470,7 +1588,7 @@ func (x *DB_ChessBilledRulesArray) String() string { func (*DB_ChessBilledRulesArray) ProtoMessage() {} func (x *DB_ChessBilledRulesArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[17] + mi := &file_protocol_server_pbdata_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1483,7 +1601,7 @@ func (x *DB_ChessBilledRulesArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessBilledRulesArray.ProtoReflect.Descriptor instead. func (*DB_ChessBilledRulesArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{17} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{19} } func (x *DB_ChessBilledRulesArray) GetArr() []*DB_ChessBilledRules { @@ -1510,7 +1628,7 @@ type DB_ChessMatchRules struct { func (x *DB_ChessMatchRules) Reset() { *x = DB_ChessMatchRules{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[18] + mi := &file_protocol_server_pbdata_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1523,7 +1641,7 @@ func (x *DB_ChessMatchRules) String() string { func (*DB_ChessMatchRules) ProtoMessage() {} func (x *DB_ChessMatchRules) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[18] + mi := &file_protocol_server_pbdata_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1536,7 +1654,7 @@ func (x *DB_ChessMatchRules) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessMatchRules.ProtoReflect.Descriptor instead. func (*DB_ChessMatchRules) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{18} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{20} } func (x *DB_ChessMatchRules) GetId() int32 { @@ -1599,7 +1717,7 @@ type DB_ChessMatchRulesArray struct { func (x *DB_ChessMatchRulesArray) Reset() { *x = DB_ChessMatchRulesArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[19] + mi := &file_protocol_server_pbdata_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1612,7 +1730,7 @@ func (x *DB_ChessMatchRulesArray) String() string { func (*DB_ChessMatchRulesArray) ProtoMessage() {} func (x *DB_ChessMatchRulesArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[19] + mi := &file_protocol_server_pbdata_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1625,7 +1743,7 @@ func (x *DB_ChessMatchRulesArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessMatchRulesArray.ProtoReflect.Descriptor instead. func (*DB_ChessMatchRulesArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{19} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{21} } func (x *DB_ChessMatchRulesArray) GetArr() []*DB_ChessMatchRules { @@ -1648,7 +1766,7 @@ type DB_ChessRank struct { func (x *DB_ChessRank) Reset() { *x = DB_ChessRank{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[20] + mi := &file_protocol_server_pbdata_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1661,7 +1779,7 @@ func (x *DB_ChessRank) String() string { func (*DB_ChessRank) ProtoMessage() {} func (x *DB_ChessRank) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[20] + mi := &file_protocol_server_pbdata_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1674,7 +1792,7 @@ func (x *DB_ChessRank) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessRank.ProtoReflect.Descriptor instead. func (*DB_ChessRank) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{20} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{22} } func (x *DB_ChessRank) GetId() int32 { @@ -1709,7 +1827,7 @@ type DB_ChessRankArray struct { func (x *DB_ChessRankArray) Reset() { *x = DB_ChessRankArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[21] + mi := &file_protocol_server_pbdata_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1722,7 +1840,7 @@ func (x *DB_ChessRankArray) String() string { func (*DB_ChessRankArray) ProtoMessage() {} func (x *DB_ChessRankArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[21] + mi := &file_protocol_server_pbdata_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1735,7 +1853,7 @@ func (x *DB_ChessRankArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessRankArray.ProtoReflect.Descriptor instead. func (*DB_ChessRankArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{21} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{23} } func (x *DB_ChessRankArray) GetArr() []*DB_ChessRank { @@ -1759,7 +1877,7 @@ type DB_ClientVer struct { func (x *DB_ClientVer) Reset() { *x = DB_ClientVer{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[22] + mi := &file_protocol_server_pbdata_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1772,7 +1890,7 @@ func (x *DB_ClientVer) String() string { func (*DB_ClientVer) ProtoMessage() {} func (x *DB_ClientVer) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[22] + mi := &file_protocol_server_pbdata_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1785,7 +1903,7 @@ func (x *DB_ClientVer) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ClientVer.ProtoReflect.Descriptor instead. func (*DB_ClientVer) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{22} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{24} } func (x *DB_ClientVer) GetId() int32 { @@ -1827,7 +1945,7 @@ type DB_ClientVerArray struct { func (x *DB_ClientVerArray) Reset() { *x = DB_ClientVerArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[23] + mi := &file_protocol_server_pbdata_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1840,7 +1958,7 @@ func (x *DB_ClientVerArray) String() string { func (*DB_ClientVerArray) ProtoMessage() {} func (x *DB_ClientVerArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[23] + mi := &file_protocol_server_pbdata_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1853,7 +1971,7 @@ func (x *DB_ClientVerArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ClientVerArray.ProtoReflect.Descriptor instead. func (*DB_ClientVerArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{23} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{25} } func (x *DB_ClientVerArray) GetArr() []*DB_ClientVer { @@ -1876,7 +1994,7 @@ type DB_CollectBox struct { func (x *DB_CollectBox) Reset() { *x = DB_CollectBox{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[24] + mi := &file_protocol_server_pbdata_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1889,7 +2007,7 @@ func (x *DB_CollectBox) String() string { func (*DB_CollectBox) ProtoMessage() {} func (x *DB_CollectBox) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[24] + mi := &file_protocol_server_pbdata_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1902,7 +2020,7 @@ func (x *DB_CollectBox) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBox.ProtoReflect.Descriptor instead. func (*DB_CollectBox) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{24} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{26} } func (x *DB_CollectBox) GetId() int32 { @@ -1937,7 +2055,7 @@ type DB_CollectBoxArray struct { func (x *DB_CollectBoxArray) Reset() { *x = DB_CollectBoxArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[25] + mi := &file_protocol_server_pbdata_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1950,7 +2068,7 @@ func (x *DB_CollectBoxArray) String() string { func (*DB_CollectBoxArray) ProtoMessage() {} func (x *DB_CollectBoxArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[25] + mi := &file_protocol_server_pbdata_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1963,7 +2081,7 @@ func (x *DB_CollectBoxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBoxArray.ProtoReflect.Descriptor instead. func (*DB_CollectBoxArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{25} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{27} } func (x *DB_CollectBoxArray) GetArr() []*DB_CollectBox { @@ -1985,7 +2103,7 @@ type DB_CollectBoxGain struct { func (x *DB_CollectBoxGain) Reset() { *x = DB_CollectBoxGain{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[26] + mi := &file_protocol_server_pbdata_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1998,7 +2116,7 @@ func (x *DB_CollectBoxGain) String() string { func (*DB_CollectBoxGain) ProtoMessage() {} func (x *DB_CollectBoxGain) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[26] + mi := &file_protocol_server_pbdata_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2011,7 +2129,7 @@ func (x *DB_CollectBoxGain) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBoxGain.ProtoReflect.Descriptor instead. func (*DB_CollectBoxGain) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{26} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{28} } func (x *DB_CollectBoxGain) GetId() int32 { @@ -2039,7 +2157,7 @@ type DB_CollectBoxGainArray struct { func (x *DB_CollectBoxGainArray) Reset() { *x = DB_CollectBoxGainArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[27] + mi := &file_protocol_server_pbdata_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2052,7 +2170,7 @@ func (x *DB_CollectBoxGainArray) String() string { func (*DB_CollectBoxGainArray) ProtoMessage() {} func (x *DB_CollectBoxGainArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[27] + mi := &file_protocol_server_pbdata_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2065,7 +2183,7 @@ func (x *DB_CollectBoxGainArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBoxGainArray.ProtoReflect.Descriptor instead. func (*DB_CollectBoxGainArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{27} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{29} } func (x *DB_CollectBoxGainArray) GetArr() []*DB_CollectBoxGain { @@ -2088,7 +2206,7 @@ type DB_CrashSearch struct { func (x *DB_CrashSearch) Reset() { *x = DB_CrashSearch{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[28] + mi := &file_protocol_server_pbdata_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2101,7 +2219,7 @@ func (x *DB_CrashSearch) String() string { func (*DB_CrashSearch) ProtoMessage() {} func (x *DB_CrashSearch) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[28] + mi := &file_protocol_server_pbdata_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2114,7 +2232,7 @@ func (x *DB_CrashSearch) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CrashSearch.ProtoReflect.Descriptor instead. func (*DB_CrashSearch) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{28} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{30} } func (x *DB_CrashSearch) GetId() int32 { @@ -2149,7 +2267,7 @@ type DB_CrashSearchArray struct { func (x *DB_CrashSearchArray) Reset() { *x = DB_CrashSearchArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[29] + mi := &file_protocol_server_pbdata_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2162,7 +2280,7 @@ func (x *DB_CrashSearchArray) String() string { func (*DB_CrashSearchArray) ProtoMessage() {} func (x *DB_CrashSearchArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[29] + mi := &file_protocol_server_pbdata_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2175,7 +2293,7 @@ func (x *DB_CrashSearchArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CrashSearchArray.ProtoReflect.Descriptor instead. func (*DB_CrashSearchArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{29} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{31} } func (x *DB_CrashSearchArray) GetArr() []*DB_CrashSearch { @@ -2200,7 +2318,7 @@ type DB_Createroom struct { func (x *DB_Createroom) Reset() { *x = DB_Createroom{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[30] + mi := &file_protocol_server_pbdata_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2213,7 +2331,7 @@ func (x *DB_Createroom) String() string { func (*DB_Createroom) ProtoMessage() {} func (x *DB_Createroom) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[30] + mi := &file_protocol_server_pbdata_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2226,7 +2344,7 @@ func (x *DB_Createroom) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Createroom.ProtoReflect.Descriptor instead. func (*DB_Createroom) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{30} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{32} } func (x *DB_Createroom) GetId() int32 { @@ -2275,7 +2393,7 @@ type DB_CreateroomArray struct { func (x *DB_CreateroomArray) Reset() { *x = DB_CreateroomArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[31] + mi := &file_protocol_server_pbdata_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2288,7 +2406,7 @@ func (x *DB_CreateroomArray) String() string { func (*DB_CreateroomArray) ProtoMessage() {} func (x *DB_CreateroomArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[31] + mi := &file_protocol_server_pbdata_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2301,7 +2419,7 @@ func (x *DB_CreateroomArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CreateroomArray.ProtoReflect.Descriptor instead. func (*DB_CreateroomArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{31} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{33} } func (x *DB_CreateroomArray) GetArr() []*DB_Createroom { @@ -2356,7 +2474,7 @@ type DB_Fish struct { func (x *DB_Fish) Reset() { *x = DB_Fish{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[32] + mi := &file_protocol_server_pbdata_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2369,7 +2487,7 @@ func (x *DB_Fish) String() string { func (*DB_Fish) ProtoMessage() {} func (x *DB_Fish) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[32] + mi := &file_protocol_server_pbdata_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2382,7 +2500,7 @@ func (x *DB_Fish) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Fish.ProtoReflect.Descriptor instead. func (*DB_Fish) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{32} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{34} } func (x *DB_Fish) GetId() int32 { @@ -2641,7 +2759,7 @@ type DB_FishArray struct { func (x *DB_FishArray) Reset() { *x = DB_FishArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[33] + mi := &file_protocol_server_pbdata_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2654,7 +2772,7 @@ func (x *DB_FishArray) String() string { func (*DB_FishArray) ProtoMessage() {} func (x *DB_FishArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[33] + mi := &file_protocol_server_pbdata_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2667,7 +2785,7 @@ func (x *DB_FishArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishArray.ProtoReflect.Descriptor instead. func (*DB_FishArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{33} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{35} } func (x *DB_FishArray) GetArr() []*DB_Fish { @@ -2697,7 +2815,7 @@ type DB_FishOut struct { func (x *DB_FishOut) Reset() { *x = DB_FishOut{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[34] + mi := &file_protocol_server_pbdata_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2710,7 +2828,7 @@ func (x *DB_FishOut) String() string { func (*DB_FishOut) ProtoMessage() {} func (x *DB_FishOut) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[34] + mi := &file_protocol_server_pbdata_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2723,7 +2841,7 @@ func (x *DB_FishOut) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishOut.ProtoReflect.Descriptor instead. func (*DB_FishOut) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{34} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{36} } func (x *DB_FishOut) GetId() int32 { @@ -2807,7 +2925,7 @@ type DB_FishOutArray struct { func (x *DB_FishOutArray) Reset() { *x = DB_FishOutArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[35] + mi := &file_protocol_server_pbdata_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2820,7 +2938,7 @@ func (x *DB_FishOutArray) String() string { func (*DB_FishOutArray) ProtoMessage() {} func (x *DB_FishOutArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[35] + mi := &file_protocol_server_pbdata_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2833,7 +2951,7 @@ func (x *DB_FishOutArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishOutArray.ProtoReflect.Descriptor instead. func (*DB_FishOutArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{35} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{37} } func (x *DB_FishOutArray) GetArr() []*DB_FishOut { @@ -2856,7 +2974,7 @@ type DB_FishPath struct { func (x *DB_FishPath) Reset() { *x = DB_FishPath{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[36] + mi := &file_protocol_server_pbdata_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +2987,7 @@ func (x *DB_FishPath) String() string { func (*DB_FishPath) ProtoMessage() {} func (x *DB_FishPath) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[36] + mi := &file_protocol_server_pbdata_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +3000,7 @@ func (x *DB_FishPath) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishPath.ProtoReflect.Descriptor instead. func (*DB_FishPath) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{36} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{38} } func (x *DB_FishPath) GetId() int32 { @@ -2917,7 +3035,7 @@ type DB_FishPathArray struct { func (x *DB_FishPathArray) Reset() { *x = DB_FishPathArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[37] + mi := &file_protocol_server_pbdata_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2930,7 +3048,7 @@ func (x *DB_FishPathArray) String() string { func (*DB_FishPathArray) ProtoMessage() {} func (x *DB_FishPathArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[37] + mi := &file_protocol_server_pbdata_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2943,7 +3061,7 @@ func (x *DB_FishPathArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishPathArray.ProtoReflect.Descriptor instead. func (*DB_FishPathArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{37} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{39} } func (x *DB_FishPathArray) GetArr() []*DB_FishPath { @@ -2975,7 +3093,7 @@ type DB_FishRoom struct { func (x *DB_FishRoom) Reset() { *x = DB_FishRoom{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[38] + mi := &file_protocol_server_pbdata_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2988,7 +3106,7 @@ func (x *DB_FishRoom) String() string { func (*DB_FishRoom) ProtoMessage() {} func (x *DB_FishRoom) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[38] + mi := &file_protocol_server_pbdata_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3001,7 +3119,7 @@ func (x *DB_FishRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishRoom.ProtoReflect.Descriptor instead. func (*DB_FishRoom) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{38} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{40} } func (x *DB_FishRoom) GetId() int32 { @@ -3099,7 +3217,7 @@ type DB_FishRoomArray struct { func (x *DB_FishRoomArray) Reset() { *x = DB_FishRoomArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[39] + mi := &file_protocol_server_pbdata_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3112,7 +3230,7 @@ func (x *DB_FishRoomArray) String() string { func (*DB_FishRoomArray) ProtoMessage() {} func (x *DB_FishRoomArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[39] + mi := &file_protocol_server_pbdata_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3125,7 +3243,7 @@ func (x *DB_FishRoomArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishRoomArray.ProtoReflect.Descriptor instead. func (*DB_FishRoomArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{39} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{41} } func (x *DB_FishRoomArray) GetArr() []*DB_FishRoom { @@ -3164,7 +3282,7 @@ type DB_FishSkill struct { func (x *DB_FishSkill) Reset() { *x = DB_FishSkill{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[40] + mi := &file_protocol_server_pbdata_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3177,7 +3295,7 @@ func (x *DB_FishSkill) String() string { func (*DB_FishSkill) ProtoMessage() {} func (x *DB_FishSkill) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[40] + mi := &file_protocol_server_pbdata_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3190,7 +3308,7 @@ func (x *DB_FishSkill) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishSkill.ProtoReflect.Descriptor instead. func (*DB_FishSkill) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{40} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{42} } func (x *DB_FishSkill) GetId() int32 { @@ -3337,7 +3455,7 @@ type DB_FishSkillArray struct { func (x *DB_FishSkillArray) Reset() { *x = DB_FishSkillArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[41] + mi := &file_protocol_server_pbdata_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3350,7 +3468,7 @@ func (x *DB_FishSkillArray) String() string { func (*DB_FishSkillArray) ProtoMessage() {} func (x *DB_FishSkillArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[41] + mi := &file_protocol_server_pbdata_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3363,7 +3481,7 @@ func (x *DB_FishSkillArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishSkillArray.ProtoReflect.Descriptor instead. func (*DB_FishSkillArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{41} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{43} } func (x *DB_FishSkillArray) GetArr() []*DB_FishSkill { @@ -3388,7 +3506,7 @@ type DB_FortuneGod_Odds struct { func (x *DB_FortuneGod_Odds) Reset() { *x = DB_FortuneGod_Odds{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[42] + mi := &file_protocol_server_pbdata_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3401,7 +3519,7 @@ func (x *DB_FortuneGod_Odds) String() string { func (*DB_FortuneGod_Odds) ProtoMessage() {} func (x *DB_FortuneGod_Odds) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[42] + mi := &file_protocol_server_pbdata_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3414,7 +3532,7 @@ func (x *DB_FortuneGod_Odds) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_Odds.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_Odds) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{42} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{44} } func (x *DB_FortuneGod_Odds) GetId() int32 { @@ -3463,7 +3581,7 @@ type DB_FortuneGod_OddsArray struct { func (x *DB_FortuneGod_OddsArray) Reset() { *x = DB_FortuneGod_OddsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[43] + mi := &file_protocol_server_pbdata_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3476,7 +3594,7 @@ func (x *DB_FortuneGod_OddsArray) String() string { func (*DB_FortuneGod_OddsArray) ProtoMessage() {} func (x *DB_FortuneGod_OddsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[43] + mi := &file_protocol_server_pbdata_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3489,7 +3607,7 @@ func (x *DB_FortuneGod_OddsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_OddsArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_OddsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{43} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{45} } func (x *DB_FortuneGod_OddsArray) GetArr() []*DB_FortuneGod_Odds { @@ -3513,7 +3631,7 @@ type DB_FortuneGod_TurnRate struct { func (x *DB_FortuneGod_TurnRate) Reset() { *x = DB_FortuneGod_TurnRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[44] + mi := &file_protocol_server_pbdata_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3526,7 +3644,7 @@ func (x *DB_FortuneGod_TurnRate) String() string { func (*DB_FortuneGod_TurnRate) ProtoMessage() {} func (x *DB_FortuneGod_TurnRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[44] + mi := &file_protocol_server_pbdata_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3539,7 +3657,7 @@ func (x *DB_FortuneGod_TurnRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_TurnRate.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_TurnRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{44} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{46} } func (x *DB_FortuneGod_TurnRate) GetId() int32 { @@ -3581,7 +3699,7 @@ type DB_FortuneGod_TurnRateArray struct { func (x *DB_FortuneGod_TurnRateArray) Reset() { *x = DB_FortuneGod_TurnRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[45] + mi := &file_protocol_server_pbdata_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3594,7 +3712,7 @@ func (x *DB_FortuneGod_TurnRateArray) String() string { func (*DB_FortuneGod_TurnRateArray) ProtoMessage() {} func (x *DB_FortuneGod_TurnRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[45] + mi := &file_protocol_server_pbdata_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3607,7 +3725,7 @@ func (x *DB_FortuneGod_TurnRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_TurnRateArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_TurnRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{45} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{47} } func (x *DB_FortuneGod_TurnRateArray) GetArr() []*DB_FortuneGod_TurnRate { @@ -3630,7 +3748,7 @@ type DB_FortuneGod_Weight struct { func (x *DB_FortuneGod_Weight) Reset() { *x = DB_FortuneGod_Weight{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[46] + mi := &file_protocol_server_pbdata_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3643,7 +3761,7 @@ func (x *DB_FortuneGod_Weight) String() string { func (*DB_FortuneGod_Weight) ProtoMessage() {} func (x *DB_FortuneGod_Weight) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[46] + mi := &file_protocol_server_pbdata_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3656,7 +3774,7 @@ func (x *DB_FortuneGod_Weight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_Weight.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_Weight) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{46} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{48} } func (x *DB_FortuneGod_Weight) GetId() int32 { @@ -3691,7 +3809,7 @@ type DB_FortuneGod_WeightArray struct { func (x *DB_FortuneGod_WeightArray) Reset() { *x = DB_FortuneGod_WeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[47] + mi := &file_protocol_server_pbdata_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3704,7 +3822,7 @@ func (x *DB_FortuneGod_WeightArray) String() string { func (*DB_FortuneGod_WeightArray) ProtoMessage() {} func (x *DB_FortuneGod_WeightArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[47] + mi := &file_protocol_server_pbdata_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3717,7 +3835,7 @@ func (x *DB_FortuneGod_WeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_WeightArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{47} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{49} } func (x *DB_FortuneGod_WeightArray) GetArr() []*DB_FortuneGod_Weight { @@ -3742,7 +3860,7 @@ type DB_FortuneGod_WeightCondition struct { func (x *DB_FortuneGod_WeightCondition) Reset() { *x = DB_FortuneGod_WeightCondition{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[48] + mi := &file_protocol_server_pbdata_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3755,7 +3873,7 @@ func (x *DB_FortuneGod_WeightCondition) String() string { func (*DB_FortuneGod_WeightCondition) ProtoMessage() {} func (x *DB_FortuneGod_WeightCondition) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[48] + mi := &file_protocol_server_pbdata_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3768,7 +3886,7 @@ func (x *DB_FortuneGod_WeightCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_WeightCondition.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightCondition) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{48} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{50} } func (x *DB_FortuneGod_WeightCondition) GetId() int32 { @@ -3817,7 +3935,7 @@ type DB_FortuneGod_WeightConditionArray struct { func (x *DB_FortuneGod_WeightConditionArray) Reset() { *x = DB_FortuneGod_WeightConditionArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[49] + mi := &file_protocol_server_pbdata_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3830,7 +3948,7 @@ func (x *DB_FortuneGod_WeightConditionArray) String() string { func (*DB_FortuneGod_WeightConditionArray) ProtoMessage() {} func (x *DB_FortuneGod_WeightConditionArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[49] + mi := &file_protocol_server_pbdata_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3843,7 +3961,7 @@ func (x *DB_FortuneGod_WeightConditionArray) ProtoReflect() protoreflect.Message // Deprecated: Use DB_FortuneGod_WeightConditionArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightConditionArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{49} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{51} } func (x *DB_FortuneGod_WeightConditionArray) GetArr() []*DB_FortuneGod_WeightCondition { @@ -3876,7 +3994,7 @@ type DB_GamMatchLV struct { func (x *DB_GamMatchLV) Reset() { *x = DB_GamMatchLV{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[50] + mi := &file_protocol_server_pbdata_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3889,7 +4007,7 @@ func (x *DB_GamMatchLV) String() string { func (*DB_GamMatchLV) ProtoMessage() {} func (x *DB_GamMatchLV) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[50] + mi := &file_protocol_server_pbdata_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3902,7 +4020,7 @@ func (x *DB_GamMatchLV) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GamMatchLV.ProtoReflect.Descriptor instead. func (*DB_GamMatchLV) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{50} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{52} } func (x *DB_GamMatchLV) GetId() int32 { @@ -4007,7 +4125,7 @@ type DB_GamMatchLVArray struct { func (x *DB_GamMatchLVArray) Reset() { *x = DB_GamMatchLVArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[51] + mi := &file_protocol_server_pbdata_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4020,7 +4138,7 @@ func (x *DB_GamMatchLVArray) String() string { func (*DB_GamMatchLVArray) ProtoMessage() {} func (x *DB_GamMatchLVArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[51] + mi := &file_protocol_server_pbdata_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4033,7 +4151,7 @@ func (x *DB_GamMatchLVArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GamMatchLVArray.ProtoReflect.Descriptor instead. func (*DB_GamMatchLVArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{51} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{53} } func (x *DB_GamMatchLVArray) GetArr() []*DB_GamMatchLV { @@ -4057,7 +4175,7 @@ type DB_GameBankruptcy struct { func (x *DB_GameBankruptcy) Reset() { *x = DB_GameBankruptcy{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[52] + mi := &file_protocol_server_pbdata_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4070,7 +4188,7 @@ func (x *DB_GameBankruptcy) String() string { func (*DB_GameBankruptcy) ProtoMessage() {} func (x *DB_GameBankruptcy) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[52] + mi := &file_protocol_server_pbdata_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4083,7 +4201,7 @@ func (x *DB_GameBankruptcy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameBankruptcy.ProtoReflect.Descriptor instead. func (*DB_GameBankruptcy) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{52} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{54} } func (x *DB_GameBankruptcy) GetId() int32 { @@ -4125,7 +4243,7 @@ type DB_GameBankruptcyArray struct { func (x *DB_GameBankruptcyArray) Reset() { *x = DB_GameBankruptcyArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[53] + mi := &file_protocol_server_pbdata_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4138,7 +4256,7 @@ func (x *DB_GameBankruptcyArray) String() string { func (*DB_GameBankruptcyArray) ProtoMessage() {} func (x *DB_GameBankruptcyArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[53] + mi := &file_protocol_server_pbdata_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4151,7 +4269,7 @@ func (x *DB_GameBankruptcyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameBankruptcyArray.ProtoReflect.Descriptor instead. func (*DB_GameBankruptcyArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{53} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{55} } func (x *DB_GameBankruptcyArray) GetArr() []*DB_GameBankruptcy { @@ -4183,7 +4301,7 @@ type DB_GameCoinPool struct { func (x *DB_GameCoinPool) Reset() { *x = DB_GameCoinPool{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[54] + mi := &file_protocol_server_pbdata_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4196,7 +4314,7 @@ func (x *DB_GameCoinPool) String() string { func (*DB_GameCoinPool) ProtoMessage() {} func (x *DB_GameCoinPool) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[54] + mi := &file_protocol_server_pbdata_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4209,7 +4327,7 @@ func (x *DB_GameCoinPool) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameCoinPool.ProtoReflect.Descriptor instead. func (*DB_GameCoinPool) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{54} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{56} } func (x *DB_GameCoinPool) GetId() int32 { @@ -4307,7 +4425,7 @@ type DB_GameCoinPoolArray struct { func (x *DB_GameCoinPoolArray) Reset() { *x = DB_GameCoinPoolArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[55] + mi := &file_protocol_server_pbdata_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4320,7 +4438,7 @@ func (x *DB_GameCoinPoolArray) String() string { func (*DB_GameCoinPoolArray) ProtoMessage() {} func (x *DB_GameCoinPoolArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[55] + mi := &file_protocol_server_pbdata_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4333,7 +4451,7 @@ func (x *DB_GameCoinPoolArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameCoinPoolArray.ProtoReflect.Descriptor instead. func (*DB_GameCoinPoolArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{55} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{57} } func (x *DB_GameCoinPoolArray) GetArr() []*DB_GameCoinPool { @@ -4427,7 +4545,7 @@ type DB_GameFree struct { func (x *DB_GameFree) Reset() { *x = DB_GameFree{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[56] + mi := &file_protocol_server_pbdata_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4440,7 +4558,7 @@ func (x *DB_GameFree) String() string { func (*DB_GameFree) ProtoMessage() {} func (x *DB_GameFree) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[56] + mi := &file_protocol_server_pbdata_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4453,7 +4571,7 @@ func (x *DB_GameFree) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameFree.ProtoReflect.Descriptor instead. func (*DB_GameFree) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{56} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{58} } func (x *DB_GameFree) GetId() int32 { @@ -4985,7 +5103,7 @@ type DB_GameFreeArray struct { func (x *DB_GameFreeArray) Reset() { *x = DB_GameFreeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[57] + mi := &file_protocol_server_pbdata_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4998,7 +5116,7 @@ func (x *DB_GameFreeArray) String() string { func (*DB_GameFreeArray) ProtoMessage() {} func (x *DB_GameFreeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[57] + mi := &file_protocol_server_pbdata_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5011,7 +5129,7 @@ func (x *DB_GameFreeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameFreeArray.ProtoReflect.Descriptor instead. func (*DB_GameFreeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{57} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{59} } func (x *DB_GameFreeArray) GetArr() []*DB_GameFree { @@ -5051,7 +5169,7 @@ type DB_GameItem struct { func (x *DB_GameItem) Reset() { *x = DB_GameItem{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[58] + mi := &file_protocol_server_pbdata_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5064,7 +5182,7 @@ func (x *DB_GameItem) String() string { func (*DB_GameItem) ProtoMessage() {} func (x *DB_GameItem) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[58] + mi := &file_protocol_server_pbdata_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5077,7 +5195,7 @@ func (x *DB_GameItem) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameItem.ProtoReflect.Descriptor instead. func (*DB_GameItem) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{58} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{60} } func (x *DB_GameItem) GetId() int32 { @@ -5231,7 +5349,7 @@ type DB_GameItemArray struct { func (x *DB_GameItemArray) Reset() { *x = DB_GameItemArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[59] + mi := &file_protocol_server_pbdata_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5244,7 +5362,7 @@ func (x *DB_GameItemArray) String() string { func (*DB_GameItemArray) ProtoMessage() {} func (x *DB_GameItemArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[59] + mi := &file_protocol_server_pbdata_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5257,7 +5375,7 @@ func (x *DB_GameItemArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameItemArray.ProtoReflect.Descriptor instead. func (*DB_GameItemArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{59} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{61} } func (x *DB_GameItemArray) GetArr() []*DB_GameItem { @@ -5285,7 +5403,7 @@ type DB_GameMatchLevel struct { func (x *DB_GameMatchLevel) Reset() { *x = DB_GameMatchLevel{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[60] + mi := &file_protocol_server_pbdata_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5298,7 +5416,7 @@ func (x *DB_GameMatchLevel) String() string { func (*DB_GameMatchLevel) ProtoMessage() {} func (x *DB_GameMatchLevel) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[60] + mi := &file_protocol_server_pbdata_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5311,7 +5429,7 @@ func (x *DB_GameMatchLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameMatchLevel.ProtoReflect.Descriptor instead. func (*DB_GameMatchLevel) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{60} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{62} } func (x *DB_GameMatchLevel) GetId() int32 { @@ -5381,7 +5499,7 @@ type DB_GameMatchLevelArray struct { func (x *DB_GameMatchLevelArray) Reset() { *x = DB_GameMatchLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[61] + mi := &file_protocol_server_pbdata_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5394,7 +5512,7 @@ func (x *DB_GameMatchLevelArray) String() string { func (*DB_GameMatchLevelArray) ProtoMessage() {} func (x *DB_GameMatchLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[61] + mi := &file_protocol_server_pbdata_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5407,7 +5525,7 @@ func (x *DB_GameMatchLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameMatchLevelArray.ProtoReflect.Descriptor instead. func (*DB_GameMatchLevelArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{61} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{63} } func (x *DB_GameMatchLevelArray) GetArr() []*DB_GameMatchLevel { @@ -5434,7 +5552,7 @@ type DB_GameRule struct { func (x *DB_GameRule) Reset() { *x = DB_GameRule{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[62] + mi := &file_protocol_server_pbdata_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5447,7 +5565,7 @@ func (x *DB_GameRule) String() string { func (*DB_GameRule) ProtoMessage() {} func (x *DB_GameRule) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[62] + mi := &file_protocol_server_pbdata_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5460,7 +5578,7 @@ func (x *DB_GameRule) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameRule.ProtoReflect.Descriptor instead. func (*DB_GameRule) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{62} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{64} } func (x *DB_GameRule) GetId() int32 { @@ -5523,7 +5641,7 @@ type DB_GameRuleArray struct { func (x *DB_GameRuleArray) Reset() { *x = DB_GameRuleArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[63] + mi := &file_protocol_server_pbdata_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5536,7 +5654,7 @@ func (x *DB_GameRuleArray) String() string { func (*DB_GameRuleArray) ProtoMessage() {} func (x *DB_GameRuleArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[63] + mi := &file_protocol_server_pbdata_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5549,7 +5667,7 @@ func (x *DB_GameRuleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameRuleArray.ProtoReflect.Descriptor instead. func (*DB_GameRuleArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{63} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{65} } func (x *DB_GameRuleArray) GetArr() []*DB_GameRule { @@ -5573,7 +5691,7 @@ type DB_GameSubsidy struct { func (x *DB_GameSubsidy) Reset() { *x = DB_GameSubsidy{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[64] + mi := &file_protocol_server_pbdata_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5586,7 +5704,7 @@ func (x *DB_GameSubsidy) String() string { func (*DB_GameSubsidy) ProtoMessage() {} func (x *DB_GameSubsidy) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[64] + mi := &file_protocol_server_pbdata_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5599,7 +5717,7 @@ func (x *DB_GameSubsidy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameSubsidy.ProtoReflect.Descriptor instead. func (*DB_GameSubsidy) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{64} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{66} } func (x *DB_GameSubsidy) GetId() int32 { @@ -5641,7 +5759,7 @@ type DB_GameSubsidyArray struct { func (x *DB_GameSubsidyArray) Reset() { *x = DB_GameSubsidyArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[65] + mi := &file_protocol_server_pbdata_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5654,7 +5772,7 @@ func (x *DB_GameSubsidyArray) String() string { func (*DB_GameSubsidyArray) ProtoMessage() {} func (x *DB_GameSubsidyArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[65] + mi := &file_protocol_server_pbdata_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5667,7 +5785,7 @@ func (x *DB_GameSubsidyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameSubsidyArray.ProtoReflect.Descriptor instead. func (*DB_GameSubsidyArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{65} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{67} } func (x *DB_GameSubsidyArray) GetArr() []*DB_GameSubsidy { @@ -5693,7 +5811,7 @@ type DB_Game_Drop struct { func (x *DB_Game_Drop) Reset() { *x = DB_Game_Drop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[66] + mi := &file_protocol_server_pbdata_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5706,7 +5824,7 @@ func (x *DB_Game_Drop) String() string { func (*DB_Game_Drop) ProtoMessage() {} func (x *DB_Game_Drop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[66] + mi := &file_protocol_server_pbdata_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5719,7 +5837,7 @@ func (x *DB_Game_Drop) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Drop.ProtoReflect.Descriptor instead. func (*DB_Game_Drop) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{66} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{68} } func (x *DB_Game_Drop) GetId() int32 { @@ -5775,7 +5893,7 @@ type DB_Game_DropArray struct { func (x *DB_Game_DropArray) Reset() { *x = DB_Game_DropArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[67] + mi := &file_protocol_server_pbdata_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5788,7 +5906,7 @@ func (x *DB_Game_DropArray) String() string { func (*DB_Game_DropArray) ProtoMessage() {} func (x *DB_Game_DropArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[67] + mi := &file_protocol_server_pbdata_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5801,7 +5919,7 @@ func (x *DB_Game_DropArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_DropArray.ProtoReflect.Descriptor instead. func (*DB_Game_DropArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{67} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{69} } func (x *DB_Game_DropArray) GetArr() []*DB_Game_Drop { @@ -5827,7 +5945,7 @@ type DB_Game_Introduction struct { func (x *DB_Game_Introduction) Reset() { *x = DB_Game_Introduction{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[68] + mi := &file_protocol_server_pbdata_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5840,7 +5958,7 @@ func (x *DB_Game_Introduction) String() string { func (*DB_Game_Introduction) ProtoMessage() {} func (x *DB_Game_Introduction) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[68] + mi := &file_protocol_server_pbdata_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5853,7 +5971,7 @@ func (x *DB_Game_Introduction) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Introduction.ProtoReflect.Descriptor instead. func (*DB_Game_Introduction) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{68} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{70} } func (x *DB_Game_Introduction) GetId() int32 { @@ -5909,7 +6027,7 @@ type DB_Game_IntroductionArray struct { func (x *DB_Game_IntroductionArray) Reset() { *x = DB_Game_IntroductionArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[69] + mi := &file_protocol_server_pbdata_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5922,7 +6040,7 @@ func (x *DB_Game_IntroductionArray) String() string { func (*DB_Game_IntroductionArray) ProtoMessage() {} func (x *DB_Game_IntroductionArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[69] + mi := &file_protocol_server_pbdata_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5935,7 +6053,7 @@ func (x *DB_Game_IntroductionArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_IntroductionArray.ProtoReflect.Descriptor instead. func (*DB_Game_IntroductionArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{69} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{71} } func (x *DB_Game_IntroductionArray) GetArr() []*DB_Game_Introduction { @@ -5965,7 +6083,7 @@ type DB_Game_Pet struct { func (x *DB_Game_Pet) Reset() { *x = DB_Game_Pet{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[70] + mi := &file_protocol_server_pbdata_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5978,7 +6096,7 @@ func (x *DB_Game_Pet) String() string { func (*DB_Game_Pet) ProtoMessage() {} func (x *DB_Game_Pet) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[70] + mi := &file_protocol_server_pbdata_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5991,7 +6109,7 @@ func (x *DB_Game_Pet) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Pet.ProtoReflect.Descriptor instead. func (*DB_Game_Pet) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{70} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{72} } func (x *DB_Game_Pet) GetId() int32 { @@ -6075,7 +6193,7 @@ type DB_Game_PetArray struct { func (x *DB_Game_PetArray) Reset() { *x = DB_Game_PetArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[71] + mi := &file_protocol_server_pbdata_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6088,7 +6206,7 @@ func (x *DB_Game_PetArray) String() string { func (*DB_Game_PetArray) ProtoMessage() {} func (x *DB_Game_PetArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[71] + mi := &file_protocol_server_pbdata_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6101,7 +6219,7 @@ func (x *DB_Game_PetArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_PetArray.ProtoReflect.Descriptor instead. func (*DB_Game_PetArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{71} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{73} } func (x *DB_Game_PetArray) GetArr() []*DB_Game_Pet { @@ -6131,7 +6249,7 @@ type DB_Game_Role struct { func (x *DB_Game_Role) Reset() { *x = DB_Game_Role{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[72] + mi := &file_protocol_server_pbdata_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6144,7 +6262,7 @@ func (x *DB_Game_Role) String() string { func (*DB_Game_Role) ProtoMessage() {} func (x *DB_Game_Role) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[72] + mi := &file_protocol_server_pbdata_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6157,7 +6275,7 @@ func (x *DB_Game_Role) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Role.ProtoReflect.Descriptor instead. func (*DB_Game_Role) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{72} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{74} } func (x *DB_Game_Role) GetId() int32 { @@ -6241,7 +6359,7 @@ type DB_Game_RoleArray struct { func (x *DB_Game_RoleArray) Reset() { *x = DB_Game_RoleArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[73] + mi := &file_protocol_server_pbdata_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6254,7 +6372,7 @@ func (x *DB_Game_RoleArray) String() string { func (*DB_Game_RoleArray) ProtoMessage() {} func (x *DB_Game_RoleArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[73] + mi := &file_protocol_server_pbdata_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6267,7 +6385,7 @@ func (x *DB_Game_RoleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_RoleArray.ProtoReflect.Descriptor instead. func (*DB_Game_RoleArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{73} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{75} } func (x *DB_Game_RoleArray) GetArr() []*DB_Game_Role { @@ -6290,7 +6408,7 @@ type DB_GiftBox struct { func (x *DB_GiftBox) Reset() { *x = DB_GiftBox{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[74] + mi := &file_protocol_server_pbdata_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6303,7 +6421,7 @@ func (x *DB_GiftBox) String() string { func (*DB_GiftBox) ProtoMessage() {} func (x *DB_GiftBox) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[74] + mi := &file_protocol_server_pbdata_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6316,7 +6434,7 @@ func (x *DB_GiftBox) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftBox.ProtoReflect.Descriptor instead. func (*DB_GiftBox) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{74} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{76} } func (x *DB_GiftBox) GetId() int32 { @@ -6351,7 +6469,7 @@ type DB_GiftBoxArray struct { func (x *DB_GiftBoxArray) Reset() { *x = DB_GiftBoxArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[75] + mi := &file_protocol_server_pbdata_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6364,7 +6482,7 @@ func (x *DB_GiftBoxArray) String() string { func (*DB_GiftBoxArray) ProtoMessage() {} func (x *DB_GiftBoxArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[75] + mi := &file_protocol_server_pbdata_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6377,7 +6495,7 @@ func (x *DB_GiftBoxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftBoxArray.ProtoReflect.Descriptor instead. func (*DB_GiftBoxArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{75} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{77} } func (x *DB_GiftBoxArray) GetArr() []*DB_GiftBox { @@ -6404,7 +6522,7 @@ type DB_GiftCard struct { func (x *DB_GiftCard) Reset() { *x = DB_GiftCard{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[76] + mi := &file_protocol_server_pbdata_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6417,7 +6535,7 @@ func (x *DB_GiftCard) String() string { func (*DB_GiftCard) ProtoMessage() {} func (x *DB_GiftCard) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[76] + mi := &file_protocol_server_pbdata_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6430,7 +6548,7 @@ func (x *DB_GiftCard) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftCard.ProtoReflect.Descriptor instead. func (*DB_GiftCard) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{76} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{78} } func (x *DB_GiftCard) GetId() int32 { @@ -6493,7 +6611,7 @@ type DB_GiftCardArray struct { func (x *DB_GiftCardArray) Reset() { *x = DB_GiftCardArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[77] + mi := &file_protocol_server_pbdata_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6506,7 +6624,7 @@ func (x *DB_GiftCardArray) String() string { func (*DB_GiftCardArray) ProtoMessage() {} func (x *DB_GiftCardArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[77] + mi := &file_protocol_server_pbdata_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6519,7 +6637,7 @@ func (x *DB_GiftCardArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftCardArray.ProtoReflect.Descriptor instead. func (*DB_GiftCardArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{77} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{79} } func (x *DB_GiftCardArray) GetArr() []*DB_GiftCard { @@ -6543,7 +6661,7 @@ type DB_IceAgeElementRate struct { func (x *DB_IceAgeElementRate) Reset() { *x = DB_IceAgeElementRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[78] + mi := &file_protocol_server_pbdata_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6556,7 +6674,7 @@ func (x *DB_IceAgeElementRate) String() string { func (*DB_IceAgeElementRate) ProtoMessage() {} func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[78] + mi := &file_protocol_server_pbdata_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6569,7 +6687,7 @@ func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRate.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{78} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{80} } func (x *DB_IceAgeElementRate) GetId() int32 { @@ -6611,7 +6729,7 @@ type DB_IceAgeElementRateArray struct { func (x *DB_IceAgeElementRateArray) Reset() { *x = DB_IceAgeElementRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[79] + mi := &file_protocol_server_pbdata_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6624,7 +6742,7 @@ func (x *DB_IceAgeElementRateArray) String() string { func (*DB_IceAgeElementRateArray) ProtoMessage() {} func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[79] + mi := &file_protocol_server_pbdata_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6637,7 +6755,7 @@ func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRateArray.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{79} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{81} } func (x *DB_IceAgeElementRateArray) GetArr() []*DB_IceAgeElementRate { @@ -6662,7 +6780,7 @@ type DB_Legend_Odds struct { func (x *DB_Legend_Odds) Reset() { *x = DB_Legend_Odds{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[80] + mi := &file_protocol_server_pbdata_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6675,7 +6793,7 @@ func (x *DB_Legend_Odds) String() string { func (*DB_Legend_Odds) ProtoMessage() {} func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[80] + mi := &file_protocol_server_pbdata_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6688,7 +6806,7 @@ func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Odds.ProtoReflect.Descriptor instead. func (*DB_Legend_Odds) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{80} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{82} } func (x *DB_Legend_Odds) GetId() int32 { @@ -6737,7 +6855,7 @@ type DB_Legend_OddsArray struct { func (x *DB_Legend_OddsArray) Reset() { *x = DB_Legend_OddsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[81] + mi := &file_protocol_server_pbdata_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6750,7 +6868,7 @@ func (x *DB_Legend_OddsArray) String() string { func (*DB_Legend_OddsArray) ProtoMessage() {} func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[81] + mi := &file_protocol_server_pbdata_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6763,7 +6881,7 @@ func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_OddsArray.ProtoReflect.Descriptor instead. func (*DB_Legend_OddsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{81} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{83} } func (x *DB_Legend_OddsArray) GetArr() []*DB_Legend_Odds { @@ -6787,7 +6905,7 @@ type DB_Legend_TurnRate struct { func (x *DB_Legend_TurnRate) Reset() { *x = DB_Legend_TurnRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[82] + mi := &file_protocol_server_pbdata_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6800,7 +6918,7 @@ func (x *DB_Legend_TurnRate) String() string { func (*DB_Legend_TurnRate) ProtoMessage() {} func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[82] + mi := &file_protocol_server_pbdata_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6813,7 +6931,7 @@ func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRate.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{82} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{84} } func (x *DB_Legend_TurnRate) GetId() int32 { @@ -6855,7 +6973,7 @@ type DB_Legend_TurnRateArray struct { func (x *DB_Legend_TurnRateArray) Reset() { *x = DB_Legend_TurnRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[83] + mi := &file_protocol_server_pbdata_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6868,7 +6986,7 @@ func (x *DB_Legend_TurnRateArray) String() string { func (*DB_Legend_TurnRateArray) ProtoMessage() {} func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[83] + mi := &file_protocol_server_pbdata_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6881,7 +6999,7 @@ func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRateArray.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{83} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{85} } func (x *DB_Legend_TurnRateArray) GetArr() []*DB_Legend_TurnRate { @@ -6904,7 +7022,7 @@ type DB_Legend_Weight struct { func (x *DB_Legend_Weight) Reset() { *x = DB_Legend_Weight{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[84] + mi := &file_protocol_server_pbdata_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6917,7 +7035,7 @@ func (x *DB_Legend_Weight) String() string { func (*DB_Legend_Weight) ProtoMessage() {} func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[84] + mi := &file_protocol_server_pbdata_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6930,7 +7048,7 @@ func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Weight.ProtoReflect.Descriptor instead. func (*DB_Legend_Weight) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{84} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{86} } func (x *DB_Legend_Weight) GetId() int32 { @@ -6965,7 +7083,7 @@ type DB_Legend_WeightArray struct { func (x *DB_Legend_WeightArray) Reset() { *x = DB_Legend_WeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[85] + mi := &file_protocol_server_pbdata_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6978,7 +7096,7 @@ func (x *DB_Legend_WeightArray) String() string { func (*DB_Legend_WeightArray) ProtoMessage() {} func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[85] + mi := &file_protocol_server_pbdata_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6991,7 +7109,7 @@ func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{85} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{87} } func (x *DB_Legend_WeightArray) GetArr() []*DB_Legend_Weight { @@ -7016,7 +7134,7 @@ type DB_Legend_WeightCondition struct { func (x *DB_Legend_WeightCondition) Reset() { *x = DB_Legend_WeightCondition{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[86] + mi := &file_protocol_server_pbdata_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7029,7 +7147,7 @@ func (x *DB_Legend_WeightCondition) String() string { func (*DB_Legend_WeightCondition) ProtoMessage() {} func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[86] + mi := &file_protocol_server_pbdata_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7042,7 +7160,7 @@ func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightCondition.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightCondition) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{86} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{88} } func (x *DB_Legend_WeightCondition) GetId() int32 { @@ -7091,7 +7209,7 @@ type DB_Legend_WeightConditionArray struct { func (x *DB_Legend_WeightConditionArray) Reset() { *x = DB_Legend_WeightConditionArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[87] + mi := &file_protocol_server_pbdata_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7104,7 +7222,7 @@ func (x *DB_Legend_WeightConditionArray) String() string { func (*DB_Legend_WeightConditionArray) ProtoMessage() {} func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[87] + mi := &file_protocol_server_pbdata_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7117,7 +7235,7 @@ func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightConditionArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightConditionArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{87} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{89} } func (x *DB_Legend_WeightConditionArray) GetArr() []*DB_Legend_WeightCondition { @@ -7139,7 +7257,7 @@ type DB_MatchRank struct { func (x *DB_MatchRank) Reset() { *x = DB_MatchRank{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[88] + mi := &file_protocol_server_pbdata_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7152,7 +7270,7 @@ func (x *DB_MatchRank) String() string { func (*DB_MatchRank) ProtoMessage() {} func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[88] + mi := &file_protocol_server_pbdata_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7165,7 +7283,7 @@ func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRank.ProtoReflect.Descriptor instead. func (*DB_MatchRank) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{88} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{90} } func (x *DB_MatchRank) GetId() int32 { @@ -7193,7 +7311,7 @@ type DB_MatchRankArray struct { func (x *DB_MatchRankArray) Reset() { *x = DB_MatchRankArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[89] + mi := &file_protocol_server_pbdata_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7206,7 +7324,7 @@ func (x *DB_MatchRankArray) String() string { func (*DB_MatchRankArray) ProtoMessage() {} func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[89] + mi := &file_protocol_server_pbdata_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7219,7 +7337,7 @@ func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRankArray.ProtoReflect.Descriptor instead. func (*DB_MatchRankArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{89} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{91} } func (x *DB_MatchRankArray) GetArr() []*DB_MatchRank { @@ -7241,7 +7359,7 @@ type DB_Name struct { func (x *DB_Name) Reset() { *x = DB_Name{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[90] + mi := &file_protocol_server_pbdata_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7254,7 +7372,7 @@ func (x *DB_Name) String() string { func (*DB_Name) ProtoMessage() {} func (x *DB_Name) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[90] + mi := &file_protocol_server_pbdata_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7267,7 +7385,7 @@ func (x *DB_Name) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Name.ProtoReflect.Descriptor instead. func (*DB_Name) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{90} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{92} } func (x *DB_Name) GetId() int32 { @@ -7295,7 +7413,7 @@ type DB_NameArray struct { func (x *DB_NameArray) Reset() { *x = DB_NameArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[91] + mi := &file_protocol_server_pbdata_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7308,7 +7426,7 @@ func (x *DB_NameArray) String() string { func (*DB_NameArray) ProtoMessage() {} func (x *DB_NameArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[91] + mi := &file_protocol_server_pbdata_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7321,7 +7439,7 @@ func (x *DB_NameArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameArray.ProtoReflect.Descriptor instead. func (*DB_NameArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{91} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{93} } func (x *DB_NameArray) GetArr() []*DB_Name { @@ -7343,7 +7461,7 @@ type DB_NameBoy struct { func (x *DB_NameBoy) Reset() { *x = DB_NameBoy{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[92] + mi := &file_protocol_server_pbdata_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7356,7 +7474,7 @@ func (x *DB_NameBoy) String() string { func (*DB_NameBoy) ProtoMessage() {} func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[92] + mi := &file_protocol_server_pbdata_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7369,7 +7487,7 @@ func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoy.ProtoReflect.Descriptor instead. func (*DB_NameBoy) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{92} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{94} } func (x *DB_NameBoy) GetId() int32 { @@ -7397,7 +7515,7 @@ type DB_NameBoyArray struct { func (x *DB_NameBoyArray) Reset() { *x = DB_NameBoyArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[93] + mi := &file_protocol_server_pbdata_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7410,7 +7528,7 @@ func (x *DB_NameBoyArray) String() string { func (*DB_NameBoyArray) ProtoMessage() {} func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[93] + mi := &file_protocol_server_pbdata_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7423,7 +7541,7 @@ func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoyArray.ProtoReflect.Descriptor instead. func (*DB_NameBoyArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{93} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{95} } func (x *DB_NameBoyArray) GetArr() []*DB_NameBoy { @@ -7445,7 +7563,7 @@ type DB_NameGirl struct { func (x *DB_NameGirl) Reset() { *x = DB_NameGirl{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[94] + mi := &file_protocol_server_pbdata_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7458,7 +7576,7 @@ func (x *DB_NameGirl) String() string { func (*DB_NameGirl) ProtoMessage() {} func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[94] + mi := &file_protocol_server_pbdata_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7471,7 +7589,7 @@ func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirl.ProtoReflect.Descriptor instead. func (*DB_NameGirl) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{94} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{96} } func (x *DB_NameGirl) GetId() int32 { @@ -7499,7 +7617,7 @@ type DB_NameGirlArray struct { func (x *DB_NameGirlArray) Reset() { *x = DB_NameGirlArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[95] + mi := &file_protocol_server_pbdata_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7512,7 +7630,7 @@ func (x *DB_NameGirlArray) String() string { func (*DB_NameGirlArray) ProtoMessage() {} func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[95] + mi := &file_protocol_server_pbdata_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7525,7 +7643,7 @@ func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirlArray.ProtoReflect.Descriptor instead. func (*DB_NameGirlArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{95} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{97} } func (x *DB_NameGirlArray) GetArr() []*DB_NameGirl { @@ -7555,7 +7673,7 @@ type DB_NewPlayer struct { func (x *DB_NewPlayer) Reset() { *x = DB_NewPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[96] + mi := &file_protocol_server_pbdata_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7568,7 +7686,7 @@ func (x *DB_NewPlayer) String() string { func (*DB_NewPlayer) ProtoMessage() {} func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[96] + mi := &file_protocol_server_pbdata_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7581,7 +7699,7 @@ func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayer.ProtoReflect.Descriptor instead. func (*DB_NewPlayer) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{96} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{98} } func (x *DB_NewPlayer) GetId() int32 { @@ -7665,7 +7783,7 @@ type DB_NewPlayerArray struct { func (x *DB_NewPlayerArray) Reset() { *x = DB_NewPlayerArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[97] + mi := &file_protocol_server_pbdata_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7678,7 +7796,7 @@ func (x *DB_NewPlayerArray) String() string { func (*DB_NewPlayerArray) ProtoMessage() {} func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[97] + mi := &file_protocol_server_pbdata_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7691,7 +7809,7 @@ func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayerArray.ProtoReflect.Descriptor instead. func (*DB_NewPlayerArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{97} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{99} } func (x *DB_NewPlayerArray) GetArr() []*DB_NewPlayer { @@ -7715,7 +7833,7 @@ type DB_NewYearActivity struct { func (x *DB_NewYearActivity) Reset() { *x = DB_NewYearActivity{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[98] + mi := &file_protocol_server_pbdata_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7728,7 +7846,7 @@ func (x *DB_NewYearActivity) String() string { func (*DB_NewYearActivity) ProtoMessage() {} func (x *DB_NewYearActivity) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[98] + mi := &file_protocol_server_pbdata_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7741,7 +7859,7 @@ func (x *DB_NewYearActivity) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewYearActivity.ProtoReflect.Descriptor instead. func (*DB_NewYearActivity) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{98} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{100} } func (x *DB_NewYearActivity) GetId() int32 { @@ -7783,7 +7901,7 @@ type DB_NewYearActivityArray struct { func (x *DB_NewYearActivityArray) Reset() { *x = DB_NewYearActivityArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[99] + mi := &file_protocol_server_pbdata_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7796,7 +7914,7 @@ func (x *DB_NewYearActivityArray) String() string { func (*DB_NewYearActivityArray) ProtoMessage() {} func (x *DB_NewYearActivityArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[99] + mi := &file_protocol_server_pbdata_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7809,7 +7927,7 @@ func (x *DB_NewYearActivityArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewYearActivityArray.ProtoReflect.Descriptor instead. func (*DB_NewYearActivityArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{99} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{101} } func (x *DB_NewYearActivityArray) GetArr() []*DB_NewYearActivity { @@ -7833,7 +7951,7 @@ type DB_PassShow struct { func (x *DB_PassShow) Reset() { *x = DB_PassShow{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[100] + mi := &file_protocol_server_pbdata_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7846,7 +7964,7 @@ func (x *DB_PassShow) String() string { func (*DB_PassShow) ProtoMessage() {} func (x *DB_PassShow) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[100] + mi := &file_protocol_server_pbdata_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7859,7 +7977,7 @@ func (x *DB_PassShow) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PassShow.ProtoReflect.Descriptor instead. func (*DB_PassShow) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{100} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{102} } func (x *DB_PassShow) GetId() int32 { @@ -7901,7 +8019,7 @@ type DB_PassShowArray struct { func (x *DB_PassShowArray) Reset() { *x = DB_PassShowArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[101] + mi := &file_protocol_server_pbdata_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7914,7 +8032,7 @@ func (x *DB_PassShowArray) String() string { func (*DB_PassShowArray) ProtoMessage() {} func (x *DB_PassShowArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[101] + mi := &file_protocol_server_pbdata_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7927,7 +8045,7 @@ func (x *DB_PassShowArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PassShowArray.ProtoReflect.Descriptor instead. func (*DB_PassShowArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{101} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{103} } func (x *DB_PassShowArray) GetArr() []*DB_PassShow { @@ -7956,7 +8074,7 @@ type DB_PetSkill struct { func (x *DB_PetSkill) Reset() { *x = DB_PetSkill{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[102] + mi := &file_protocol_server_pbdata_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7969,7 +8087,7 @@ func (x *DB_PetSkill) String() string { func (*DB_PetSkill) ProtoMessage() {} func (x *DB_PetSkill) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[102] + mi := &file_protocol_server_pbdata_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7982,7 +8100,7 @@ func (x *DB_PetSkill) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PetSkill.ProtoReflect.Descriptor instead. func (*DB_PetSkill) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{102} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{104} } func (x *DB_PetSkill) GetId() int32 { @@ -8059,7 +8177,7 @@ type DB_PetSkillArray struct { func (x *DB_PetSkillArray) Reset() { *x = DB_PetSkillArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[103] + mi := &file_protocol_server_pbdata_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8072,7 +8190,7 @@ func (x *DB_PetSkillArray) String() string { func (*DB_PetSkillArray) ProtoMessage() {} func (x *DB_PetSkillArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[103] + mi := &file_protocol_server_pbdata_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8085,7 +8203,7 @@ func (x *DB_PetSkillArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PetSkillArray.ProtoReflect.Descriptor instead. func (*DB_PetSkillArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{103} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{105} } func (x *DB_PetSkillArray) GetArr() []*DB_PetSkill { @@ -8117,7 +8235,7 @@ type DB_PhoneLottery struct { func (x *DB_PhoneLottery) Reset() { *x = DB_PhoneLottery{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[104] + mi := &file_protocol_server_pbdata_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8130,7 +8248,7 @@ func (x *DB_PhoneLottery) String() string { func (*DB_PhoneLottery) ProtoMessage() {} func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[104] + mi := &file_protocol_server_pbdata_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8143,7 +8261,7 @@ func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLottery.ProtoReflect.Descriptor instead. func (*DB_PhoneLottery) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{104} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{106} } func (x *DB_PhoneLottery) GetId() int32 { @@ -8241,7 +8359,7 @@ type DB_PhoneLotteryArray struct { func (x *DB_PhoneLotteryArray) Reset() { *x = DB_PhoneLotteryArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[105] + mi := &file_protocol_server_pbdata_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8254,7 +8372,7 @@ func (x *DB_PhoneLotteryArray) String() string { func (*DB_PhoneLotteryArray) ProtoMessage() {} func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[105] + mi := &file_protocol_server_pbdata_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8267,7 +8385,7 @@ func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLotteryArray.ProtoReflect.Descriptor instead. func (*DB_PhoneLotteryArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{105} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{107} } func (x *DB_PhoneLotteryArray) GetArr() []*DB_PhoneLottery { @@ -8299,7 +8417,7 @@ type DB_PigBank_Diamond struct { func (x *DB_PigBank_Diamond) Reset() { *x = DB_PigBank_Diamond{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[106] + mi := &file_protocol_server_pbdata_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8312,7 +8430,7 @@ func (x *DB_PigBank_Diamond) String() string { func (*DB_PigBank_Diamond) ProtoMessage() {} func (x *DB_PigBank_Diamond) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[106] + mi := &file_protocol_server_pbdata_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8325,7 +8443,7 @@ func (x *DB_PigBank_Diamond) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PigBank_Diamond.ProtoReflect.Descriptor instead. func (*DB_PigBank_Diamond) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{106} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{108} } func (x *DB_PigBank_Diamond) GetId() int32 { @@ -8423,7 +8541,7 @@ type DB_PigBank_DiamondArray struct { func (x *DB_PigBank_DiamondArray) Reset() { *x = DB_PigBank_DiamondArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[107] + mi := &file_protocol_server_pbdata_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8436,7 +8554,7 @@ func (x *DB_PigBank_DiamondArray) String() string { func (*DB_PigBank_DiamondArray) ProtoMessage() {} func (x *DB_PigBank_DiamondArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[107] + mi := &file_protocol_server_pbdata_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8449,7 +8567,7 @@ func (x *DB_PigBank_DiamondArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PigBank_DiamondArray.ProtoReflect.Descriptor instead. func (*DB_PigBank_DiamondArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{107} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{109} } func (x *DB_PigBank_DiamondArray) GetArr() []*DB_PigBank_Diamond { @@ -8472,7 +8590,7 @@ type DB_Pigbank_Prop struct { func (x *DB_Pigbank_Prop) Reset() { *x = DB_Pigbank_Prop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[108] + mi := &file_protocol_server_pbdata_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8485,7 +8603,7 @@ func (x *DB_Pigbank_Prop) String() string { func (*DB_Pigbank_Prop) ProtoMessage() {} func (x *DB_Pigbank_Prop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[108] + mi := &file_protocol_server_pbdata_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8498,7 +8616,7 @@ func (x *DB_Pigbank_Prop) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Pigbank_Prop.ProtoReflect.Descriptor instead. func (*DB_Pigbank_Prop) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{108} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{110} } func (x *DB_Pigbank_Prop) GetId() int32 { @@ -8533,7 +8651,7 @@ type DB_Pigbank_PropArray struct { func (x *DB_Pigbank_PropArray) Reset() { *x = DB_Pigbank_PropArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[109] + mi := &file_protocol_server_pbdata_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8546,7 +8664,7 @@ func (x *DB_Pigbank_PropArray) String() string { func (*DB_Pigbank_PropArray) ProtoMessage() {} func (x *DB_Pigbank_PropArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[109] + mi := &file_protocol_server_pbdata_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8559,7 +8677,7 @@ func (x *DB_Pigbank_PropArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Pigbank_PropArray.ProtoReflect.Descriptor instead. func (*DB_Pigbank_PropArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{109} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{111} } func (x *DB_Pigbank_PropArray) GetArr() []*DB_Pigbank_Prop { @@ -8581,7 +8699,7 @@ type DB_PlayerExp struct { func (x *DB_PlayerExp) Reset() { *x = DB_PlayerExp{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[110] + mi := &file_protocol_server_pbdata_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8594,7 +8712,7 @@ func (x *DB_PlayerExp) String() string { func (*DB_PlayerExp) ProtoMessage() {} func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[110] + mi := &file_protocol_server_pbdata_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8607,7 +8725,7 @@ func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExp.ProtoReflect.Descriptor instead. func (*DB_PlayerExp) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{110} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{112} } func (x *DB_PlayerExp) GetId() int32 { @@ -8635,7 +8753,7 @@ type DB_PlayerExpArray struct { func (x *DB_PlayerExpArray) Reset() { *x = DB_PlayerExpArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[111] + mi := &file_protocol_server_pbdata_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8648,7 +8766,7 @@ func (x *DB_PlayerExpArray) String() string { func (*DB_PlayerExpArray) ProtoMessage() {} func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[111] + mi := &file_protocol_server_pbdata_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8661,7 +8779,7 @@ func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExpArray.ProtoReflect.Descriptor instead. func (*DB_PlayerExpArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{111} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{113} } func (x *DB_PlayerExpArray) GetArr() []*DB_PlayerExp { @@ -8699,7 +8817,7 @@ type DB_PlayerType struct { func (x *DB_PlayerType) Reset() { *x = DB_PlayerType{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[112] + mi := &file_protocol_server_pbdata_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8712,7 +8830,7 @@ func (x *DB_PlayerType) String() string { func (*DB_PlayerType) ProtoMessage() {} func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[112] + mi := &file_protocol_server_pbdata_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8725,7 +8843,7 @@ func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerType.ProtoReflect.Descriptor instead. func (*DB_PlayerType) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{112} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{114} } func (x *DB_PlayerType) GetId() int32 { @@ -8865,7 +8983,7 @@ type DB_PlayerTypeArray struct { func (x *DB_PlayerTypeArray) Reset() { *x = DB_PlayerTypeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[113] + mi := &file_protocol_server_pbdata_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8878,7 +8996,7 @@ func (x *DB_PlayerTypeArray) String() string { func (*DB_PlayerTypeArray) ProtoMessage() {} func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[113] + mi := &file_protocol_server_pbdata_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8891,7 +9009,7 @@ func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerTypeArray.ProtoReflect.Descriptor instead. func (*DB_PlayerTypeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{113} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{115} } func (x *DB_PlayerTypeArray) GetArr() []*DB_PlayerType { @@ -8915,7 +9033,7 @@ type DB_PotOdd struct { func (x *DB_PotOdd) Reset() { *x = DB_PotOdd{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[114] + mi := &file_protocol_server_pbdata_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8928,7 +9046,7 @@ func (x *DB_PotOdd) String() string { func (*DB_PotOdd) ProtoMessage() {} func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[114] + mi := &file_protocol_server_pbdata_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8941,7 +9059,7 @@ func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOdd.ProtoReflect.Descriptor instead. func (*DB_PotOdd) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{114} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{116} } func (x *DB_PotOdd) GetId() int32 { @@ -8983,7 +9101,7 @@ type DB_PotOddArray struct { func (x *DB_PotOddArray) Reset() { *x = DB_PotOddArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[115] + mi := &file_protocol_server_pbdata_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8996,7 +9114,7 @@ func (x *DB_PotOddArray) String() string { func (*DB_PotOddArray) ProtoMessage() {} func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[115] + mi := &file_protocol_server_pbdata_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9009,7 +9127,7 @@ func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOddArray.ProtoReflect.Descriptor instead. func (*DB_PotOddArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{115} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{117} } func (x *DB_PotOddArray) GetArr() []*DB_PotOdd { @@ -9035,7 +9153,7 @@ type DB_PropExchange struct { func (x *DB_PropExchange) Reset() { *x = DB_PropExchange{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[116] + mi := &file_protocol_server_pbdata_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9048,7 +9166,7 @@ func (x *DB_PropExchange) String() string { func (*DB_PropExchange) ProtoMessage() {} func (x *DB_PropExchange) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[116] + mi := &file_protocol_server_pbdata_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9061,7 +9179,7 @@ func (x *DB_PropExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PropExchange.ProtoReflect.Descriptor instead. func (*DB_PropExchange) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{116} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{118} } func (x *DB_PropExchange) GetId() int32 { @@ -9117,7 +9235,7 @@ type DB_PropExchangeArray struct { func (x *DB_PropExchangeArray) Reset() { *x = DB_PropExchangeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[117] + mi := &file_protocol_server_pbdata_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9130,7 +9248,7 @@ func (x *DB_PropExchangeArray) String() string { func (*DB_PropExchangeArray) ProtoMessage() {} func (x *DB_PropExchangeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[117] + mi := &file_protocol_server_pbdata_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9143,7 +9261,7 @@ func (x *DB_PropExchangeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PropExchangeArray.ProtoReflect.Descriptor instead. func (*DB_PropExchangeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{117} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{119} } func (x *DB_PropExchangeArray) GetArr() []*DB_PropExchange { @@ -9166,7 +9284,7 @@ type DB_RankCycle struct { func (x *DB_RankCycle) Reset() { *x = DB_RankCycle{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[118] + mi := &file_protocol_server_pbdata_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9179,7 +9297,7 @@ func (x *DB_RankCycle) String() string { func (*DB_RankCycle) ProtoMessage() {} func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[118] + mi := &file_protocol_server_pbdata_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9192,7 +9310,7 @@ func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycle.ProtoReflect.Descriptor instead. func (*DB_RankCycle) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{118} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{120} } func (x *DB_RankCycle) GetId() int32 { @@ -9227,7 +9345,7 @@ type DB_RankCycleArray struct { func (x *DB_RankCycleArray) Reset() { *x = DB_RankCycleArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[119] + mi := &file_protocol_server_pbdata_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9240,7 +9358,7 @@ func (x *DB_RankCycleArray) String() string { func (*DB_RankCycleArray) ProtoMessage() {} func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[119] + mi := &file_protocol_server_pbdata_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9253,7 +9371,7 @@ func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycleArray.ProtoReflect.Descriptor instead. func (*DB_RankCycleArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{119} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{121} } func (x *DB_RankCycleArray) GetArr() []*DB_RankCycle { @@ -9278,7 +9396,7 @@ type DB_RankLevel struct { func (x *DB_RankLevel) Reset() { *x = DB_RankLevel{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[120] + mi := &file_protocol_server_pbdata_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9291,7 +9409,7 @@ func (x *DB_RankLevel) String() string { func (*DB_RankLevel) ProtoMessage() {} func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[120] + mi := &file_protocol_server_pbdata_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9304,7 +9422,7 @@ func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevel.ProtoReflect.Descriptor instead. func (*DB_RankLevel) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{120} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{122} } func (x *DB_RankLevel) GetId() int32 { @@ -9353,7 +9471,7 @@ type DB_RankLevelArray struct { func (x *DB_RankLevelArray) Reset() { *x = DB_RankLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[121] + mi := &file_protocol_server_pbdata_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9366,7 +9484,7 @@ func (x *DB_RankLevelArray) String() string { func (*DB_RankLevelArray) ProtoMessage() {} func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[121] + mi := &file_protocol_server_pbdata_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9379,7 +9497,7 @@ func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevelArray.ProtoReflect.Descriptor instead. func (*DB_RankLevelArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{121} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{123} } func (x *DB_RankLevelArray) GetArr() []*DB_RankLevel { @@ -9408,7 +9526,7 @@ type DB_RankReward struct { func (x *DB_RankReward) Reset() { *x = DB_RankReward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[122] + mi := &file_protocol_server_pbdata_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9421,7 +9539,7 @@ func (x *DB_RankReward) String() string { func (*DB_RankReward) ProtoMessage() {} func (x *DB_RankReward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[122] + mi := &file_protocol_server_pbdata_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9434,7 +9552,7 @@ func (x *DB_RankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankReward.ProtoReflect.Descriptor instead. func (*DB_RankReward) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{122} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{124} } func (x *DB_RankReward) GetId() int32 { @@ -9511,7 +9629,7 @@ type DB_RankRewardArray struct { func (x *DB_RankRewardArray) Reset() { *x = DB_RankRewardArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[123] + mi := &file_protocol_server_pbdata_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9524,7 +9642,7 @@ func (x *DB_RankRewardArray) String() string { func (*DB_RankRewardArray) ProtoMessage() {} func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[123] + mi := &file_protocol_server_pbdata_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9537,7 +9655,7 @@ func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankRewardArray.ProtoReflect.Descriptor instead. func (*DB_RankRewardArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{123} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{125} } func (x *DB_RankRewardArray) GetArr() []*DB_RankReward { @@ -9559,7 +9677,7 @@ type DB_Sensitive_Words struct { func (x *DB_Sensitive_Words) Reset() { *x = DB_Sensitive_Words{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[124] + mi := &file_protocol_server_pbdata_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9572,7 +9690,7 @@ func (x *DB_Sensitive_Words) String() string { func (*DB_Sensitive_Words) ProtoMessage() {} func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[124] + mi := &file_protocol_server_pbdata_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9585,7 +9703,7 @@ func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_Words.ProtoReflect.Descriptor instead. func (*DB_Sensitive_Words) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{124} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{126} } func (x *DB_Sensitive_Words) GetId() int32 { @@ -9613,7 +9731,7 @@ type DB_Sensitive_WordsArray struct { func (x *DB_Sensitive_WordsArray) Reset() { *x = DB_Sensitive_WordsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[125] + mi := &file_protocol_server_pbdata_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9626,7 +9744,7 @@ func (x *DB_Sensitive_WordsArray) String() string { func (*DB_Sensitive_WordsArray) ProtoMessage() {} func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[125] + mi := &file_protocol_server_pbdata_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9639,7 +9757,7 @@ func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_WordsArray.ProtoReflect.Descriptor instead. func (*DB_Sensitive_WordsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{125} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{127} } func (x *DB_Sensitive_WordsArray) GetArr() []*DB_Sensitive_Words { @@ -9673,7 +9791,7 @@ type DB_Skin struct { func (x *DB_Skin) Reset() { *x = DB_Skin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[126] + mi := &file_protocol_server_pbdata_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9686,7 +9804,7 @@ func (x *DB_Skin) String() string { func (*DB_Skin) ProtoMessage() {} func (x *DB_Skin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[126] + mi := &file_protocol_server_pbdata_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9699,7 +9817,7 @@ func (x *DB_Skin) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Skin.ProtoReflect.Descriptor instead. func (*DB_Skin) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{126} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{128} } func (x *DB_Skin) GetId() int32 { @@ -9811,7 +9929,7 @@ type DB_SkinArray struct { func (x *DB_SkinArray) Reset() { *x = DB_SkinArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[127] + mi := &file_protocol_server_pbdata_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9824,7 +9942,7 @@ func (x *DB_SkinArray) String() string { func (*DB_SkinArray) ProtoMessage() {} func (x *DB_SkinArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[127] + mi := &file_protocol_server_pbdata_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9837,7 +9955,7 @@ func (x *DB_SkinArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SkinArray.ProtoReflect.Descriptor instead. func (*DB_SkinArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{127} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{129} } func (x *DB_SkinArray) GetArr() []*DB_Skin { @@ -9865,7 +9983,7 @@ type DB_SkinLevel struct { func (x *DB_SkinLevel) Reset() { *x = DB_SkinLevel{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[128] + mi := &file_protocol_server_pbdata_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9878,7 +9996,7 @@ func (x *DB_SkinLevel) String() string { func (*DB_SkinLevel) ProtoMessage() {} func (x *DB_SkinLevel) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[128] + mi := &file_protocol_server_pbdata_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9891,7 +10009,7 @@ func (x *DB_SkinLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SkinLevel.ProtoReflect.Descriptor instead. func (*DB_SkinLevel) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{128} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{130} } func (x *DB_SkinLevel) GetId() int32 { @@ -9961,7 +10079,7 @@ type DB_SkinLevelArray struct { func (x *DB_SkinLevelArray) Reset() { *x = DB_SkinLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[129] + mi := &file_protocol_server_pbdata_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9974,7 +10092,7 @@ func (x *DB_SkinLevelArray) String() string { func (*DB_SkinLevelArray) ProtoMessage() {} func (x *DB_SkinLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[129] + mi := &file_protocol_server_pbdata_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9987,7 +10105,7 @@ func (x *DB_SkinLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SkinLevelArray.ProtoReflect.Descriptor instead. func (*DB_SkinLevelArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{129} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{131} } func (x *DB_SkinLevelArray) GetArr() []*DB_SkinLevel { @@ -10023,7 +10141,7 @@ type DB_SlotRateWeight struct { func (x *DB_SlotRateWeight) Reset() { *x = DB_SlotRateWeight{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[130] + mi := &file_protocol_server_pbdata_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10036,7 +10154,7 @@ func (x *DB_SlotRateWeight) String() string { func (*DB_SlotRateWeight) ProtoMessage() {} func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[130] + mi := &file_protocol_server_pbdata_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10049,7 +10167,7 @@ func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeight.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeight) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{130} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{132} } func (x *DB_SlotRateWeight) GetId() int32 { @@ -10175,7 +10293,7 @@ type DB_SlotRateWeightArray struct { func (x *DB_SlotRateWeightArray) Reset() { *x = DB_SlotRateWeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[131] + mi := &file_protocol_server_pbdata_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10188,7 +10306,7 @@ func (x *DB_SlotRateWeightArray) String() string { func (*DB_SlotRateWeightArray) ProtoMessage() {} func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[131] + mi := &file_protocol_server_pbdata_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10201,7 +10319,7 @@ func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeightArray.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeightArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{131} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{133} } func (x *DB_SlotRateWeightArray) GetArr() []*DB_SlotRateWeight { @@ -10226,7 +10344,7 @@ type DB_SystemChance struct { func (x *DB_SystemChance) Reset() { *x = DB_SystemChance{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[132] + mi := &file_protocol_server_pbdata_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10239,7 +10357,7 @@ func (x *DB_SystemChance) String() string { func (*DB_SystemChance) ProtoMessage() {} func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[132] + mi := &file_protocol_server_pbdata_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10252,7 +10370,7 @@ func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChance.ProtoReflect.Descriptor instead. func (*DB_SystemChance) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{132} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{134} } func (x *DB_SystemChance) GetId() int32 { @@ -10301,7 +10419,7 @@ type DB_SystemChanceArray struct { func (x *DB_SystemChanceArray) Reset() { *x = DB_SystemChanceArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[133] + mi := &file_protocol_server_pbdata_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10314,7 +10432,7 @@ func (x *DB_SystemChanceArray) String() string { func (*DB_SystemChanceArray) ProtoMessage() {} func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[133] + mi := &file_protocol_server_pbdata_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10327,7 +10445,7 @@ func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChanceArray.ProtoReflect.Descriptor instead. func (*DB_SystemChanceArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{133} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{135} } func (x *DB_SystemChanceArray) GetArr() []*DB_SystemChance { @@ -10358,7 +10476,7 @@ type DB_Task struct { func (x *DB_Task) Reset() { *x = DB_Task{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[134] + mi := &file_protocol_server_pbdata_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10371,7 +10489,7 @@ func (x *DB_Task) String() string { func (*DB_Task) ProtoMessage() {} func (x *DB_Task) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[134] + mi := &file_protocol_server_pbdata_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10384,7 +10502,7 @@ func (x *DB_Task) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Task.ProtoReflect.Descriptor instead. func (*DB_Task) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{134} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{136} } func (x *DB_Task) GetId() int32 { @@ -10475,7 +10593,7 @@ type DB_TaskArray struct { func (x *DB_TaskArray) Reset() { *x = DB_TaskArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[135] + mi := &file_protocol_server_pbdata_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10488,7 +10606,7 @@ func (x *DB_TaskArray) String() string { func (*DB_TaskArray) ProtoMessage() {} func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[135] + mi := &file_protocol_server_pbdata_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10501,7 +10619,7 @@ func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TaskArray.ProtoReflect.Descriptor instead. func (*DB_TaskArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{135} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{137} } func (x *DB_TaskArray) GetArr() []*DB_Task { @@ -10528,7 +10646,7 @@ type DB_ThirdPlatformGameMapping struct { func (x *DB_ThirdPlatformGameMapping) Reset() { *x = DB_ThirdPlatformGameMapping{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[136] + mi := &file_protocol_server_pbdata_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10541,7 +10659,7 @@ func (x *DB_ThirdPlatformGameMapping) String() string { func (*DB_ThirdPlatformGameMapping) ProtoMessage() {} func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[136] + mi := &file_protocol_server_pbdata_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10554,7 +10672,7 @@ func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMapping.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMapping) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{136} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{138} } func (x *DB_ThirdPlatformGameMapping) GetId() int32 { @@ -10617,7 +10735,7 @@ type DB_ThirdPlatformGameMappingArray struct { func (x *DB_ThirdPlatformGameMappingArray) Reset() { *x = DB_ThirdPlatformGameMappingArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[137] + mi := &file_protocol_server_pbdata_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10630,7 +10748,7 @@ func (x *DB_ThirdPlatformGameMappingArray) String() string { func (*DB_ThirdPlatformGameMappingArray) ProtoMessage() {} func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[137] + mi := &file_protocol_server_pbdata_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10643,7 +10761,7 @@ func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMappingArray.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMappingArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{137} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{139} } func (x *DB_ThirdPlatformGameMappingArray) GetArr() []*DB_ThirdPlatformGameMapping { @@ -10666,7 +10784,7 @@ type DB_Tips struct { func (x *DB_Tips) Reset() { *x = DB_Tips{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[138] + mi := &file_protocol_server_pbdata_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10679,7 +10797,7 @@ func (x *DB_Tips) String() string { func (*DB_Tips) ProtoMessage() {} func (x *DB_Tips) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[138] + mi := &file_protocol_server_pbdata_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10692,7 +10810,7 @@ func (x *DB_Tips) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Tips.ProtoReflect.Descriptor instead. func (*DB_Tips) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{138} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{140} } func (x *DB_Tips) GetId() int32 { @@ -10727,7 +10845,7 @@ type DB_TipsArray struct { func (x *DB_TipsArray) Reset() { *x = DB_TipsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[139] + mi := &file_protocol_server_pbdata_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10740,7 +10858,7 @@ func (x *DB_TipsArray) String() string { func (*DB_TipsArray) ProtoMessage() {} func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[139] + mi := &file_protocol_server_pbdata_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10753,7 +10871,7 @@ func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TipsArray.ProtoReflect.Descriptor instead. func (*DB_TipsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{139} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{141} } func (x *DB_TipsArray) GetArr() []*DB_Tips { @@ -10795,7 +10913,7 @@ type DB_VIP struct { func (x *DB_VIP) Reset() { *x = DB_VIP{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[140] + mi := &file_protocol_server_pbdata_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10808,7 +10926,7 @@ func (x *DB_VIP) String() string { func (*DB_VIP) ProtoMessage() {} func (x *DB_VIP) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[140] + mi := &file_protocol_server_pbdata_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10821,7 +10939,7 @@ func (x *DB_VIP) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIP.ProtoReflect.Descriptor instead. func (*DB_VIP) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{140} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{142} } func (x *DB_VIP) GetId() int32 { @@ -10989,7 +11107,7 @@ type DB_VIPArray struct { func (x *DB_VIPArray) Reset() { *x = DB_VIPArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[141] + mi := &file_protocol_server_pbdata_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11002,7 +11120,7 @@ func (x *DB_VIPArray) String() string { func (*DB_VIPArray) ProtoMessage() {} func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[141] + mi := &file_protocol_server_pbdata_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11015,7 +11133,7 @@ func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPArray.ProtoReflect.Descriptor instead. func (*DB_VIPArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{141} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{143} } func (x *DB_VIPArray) GetArr() []*DB_VIP { @@ -11040,7 +11158,7 @@ type DB_VIPShow struct { func (x *DB_VIPShow) Reset() { *x = DB_VIPShow{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[142] + mi := &file_protocol_server_pbdata_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11053,7 +11171,7 @@ func (x *DB_VIPShow) String() string { func (*DB_VIPShow) ProtoMessage() {} func (x *DB_VIPShow) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[142] + mi := &file_protocol_server_pbdata_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11066,7 +11184,7 @@ func (x *DB_VIPShow) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPShow.ProtoReflect.Descriptor instead. func (*DB_VIPShow) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{142} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{144} } func (x *DB_VIPShow) GetId() int32 { @@ -11115,7 +11233,7 @@ type DB_VIPShowArray struct { func (x *DB_VIPShowArray) Reset() { *x = DB_VIPShowArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[143] + mi := &file_protocol_server_pbdata_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11128,7 +11246,7 @@ func (x *DB_VIPShowArray) String() string { func (*DB_VIPShowArray) ProtoMessage() {} func (x *DB_VIPShowArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[143] + mi := &file_protocol_server_pbdata_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11141,7 +11259,7 @@ func (x *DB_VIPShowArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPShowArray.ProtoReflect.Descriptor instead. func (*DB_VIPShowArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{143} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{145} } func (x *DB_VIPShowArray) GetArr() []*DB_VIPShow { @@ -11156,471 +11274,967 @@ var File_protocol_server_pbdata_proto protoreflect.FileDescriptor var file_protocol_server_pbdata_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x62, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x73, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, - 0x53, 0x69, 0x67, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, - 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x44, - 0x42, 0x5f, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x86, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x43, 0x6f, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x43, 0x6f, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, 0x12, 0x12, 0x0a, - 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x54, 0x79, 0x70, 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, - 0x11, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x31, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x31, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x56, 0x0a, 0x0e, 0x44, 0x42, - 0x5f, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, - 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0xb9, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x41, 0x43, + 0x54, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, + 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x50, 0x75, 0x73, 0x68, 0x43, + 0x6f, 0x69, 0x6e, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, + 0x61, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x62, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, - 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, - 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, - 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, - 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf6, 0x03, 0x0a, - 0x10, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, + 0x44, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x73, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x1a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, - 0x69, 0x63, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, - 0x63, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, - 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x4e, 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, - 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x47, - 0x6f, 0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x63, - 0x6f, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x6e, 0x63, 0x6f, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, - 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, - 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, - 0x79, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, 0x0a, 0x0d, 0x44, 0x42, - 0x5f, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, - 0x6c, 0x61, 0x63, 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, - 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x68, 0x69, - 0x74, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x57, 0x68, - 0x69, 0x74, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x42, 0x6c, - 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x94, 0x04, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x4a, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, - 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, - 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, - 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x43, 0x61, 0x72, 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, - 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, - 0x64, 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x37, 0x0a, - 0x0f, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, - 0x44, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x96, 0x04, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, - 0x0a, 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, - 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x43, 0x61, 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, - 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, - 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x34, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, - 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, - 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 0x65, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd1, 0x01, 0x0a, - 0x13, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, - 0x75, 0x6c, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x73, 0x65, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x73, - 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x22, 0x49, 0x0a, 0x18, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, - 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, - 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x12, - 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, - 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, - 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x77, - 0x53, 0x74, 0x65, 0x70, 0x12, 0x30, 0x0a, 0x13, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x48, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x13, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x67, - 0x68, 0x74, 0x53, 0x74, 0x65, 0x70, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, - 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x48, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, - 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, - 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x78, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, - 0x56, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x63, 0x6b, - 0x56, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa9, 0x01, - 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, - 0x0a, 0x0b, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x37, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, - 0x65, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, - 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, - 0x61, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4a, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x43, - 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, - 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, - 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x91, 0x07, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, - 0x6c, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, - 0x65, 0x6c, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, - 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, - 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, - 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, - 0x68, 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, - 0x50, 0x6f, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, - 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, - 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, - 0x69, 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x45, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, - 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, - 0x6b, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, - 0x6b, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x6f, - 0x73, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x69, 0x65, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x18, 0x1c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, - 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, - 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x4a, 0x73, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, - 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, - 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x64, - 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x61, - 0x6e, 0x64, 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, - 0x69, 0x73, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0a, - 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, - 0x74, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, - 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x52, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, - 0x70, 0x65, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, - 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x63, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, - 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, - 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, - 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, - 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x53, - 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, - 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, - 0x6c, 0x64, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, - 0x6c, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x12, - 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x42, - 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x4c, - 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, - 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, - 0x6f, 0x73, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, - 0x6f, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xda, - 0x03, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x74, 0x68, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x43, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x47, 0x43, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, - 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x75, 0x74, - 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x75, - 0x74, 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x72, 0x79, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x75, 0x72, 0x79, 0x22, 0x3b, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, - 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, - 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, - 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x47, 0x0a, - 0x17, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, - 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, - 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x46, 0x6f, - 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, - 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, - 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, - 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, - 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x30, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, - 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, - 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, + 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x41, + 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x86, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x54, 0x75, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, + 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x73, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, + 0x79, 0x70, 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, + 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x31, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x31, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x56, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x41, 0x6e, + 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x20, 0x0a, + 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, + 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x62, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x44, 0x65, 0x73, 0x63, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, + 0x6c, 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, + 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf6, 0x03, 0x0a, 0x10, 0x44, 0x42, + 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, - 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x1d, 0x44, 0x42, 0x5f, 0x46, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x49, + 0x63, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x49, 0x63, + 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x4e, 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4e, + 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, + 0x70, 0x65, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, 0x74, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, + 0x72, 0x79, 0x53, 0x6b, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, + 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x42, 0x6c, + 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6c, 0x61, 0x63, + 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x42, 0x6c, 0x61, + 0x63, 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x68, 0x69, 0x74, 0x65, 0x4f, + 0x64, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x57, 0x68, 0x69, 0x74, 0x65, + 0x4f, 0x64, 0x64, 0x73, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x42, 0x6c, 0x61, 0x63, 0x6b, + 0x57, 0x68, 0x69, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x94, 0x04, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x4a, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, + 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x32, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, + 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, + 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, + 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, + 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, + 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, + 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, + 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, + 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, 0x44, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, 0x44, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x96, 0x04, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x59, 0x75, 0x4c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, + 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, + 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, + 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, + 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, + 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, 0x48, + 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, + 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, + 0x61, 0x72, 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, 0x6e, + 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x11, + 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 0x65, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x59, 0x75, 0x4c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd1, 0x01, 0x0a, 0x13, 0x44, 0x42, + 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x73, 0x65, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x73, 0x65, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x49, 0x0a, + 0x18, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x75, + 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, + 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x4d, 0x61, 0x78, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x4c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x11, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x77, 0x53, 0x74, 0x65, + 0x70, 0x12, 0x30, 0x0a, 0x13, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, + 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x67, 0x68, 0x74, 0x53, + 0x74, 0x65, 0x70, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x48, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, + 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x78, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x56, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x72, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, + 0x11, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x56, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x0d, 0x44, + 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x39, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, 0x0a, 0x0b, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x37, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, + 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x45, + 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, + 0x61, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4a, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, + 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x6f, 0x6c, 0x64, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x47, 0x6f, 0x6c, + 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, + 0x6f, 0x6f, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x91, 0x07, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, + 0x63, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x43, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x43, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x6f, 0x77, 0x53, + 0x63, 0x61, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x68, 0x6f, 0x77, + 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x6f, 0x73, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x44, + 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, + 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x52, 0x6f, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x45, 0x66, 0x66, 0x65, + 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, 0x45, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x65, + 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x68, + 0x61, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, + 0x73, 0x68, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x50, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x50, 0x6c, + 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x73, 0x6f, + 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4a, + 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x1f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x73, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x69, 0x73, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x64, 0x6f, + 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, + 0x69, 0x73, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, + 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x46, 0x69, + 0x73, 0x68, 0x4f, 0x75, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x63, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x24, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, + 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, + 0x50, 0x61, 0x74, 0x68, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, + 0x6f, 0x6c, 0x64, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, + 0x6f, 0x6c, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x33, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x33, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x12, 0x1a, 0x0a, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x6f, 0x73, 0x73, + 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x42, 0x6f, + 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x4c, 0x69, 0x74, 0x74, + 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x10, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x6f, + 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x6f, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, + 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, + 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, + 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xda, 0x03, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, + 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x49, 0x74, 0x65, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, + 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x47, 0x43, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, + 0x43, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, + 0x0a, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x75, 0x74, 0x65, 0x78, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x46, 0x75, 0x72, 0x79, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x46, + 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, + 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, + 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, + 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, + 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, + 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, + 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, + 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, + 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, + 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, + 0x63, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, + 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x30, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, + 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, + 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x46, 0x6f, + 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, + 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x1d, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, + 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, + 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, + 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, + 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x22, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x37, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, + 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xdf, 0x02, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, + 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x12, 0x1e, 0x0a, + 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x33, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x33, 0x12, + 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x4c, 0x56, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, 0x79, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, + 0x65, 0x44, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, + 0x44, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x22, + 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, + 0x70, 0x74, 0x63, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, + 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfb, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, + 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x49, + 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, + 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, + 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, + 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, + 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, + 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, + 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, + 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, + 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf5, 0x11, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, + 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, + 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x6b, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x65, 0x73, + 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, + 0x77, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, + 0x4b, 0x69, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, + 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, + 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x42, + 0x65, 0x74, 0x44, 0x65, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x42, 0x65, 0x74, + 0x44, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x6f, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x42, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x69, 0x18, 0x1a, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x02, 0x41, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x2a, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x52, + 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1f, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, + 0x18, 0x20, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, + 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, 0x67, 0x18, 0x21, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, + 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x22, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, + 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x54, + 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x61, + 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x61, 0x6d, 0x65, + 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, + 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, + 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x50, + 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x24, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, + 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x72, + 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x2f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, + 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, + 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, + 0x61, 0x74, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, + 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4a, 0x61, 0x63, + 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x36, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1e, 0x0a, + 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x37, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, + 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x38, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x49, + 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x18, 0x3b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, + 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, + 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, + 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, + 0x28, 0x0a, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, + 0x65, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, + 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x72, 0x61, + 0x77, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x12, 0x1c, 0x0a, + 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x46, + 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x40, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, + 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x41, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x43, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, 0x44, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, + 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x45, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, + 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, + 0x18, 0x46, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x4d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, 0x61, 0x78, 0x18, + 0x47, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, 0x61, 0x78, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x48, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x18, 0x49, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x73, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x4a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xc1, 0x05, 0x0a, 0x0b, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, + 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x12, 0x16, 0x0a, 0x06, + 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, + 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x13, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, + 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x11, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, + 0x64, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x0b, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x75, + 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x75, + 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, + 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, + 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x64, 0x0a, 0x0e, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x69, 0x64, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, + 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, + 0x6d, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x12, 0x14, 0x0a, + 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, + 0x74, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x22, 0x3b, 0x0a, + 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x22, 0x4b, 0x0a, + 0x19, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf9, 0x01, 0x0a, 0x0b, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, + 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x5f, 0x50, 0x65, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, + 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, + 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, + 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa3, 0x01, + 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x36, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, + 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, 0x0a, 0x0b, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, + 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf1, 0x02, 0x0a, + 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, + 0x6f, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, 0x61, + 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x44, + 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, + 0x71, 0x75, 0x69, 0x74, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, + 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, 0x0a, 0x14, 0x44, + 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, + 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, + 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, + 0x64, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, + 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, + 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, + 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, + 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, + 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, + 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, + 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, + 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, + 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x47, 0x0a, + 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, + 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, + 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, + 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, + 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x19, + 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, @@ -11629,1043 +12243,563 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x22, 0x44, - 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x37, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, - 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xdf, 0x02, 0x0a, 0x0d, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, - 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, - 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x22, 0x3d, 0x0a, 0x12, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, 0x79, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, - 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, - 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, - 0x75, 0x6d, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, - 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, - 0x70, 0x74, 0x63, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfb, 0x02, 0x0a, 0x0f, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, - 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x55, - 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, - 0x75, 0x44, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, - 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, - 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, - 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, - 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, - 0x4d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x12, - 0x26, 0x0a, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, - 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf5, 0x11, 0x0a, 0x0b, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, - 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, - 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, - 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, - 0x64, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, - 0x64, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, - 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, - 0x6f, 0x77, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, - 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x46, 0x65, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x54, - 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4c, - 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, - 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, - 0x72, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x42, 0x65, 0x74, 0x44, 0x65, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x42, 0x65, 0x74, 0x44, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x6f, 0x74, 0x18, 0x19, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x69, 0x18, 0x1a, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x41, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x61, 0x6e, 0x6b, - 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, - 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x74, - 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x10, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, - 0x0a, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, - 0x70, 0x6f, 0x74, 0x18, 0x20, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, - 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, - 0x67, 0x18, 0x21, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, - 0x6d, 0x52, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, 0x61, 0x6b, - 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x22, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x6f, 0x62, - 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x6f, - 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x24, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x54, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x54, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x6d, 0x65, - 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, - 0x61, 0x6d, 0x65, 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x61, - 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x27, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x28, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, 0x1c, 0x0a, 0x09, - 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x2b, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, - 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x2c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, - 0x4e, 0x75, 0x6d, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x12, 0x28, 0x0a, 0x0f, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, - 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, - 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, - 0x6f, 0x64, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, - 0x61, 0x74, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, 0x74, - 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x42, 0x65, - 0x74, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, - 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x36, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, - 0x12, 0x1e, 0x0a, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x37, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, - 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x38, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, - 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x12, 0x28, - 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, - 0x6e, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, - 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, - 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x3c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, - 0x61, 0x78, 0x12, 0x28, 0x0a, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, - 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x42, 0x6f, 0x73, - 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x44, 0x72, 0x61, 0x77, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, - 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x18, 0x3f, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x40, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x41, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x69, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x43, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, - 0x44, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, - 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, - 0x70, 0x18, 0x45, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x44, 0x72, 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x4d, 0x61, 0x78, 0x18, 0x46, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, - 0x61, 0x78, 0x18, 0x47, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, - 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x48, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x49, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x73, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xc1, 0x05, - 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, - 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x12, - 0x16, 0x0a, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x47, 0x61, 0x69, - 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x47, 0x61, 0x69, - 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x08, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x37, 0x0a, 0x09, 0x47, - 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x87, 0x02, 0x0a, - 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, - 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, - 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, - 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, - 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb3, 0x01, - 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, - 0x65, 0x44, 0x69, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, - 0x44, 0x69, 0x66, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, - 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x64, - 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, - 0x47, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, - 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, - 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x74, 0x65, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, - 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, - 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, - 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa0, 0x01, - 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x44, + 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, + 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x22, 0x3b, + 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x07, 0x44, + 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, + 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, + 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, + 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x4e, + 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, + 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, + 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x65, + 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x42, + 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, + 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, + 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, + 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, + 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, + 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x78, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, + 0x59, 0x65, 0x61, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x70, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x50, 0x72, 0x6f, + 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x70, 0x44, 0x65, + 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x72, 0x6f, 0x70, 0x44, 0x65, 0x63, + 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x59, 0x65, 0x61, 0x72, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x59, 0x65, 0x61, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x0b, 0x44, 0x42, 0x5f, + 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x61, + 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xe9, 0x02, 0x0a, 0x0b, + 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x44, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x44, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x49, 0x74, + 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x74, 0x65, 0x6d, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x65, + 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, - 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, - 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf9, 0x01, - 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, - 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, - 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, - 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, - 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0xa3, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, 0x0a, 0x0b, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, + 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x4f, 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, + 0x64, 0x64, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, + 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, + 0x64, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, + 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, + 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, + 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd8, 0x04, 0x0a, 0x12, 0x44, + 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, + 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, + 0x64, 0x12, 0x41, 0x0a, 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x2e, 0x47, + 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x47, 0x6f, 0x6c, + 0x64, 0x45, 0x78, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, + 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x12, 0x1c, + 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x1a, 0x3a, 0x0a, 0x0c, 0x47, 0x6f, + 0x6c, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, - 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0xf1, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, - 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, - 0x2e, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, - 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, - 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, - 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, - 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, - 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, - 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, - 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, - 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, - 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, - 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, - 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, - 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, - 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, - 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, - 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, - 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, - 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, - 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, - 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, - 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, - 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, - 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, - 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, - 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, - 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, - 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, - 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x31, 0x0a, - 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, - 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, - 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, - 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, - 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, - 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, - 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, - 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, - 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, - 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, - 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x78, 0x0a, 0x12, 0x44, 0x42, 0x5f, - 0x4e, 0x65, 0x77, 0x59, 0x65, 0x61, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, - 0x70, 0x44, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x72, 0x6f, 0x70, - 0x44, 0x65, 0x63, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x59, 0x65, 0x61, - 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x59, 0x65, 0x61, 0x72, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x0b, - 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, - 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, - 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, - 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, - 0x6f, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xe9, - 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, - 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x4b, 0x69, 0x6c, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, - 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, - 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, - 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, - 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, - 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, - 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, - 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, - 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, - 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, - 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, - 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd8, 0x04, - 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, - 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x78, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, - 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x41, 0x0a, 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, - 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x45, 0x78, 0x63, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, - 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x22, 0x0a, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, - 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x1a, 0x3a, 0x0a, - 0x0c, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x50, - 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, - 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x5b, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, - 0x50, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, - 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, - 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x30, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, + 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, + 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0xa5, 0x05, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, - 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, - 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, - 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, - 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, - 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, - 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, - 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, - 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, - 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x61, - 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, - 0x62, 0x52, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x61, 0x72, - 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, - 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, - 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, 0x44, 0x42, 0x5f, 0x50, 0x6f, - 0x74, 0x4f, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, - 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, - 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x03, - 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, - 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x35, - 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, - 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, - 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, + 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, + 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, + 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, + 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, - 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, - 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, - 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, - 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, - 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x31, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, - 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, - 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x0f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, - 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x83, 0x04, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, - 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, - 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, - 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, - 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x22, - 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, - 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, - 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x54, - 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, - 0x6b, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, - 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, - 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, - 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, - 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, - 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, - 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x44, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x05, + 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, + 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x4c, + 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, + 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, + 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, + 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, + 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, + 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, + 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, + 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, + 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, + 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x56, + 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, + 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x03, 0x0a, 0x0f, 0x44, + 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x47, + 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x12, 0x3b, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, + 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, + 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0xbb, 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, - 0x6f, 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, - 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, - 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, - 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, - 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, - 0x6f, 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, - 0x6f, 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, - 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, - 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, - 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, - 0x6f, 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, - 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, - 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, - 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, - 0x79, 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, - 0x4d, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, - 0x16, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, - 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, - 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, - 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x44, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, - 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, - 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, - 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x54, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, - 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, - 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, - 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, - 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, - 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, - 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, - 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, - 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, - 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0xce, 0x06, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, + 0x38, 0x01, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, + 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, + 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, + 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, + 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, + 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, + 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, + 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, + 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x83, 0x04, 0x0a, + 0x07, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, + 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, + 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, + 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, + 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, + 0x6b, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, + 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, + 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, + 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, + 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, + 0x4b, 0x65, 0x79, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, + 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, + 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, + 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x20, + 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, + 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x44, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, + 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, + 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, + 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, + 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, + 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, + 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, + 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, + 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, + 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, + 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, + 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, + 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, + 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, + 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, + 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, + 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, + 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, + 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, - 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, - 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, - 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, - 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, - 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, - 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x39, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x1a, 0x3d, 0x0a, 0x0f, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, - 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7c, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, - 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, - 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, - 0x56, 0x49, 0x50, 0x44, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x49, - 0x50, 0x44, 0x65, 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, - 0x6f, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, - 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, + 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, + 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, + 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, + 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, + 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, + 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, + 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, + 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, + 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, + 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x22, 0x31, + 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0xce, 0x06, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x50, 0x72, 0x69, + 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, + 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x39, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x39, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x53, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, + 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x7c, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, + 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x49, 0x50, + 0x44, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x49, 0x50, 0x44, 0x65, + 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, + 0x50, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, + 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, + 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -12680,265 +12814,270 @@ func file_protocol_server_pbdata_proto_rawDescGZIP() []byte { return file_protocol_server_pbdata_proto_rawDescData } -var file_protocol_server_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 161) +var file_protocol_server_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 164) var file_protocol_server_pbdata_proto_goTypes = []interface{}{ - (*DB_ActSign)(nil), // 0: server.DB_ActSign - (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray - (*DB_Activity1)(nil), // 2: server.DB_Activity1 - (*DB_Activity1Array)(nil), // 3: server.DB_Activity1Array - (*DB_AnimalColor)(nil), // 4: server.DB_AnimalColor - (*DB_AnimalColorArray)(nil), // 5: server.DB_AnimalColorArray - (*DB_ArtilleryRate)(nil), // 6: server.DB_ArtilleryRate - (*DB_ArtilleryRateArray)(nil), // 7: server.DB_ArtilleryRateArray - (*DB_ArtillerySkin)(nil), // 8: server.DB_ArtillerySkin - (*DB_ArtillerySkinArray)(nil), // 9: server.DB_ArtillerySkinArray - (*DB_BlackWhite)(nil), // 10: server.DB_BlackWhite - (*DB_BlackWhiteArray)(nil), // 11: server.DB_BlackWhiteArray - (*DB_CardsJD)(nil), // 12: server.DB_CardsJD - (*DB_CardsJDArray)(nil), // 13: server.DB_CardsJDArray - (*DB_CardsYuLe)(nil), // 14: server.DB_CardsYuLe - (*DB_CardsYuLeArray)(nil), // 15: server.DB_CardsYuLeArray - (*DB_ChessBilledRules)(nil), // 16: server.DB_ChessBilledRules - (*DB_ChessBilledRulesArray)(nil), // 17: server.DB_ChessBilledRulesArray - (*DB_ChessMatchRules)(nil), // 18: server.DB_ChessMatchRules - (*DB_ChessMatchRulesArray)(nil), // 19: server.DB_ChessMatchRulesArray - (*DB_ChessRank)(nil), // 20: server.DB_ChessRank - (*DB_ChessRankArray)(nil), // 21: server.DB_ChessRankArray - (*DB_ClientVer)(nil), // 22: server.DB_ClientVer - (*DB_ClientVerArray)(nil), // 23: server.DB_ClientVerArray - (*DB_CollectBox)(nil), // 24: server.DB_CollectBox - (*DB_CollectBoxArray)(nil), // 25: server.DB_CollectBoxArray - (*DB_CollectBoxGain)(nil), // 26: server.DB_CollectBoxGain - (*DB_CollectBoxGainArray)(nil), // 27: server.DB_CollectBoxGainArray - (*DB_CrashSearch)(nil), // 28: server.DB_CrashSearch - (*DB_CrashSearchArray)(nil), // 29: server.DB_CrashSearchArray - (*DB_Createroom)(nil), // 30: server.DB_Createroom - (*DB_CreateroomArray)(nil), // 31: server.DB_CreateroomArray - (*DB_Fish)(nil), // 32: server.DB_Fish - (*DB_FishArray)(nil), // 33: server.DB_FishArray - (*DB_FishOut)(nil), // 34: server.DB_FishOut - (*DB_FishOutArray)(nil), // 35: server.DB_FishOutArray - (*DB_FishPath)(nil), // 36: server.DB_FishPath - (*DB_FishPathArray)(nil), // 37: server.DB_FishPathArray - (*DB_FishRoom)(nil), // 38: server.DB_FishRoom - (*DB_FishRoomArray)(nil), // 39: server.DB_FishRoomArray - (*DB_FishSkill)(nil), // 40: server.DB_FishSkill - (*DB_FishSkillArray)(nil), // 41: server.DB_FishSkillArray - (*DB_FortuneGod_Odds)(nil), // 42: server.DB_FortuneGod_Odds - (*DB_FortuneGod_OddsArray)(nil), // 43: server.DB_FortuneGod_OddsArray - (*DB_FortuneGod_TurnRate)(nil), // 44: server.DB_FortuneGod_TurnRate - (*DB_FortuneGod_TurnRateArray)(nil), // 45: server.DB_FortuneGod_TurnRateArray - (*DB_FortuneGod_Weight)(nil), // 46: server.DB_FortuneGod_Weight - (*DB_FortuneGod_WeightArray)(nil), // 47: server.DB_FortuneGod_WeightArray - (*DB_FortuneGod_WeightCondition)(nil), // 48: server.DB_FortuneGod_WeightCondition - (*DB_FortuneGod_WeightConditionArray)(nil), // 49: server.DB_FortuneGod_WeightConditionArray - (*DB_GamMatchLV)(nil), // 50: server.DB_GamMatchLV - (*DB_GamMatchLVArray)(nil), // 51: server.DB_GamMatchLVArray - (*DB_GameBankruptcy)(nil), // 52: server.DB_GameBankruptcy - (*DB_GameBankruptcyArray)(nil), // 53: server.DB_GameBankruptcyArray - (*DB_GameCoinPool)(nil), // 54: server.DB_GameCoinPool - (*DB_GameCoinPoolArray)(nil), // 55: server.DB_GameCoinPoolArray - (*DB_GameFree)(nil), // 56: server.DB_GameFree - (*DB_GameFreeArray)(nil), // 57: server.DB_GameFreeArray - (*DB_GameItem)(nil), // 58: server.DB_GameItem - (*DB_GameItemArray)(nil), // 59: server.DB_GameItemArray - (*DB_GameMatchLevel)(nil), // 60: server.DB_GameMatchLevel - (*DB_GameMatchLevelArray)(nil), // 61: server.DB_GameMatchLevelArray - (*DB_GameRule)(nil), // 62: server.DB_GameRule - (*DB_GameRuleArray)(nil), // 63: server.DB_GameRuleArray - (*DB_GameSubsidy)(nil), // 64: server.DB_GameSubsidy - (*DB_GameSubsidyArray)(nil), // 65: server.DB_GameSubsidyArray - (*DB_Game_Drop)(nil), // 66: server.DB_Game_Drop - (*DB_Game_DropArray)(nil), // 67: server.DB_Game_DropArray - (*DB_Game_Introduction)(nil), // 68: server.DB_Game_Introduction - (*DB_Game_IntroductionArray)(nil), // 69: server.DB_Game_IntroductionArray - (*DB_Game_Pet)(nil), // 70: server.DB_Game_Pet - (*DB_Game_PetArray)(nil), // 71: server.DB_Game_PetArray - (*DB_Game_Role)(nil), // 72: server.DB_Game_Role - (*DB_Game_RoleArray)(nil), // 73: server.DB_Game_RoleArray - (*DB_GiftBox)(nil), // 74: server.DB_GiftBox - (*DB_GiftBoxArray)(nil), // 75: server.DB_GiftBoxArray - (*DB_GiftCard)(nil), // 76: server.DB_GiftCard - (*DB_GiftCardArray)(nil), // 77: server.DB_GiftCardArray - (*DB_IceAgeElementRate)(nil), // 78: server.DB_IceAgeElementRate - (*DB_IceAgeElementRateArray)(nil), // 79: server.DB_IceAgeElementRateArray - (*DB_Legend_Odds)(nil), // 80: server.DB_Legend_Odds - (*DB_Legend_OddsArray)(nil), // 81: server.DB_Legend_OddsArray - (*DB_Legend_TurnRate)(nil), // 82: server.DB_Legend_TurnRate - (*DB_Legend_TurnRateArray)(nil), // 83: server.DB_Legend_TurnRateArray - (*DB_Legend_Weight)(nil), // 84: server.DB_Legend_Weight - (*DB_Legend_WeightArray)(nil), // 85: server.DB_Legend_WeightArray - (*DB_Legend_WeightCondition)(nil), // 86: server.DB_Legend_WeightCondition - (*DB_Legend_WeightConditionArray)(nil), // 87: server.DB_Legend_WeightConditionArray - (*DB_MatchRank)(nil), // 88: server.DB_MatchRank - (*DB_MatchRankArray)(nil), // 89: server.DB_MatchRankArray - (*DB_Name)(nil), // 90: server.DB_Name - (*DB_NameArray)(nil), // 91: server.DB_NameArray - (*DB_NameBoy)(nil), // 92: server.DB_NameBoy - (*DB_NameBoyArray)(nil), // 93: server.DB_NameBoyArray - (*DB_NameGirl)(nil), // 94: server.DB_NameGirl - (*DB_NameGirlArray)(nil), // 95: server.DB_NameGirlArray - (*DB_NewPlayer)(nil), // 96: server.DB_NewPlayer - (*DB_NewPlayerArray)(nil), // 97: server.DB_NewPlayerArray - (*DB_NewYearActivity)(nil), // 98: server.DB_NewYearActivity - (*DB_NewYearActivityArray)(nil), // 99: server.DB_NewYearActivityArray - (*DB_PassShow)(nil), // 100: server.DB_PassShow - (*DB_PassShowArray)(nil), // 101: server.DB_PassShowArray - (*DB_PetSkill)(nil), // 102: server.DB_PetSkill - (*DB_PetSkillArray)(nil), // 103: server.DB_PetSkillArray - (*DB_PhoneLottery)(nil), // 104: server.DB_PhoneLottery - (*DB_PhoneLotteryArray)(nil), // 105: server.DB_PhoneLotteryArray - (*DB_PigBank_Diamond)(nil), // 106: server.DB_PigBank_Diamond - (*DB_PigBank_DiamondArray)(nil), // 107: server.DB_PigBank_DiamondArray - (*DB_Pigbank_Prop)(nil), // 108: server.DB_Pigbank_Prop - (*DB_Pigbank_PropArray)(nil), // 109: server.DB_Pigbank_PropArray - (*DB_PlayerExp)(nil), // 110: server.DB_PlayerExp - (*DB_PlayerExpArray)(nil), // 111: server.DB_PlayerExpArray - (*DB_PlayerType)(nil), // 112: server.DB_PlayerType - (*DB_PlayerTypeArray)(nil), // 113: server.DB_PlayerTypeArray - (*DB_PotOdd)(nil), // 114: server.DB_PotOdd - (*DB_PotOddArray)(nil), // 115: server.DB_PotOddArray - (*DB_PropExchange)(nil), // 116: server.DB_PropExchange - (*DB_PropExchangeArray)(nil), // 117: server.DB_PropExchangeArray - (*DB_RankCycle)(nil), // 118: server.DB_RankCycle - (*DB_RankCycleArray)(nil), // 119: server.DB_RankCycleArray - (*DB_RankLevel)(nil), // 120: server.DB_RankLevel - (*DB_RankLevelArray)(nil), // 121: server.DB_RankLevelArray - (*DB_RankReward)(nil), // 122: server.DB_RankReward - (*DB_RankRewardArray)(nil), // 123: server.DB_RankRewardArray - (*DB_Sensitive_Words)(nil), // 124: server.DB_Sensitive_Words - (*DB_Sensitive_WordsArray)(nil), // 125: server.DB_Sensitive_WordsArray - (*DB_Skin)(nil), // 126: server.DB_Skin - (*DB_SkinArray)(nil), // 127: server.DB_SkinArray - (*DB_SkinLevel)(nil), // 128: server.DB_SkinLevel - (*DB_SkinLevelArray)(nil), // 129: server.DB_SkinLevelArray - (*DB_SlotRateWeight)(nil), // 130: server.DB_SlotRateWeight - (*DB_SlotRateWeightArray)(nil), // 131: server.DB_SlotRateWeightArray - (*DB_SystemChance)(nil), // 132: server.DB_SystemChance - (*DB_SystemChanceArray)(nil), // 133: server.DB_SystemChanceArray - (*DB_Task)(nil), // 134: server.DB_Task - (*DB_TaskArray)(nil), // 135: server.DB_TaskArray - (*DB_ThirdPlatformGameMapping)(nil), // 136: server.DB_ThirdPlatformGameMapping - (*DB_ThirdPlatformGameMappingArray)(nil), // 137: server.DB_ThirdPlatformGameMappingArray - (*DB_Tips)(nil), // 138: server.DB_Tips - (*DB_TipsArray)(nil), // 139: server.DB_TipsArray - (*DB_VIP)(nil), // 140: server.DB_VIP - (*DB_VIPArray)(nil), // 141: server.DB_VIPArray - (*DB_VIPShow)(nil), // 142: server.DB_VIPShow - (*DB_VIPShowArray)(nil), // 143: server.DB_VIPShowArray - nil, // 144: server.DB_CollectBox.ItemIDEntry - nil, // 145: server.DB_GameItem.GainEntry - nil, // 146: server.DB_GameItem.CompoundEntry - nil, // 147: server.DB_GiftBox.ItemIDEntry - nil, // 148: server.DB_GiftCard.RewardsEntry - nil, // 149: server.DB_GiftCard.DayRewardsEntry - nil, // 150: server.DB_PetSkill.ItemConsumEntry - nil, // 151: server.DB_PigBank_Diamond.GoldExcEntry - nil, // 152: server.DB_PigBank_Diamond.DiamondExcEntry - nil, // 153: server.DB_PropExchange.CostEntry - nil, // 154: server.DB_PropExchange.GainEntry - nil, // 155: server.DB_PropExchange.CustomEntry - nil, // 156: server.DB_Skin.UnlockItemEntry - nil, // 157: server.DB_SkinLevel.UpItemEntry - nil, // 158: server.DB_Task.AwardEntry - nil, // 159: server.DB_VIP.Privilege7Entry - nil, // 160: server.DB_VIP.AwardEntry + (*DB_ACTPushCoin)(nil), // 0: server.DB_ACTPushCoin + (*DB_ACTPushCoinArray)(nil), // 1: server.DB_ACTPushCoinArray + (*DB_ActSign)(nil), // 2: server.DB_ActSign + (*DB_ActSignArray)(nil), // 3: server.DB_ActSignArray + (*DB_Activity1)(nil), // 4: server.DB_Activity1 + (*DB_Activity1Array)(nil), // 5: server.DB_Activity1Array + (*DB_AnimalColor)(nil), // 6: server.DB_AnimalColor + (*DB_AnimalColorArray)(nil), // 7: server.DB_AnimalColorArray + (*DB_ArtilleryRate)(nil), // 8: server.DB_ArtilleryRate + (*DB_ArtilleryRateArray)(nil), // 9: server.DB_ArtilleryRateArray + (*DB_ArtillerySkin)(nil), // 10: server.DB_ArtillerySkin + (*DB_ArtillerySkinArray)(nil), // 11: server.DB_ArtillerySkinArray + (*DB_BlackWhite)(nil), // 12: server.DB_BlackWhite + (*DB_BlackWhiteArray)(nil), // 13: server.DB_BlackWhiteArray + (*DB_CardsJD)(nil), // 14: server.DB_CardsJD + (*DB_CardsJDArray)(nil), // 15: server.DB_CardsJDArray + (*DB_CardsYuLe)(nil), // 16: server.DB_CardsYuLe + (*DB_CardsYuLeArray)(nil), // 17: server.DB_CardsYuLeArray + (*DB_ChessBilledRules)(nil), // 18: server.DB_ChessBilledRules + (*DB_ChessBilledRulesArray)(nil), // 19: server.DB_ChessBilledRulesArray + (*DB_ChessMatchRules)(nil), // 20: server.DB_ChessMatchRules + (*DB_ChessMatchRulesArray)(nil), // 21: server.DB_ChessMatchRulesArray + (*DB_ChessRank)(nil), // 22: server.DB_ChessRank + (*DB_ChessRankArray)(nil), // 23: server.DB_ChessRankArray + (*DB_ClientVer)(nil), // 24: server.DB_ClientVer + (*DB_ClientVerArray)(nil), // 25: server.DB_ClientVerArray + (*DB_CollectBox)(nil), // 26: server.DB_CollectBox + (*DB_CollectBoxArray)(nil), // 27: server.DB_CollectBoxArray + (*DB_CollectBoxGain)(nil), // 28: server.DB_CollectBoxGain + (*DB_CollectBoxGainArray)(nil), // 29: server.DB_CollectBoxGainArray + (*DB_CrashSearch)(nil), // 30: server.DB_CrashSearch + (*DB_CrashSearchArray)(nil), // 31: server.DB_CrashSearchArray + (*DB_Createroom)(nil), // 32: server.DB_Createroom + (*DB_CreateroomArray)(nil), // 33: server.DB_CreateroomArray + (*DB_Fish)(nil), // 34: server.DB_Fish + (*DB_FishArray)(nil), // 35: server.DB_FishArray + (*DB_FishOut)(nil), // 36: server.DB_FishOut + (*DB_FishOutArray)(nil), // 37: server.DB_FishOutArray + (*DB_FishPath)(nil), // 38: server.DB_FishPath + (*DB_FishPathArray)(nil), // 39: server.DB_FishPathArray + (*DB_FishRoom)(nil), // 40: server.DB_FishRoom + (*DB_FishRoomArray)(nil), // 41: server.DB_FishRoomArray + (*DB_FishSkill)(nil), // 42: server.DB_FishSkill + (*DB_FishSkillArray)(nil), // 43: server.DB_FishSkillArray + (*DB_FortuneGod_Odds)(nil), // 44: server.DB_FortuneGod_Odds + (*DB_FortuneGod_OddsArray)(nil), // 45: server.DB_FortuneGod_OddsArray + (*DB_FortuneGod_TurnRate)(nil), // 46: server.DB_FortuneGod_TurnRate + (*DB_FortuneGod_TurnRateArray)(nil), // 47: server.DB_FortuneGod_TurnRateArray + (*DB_FortuneGod_Weight)(nil), // 48: server.DB_FortuneGod_Weight + (*DB_FortuneGod_WeightArray)(nil), // 49: server.DB_FortuneGod_WeightArray + (*DB_FortuneGod_WeightCondition)(nil), // 50: server.DB_FortuneGod_WeightCondition + (*DB_FortuneGod_WeightConditionArray)(nil), // 51: server.DB_FortuneGod_WeightConditionArray + (*DB_GamMatchLV)(nil), // 52: server.DB_GamMatchLV + (*DB_GamMatchLVArray)(nil), // 53: server.DB_GamMatchLVArray + (*DB_GameBankruptcy)(nil), // 54: server.DB_GameBankruptcy + (*DB_GameBankruptcyArray)(nil), // 55: server.DB_GameBankruptcyArray + (*DB_GameCoinPool)(nil), // 56: server.DB_GameCoinPool + (*DB_GameCoinPoolArray)(nil), // 57: server.DB_GameCoinPoolArray + (*DB_GameFree)(nil), // 58: server.DB_GameFree + (*DB_GameFreeArray)(nil), // 59: server.DB_GameFreeArray + (*DB_GameItem)(nil), // 60: server.DB_GameItem + (*DB_GameItemArray)(nil), // 61: server.DB_GameItemArray + (*DB_GameMatchLevel)(nil), // 62: server.DB_GameMatchLevel + (*DB_GameMatchLevelArray)(nil), // 63: server.DB_GameMatchLevelArray + (*DB_GameRule)(nil), // 64: server.DB_GameRule + (*DB_GameRuleArray)(nil), // 65: server.DB_GameRuleArray + (*DB_GameSubsidy)(nil), // 66: server.DB_GameSubsidy + (*DB_GameSubsidyArray)(nil), // 67: server.DB_GameSubsidyArray + (*DB_Game_Drop)(nil), // 68: server.DB_Game_Drop + (*DB_Game_DropArray)(nil), // 69: server.DB_Game_DropArray + (*DB_Game_Introduction)(nil), // 70: server.DB_Game_Introduction + (*DB_Game_IntroductionArray)(nil), // 71: server.DB_Game_IntroductionArray + (*DB_Game_Pet)(nil), // 72: server.DB_Game_Pet + (*DB_Game_PetArray)(nil), // 73: server.DB_Game_PetArray + (*DB_Game_Role)(nil), // 74: server.DB_Game_Role + (*DB_Game_RoleArray)(nil), // 75: server.DB_Game_RoleArray + (*DB_GiftBox)(nil), // 76: server.DB_GiftBox + (*DB_GiftBoxArray)(nil), // 77: server.DB_GiftBoxArray + (*DB_GiftCard)(nil), // 78: server.DB_GiftCard + (*DB_GiftCardArray)(nil), // 79: server.DB_GiftCardArray + (*DB_IceAgeElementRate)(nil), // 80: server.DB_IceAgeElementRate + (*DB_IceAgeElementRateArray)(nil), // 81: server.DB_IceAgeElementRateArray + (*DB_Legend_Odds)(nil), // 82: server.DB_Legend_Odds + (*DB_Legend_OddsArray)(nil), // 83: server.DB_Legend_OddsArray + (*DB_Legend_TurnRate)(nil), // 84: server.DB_Legend_TurnRate + (*DB_Legend_TurnRateArray)(nil), // 85: server.DB_Legend_TurnRateArray + (*DB_Legend_Weight)(nil), // 86: server.DB_Legend_Weight + (*DB_Legend_WeightArray)(nil), // 87: server.DB_Legend_WeightArray + (*DB_Legend_WeightCondition)(nil), // 88: server.DB_Legend_WeightCondition + (*DB_Legend_WeightConditionArray)(nil), // 89: server.DB_Legend_WeightConditionArray + (*DB_MatchRank)(nil), // 90: server.DB_MatchRank + (*DB_MatchRankArray)(nil), // 91: server.DB_MatchRankArray + (*DB_Name)(nil), // 92: server.DB_Name + (*DB_NameArray)(nil), // 93: server.DB_NameArray + (*DB_NameBoy)(nil), // 94: server.DB_NameBoy + (*DB_NameBoyArray)(nil), // 95: server.DB_NameBoyArray + (*DB_NameGirl)(nil), // 96: server.DB_NameGirl + (*DB_NameGirlArray)(nil), // 97: server.DB_NameGirlArray + (*DB_NewPlayer)(nil), // 98: server.DB_NewPlayer + (*DB_NewPlayerArray)(nil), // 99: server.DB_NewPlayerArray + (*DB_NewYearActivity)(nil), // 100: server.DB_NewYearActivity + (*DB_NewYearActivityArray)(nil), // 101: server.DB_NewYearActivityArray + (*DB_PassShow)(nil), // 102: server.DB_PassShow + (*DB_PassShowArray)(nil), // 103: server.DB_PassShowArray + (*DB_PetSkill)(nil), // 104: server.DB_PetSkill + (*DB_PetSkillArray)(nil), // 105: server.DB_PetSkillArray + (*DB_PhoneLottery)(nil), // 106: server.DB_PhoneLottery + (*DB_PhoneLotteryArray)(nil), // 107: server.DB_PhoneLotteryArray + (*DB_PigBank_Diamond)(nil), // 108: server.DB_PigBank_Diamond + (*DB_PigBank_DiamondArray)(nil), // 109: server.DB_PigBank_DiamondArray + (*DB_Pigbank_Prop)(nil), // 110: server.DB_Pigbank_Prop + (*DB_Pigbank_PropArray)(nil), // 111: server.DB_Pigbank_PropArray + (*DB_PlayerExp)(nil), // 112: server.DB_PlayerExp + (*DB_PlayerExpArray)(nil), // 113: server.DB_PlayerExpArray + (*DB_PlayerType)(nil), // 114: server.DB_PlayerType + (*DB_PlayerTypeArray)(nil), // 115: server.DB_PlayerTypeArray + (*DB_PotOdd)(nil), // 116: server.DB_PotOdd + (*DB_PotOddArray)(nil), // 117: server.DB_PotOddArray + (*DB_PropExchange)(nil), // 118: server.DB_PropExchange + (*DB_PropExchangeArray)(nil), // 119: server.DB_PropExchangeArray + (*DB_RankCycle)(nil), // 120: server.DB_RankCycle + (*DB_RankCycleArray)(nil), // 121: server.DB_RankCycleArray + (*DB_RankLevel)(nil), // 122: server.DB_RankLevel + (*DB_RankLevelArray)(nil), // 123: server.DB_RankLevelArray + (*DB_RankReward)(nil), // 124: server.DB_RankReward + (*DB_RankRewardArray)(nil), // 125: server.DB_RankRewardArray + (*DB_Sensitive_Words)(nil), // 126: server.DB_Sensitive_Words + (*DB_Sensitive_WordsArray)(nil), // 127: server.DB_Sensitive_WordsArray + (*DB_Skin)(nil), // 128: server.DB_Skin + (*DB_SkinArray)(nil), // 129: server.DB_SkinArray + (*DB_SkinLevel)(nil), // 130: server.DB_SkinLevel + (*DB_SkinLevelArray)(nil), // 131: server.DB_SkinLevelArray + (*DB_SlotRateWeight)(nil), // 132: server.DB_SlotRateWeight + (*DB_SlotRateWeightArray)(nil), // 133: server.DB_SlotRateWeightArray + (*DB_SystemChance)(nil), // 134: server.DB_SystemChance + (*DB_SystemChanceArray)(nil), // 135: server.DB_SystemChanceArray + (*DB_Task)(nil), // 136: server.DB_Task + (*DB_TaskArray)(nil), // 137: server.DB_TaskArray + (*DB_ThirdPlatformGameMapping)(nil), // 138: server.DB_ThirdPlatformGameMapping + (*DB_ThirdPlatformGameMappingArray)(nil), // 139: server.DB_ThirdPlatformGameMappingArray + (*DB_Tips)(nil), // 140: server.DB_Tips + (*DB_TipsArray)(nil), // 141: server.DB_TipsArray + (*DB_VIP)(nil), // 142: server.DB_VIP + (*DB_VIPArray)(nil), // 143: server.DB_VIPArray + (*DB_VIPShow)(nil), // 144: server.DB_VIPShow + (*DB_VIPShowArray)(nil), // 145: server.DB_VIPShowArray + nil, // 146: server.DB_ACTPushCoin.GainEntry + nil, // 147: server.DB_CollectBox.ItemIDEntry + nil, // 148: server.DB_GameItem.GainEntry + nil, // 149: server.DB_GameItem.CompoundEntry + nil, // 150: server.DB_GiftBox.ItemIDEntry + nil, // 151: server.DB_GiftCard.RewardsEntry + nil, // 152: server.DB_GiftCard.DayRewardsEntry + nil, // 153: server.DB_PetSkill.ItemConsumEntry + nil, // 154: server.DB_PigBank_Diamond.GoldExcEntry + nil, // 155: server.DB_PigBank_Diamond.DiamondExcEntry + nil, // 156: server.DB_PropExchange.CostEntry + nil, // 157: server.DB_PropExchange.GainEntry + nil, // 158: server.DB_PropExchange.CustomEntry + nil, // 159: server.DB_Skin.UnlockItemEntry + nil, // 160: server.DB_SkinLevel.UpItemEntry + nil, // 161: server.DB_Task.AwardEntry + nil, // 162: server.DB_VIP.Privilege7Entry + nil, // 163: server.DB_VIP.AwardEntry } var file_protocol_server_pbdata_proto_depIdxs = []int32{ - 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign - 2, // 1: server.DB_Activity1Array.Arr:type_name -> server.DB_Activity1 - 4, // 2: server.DB_AnimalColorArray.Arr:type_name -> server.DB_AnimalColor - 6, // 3: server.DB_ArtilleryRateArray.Arr:type_name -> server.DB_ArtilleryRate - 8, // 4: server.DB_ArtillerySkinArray.Arr:type_name -> server.DB_ArtillerySkin - 10, // 5: server.DB_BlackWhiteArray.Arr:type_name -> server.DB_BlackWhite - 12, // 6: server.DB_CardsJDArray.Arr:type_name -> server.DB_CardsJD - 14, // 7: server.DB_CardsYuLeArray.Arr:type_name -> server.DB_CardsYuLe - 16, // 8: server.DB_ChessBilledRulesArray.Arr:type_name -> server.DB_ChessBilledRules - 18, // 9: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules - 20, // 10: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank - 22, // 11: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer - 144, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry - 24, // 13: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox - 26, // 14: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain - 28, // 15: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch - 30, // 16: server.DB_CreateroomArray.Arr:type_name -> server.DB_Createroom - 32, // 17: server.DB_FishArray.Arr:type_name -> server.DB_Fish - 34, // 18: server.DB_FishOutArray.Arr:type_name -> server.DB_FishOut - 36, // 19: server.DB_FishPathArray.Arr:type_name -> server.DB_FishPath - 38, // 20: server.DB_FishRoomArray.Arr:type_name -> server.DB_FishRoom - 40, // 21: server.DB_FishSkillArray.Arr:type_name -> server.DB_FishSkill - 42, // 22: server.DB_FortuneGod_OddsArray.Arr:type_name -> server.DB_FortuneGod_Odds - 44, // 23: server.DB_FortuneGod_TurnRateArray.Arr:type_name -> server.DB_FortuneGod_TurnRate - 46, // 24: server.DB_FortuneGod_WeightArray.Arr:type_name -> server.DB_FortuneGod_Weight - 48, // 25: server.DB_FortuneGod_WeightConditionArray.Arr:type_name -> server.DB_FortuneGod_WeightCondition - 50, // 26: server.DB_GamMatchLVArray.Arr:type_name -> server.DB_GamMatchLV - 52, // 27: server.DB_GameBankruptcyArray.Arr:type_name -> server.DB_GameBankruptcy - 54, // 28: server.DB_GameCoinPoolArray.Arr:type_name -> server.DB_GameCoinPool - 56, // 29: server.DB_GameFreeArray.Arr:type_name -> server.DB_GameFree - 145, // 30: server.DB_GameItem.Gain:type_name -> server.DB_GameItem.GainEntry - 146, // 31: server.DB_GameItem.Compound:type_name -> server.DB_GameItem.CompoundEntry - 58, // 32: server.DB_GameItemArray.Arr:type_name -> server.DB_GameItem - 60, // 33: server.DB_GameMatchLevelArray.Arr:type_name -> server.DB_GameMatchLevel - 62, // 34: server.DB_GameRuleArray.Arr:type_name -> server.DB_GameRule - 64, // 35: server.DB_GameSubsidyArray.Arr:type_name -> server.DB_GameSubsidy - 66, // 36: server.DB_Game_DropArray.Arr:type_name -> server.DB_Game_Drop - 68, // 37: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction - 70, // 38: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet - 72, // 39: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role - 147, // 40: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry - 74, // 41: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox - 148, // 42: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry - 149, // 43: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry - 76, // 44: server.DB_GiftCardArray.Arr:type_name -> server.DB_GiftCard - 78, // 45: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate - 80, // 46: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds - 82, // 47: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate - 84, // 48: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight - 86, // 49: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition - 88, // 50: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank - 90, // 51: server.DB_NameArray.Arr:type_name -> server.DB_Name - 92, // 52: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy - 94, // 53: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl - 96, // 54: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer - 98, // 55: server.DB_NewYearActivityArray.Arr:type_name -> server.DB_NewYearActivity - 100, // 56: server.DB_PassShowArray.Arr:type_name -> server.DB_PassShow - 150, // 57: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry - 102, // 58: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill - 104, // 59: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery - 151, // 60: server.DB_PigBank_Diamond.GoldExc:type_name -> server.DB_PigBank_Diamond.GoldExcEntry - 152, // 61: server.DB_PigBank_Diamond.DiamondExc:type_name -> server.DB_PigBank_Diamond.DiamondExcEntry - 106, // 62: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond - 108, // 63: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop - 110, // 64: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp - 112, // 65: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType - 114, // 66: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 153, // 67: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry - 154, // 68: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 155, // 69: server.DB_PropExchange.Custom:type_name -> server.DB_PropExchange.CustomEntry - 116, // 70: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 118, // 71: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 120, // 72: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 122, // 73: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 124, // 74: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 156, // 75: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry - 126, // 76: server.DB_SkinArray.Arr:type_name -> server.DB_Skin - 157, // 77: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry - 128, // 78: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel - 130, // 79: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 132, // 80: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 158, // 81: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 134, // 82: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 136, // 83: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 138, // 84: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 159, // 85: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 160, // 86: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 140, // 87: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 142, // 88: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow - 89, // [89:89] is the sub-list for method output_type - 89, // [89:89] is the sub-list for method input_type - 89, // [89:89] is the sub-list for extension type_name - 89, // [89:89] is the sub-list for extension extendee - 0, // [0:89] is the sub-list for field type_name + 146, // 0: server.DB_ACTPushCoin.Gain:type_name -> server.DB_ACTPushCoin.GainEntry + 0, // 1: server.DB_ACTPushCoinArray.Arr:type_name -> server.DB_ACTPushCoin + 2, // 2: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign + 4, // 3: server.DB_Activity1Array.Arr:type_name -> server.DB_Activity1 + 6, // 4: server.DB_AnimalColorArray.Arr:type_name -> server.DB_AnimalColor + 8, // 5: server.DB_ArtilleryRateArray.Arr:type_name -> server.DB_ArtilleryRate + 10, // 6: server.DB_ArtillerySkinArray.Arr:type_name -> server.DB_ArtillerySkin + 12, // 7: server.DB_BlackWhiteArray.Arr:type_name -> server.DB_BlackWhite + 14, // 8: server.DB_CardsJDArray.Arr:type_name -> server.DB_CardsJD + 16, // 9: server.DB_CardsYuLeArray.Arr:type_name -> server.DB_CardsYuLe + 18, // 10: server.DB_ChessBilledRulesArray.Arr:type_name -> server.DB_ChessBilledRules + 20, // 11: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules + 22, // 12: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank + 24, // 13: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer + 147, // 14: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry + 26, // 15: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox + 28, // 16: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain + 30, // 17: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch + 32, // 18: server.DB_CreateroomArray.Arr:type_name -> server.DB_Createroom + 34, // 19: server.DB_FishArray.Arr:type_name -> server.DB_Fish + 36, // 20: server.DB_FishOutArray.Arr:type_name -> server.DB_FishOut + 38, // 21: server.DB_FishPathArray.Arr:type_name -> server.DB_FishPath + 40, // 22: server.DB_FishRoomArray.Arr:type_name -> server.DB_FishRoom + 42, // 23: server.DB_FishSkillArray.Arr:type_name -> server.DB_FishSkill + 44, // 24: server.DB_FortuneGod_OddsArray.Arr:type_name -> server.DB_FortuneGod_Odds + 46, // 25: server.DB_FortuneGod_TurnRateArray.Arr:type_name -> server.DB_FortuneGod_TurnRate + 48, // 26: server.DB_FortuneGod_WeightArray.Arr:type_name -> server.DB_FortuneGod_Weight + 50, // 27: server.DB_FortuneGod_WeightConditionArray.Arr:type_name -> server.DB_FortuneGod_WeightCondition + 52, // 28: server.DB_GamMatchLVArray.Arr:type_name -> server.DB_GamMatchLV + 54, // 29: server.DB_GameBankruptcyArray.Arr:type_name -> server.DB_GameBankruptcy + 56, // 30: server.DB_GameCoinPoolArray.Arr:type_name -> server.DB_GameCoinPool + 58, // 31: server.DB_GameFreeArray.Arr:type_name -> server.DB_GameFree + 148, // 32: server.DB_GameItem.Gain:type_name -> server.DB_GameItem.GainEntry + 149, // 33: server.DB_GameItem.Compound:type_name -> server.DB_GameItem.CompoundEntry + 60, // 34: server.DB_GameItemArray.Arr:type_name -> server.DB_GameItem + 62, // 35: server.DB_GameMatchLevelArray.Arr:type_name -> server.DB_GameMatchLevel + 64, // 36: server.DB_GameRuleArray.Arr:type_name -> server.DB_GameRule + 66, // 37: server.DB_GameSubsidyArray.Arr:type_name -> server.DB_GameSubsidy + 68, // 38: server.DB_Game_DropArray.Arr:type_name -> server.DB_Game_Drop + 70, // 39: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction + 72, // 40: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet + 74, // 41: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role + 150, // 42: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry + 76, // 43: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox + 151, // 44: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry + 152, // 45: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry + 78, // 46: server.DB_GiftCardArray.Arr:type_name -> server.DB_GiftCard + 80, // 47: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate + 82, // 48: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds + 84, // 49: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate + 86, // 50: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight + 88, // 51: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition + 90, // 52: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank + 92, // 53: server.DB_NameArray.Arr:type_name -> server.DB_Name + 94, // 54: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy + 96, // 55: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl + 98, // 56: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer + 100, // 57: server.DB_NewYearActivityArray.Arr:type_name -> server.DB_NewYearActivity + 102, // 58: server.DB_PassShowArray.Arr:type_name -> server.DB_PassShow + 153, // 59: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry + 104, // 60: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill + 106, // 61: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery + 154, // 62: server.DB_PigBank_Diamond.GoldExc:type_name -> server.DB_PigBank_Diamond.GoldExcEntry + 155, // 63: server.DB_PigBank_Diamond.DiamondExc:type_name -> server.DB_PigBank_Diamond.DiamondExcEntry + 108, // 64: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond + 110, // 65: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop + 112, // 66: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp + 114, // 67: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType + 116, // 68: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd + 156, // 69: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 157, // 70: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 158, // 71: server.DB_PropExchange.Custom:type_name -> server.DB_PropExchange.CustomEntry + 118, // 72: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 120, // 73: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 122, // 74: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 124, // 75: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 126, // 76: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 159, // 77: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry + 128, // 78: server.DB_SkinArray.Arr:type_name -> server.DB_Skin + 160, // 79: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry + 130, // 80: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel + 132, // 81: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 134, // 82: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 161, // 83: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 136, // 84: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 138, // 85: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 140, // 86: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 162, // 87: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 163, // 88: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 142, // 89: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 144, // 90: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow + 91, // [91:91] is the sub-list for method output_type + 91, // [91:91] is the sub-list for method input_type + 91, // [91:91] is the sub-list for extension type_name + 91, // [91:91] is the sub-list for extension extendee + 0, // [0:91] is the sub-list for field type_name } func init() { file_protocol_server_pbdata_proto_init() } @@ -12948,7 +13087,7 @@ func file_protocol_server_pbdata_proto_init() { } if !protoimpl.UnsafeEnabled { file_protocol_server_pbdata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ActSign); i { + switch v := v.(*DB_ACTPushCoin); i { case 0: return &v.state case 1: @@ -12960,7 +13099,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ActSignArray); i { + switch v := v.(*DB_ACTPushCoinArray); i { case 0: return &v.state case 1: @@ -12972,7 +13111,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Activity1); i { + switch v := v.(*DB_ActSign); i { case 0: return &v.state case 1: @@ -12984,7 +13123,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Activity1Array); i { + switch v := v.(*DB_ActSignArray); i { case 0: return &v.state case 1: @@ -12996,7 +13135,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_AnimalColor); i { + switch v := v.(*DB_Activity1); i { case 0: return &v.state case 1: @@ -13008,7 +13147,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_AnimalColorArray); i { + switch v := v.(*DB_Activity1Array); i { case 0: return &v.state case 1: @@ -13020,7 +13159,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtilleryRate); i { + switch v := v.(*DB_AnimalColor); i { case 0: return &v.state case 1: @@ -13032,7 +13171,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtilleryRateArray); i { + switch v := v.(*DB_AnimalColorArray); i { case 0: return &v.state case 1: @@ -13044,7 +13183,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtillerySkin); i { + switch v := v.(*DB_ArtilleryRate); i { case 0: return &v.state case 1: @@ -13056,7 +13195,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtillerySkinArray); i { + switch v := v.(*DB_ArtilleryRateArray); i { case 0: return &v.state case 1: @@ -13068,7 +13207,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_BlackWhite); i { + switch v := v.(*DB_ArtillerySkin); i { case 0: return &v.state case 1: @@ -13080,7 +13219,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_BlackWhiteArray); i { + switch v := v.(*DB_ArtillerySkinArray); i { case 0: return &v.state case 1: @@ -13092,7 +13231,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsJD); i { + switch v := v.(*DB_BlackWhite); i { case 0: return &v.state case 1: @@ -13104,7 +13243,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsJDArray); i { + switch v := v.(*DB_BlackWhiteArray); i { case 0: return &v.state case 1: @@ -13116,7 +13255,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsYuLe); i { + switch v := v.(*DB_CardsJD); i { case 0: return &v.state case 1: @@ -13128,7 +13267,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsYuLeArray); i { + switch v := v.(*DB_CardsJDArray); i { case 0: return &v.state case 1: @@ -13140,7 +13279,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessBilledRules); i { + switch v := v.(*DB_CardsYuLe); i { case 0: return &v.state case 1: @@ -13152,7 +13291,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessBilledRulesArray); i { + switch v := v.(*DB_CardsYuLeArray); i { case 0: return &v.state case 1: @@ -13164,7 +13303,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessMatchRules); i { + switch v := v.(*DB_ChessBilledRules); i { case 0: return &v.state case 1: @@ -13176,7 +13315,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessMatchRulesArray); i { + switch v := v.(*DB_ChessBilledRulesArray); i { case 0: return &v.state case 1: @@ -13188,7 +13327,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessRank); i { + switch v := v.(*DB_ChessMatchRules); i { case 0: return &v.state case 1: @@ -13200,7 +13339,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessRankArray); i { + switch v := v.(*DB_ChessMatchRulesArray); i { case 0: return &v.state case 1: @@ -13212,7 +13351,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ClientVer); i { + switch v := v.(*DB_ChessRank); i { case 0: return &v.state case 1: @@ -13224,7 +13363,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ClientVerArray); i { + switch v := v.(*DB_ChessRankArray); i { case 0: return &v.state case 1: @@ -13236,7 +13375,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBox); i { + switch v := v.(*DB_ClientVer); i { case 0: return &v.state case 1: @@ -13248,7 +13387,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBoxArray); i { + switch v := v.(*DB_ClientVerArray); i { case 0: return &v.state case 1: @@ -13260,7 +13399,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBoxGain); i { + switch v := v.(*DB_CollectBox); i { case 0: return &v.state case 1: @@ -13272,7 +13411,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBoxGainArray); i { + switch v := v.(*DB_CollectBoxArray); i { case 0: return &v.state case 1: @@ -13284,7 +13423,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CrashSearch); i { + switch v := v.(*DB_CollectBoxGain); i { case 0: return &v.state case 1: @@ -13296,7 +13435,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CrashSearchArray); i { + switch v := v.(*DB_CollectBoxGainArray); i { case 0: return &v.state case 1: @@ -13308,7 +13447,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Createroom); i { + switch v := v.(*DB_CrashSearch); i { case 0: return &v.state case 1: @@ -13320,7 +13459,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CreateroomArray); i { + switch v := v.(*DB_CrashSearchArray); i { case 0: return &v.state case 1: @@ -13332,7 +13471,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Fish); i { + switch v := v.(*DB_Createroom); i { case 0: return &v.state case 1: @@ -13344,7 +13483,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishArray); i { + switch v := v.(*DB_CreateroomArray); i { case 0: return &v.state case 1: @@ -13356,7 +13495,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishOut); i { + switch v := v.(*DB_Fish); i { case 0: return &v.state case 1: @@ -13368,7 +13507,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishOutArray); i { + switch v := v.(*DB_FishArray); i { case 0: return &v.state case 1: @@ -13380,7 +13519,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishPath); i { + switch v := v.(*DB_FishOut); i { case 0: return &v.state case 1: @@ -13392,7 +13531,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishPathArray); i { + switch v := v.(*DB_FishOutArray); i { case 0: return &v.state case 1: @@ -13404,7 +13543,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishRoom); i { + switch v := v.(*DB_FishPath); i { case 0: return &v.state case 1: @@ -13416,7 +13555,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishRoomArray); i { + switch v := v.(*DB_FishPathArray); i { case 0: return &v.state case 1: @@ -13428,7 +13567,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishSkill); i { + switch v := v.(*DB_FishRoom); i { case 0: return &v.state case 1: @@ -13440,7 +13579,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishSkillArray); i { + switch v := v.(*DB_FishRoomArray); i { case 0: return &v.state case 1: @@ -13452,7 +13591,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_Odds); i { + switch v := v.(*DB_FishSkill); i { case 0: return &v.state case 1: @@ -13464,7 +13603,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_OddsArray); i { + switch v := v.(*DB_FishSkillArray); i { case 0: return &v.state case 1: @@ -13476,7 +13615,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_TurnRate); i { + switch v := v.(*DB_FortuneGod_Odds); i { case 0: return &v.state case 1: @@ -13488,7 +13627,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_TurnRateArray); i { + switch v := v.(*DB_FortuneGod_OddsArray); i { case 0: return &v.state case 1: @@ -13500,7 +13639,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_Weight); i { + switch v := v.(*DB_FortuneGod_TurnRate); i { case 0: return &v.state case 1: @@ -13512,7 +13651,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightArray); i { + switch v := v.(*DB_FortuneGod_TurnRateArray); i { case 0: return &v.state case 1: @@ -13524,7 +13663,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightCondition); i { + switch v := v.(*DB_FortuneGod_Weight); i { case 0: return &v.state case 1: @@ -13536,7 +13675,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightConditionArray); i { + switch v := v.(*DB_FortuneGod_WeightArray); i { case 0: return &v.state case 1: @@ -13548,7 +13687,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GamMatchLV); i { + switch v := v.(*DB_FortuneGod_WeightCondition); i { case 0: return &v.state case 1: @@ -13560,7 +13699,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GamMatchLVArray); i { + switch v := v.(*DB_FortuneGod_WeightConditionArray); i { case 0: return &v.state case 1: @@ -13572,7 +13711,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameBankruptcy); i { + switch v := v.(*DB_GamMatchLV); i { case 0: return &v.state case 1: @@ -13584,7 +13723,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameBankruptcyArray); i { + switch v := v.(*DB_GamMatchLVArray); i { case 0: return &v.state case 1: @@ -13596,7 +13735,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameCoinPool); i { + switch v := v.(*DB_GameBankruptcy); i { case 0: return &v.state case 1: @@ -13608,7 +13747,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameCoinPoolArray); i { + switch v := v.(*DB_GameBankruptcyArray); i { case 0: return &v.state case 1: @@ -13620,7 +13759,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameFree); i { + switch v := v.(*DB_GameCoinPool); i { case 0: return &v.state case 1: @@ -13632,7 +13771,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameFreeArray); i { + switch v := v.(*DB_GameCoinPoolArray); i { case 0: return &v.state case 1: @@ -13644,7 +13783,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameItem); i { + switch v := v.(*DB_GameFree); i { case 0: return &v.state case 1: @@ -13656,7 +13795,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameItemArray); i { + switch v := v.(*DB_GameFreeArray); i { case 0: return &v.state case 1: @@ -13668,7 +13807,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameMatchLevel); i { + switch v := v.(*DB_GameItem); i { case 0: return &v.state case 1: @@ -13680,7 +13819,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameMatchLevelArray); i { + switch v := v.(*DB_GameItemArray); i { case 0: return &v.state case 1: @@ -13692,7 +13831,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameRule); i { + switch v := v.(*DB_GameMatchLevel); i { case 0: return &v.state case 1: @@ -13704,7 +13843,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameRuleArray); i { + switch v := v.(*DB_GameMatchLevelArray); i { case 0: return &v.state case 1: @@ -13716,7 +13855,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameSubsidy); i { + switch v := v.(*DB_GameRule); i { case 0: return &v.state case 1: @@ -13728,7 +13867,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameSubsidyArray); i { + switch v := v.(*DB_GameRuleArray); i { case 0: return &v.state case 1: @@ -13740,7 +13879,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Drop); i { + switch v := v.(*DB_GameSubsidy); i { case 0: return &v.state case 1: @@ -13752,7 +13891,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_DropArray); i { + switch v := v.(*DB_GameSubsidyArray); i { case 0: return &v.state case 1: @@ -13764,7 +13903,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Introduction); i { + switch v := v.(*DB_Game_Drop); i { case 0: return &v.state case 1: @@ -13776,7 +13915,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_IntroductionArray); i { + switch v := v.(*DB_Game_DropArray); i { case 0: return &v.state case 1: @@ -13788,7 +13927,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Pet); i { + switch v := v.(*DB_Game_Introduction); i { case 0: return &v.state case 1: @@ -13800,7 +13939,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_PetArray); i { + switch v := v.(*DB_Game_IntroductionArray); i { case 0: return &v.state case 1: @@ -13812,7 +13951,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Role); i { + switch v := v.(*DB_Game_Pet); i { case 0: return &v.state case 1: @@ -13824,7 +13963,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_RoleArray); i { + switch v := v.(*DB_Game_PetArray); i { case 0: return &v.state case 1: @@ -13836,7 +13975,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftBox); i { + switch v := v.(*DB_Game_Role); i { case 0: return &v.state case 1: @@ -13848,7 +13987,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftBoxArray); i { + switch v := v.(*DB_Game_RoleArray); i { case 0: return &v.state case 1: @@ -13860,7 +13999,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftCard); i { + switch v := v.(*DB_GiftBox); i { case 0: return &v.state case 1: @@ -13872,7 +14011,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftCardArray); i { + switch v := v.(*DB_GiftBoxArray); i { case 0: return &v.state case 1: @@ -13884,7 +14023,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_IceAgeElementRate); i { + switch v := v.(*DB_GiftCard); i { case 0: return &v.state case 1: @@ -13896,7 +14035,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_IceAgeElementRateArray); i { + switch v := v.(*DB_GiftCardArray); i { case 0: return &v.state case 1: @@ -13908,7 +14047,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_Odds); i { + switch v := v.(*DB_IceAgeElementRate); i { case 0: return &v.state case 1: @@ -13920,7 +14059,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_OddsArray); i { + switch v := v.(*DB_IceAgeElementRateArray); i { case 0: return &v.state case 1: @@ -13932,7 +14071,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_TurnRate); i { + switch v := v.(*DB_Legend_Odds); i { case 0: return &v.state case 1: @@ -13944,7 +14083,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_TurnRateArray); i { + switch v := v.(*DB_Legend_OddsArray); i { case 0: return &v.state case 1: @@ -13956,7 +14095,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_Weight); i { + switch v := v.(*DB_Legend_TurnRate); i { case 0: return &v.state case 1: @@ -13968,7 +14107,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightArray); i { + switch v := v.(*DB_Legend_TurnRateArray); i { case 0: return &v.state case 1: @@ -13980,7 +14119,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightCondition); i { + switch v := v.(*DB_Legend_Weight); i { case 0: return &v.state case 1: @@ -13992,7 +14131,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightConditionArray); i { + switch v := v.(*DB_Legend_WeightArray); i { case 0: return &v.state case 1: @@ -14004,7 +14143,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_MatchRank); i { + switch v := v.(*DB_Legend_WeightCondition); i { case 0: return &v.state case 1: @@ -14016,7 +14155,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_MatchRankArray); i { + switch v := v.(*DB_Legend_WeightConditionArray); i { case 0: return &v.state case 1: @@ -14028,7 +14167,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Name); i { + switch v := v.(*DB_MatchRank); i { case 0: return &v.state case 1: @@ -14040,7 +14179,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameArray); i { + switch v := v.(*DB_MatchRankArray); i { case 0: return &v.state case 1: @@ -14052,7 +14191,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameBoy); i { + switch v := v.(*DB_Name); i { case 0: return &v.state case 1: @@ -14064,7 +14203,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameBoyArray); i { + switch v := v.(*DB_NameArray); i { case 0: return &v.state case 1: @@ -14076,7 +14215,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameGirl); i { + switch v := v.(*DB_NameBoy); i { case 0: return &v.state case 1: @@ -14088,7 +14227,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameGirlArray); i { + switch v := v.(*DB_NameBoyArray); i { case 0: return &v.state case 1: @@ -14100,7 +14239,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewPlayer); i { + switch v := v.(*DB_NameGirl); i { case 0: return &v.state case 1: @@ -14112,7 +14251,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewPlayerArray); i { + switch v := v.(*DB_NameGirlArray); i { case 0: return &v.state case 1: @@ -14124,7 +14263,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewYearActivity); i { + switch v := v.(*DB_NewPlayer); i { case 0: return &v.state case 1: @@ -14136,7 +14275,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewYearActivityArray); i { + switch v := v.(*DB_NewPlayerArray); i { case 0: return &v.state case 1: @@ -14148,7 +14287,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PassShow); i { + switch v := v.(*DB_NewYearActivity); i { case 0: return &v.state case 1: @@ -14160,7 +14299,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PassShowArray); i { + switch v := v.(*DB_NewYearActivityArray); i { case 0: return &v.state case 1: @@ -14172,7 +14311,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PetSkill); i { + switch v := v.(*DB_PassShow); i { case 0: return &v.state case 1: @@ -14184,7 +14323,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PetSkillArray); i { + switch v := v.(*DB_PassShowArray); i { case 0: return &v.state case 1: @@ -14196,7 +14335,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLottery); i { + switch v := v.(*DB_PetSkill); i { case 0: return &v.state case 1: @@ -14208,7 +14347,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLotteryArray); i { + switch v := v.(*DB_PetSkillArray); i { case 0: return &v.state case 1: @@ -14220,7 +14359,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PigBank_Diamond); i { + switch v := v.(*DB_PhoneLottery); i { case 0: return &v.state case 1: @@ -14232,7 +14371,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PigBank_DiamondArray); i { + switch v := v.(*DB_PhoneLotteryArray); i { case 0: return &v.state case 1: @@ -14244,7 +14383,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Pigbank_Prop); i { + switch v := v.(*DB_PigBank_Diamond); i { case 0: return &v.state case 1: @@ -14256,7 +14395,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Pigbank_PropArray); i { + switch v := v.(*DB_PigBank_DiamondArray); i { case 0: return &v.state case 1: @@ -14268,7 +14407,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExp); i { + switch v := v.(*DB_Pigbank_Prop); i { case 0: return &v.state case 1: @@ -14280,7 +14419,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExpArray); i { + switch v := v.(*DB_Pigbank_PropArray); i { case 0: return &v.state case 1: @@ -14292,7 +14431,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerType); i { + switch v := v.(*DB_PlayerExp); i { case 0: return &v.state case 1: @@ -14304,7 +14443,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerTypeArray); i { + switch v := v.(*DB_PlayerExpArray); i { case 0: return &v.state case 1: @@ -14316,7 +14455,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOdd); i { + switch v := v.(*DB_PlayerType); i { case 0: return &v.state case 1: @@ -14328,7 +14467,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOddArray); i { + switch v := v.(*DB_PlayerTypeArray); i { case 0: return &v.state case 1: @@ -14340,7 +14479,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PropExchange); i { + switch v := v.(*DB_PotOdd); i { case 0: return &v.state case 1: @@ -14352,7 +14491,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PropExchangeArray); i { + switch v := v.(*DB_PotOddArray); i { case 0: return &v.state case 1: @@ -14364,7 +14503,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycle); i { + switch v := v.(*DB_PropExchange); i { case 0: return &v.state case 1: @@ -14376,7 +14515,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycleArray); i { + switch v := v.(*DB_PropExchangeArray); i { case 0: return &v.state case 1: @@ -14388,7 +14527,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevel); i { + switch v := v.(*DB_RankCycle); i { case 0: return &v.state case 1: @@ -14400,7 +14539,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevelArray); i { + switch v := v.(*DB_RankCycleArray); i { case 0: return &v.state case 1: @@ -14412,7 +14551,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankReward); i { + switch v := v.(*DB_RankLevel); i { case 0: return &v.state case 1: @@ -14424,7 +14563,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankRewardArray); i { + switch v := v.(*DB_RankLevelArray); i { case 0: return &v.state case 1: @@ -14436,7 +14575,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_Words); i { + switch v := v.(*DB_RankReward); i { case 0: return &v.state case 1: @@ -14448,7 +14587,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_WordsArray); i { + switch v := v.(*DB_RankRewardArray); i { case 0: return &v.state case 1: @@ -14460,7 +14599,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Skin); i { + switch v := v.(*DB_Sensitive_Words); i { case 0: return &v.state case 1: @@ -14472,7 +14611,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SkinArray); i { + switch v := v.(*DB_Sensitive_WordsArray); i { case 0: return &v.state case 1: @@ -14484,7 +14623,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SkinLevel); i { + switch v := v.(*DB_Skin); i { case 0: return &v.state case 1: @@ -14496,7 +14635,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SkinLevelArray); i { + switch v := v.(*DB_SkinArray); i { case 0: return &v.state case 1: @@ -14508,7 +14647,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeight); i { + switch v := v.(*DB_SkinLevel); i { case 0: return &v.state case 1: @@ -14520,7 +14659,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeightArray); i { + switch v := v.(*DB_SkinLevelArray); i { case 0: return &v.state case 1: @@ -14532,7 +14671,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChance); i { + switch v := v.(*DB_SlotRateWeight); i { case 0: return &v.state case 1: @@ -14544,7 +14683,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChanceArray); i { + switch v := v.(*DB_SlotRateWeightArray); i { case 0: return &v.state case 1: @@ -14556,7 +14695,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Task); i { + switch v := v.(*DB_SystemChance); i { case 0: return &v.state case 1: @@ -14568,7 +14707,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TaskArray); i { + switch v := v.(*DB_SystemChanceArray); i { case 0: return &v.state case 1: @@ -14580,7 +14719,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMapping); i { + switch v := v.(*DB_Task); i { case 0: return &v.state case 1: @@ -14592,7 +14731,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMappingArray); i { + switch v := v.(*DB_TaskArray); i { case 0: return &v.state case 1: @@ -14604,7 +14743,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Tips); i { + switch v := v.(*DB_ThirdPlatformGameMapping); i { case 0: return &v.state case 1: @@ -14616,7 +14755,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TipsArray); i { + switch v := v.(*DB_ThirdPlatformGameMappingArray); i { case 0: return &v.state case 1: @@ -14628,7 +14767,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIP); i { + switch v := v.(*DB_Tips); i { case 0: return &v.state case 1: @@ -14640,7 +14779,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIPArray); i { + switch v := v.(*DB_TipsArray); i { case 0: return &v.state case 1: @@ -14652,7 +14791,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIPShow); i { + switch v := v.(*DB_VIP); i { case 0: return &v.state case 1: @@ -14664,6 +14803,30 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIPArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_server_pbdata_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIPShow); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_server_pbdata_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_VIPShowArray); i { case 0: return &v.state @@ -14682,7 +14845,7 @@ func file_protocol_server_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_server_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 161, + NumMessages: 164, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index 603152e..901d421 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -5,6 +5,22 @@ syntax = "proto3"; package server; option go_package = "mongo.games.com/game/protocol/server"; +message DB_ACTPushCoin { + + int32 Id = 1; + + int32 Rate = 2; + + map Gain = 3; + + int64 Value = 4; + +} + +message DB_ACTPushCoinArray { + repeated DB_ACTPushCoin Arr = 1; +} + message DB_ActSign { int32 Id = 1; diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 7939320..8852a95 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -10575,6 +10575,78 @@ func (x *ConsumeConfig) GetEndTime() string { return "" } +// etcd /game/act_pushcoin +type PushCoinConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 1.开启 2.关闭 + StartTime string `protobuf:"bytes,3,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 活动开始时间 + EndTime string `protobuf:"bytes,4,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 活动结束时间 +} + +func (x *PushCoinConfig) Reset() { + *x = PushCoinConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushCoinConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushCoinConfig) ProtoMessage() {} + +func (x *PushCoinConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PushCoinConfig.ProtoReflect.Descriptor instead. +func (*PushCoinConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{114} +} + +func (x *PushCoinConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *PushCoinConfig) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *PushCoinConfig) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *PushCoinConfig) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + var File_protocol_webapi_common_proto protoreflect.FileDescriptor var file_protocol_webapi_common_proto_rawDesc = []byte{ @@ -12191,10 +12263,17 @@ var file_protocol_webapi_common_proto_rawDesc = []byte{ 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x26, + 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -12209,7 +12288,7 @@ func file_protocol_webapi_common_proto_rawDescGZIP() []byte { return file_protocol_webapi_common_proto_rawDescData } -var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 124) +var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 125) var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -12325,32 +12404,33 @@ var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*RedPacketInfo)(nil), // 111: webapi.RedPacketInfo (*RedInfo)(nil), // 112: webapi.RedInfo (*ConsumeConfig)(nil), // 113: webapi.ConsumeConfig - nil, // 114: webapi.Platform.BindTelRewardEntry - nil, // 115: webapi.PlayerData.RankScoreEntry - nil, // 116: webapi.ItemShop.AwardEntry - nil, // 117: webapi.VIPcfg.AwardEntry - nil, // 118: webapi.VIPcfg.Privilege1Entry - nil, // 119: webapi.VIPcfg.Privilege7Entry - nil, // 120: webapi.VIPcfg.Privilege9Entry - nil, // 121: webapi.ActInviteConfig.PayScoreEntry - nil, // 122: webapi.SkinLevel.UpItemEntry - nil, // 123: webapi.SkinItem.UnlockParamEntry - (*server.DB_GameFree)(nil), // 124: server.DB_GameFree - (*server.DB_GameItem)(nil), // 125: server.DB_GameItem + (*PushCoinConfig)(nil), // 114: webapi.PushCoinConfig + nil, // 115: webapi.Platform.BindTelRewardEntry + nil, // 116: webapi.PlayerData.RankScoreEntry + nil, // 117: webapi.ItemShop.AwardEntry + nil, // 118: webapi.VIPcfg.AwardEntry + nil, // 119: webapi.VIPcfg.Privilege1Entry + nil, // 120: webapi.VIPcfg.Privilege7Entry + nil, // 121: webapi.VIPcfg.Privilege9Entry + nil, // 122: webapi.ActInviteConfig.PayScoreEntry + nil, // 123: webapi.SkinLevel.UpItemEntry + nil, // 124: webapi.SkinItem.UnlockParamEntry + (*server.DB_GameFree)(nil), // 125: server.DB_GameFree + (*server.DB_GameItem)(nil), // 126: server.DB_GameItem } var file_protocol_webapi_common_proto_depIdxs = []int32{ 2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch 3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig 4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame - 114, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 115, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 124, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 125, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree 8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree 0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting 1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting 1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting - 124, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 115, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 125, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 116, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry 32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo 14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo 14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo @@ -12363,7 +12443,7 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo 25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop 29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight - 116, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 117, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry 30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop 32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo 33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward @@ -12384,14 +12464,14 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate 48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree 48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree - 117, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 118, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry - 119, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry - 120, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry + 118, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 119, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry + 120, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 121, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry 51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg 38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate 55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig - 121, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry + 122, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry 62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward 62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward 62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward @@ -12408,12 +12488,12 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo 70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers 72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData - 125, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem + 126, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem 32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo 75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo 76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo - 122, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry - 123, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry + 123, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry + 124, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry 78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel 79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem 82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData @@ -13822,6 +13902,18 @@ func file_protocol_webapi_common_proto_init() { return nil } } + file_protocol_webapi_common_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushCoinConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -13829,7 +13921,7 @@ func file_protocol_webapi_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_webapi_common_proto_rawDesc, NumEnums: 0, - NumMessages: 124, + NumMessages: 125, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 0ff98df..0c491a5 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -1166,4 +1166,12 @@ message ConsumeConfig{ int32 On = 2; // 活动开关 1.开启 2.关闭 string StartTime = 3; // 活动开始时间 string EndTime = 4; // 活动结束时间 +} + +// etcd /game/act_pushcoin +message PushCoinConfig{ + string Platform = 1; // 平台 + int32 On = 2; // 活动开关 1.开启 2.关闭 + string StartTime = 3; // 活动开始时间 + string EndTime = 4; // 活动结束时间 } \ No newline at end of file diff --git a/srvdata/db_actpushcoin.go b/srvdata/db_actpushcoin.go new file mode 100644 index 0000000..df9651f --- /dev/null +++ b/srvdata/db_actpushcoin.go @@ -0,0 +1,77 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_ACTPushCoinMgr = &DB_ACTPushCoinMgr{ + Datas: &server.DB_ACTPushCoinArray{}, + pool: make(map[int32]*server.DB_ACTPushCoin), + +} + +type DB_ACTPushCoinMgr struct { + Datas *server.DB_ACTPushCoinArray + pool map[int32]*server.DB_ACTPushCoin + +} + +func (this *DB_ACTPushCoinMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_ACTPushCoinMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_ACTPushCoinArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_ACTPushCoinMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + + } +} + +func (this *DB_ACTPushCoinMgr) GetData(id int32) *server.DB_ACTPushCoin { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + + +func init() { + DataMgr.register("DB_ACTPushCoin.dat", &ProtobufDataLoader{dh: PBDB_ACTPushCoinMgr}) +} diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index 8f9d038..4321ec2 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -5,6 +5,7 @@ import ( "mongo.games.com/game/gamesrv/base" "mongo.games.com/game/model" "mongo.games.com/game/protocol/activity" + "mongo.games.com/game/protocol/pushcoin" "mongo.games.com/game/srvdata" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" @@ -14,6 +15,7 @@ import ( const ( PowerMax = 700000 PowerInit = 400000 + ValueInit = 50 * 5000 ) var BaseCoins = []int64{5000, 10000, 15000} @@ -21,6 +23,8 @@ var BaseCoins = []int64{5000, 10000, 15000} func init() { // 推币机活动信息 common.Register(int(activity.PushCoinPacketID_PACKET_CSPushCoinInfo), activity.CSPushCoinInfo{}, CSPushCoinInfo) + // 推币机玩家操作 + common.Register(int(activity.PushCoinPacketID_PACKET_CSPushCoinPlayerOp), activity.CSPushCoinPlayerOp{}, CSPushCoinPlayerOp) } func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { @@ -29,7 +33,7 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 return nil } - p := base.PlayerMgrSington.GetPlayer(sid) + p := PlayerMgrSington.GetOnlinePlayer(sid) if p == nil { logger.Logger.Warn("CSPushCoinInfo p == nil") return nil @@ -42,10 +46,10 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 if p.WelfData.PushCoin == nil { p.WelfData.PushCoin = &model.PushCoinData{ - Shake: 0, - Refresh: 0, - Power: PowerInit, - Base: BaseCoins[0], + Power: PowerInit, + Base: BaseCoins[0], + Value: ValueInit, + Exchange: make(map[int32]int32), } } @@ -55,12 +59,14 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 PowerLine: p.WelfData.PushCoin.Power, PowerLineMax: PowerMax, RefreshTimes: p.WelfData.PushCoin.Refresh, + BetList: BaseCoins, } for _, v := range srvdata.PBDB_PropExchangeMgr.Datas.Arr { if v.GetGroup() == 2 { info := &activity.ExchangeInfo{ - Id: v.GetId(), + Id: v.GetId(), + TotalTimes: int64(v.GetTimes()), } for kk, vv := range v.GetCost() { info.Cost = append(info.Cost, &activity.ItemInfo{ @@ -85,10 +91,257 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 info.ShakeTimes = int32(vv) } } + + info.Times = int64(v.GetTimes() - p.WelfData.PushCoin.Exchange[v.Id]) + if v.GetTimes() == 0 { + info.Times = -1 + info.TotalTimes = -1 + } + pack.ExchangeList = append(pack.ExchangeList, info) } } + // 转盘 + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + for kk, vv := range v.GetGain() { + pack.DrawList = append(pack.DrawList, &activity.DrawInfo{ + Id: v.GetId(), + ItemId: int32(kk), + ItemNum: int32(vv), + Coin: v.GetValue(), + }) + } + } + p.SendToClient(int(activity.PushCoinPacketID_PACKET_SCPushCoinInfo), pack) + logger.Logger.Trace("SCPushCoinInfo: ", pack) return nil } + +func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Trace("CSPushCoinPlayerOpHandler Process recv ", data) + msg, ok := data.(*activity.CSPushCoinPlayerOp) + if !ok { + return nil + } + + p := PlayerMgrSington.GetOnlinePlayer(sid) + if p == nil { + logger.Logger.Warn("CSPushCoinPlayerOp p == nil") + return nil + } + + if p.WelfData == nil { + logger.Logger.Warn("CSPushCoinPlayerOp p.WelfData == nil") + return nil + } + + if p.WelfData.PushCoin == nil { + logger.Logger.Warn("CSPushCoinPlayerOp p.WelfData.PushCoin == nil") + return nil + } + + pack := &activity.SCPushCoinPlayerOp{ + OpRetCode: activity.OpResultPushCoinCode_OPRC_PushCoin_Error, + OpCode: msg.GetOpCode(), + } + + switch msg.GetOpCode() { + case activity.OpCodes_OP_Bet: + if p.GetCoin() < msg.GetOpParam() { + goto here + } + p.AddCoin(-msg.GetOpParam(), common.GainWayPushCoinCost, base.SyncFlag_ToClient, "system", "推币机下注") + // 增加能量条 + AddPower(p, msg.GetOpParam()) + + case activity.OpCodes_OP_Gain: + // todo校验 + + for _, v := range msg.GetOpItem() { + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: []*model.Item{{ItemId: v.GetItemId(), ItemNum: int64(v.GetItemNum())}}, + GainWay: common.GainWayPushCoinGain, + Operator: "system", + Remark: "推币机掉落获得", + }) + } + + case activity.OpCodes_OP_Shake: + if p.WelfData.PushCoin.Shake < int32(msg.GetOpParam()) { + goto here + } + p.WelfData.PushCoin.Shake -= int32(msg.GetOpParam()) + + case activity.OpCodes_OP_Refresh: + p.WelfData.PushCoin.Refresh++ + p.WelfData.PushCoin.Value = ValueInit + + case activity.OpCodes_OP_Exchange: + d := srvdata.PBDB_PropExchangeMgr.GetData(int32(msg.GetOpParam())) + if d == nil { + goto here + } + // 兑换次数 + if d.GetTimes() > 0 && p.WelfData.PushCoin.Exchange[d.Id] >= d.GetTimes() { + goto here + } + + pack.Exchange = &activity.ExchangeInfo{ + Id: d.Id, + } + var cost, gain []*model.Item + for k, v := range d.GetCost() { + pack.Exchange.Cost = append(pack.Exchange.Cost, &activity.ItemInfo{ + ItemId: int32(k), + ItemNum: int32(v), + }) + if k == 10001 && p.GetCoin() < v { + goto here + } + cost = append(cost, &model.Item{ + ItemId: int32(k), + ItemNum: -v, + }) + } + + _, _, ok := BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: cost, + Add: 0, + GainWay: common.GainWayPushCoinExchangeCost, + Operator: "system", + Remark: "推币机活动兑换消耗", + }) + if !ok { + goto here + } + + for k, v := range d.GetGain() { + pack.Exchange.Gain = append(pack.Exchange.Gain, &activity.ItemInfo{ + ItemId: int32(k), + ItemNum: int32(v), + }) + gain = append(gain, &model.Item{ + ItemId: int32(k), + ItemNum: v, + }) + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: gain, + Cost: cost, + Add: 0, + GainWay: common.GainWatPushCoinExchangeGain, + Operator: "system", + Remark: "推币机活动兑换获得", + }) + for k, v := range d.GetCustom() { + if k == 1 { + pack.Exchange.ShakeTimes = int32(v) + } + } + + if p.WelfData.PushCoin.Exchange == nil { + p.WelfData.PushCoin.Exchange = make(map[int32]int32) + } + p.WelfData.PushCoin.Exchange[d.Id]++ + + default: + return nil + } + + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_Success + +here: + p.SendToClient(int(pushcoin.PushCoinPacketID_PACKET_SCPushCoinPlayerOp), pack) + logger.Logger.Trace("SCPushCoinPlayerOp: ", pack) + + return nil +} + +func AddPower(p *Player, value int64) { + if value < 0 { + return + } + p.WelfData.PushCoin.Power += value + if p.WelfData.PushCoin.Power > PowerMax { + p.WelfData.PushCoin.Power = PowerMax + } + p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyPowerLine), &activity.NotifyPowerLine{ + PowerLine: p.WelfData.PushCoin.Power, + PowerLineMax: PowerMax, + }) + if value <= 0 { + return + } + // 抽奖 + Draw(p) +} + +func Draw(p *Player) { + if p.WelfData.PushCoin.Power < PowerMax { + return + } + p.WelfData.PushCoin.Power = 0 + var index int32 = -1 + switch p.WelfData.PushCoin.Dram { + case 0: + // 必中大金币 + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + for kk := range v.GetGain() { + if kk == common.ItemIDBigCoin { + index = v.GetId() + break + } + } + } + + case 1: + // 必中v卡 + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + for kk := range v.GetGain() { + if kk == common.ItemIDVCard { + index = v.GetId() + break + } + } + } + + default: + var n int32 + rand := common.RandInt(10000) + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + if rand < int(n+v.GetRate()) { + index = v.GetId() + break + } + n += v.GetRate() + } + } + p.WelfData.PushCoin.Dram++ + + if index >= 0 { + d := srvdata.PBDB_ACTPushCoinMgr.GetData(index) + if d != nil { + pack := &activity.DrawInfo{ + Id: d.GetId(), + Coin: d.GetValue(), + } + for k, v := range d.GetGain() { + pack.ItemId = int32(k) + pack.ItemNum = int32(v) + } + if pack.Coin > 0 || pack.ItemId > 0 { + p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyDrawInfo), pack) + // 增加能量条 + AddPower(p, d.GetValue()) + } + } + } +} diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 4bd8f42..4f149cf 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -117,6 +117,8 @@ func init() { etcd.Register(etcd.KeyRedPacket, webapi.RedPacketConfig{}, platformConfigEvent) // 累计消耗活动配置 etcd.Register(etcd.KeyActConsume, webapi.ConsumeConfig{}, platformConfigEvent) + // 推金币活动配置 + etcd.Register(etcd.KeyActPushCoin, webapi.PushCoinConfig{}, platformConfigEvent) } func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -370,6 +372,8 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e WelfareMgrSington.UpdateRedPacket(config, isInit) case *webapi.ConsumeConfig: WelfareMgrSington.UpdateConsumeConfig(config) + case *webapi.PushCoinConfig: + WelfareMgrSington.UpdatePushCoinConfig(config) default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index ce183c9..106d546 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -930,6 +930,7 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) { // WelfareSwitch 通知活动开关状态 func (this *WelfareMgr) WelfareSwitch(p *Player, platform string, op int) { pack := &player_proto.SCEasyWelfaredInfo{} + now := time.Now() // 0转盘1盲盒2首冲3连续充值 info := this.GetConfig(platform) @@ -1020,11 +1021,18 @@ func (this *WelfareMgr) WelfareSwitch(p *Player, platform string, op int) { } // 累消活动 consumeConfig := info.ConsumeConfig - if consumeConfig != nil { + if consumeConfig != nil && now.Unix() >= common.StrTimeToTs(consumeConfig.StartTime) && now.Unix() < common.StrTimeToTs(consumeConfig.EndTime) { pack.WelfareSwitch = append(pack.WelfareSwitch, consumeConfig.On) //累消活动开关 } else { pack.WelfareSwitch = append(pack.WelfareSwitch, model.WelfareClose) } + // 推币机活动 + coinConfig := info.PushCoinConfig + if coinConfig != nil && now.Unix() >= common.StrTimeToTs(coinConfig.StartTime) && now.Unix() < common.StrTimeToTs(coinConfig.EndTime) { + pack.WelfareSwitch = append(pack.WelfareSwitch, coinConfig.On) //推币机活动开关 + } else { + pack.WelfareSwitch = append(pack.WelfareSwitch, model.WelfareClose) + } if model.GameParamData.TestActSwitch { for k := range pack.WelfareSwitch { @@ -2488,6 +2496,23 @@ func (this *WelfareMgr) UpdateConsumeConfig(conf *webapi_proto.ConsumeConfig) { } } +func (this *WelfareMgr) UpdatePushCoinConfig(conf *webapi_proto.PushCoinConfig) { + if model.GameParamData.TestActSwitch { + conf.On = model.WelfareOpen + } + s := int32(0) + info := this.GetConfig(conf.Platform) + if info.PushCoinConfig != nil { + s = info.PushCoinConfig.On + } + this.GetConfig(conf.Platform).PushCoinConfig = conf + //更新活动时间 + // 打开关闭要广播给客户端 + if s != 0 && s != conf.On { + this.WelfareSwitch(nil, conf.Platform, model.OpPushCoin) + } +} + func (this *WelfareMgr) Update() { } diff --git a/xlsx/DB_ACTPushCoin.xlsx b/xlsx/DB_ACTPushCoin.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0dc16746b9d80eae5d9b01b117d4ab26743c9829 GIT binary patch literal 10545 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index adf11e3b8a894c94487260a9fadfa0499e73b630..898ecfc4a87e8dfd7b7056b5c94eb1610ecde1aa 100644 GIT binary patch delta 23303 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 OM7>O Date: Wed, 8 Jan 2025 15:55:41 +0800 Subject: [PATCH 28/74] =?UTF-8?q?modify=20=E4=BF=AE=E6=94=B9=E5=BA=95?= =?UTF-8?q?=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/Base/Slots/FortuneDragon/Bet.xlsx | Bin 13015 -> 13008 bytes .../excel/Base/Slots/FortuneMouse/Bet.xlsx | Bin 13010 -> 13006 bytes .../excel/Base/Slots/FortuneOx/Bet.xlsx | Bin 13056 -> 13065 bytes .../excel/Base/Slots/FortuneRabbit/Bet.xlsx | Bin 13054 -> 13047 bytes .../excel/Base/Slots/FortuneTiger/Bet.xlsx | Bin 13043 -> 13040 bytes .../exported/excel2go/base/fortune_dragon.go | 34 +++++++++--------- .../exported/excel2go/base/fortune_mouse.go | 34 +++++++++--------- .../exported/excel2go/base/fortune_ox.go | 34 +++++++++--------- .../exported/excel2go/base/fortune_rabbit.go | 34 +++++++++--------- .../exported/excel2go/base/fortune_tiger.go | 34 +++++++++--------- 10 files changed, 85 insertions(+), 85 deletions(-) diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneDragon/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneDragon/Bet.xlsx index d4bc52e27c6a66c0ba3dc9f0d070e146267f7478..d25c047e0c818574817bc45d49c350e309d671f3 100644 GIT binary patch delta 2344 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 Hr`|sRkU*GC diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneOx/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneOx/Bet.xlsx index 98d7f02e6c4d77fe5fe85dfdbf7167098b3fcb4a..097ec9d2af3c86776e0a2c143e39674831c7a318 100644 GIT binary patch delta 2983 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 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneRabbit/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneRabbit/Bet.xlsx index a17f78ff79ed15cfc4b4e93c7ce079a1827a12ee..b1d3d65b97a4f468e6263459df6776c0a8b1d33c 100644 GIT binary patch delta 2381 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

q3=SHTqB1H0E0fJKD+ao;&8}QxB1Yp~ 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 ZlYlZs0x}Yl;RF?v+%gpg$t?f?002L0bs7Kw diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneTiger/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneTiger/Bet.xlsx index 125e8a1f4fd0b63f201567a7417d966358151467..e7da55aa09c0287d3b2932dc15a3deec3400dd7e 100644 GIT binary patch delta 2819 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 V0wfZX@i7&X*fJFcyDb0!004OYIt>5- delta 2835 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 diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go index bad7a6d..e1e2d51 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go @@ -49,79 +49,79 @@ func init() { FortuneDragonBetBetChangeList = map[int64]*structs.FortuneDragonBetBetChangeList{ 0: { Index: 0, - BetChangeList: 6000, + BetChangeList: 30000, BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { Index: 1, - BetChangeList: 12000, + BetChangeList: 60000, BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { Index: 2, - BetChangeList: 18000, + BetChangeList: 90000, BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { Index: 3, - BetChangeList: 20000, + BetChangeList: 100000, BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { Index: 4, - BetChangeList: 30000, + BetChangeList: 150000, BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { Index: 5, - BetChangeList: 60000, + BetChangeList: 300000, BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { Index: 6, - BetChangeList: 100000, + BetChangeList: 500000, BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { Index: 7, - BetChangeList: 180000, + BetChangeList: 900000, BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { Index: 8, - BetChangeList: 200000, + BetChangeList: 1000000, BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { Index: 9, - BetChangeList: 300000, + BetChangeList: 1500000, BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { Index: 10, - BetChangeList: 600000, + BetChangeList: 3000000, BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { Index: 11, - BetChangeList: 900000, + BetChangeList: 4500000, BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { Index: 12, - BetChangeList: 1800000, + BetChangeList: 9000000, BetSizeIndex: 3, BetLevelIndex: 9, }, @@ -181,19 +181,19 @@ func init() { FortuneDragonBetBetSize = map[int64]*structs.FortuneDragonBetBetSize{ 0: { Index: 0, - BetSize: 6000000, + BetSize: 30000000, }, 1: { Index: 1, - BetSize: 20000000, + BetSize: 100000000, }, 2: { Index: 2, - BetSize: 60000000, + BetSize: 300000000, }, 3: { Index: 3, - BetSize: 180000000, + BetSize: 900000000, }, } diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go index 17dbdfb..91f5598 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go @@ -10,79 +10,79 @@ func init() { FortuneMouseBetBetChangeList = map[int64]*structs.FortuneMouseBetBetChangeList{ 0: { Index: 0, - BetChangeList: 3000, + BetChangeList: 15000, BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { Index: 1, - BetChangeList: 6000, + BetChangeList: 30000, BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { Index: 2, - BetChangeList: 9000, + BetChangeList: 45000, BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { Index: 3, - BetChangeList: 10000, + BetChangeList: 50000, BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { Index: 4, - BetChangeList: 15000, + BetChangeList: 75000, BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { Index: 5, - BetChangeList: 30000, + BetChangeList: 150000, BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { Index: 6, - BetChangeList: 50000, + BetChangeList: 250000, BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { Index: 7, - BetChangeList: 90000, + BetChangeList: 450000, BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { Index: 8, - BetChangeList: 100000, + BetChangeList: 500000, BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { Index: 9, - BetChangeList: 150000, + BetChangeList: 750000, BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { Index: 10, - BetChangeList: 300000, + BetChangeList: 1500000, BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { Index: 11, - BetChangeList: 450000, + BetChangeList: 2250000, BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { Index: 12, - BetChangeList: 900000, + BetChangeList: 4500000, BetSizeIndex: 3, BetLevelIndex: 9, }, @@ -142,19 +142,19 @@ func init() { FortuneMouseBetBetSize = map[int64]*structs.FortuneMouseBetBetSize{ 0: { Index: 0, - BetSize: 6000000, + BetSize: 30000000, }, 1: { Index: 1, - BetSize: 20000000, + BetSize: 100000000, }, 2: { Index: 2, - BetSize: 60000000, + BetSize: 300000000, }, 3: { Index: 3, - BetSize: 180000000, + BetSize: 900000000, }, } diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go index ea42f81..0a51f61 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go @@ -10,79 +10,79 @@ func init() { FortuneOxBetBetChangeList = map[int64]*structs.FortuneOxBetBetChangeList{ 0: { Index: 0, - BetChangeList: 6000, + BetChangeList: 30000, BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { Index: 1, - BetChangeList: 12000, + BetChangeList: 60000, BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { Index: 2, - BetChangeList: 18000, + BetChangeList: 90000, BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { Index: 3, - BetChangeList: 20000, + BetChangeList: 100000, BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { Index: 4, - BetChangeList: 30000, + BetChangeList: 150000, BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { Index: 5, - BetChangeList: 60000, + BetChangeList: 300000, BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { Index: 6, - BetChangeList: 100000, + BetChangeList: 500000, BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { Index: 7, - BetChangeList: 180000, + BetChangeList: 900000, BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { Index: 8, - BetChangeList: 200000, + BetChangeList: 1000000, BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { Index: 9, - BetChangeList: 300000, + BetChangeList: 1500000, BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { Index: 10, - BetChangeList: 600000, + BetChangeList: 3000000, BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { Index: 11, - BetChangeList: 900000, + BetChangeList: 4500000, BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { Index: 12, - BetChangeList: 1800000, + BetChangeList: 9000000, BetSizeIndex: 3, BetLevelIndex: 9, }, @@ -142,19 +142,19 @@ func init() { FortuneOxBetBetSize = map[int64]*structs.FortuneOxBetBetSize{ 0: { Index: 0, - BetSize: 6000000, + BetSize: 30000000, }, 1: { Index: 1, - BetSize: 20000000, + BetSize: 100000000, }, 2: { Index: 2, - BetSize: 60000000, + BetSize: 300000000, }, 3: { Index: 3, - BetSize: 180000000, + BetSize: 900000000, }, } diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go index 2e7178b..48c8d7a 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go @@ -10,79 +10,79 @@ func init() { FortuneRabbitBetBetChangeList = map[int64]*structs.FortuneRabbitBetBetChangeList{ 0: { Index: 0, - BetChangeList: 6000, + BetChangeList: 30000, BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { Index: 1, - BetChangeList: 12000, + BetChangeList: 60000, BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { Index: 2, - BetChangeList: 18000, + BetChangeList: 90000, BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { Index: 3, - BetChangeList: 20000, + BetChangeList: 100000, BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { Index: 4, - BetChangeList: 30000, + BetChangeList: 150000, BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { Index: 5, - BetChangeList: 60000, + BetChangeList: 300000, BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { Index: 6, - BetChangeList: 100000, + BetChangeList: 500000, BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { Index: 7, - BetChangeList: 180000, + BetChangeList: 900000, BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { Index: 8, - BetChangeList: 200000, + BetChangeList: 1000000, BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { Index: 9, - BetChangeList: 300000, + BetChangeList: 1500000, BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { Index: 10, - BetChangeList: 600000, + BetChangeList: 3000000, BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { Index: 11, - BetChangeList: 900000, + BetChangeList: 4500000, BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { Index: 12, - BetChangeList: 1800000, + BetChangeList: 9000000, BetSizeIndex: 3, BetLevelIndex: 9, }, @@ -142,19 +142,19 @@ func init() { FortuneRabbitBetBetSize = map[int64]*structs.FortuneRabbitBetBetSize{ 0: { Index: 0, - BetSize: 6000000, + BetSize: 30000000, }, 1: { Index: 1, - BetSize: 20000000, + BetSize: 100000000, }, 2: { Index: 2, - BetSize: 60000000, + BetSize: 300000000, }, 3: { Index: 3, - BetSize: 180000000, + BetSize: 900000000, }, } diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go index fe0b03e..464f49e 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go @@ -10,79 +10,79 @@ func init() { FortuneTigerBetBetChangeList = map[int64]*structs.FortuneTigerBetBetChangeList{ 0: { Index: 0, - BetChangeList: 3000, + BetChangeList: 15000, BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { Index: 1, - BetChangeList: 6000, + BetChangeList: 30000, BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { Index: 2, - BetChangeList: 9000, + BetChangeList: 45000, BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { Index: 3, - BetChangeList: 10000, + BetChangeList: 50000, BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { Index: 4, - BetChangeList: 15000, + BetChangeList: 75000, BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { Index: 5, - BetChangeList: 30000, + BetChangeList: 150000, BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { Index: 6, - BetChangeList: 50000, + BetChangeList: 250000, BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { Index: 7, - BetChangeList: 90000, + BetChangeList: 450000, BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { Index: 8, - BetChangeList: 100000, + BetChangeList: 500000, BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { Index: 9, - BetChangeList: 150000, + BetChangeList: 750000, BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { Index: 10, - BetChangeList: 300000, + BetChangeList: 1500000, BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { Index: 11, - BetChangeList: 450000, + BetChangeList: 2250000, BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { Index: 12, - BetChangeList: 900000, + BetChangeList: 4500000, BetSizeIndex: 3, BetLevelIndex: 9, }, @@ -142,19 +142,19 @@ func init() { FortuneTigerBetBetSize = map[int64]*structs.FortuneTigerBetBetSize{ 0: { Index: 0, - BetSize: 6000000, + BetSize: 30000000, }, 1: { Index: 1, - BetSize: 20000000, + BetSize: 100000000, }, 2: { Index: 2, - BetSize: 60000000, + BetSize: 300000000, }, 3: { Index: 3, - BetSize: 180000000, + BetSize: 900000000, }, } From 0f3508b2f80fd992eae6533122a9b0dd34f629bb Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 8 Jan 2025 18:30:53 +0800 Subject: [PATCH 29/74] =?UTF-8?q?fix=20=E5=8D=81=E4=B8=89=E5=BC=A0?= =?UTF-8?q?=E7=AE=97=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/thirteen/scene.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gamesrv/thirteen/scene.go b/gamesrv/thirteen/scene.go index 1d658f5..55d90e0 100644 --- a/gamesrv/thirteen/scene.go +++ b/gamesrv/thirteen/scene.go @@ -1257,7 +1257,7 @@ func (this *SceneEx) CountBilled() { for _, v := range this.players { if v != nil && v.IsGameing() { if v.totalScore > 0 { - v.gainCoin = int64(float64(v.totalScore) * float64(totalLoseScore) / float64(totalWinScore)) + v.gainCoin = int64(float64(v.totalScore*totalLoseScore) / float64(totalWinScore)) } else if v.totalScore < 0 { v.gainCoin = v.totalScore } @@ -1270,7 +1270,7 @@ func (this *SceneEx) CountBilled() { if v.totalScore > 0 { v.gainCoin = v.totalScore } else if v.totalScore < 0 { - v.gainCoin = int64(float64(v.totalScore) * float64(totalLoseScore) / float64(totalWinScore)) + v.gainCoin = int64(float64(v.totalScore*totalWinScore) / float64(totalLoseScore)) } } } From 00759f960c30be342f55a7bac8e6b532bd30f660 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 8 Jan 2025 18:30:53 +0800 Subject: [PATCH 30/74] =?UTF-8?q?fix=20=E5=8D=81=E4=B8=89=E5=BC=A0?= =?UTF-8?q?=E7=AE=97=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/thirteen/scene.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gamesrv/thirteen/scene.go b/gamesrv/thirteen/scene.go index 1d658f5..55d90e0 100644 --- a/gamesrv/thirteen/scene.go +++ b/gamesrv/thirteen/scene.go @@ -1257,7 +1257,7 @@ func (this *SceneEx) CountBilled() { for _, v := range this.players { if v != nil && v.IsGameing() { if v.totalScore > 0 { - v.gainCoin = int64(float64(v.totalScore) * float64(totalLoseScore) / float64(totalWinScore)) + v.gainCoin = int64(float64(v.totalScore*totalLoseScore) / float64(totalWinScore)) } else if v.totalScore < 0 { v.gainCoin = v.totalScore } @@ -1270,7 +1270,7 @@ func (this *SceneEx) CountBilled() { if v.totalScore > 0 { v.gainCoin = v.totalScore } else if v.totalScore < 0 { - v.gainCoin = int64(float64(v.totalScore) * float64(totalLoseScore) / float64(totalWinScore)) + v.gainCoin = int64(float64(v.totalScore*totalWinScore) / float64(totalLoseScore)) } } } From 1e0572c537370c2b16e7ba5f67efb4afb2a62042 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 9 Jan 2025 09:15:40 +0800 Subject: [PATCH 31/74] add clinettest --- clienttest/action_login.go | 105 +++++++++++++++++++++++++++++++ clienttest/config.go | 35 +++++++++++ clienttest/config.yaml | 67 ++++++++++++++++++++ clienttest/connect.go | 69 ++++++++++++++++++++ clienttest/constants.go | 31 +++++++++ clienttest/gatesessionhandler.go | 97 ++++++++++++++++++++++++++++ clienttest/logger.xml | 22 +++++++ clienttest/main.go | 24 +++++++ 8 files changed, 450 insertions(+) create mode 100644 clienttest/action_login.go create mode 100644 clienttest/config.go create mode 100644 clienttest/config.yaml create mode 100644 clienttest/connect.go create mode 100644 clienttest/constants.go create mode 100644 clienttest/gatesessionhandler.go create mode 100644 clienttest/logger.xml create mode 100644 clienttest/main.go diff --git a/clienttest/action_login.go b/clienttest/action_login.go new file mode 100644 index 0000000..5d09847 --- /dev/null +++ b/clienttest/action_login.go @@ -0,0 +1,105 @@ +package main + +import ( + "encoding/json" + "fmt" + "math/rand" + "mongo.games.com/game/protocol/activity" + "mongo.games.com/goserver/core/timer" + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + + "mongo.games.com/game/model" + "mongo.games.com/game/proto" + loginproto "mongo.games.com/game/protocol/login" + playerproto "mongo.games.com/game/protocol/player" +) + +func init() { + // 心跳 + netlib.Register(int(loginproto.GatePacketID_PACKET_SC_PONG), loginproto.SCPong{}, SCPong) + // 登录 + netlib.Register(int(loginproto.LoginPacketID_PACKET_SC_LOGIN), loginproto.SCLogin{}, SCLogin) + // 玩家信息 + netlib.Register(int(playerproto.PlayerPacketID_PACKET_SC_PLAYERDATA), playerproto.SCPlayerData{}, SCPlayerData) + + netlib.Register(int(activity.PushCoinPacketID_PACKET_SCPushCoinInfo), activity.SCPushCoinInfo{}, SCPrint) +} + +func SCPong(s *netlib.Session, packetid int, data interface{}) error { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Tracef("SCPong username:%v %v", accountID, data) + return nil +} + +func SCLogin(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCLogin ", data) + + msg, ok := data.(*loginproto.SCLogin) + if !ok { + return nil + } + + if msg.GetOpRetCode() != loginproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Error("登录失败 ", accountID) + s.Close() + return nil + } + + csPlayerData := &playerproto.CSPlayerData{ + AccId: msg.GetAccId(), + } + pp := &model.PlayerParams{ + Platform: 1, + Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)), + City: "北京", + Logininmodel: "app", + } + d, err := json.Marshal(pp) + if err == nil { + csPlayerData.Params = proto.String(string(d)) + } + + s.Send(int(playerproto.PlayerPacketID_PACKET_CS_PLAYERDATA), csPlayerData) + logger.Logger.Info("登录成功 ", msg.GetAccId()) + return nil +} + +func SCPlayerData(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCPlayerData ", data) + msg, ok := data.(*playerproto.SCPlayerData) + if !ok { + return nil + } + + if msg.GetOpRetCode() != playerproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Errorf("获取玩家信息失败 %v", accountID) + s.Close() + return nil + } + + s.SetAttribute(SessionAttributeUser, msg) + + StartSessionPingTimer(s, timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { + if !s.IsConned() { + StopSessionPingTimer(s) + return false + } + pack := &loginproto.CSPing{} + s.Send(int(loginproto.GatePacketID_PACKET_CS_PING), pack) + return true + }), nil, time.Second*time.Duration(60+rand.Int31n(100)), -1) + + s.Send(int(activity.PushCoinPacketID_PACKET_CSPushCoinInfo), &activity.CSPushCoinInfo{}) + + return nil +} + +func SCPrint(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Info("SCPrint ", data) + return nil +} diff --git a/clienttest/config.go b/clienttest/config.go new file mode 100644 index 0000000..a90ad75 --- /dev/null +++ b/clienttest/config.go @@ -0,0 +1,35 @@ +package main + +import ( + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" +) + +var Config = &Configuration{} + +type Configuration struct { + Count int // 机器人总数 + AppId string // appID + Connects netlib.SessionConfig // 网络连接配置 +} + +func (this *Configuration) Name() string { + return "benchmark" +} + +func (this *Configuration) Init() error { + logger.Logger.Tracef("%+v", *this) + if this.Count == 0 { + this.Count = 20 + } + return nil +} + +func (this *Configuration) Close() error { + return nil +} + +func init() { + core.RegistePackage(Config) +} diff --git a/clienttest/config.yaml b/clienttest/config.yaml new file mode 100644 index 0000000..00eb74a --- /dev/null +++ b/clienttest/config.yaml @@ -0,0 +1,67 @@ +netlib: + SrvInfo: + Name: BenchmarkServer + Type: 9 + Id: 902 + AreaID: 1 + Banner: + - ================= + - benchmark server + - ================= + IoServices: [] +module: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +executor: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 + Worker: + WorkerCnt: 8 + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 +timer: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +signal: + SupportSignal: true +cmdline: + SupportCmdline: true +benchmark: + Count: 1 + AppId: 5c56d1644966f078bfb90c71 + Connects: + Id: 402 + Type: 4 + AreaId: 1 + Name: ClientService + Ip: 127.0.0.1 + Port: 11001 + Protocol: tcp + Path: / + MaxDone: 200 + MaxPend: 200 + MaxPacket: 65535 + MaxConn: 2000 + RcvBuff: 4096 + SndBuff: 4096 + WriteTimeout: 3600 + ReadTimeout: 3600 + SoLinger: 10 + IsInnerLink: true + NoDelay: true + SupportFragment: true + AuthKey: www.jxjy.games.cn + IsClient: true + AllowMultiConn: true + FilterChain: + - session-filter-auth + HandlerChain: + - handler-gate-session diff --git a/clienttest/connect.go b/clienttest/connect.go new file mode 100644 index 0000000..a580173 --- /dev/null +++ b/clienttest/connect.go @@ -0,0 +1,69 @@ +package main + +import ( + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" + "mongo.games.com/goserver/core/netlib" +) + +const ( + // RobotSessionStartId 机器人session开始id + RobotSessionStartId = 100000000 +) + +var ( + BenchMarkModule = &BenchMark{} + WaitConnectSessions []*netlib.SessionConfig +) + +// NewSession 新建session +// id 连接id, 默认自动分配 +func NewSession(id ...int) { + cfg := Config.Connects + if len(id) > 0 && id[0] > 0 { + cfg.Id = id[0] + } else { + BenchMarkModule.idx++ + cfg.Id = BenchMarkModule.idx + } + cfg.Init() + logger.Logger.Info("waite connect session id=", cfg.Id) + WaitConnectSessions = append(WaitConnectSessions, &cfg) +} + +type BenchMark struct { + idx int +} + +func (m *BenchMark) ModuleName() string { + return "benchmark-module" +} + +func (m *BenchMark) Init() { + m.idx = RobotSessionStartId + for i := 0; i < Config.Count; i++ { + NewSession() + } +} + +// Update 机器开始连接游戏服务器 +func (m *BenchMark) Update() { + n := len(WaitConnectSessions) + if n > 0 { + config := WaitConnectSessions[n-1] + WaitConnectSessions = WaitConnectSessions[:n-1] + if err := netlib.Connect(config); err != nil { + logger.Logger.Error("netlib.Connect error", err) + } + } +} + +func (m *BenchMark) Shutdown() { + module.UnregisteModule(m) +} + +func init() { + module.RegisteModule(BenchMarkModule, time.Millisecond, 1) +} diff --git a/clienttest/constants.go b/clienttest/constants.go new file mode 100644 index 0000000..8a87971 --- /dev/null +++ b/clienttest/constants.go @@ -0,0 +1,31 @@ +package main + +import ( + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/core/timer" + "time" +) + +const ( + SessionAttributeClientAccountId int = iota // 账号 + SessionAttributeUser + SessionAttributePingTimer +) + +func StartSessionPingTimer(s *netlib.Session, act timer.TimerAction, ud interface{}, interval time.Duration, times int) bool { + StopSessionPingTimer(s) + if hTimer, ok := timer.StartTimer(act, ud, interval, times); ok { + s.SetAttribute(SessionAttributePingTimer, hTimer) + return true + } + return false +} + +func StopSessionPingTimer(s *netlib.Session) { + if h, ok := s.GetAttribute(SessionAttributePingTimer).(timer.TimerHandle); ok { + if h != timer.TimerHandle(0) { + timer.StopTimer(h) + s.RemoveAttribute(SessionAttributePingTimer) + } + } +} diff --git a/clienttest/gatesessionhandler.go b/clienttest/gatesessionhandler.go new file mode 100644 index 0000000..e6b06d7 --- /dev/null +++ b/clienttest/gatesessionhandler.go @@ -0,0 +1,97 @@ +package main + +import ( + "crypto/md5" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "math/rand" + "mongo.games.com/game/common" + "mongo.games.com/game/model" + loginproto "mongo.games.com/game/protocol/login" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "strconv" + "sync/atomic" + "time" +) + +/* + 添加到客户端管理器,管理器负责登录 + 当连接断开时,从管理器中移除,判断是否需要重连 +*/ + +const ( + GateSessionHandlerName = "handler-gate-session" +) + +type GateSessionHandler struct { + netlib.BasicSessionHandler +} + +func (g *GateSessionHandler) GetName() string { + return GateSessionHandlerName +} + +func (g *GateSessionHandler) GetInterestOps() uint { + return 1< + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/clienttest/main.go b/clienttest/main.go new file mode 100644 index 0000000..ae524ed --- /dev/null +++ b/clienttest/main.go @@ -0,0 +1,24 @@ +package main + +import ( + _ "mongo.games.com/game" + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/module" +) + +func main() { + defer core.ClosePackages() + core.LoadPackages("config.yaml") + // core hook + core.RegisteHook(core.HOOK_BEFORE_START, func() error { + + return nil + }) + core.RegisteHook(core.HOOK_AFTER_STOP, func() error { + + return nil + }) + // module模块 + waiter := module.Start() + waiter.Wait("main()") +} From 2820f26132a1f1680fa6c0a91f5f070124ba7e66 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 9 Jan 2025 09:18:42 +0800 Subject: [PATCH 32/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/rankmatch.go | 120 ++++++++++++++++++++++-------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index d968da3..7a87e13 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -765,29 +765,29 @@ func (r *RankMatchMgr) RankAward() { } rankId := int32(1) for k, player := range players { + localRankId := rankId if player == nil { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindPlayerPermitList player is nil %v", list.List[k].SnId) continue } + var items []int64 + for _, award := range rankAward { + if award.RankLevelId == localRankId { + for _, itemInfo := range award.Item { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + break + } + } + if len(items) == 0 { + break + } // 发邮件 var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - id := rankId - var items []int64 - for _, award := range rankAward { - if award.RankLevelId == rankId { - for _, itemInfo := range award.Item { - items = append(items, int64(itemInfo.ItemId)) - items = append(items, itemInfo.ItemNum) - } - break - } - } - if len(items) == 0 { - return nil - } title := i18n.Tr("languages", "PermitAwardTitle") - content := i18n.Tr("languages", "PermitAward", []int{int(id), int(id), int(id), int(id)}) + content := i18n.Tr("languages", "PermitAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -838,29 +838,29 @@ func (r *RankMatchMgr) RankAward() { } rankId := int32(1) for k, player := range players { + localRankId := rankId if player == nil { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindWinCoinListTienlen player is nil %v", ret.List[k].SnId) continue } + var items []int64 + for _, award := range rankAward { + if award.RankLevelId == localRankId { + for _, itemInfo := range award.Item { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + break + } + } + if len(items) == 0 { + break + } // 发邮件 var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - id := rankId - var items []int64 - for _, award := range rankAward { - if award.RankLevelId == id { - for _, itemInfo := range award.Item { - items = append(items, int64(itemInfo.ItemId)) - items = append(items, itemInfo.ItemNum) - } - break - } - } - if len(items) == 0 { - return nil - } title := i18n.Tr("languages", "PermitAwardTitle") - content := i18n.Tr("languages", "PermitAward", []int{int(id), int(id), int(id), int(id)}) + content := i18n.Tr("languages", "PermitAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -996,24 +996,28 @@ func (r *RankMatchMgr) NianRankAward() { } rankId := int32(1) for k, player := range players { + localRankId := rankId if player == nil { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList player is nil %v", list.List[k].SnId) continue } + var items []int64 + for _, award := range rankAward { + if award.RankId == localRankId { + for _, itemInfo := range award.Award { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + } + } + if len(items) == 0 { + break + } // 发邮件 var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - id := rankId - var items []int64 - for _, award := range rankAward[id].Award { - items = append(items, int64(award.ItemId)) - items = append(items, award.ItemNum) - } - if len(items) == 0 { - return nil - } title := i18n.Tr("languages", "NianLuckTitle") - content := i18n.Tr("languages", "NianLuckAward", []int{int(id), int(id), int(id), int(id)}) + content := i18n.Tr("languages", "NianLuckAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -1030,16 +1034,15 @@ func (r *RankMatchMgr) NianRankAward() { })).Start() //记录log rankData := &model.NianPlayerRankData{ - RankId: rankId, + RankId: localRankId, Snid: player.SnId, - Score: list.List[rankId-1].Luck, + Score: list.List[localRankId-1].Luck, } log.RankData = append(log.RankData, rankData) rankId += 1 - logger.Logger.Infof("年兽幸运榜发奖 snid:%v rankData:%v", player.SnId, rankData) + logger.Logger.Infof("发奖 snid:%v rankId:%v", player.SnId, localRankId) } mq.Write(log) - logger.Logger.Infof("年兽幸运榜发奖 log:%v", log) //清除幸运榜数值 err := model.ClearNianRank(&model.FindNianListArgs{ Platform: platform, @@ -1083,24 +1086,28 @@ func (r *RankMatchMgr) NianRankAward() { } rankId := int32(1) for k, player := range players { + localRankId := rankId // 将 rankId 复制到局部变量 if player == nil { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList player is nil %v", list.List[k].SnId) continue } + var items []int64 + for _, award := range rankAward { + if award.RankId == localRankId { + for _, itemInfo := range award.Award { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + } + } + if len(items) == 0 { + break + } // 发邮件 var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - id := rankId - var items []int64 - for _, award := range rankAward[id].Award { - items = append(items, int64(award.ItemId)) - items = append(items, award.ItemNum) - } - if len(items) == 0 { - return nil - } title := i18n.Tr("languages", "NianDamageTitle") - content := i18n.Tr("languages", "NianDamageAward", []int{int(id), int(id), int(id), int(id)}) + content := i18n.Tr("languages", "NianDamageAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -1116,15 +1123,14 @@ func (r *RankMatchMgr) NianRankAward() { } })).Start() rankData := &model.NianPlayerRankData{ - RankId: rankId, + RankId: localRankId, Snid: player.SnId, - Score: list.List[rankId-1].Damage, + Score: list.List[localRankId-1].Damage, } log.RankData = append(log.RankData, rankData) rankId += 1 } mq.Write(log) - logger.Logger.Infof("年兽伤害榜发奖 log:%v", log) //删除数据库数据 err := model.DelNianRank(&model.FindNianListArgs{ Platform: platform, From d67df0a3cd0b79e3145bcc5b6a33a1f0b3d12598 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 9 Jan 2025 09:43:20 +0800 Subject: [PATCH 33/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 512 -> 428 bytes data/DB_PropExchange.json | 44 +----------------------------------- data/DB_Task.dat | Bin 7678 -> 7678 bytes xlsx/DB_PropExchange.xlsx | Bin 11516 -> 10842 bytes 5 files changed, 2 insertions(+), 44 deletions(-) diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 735a0e1..318e11f 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c -< ((2Ÿ28@;JƸJPdX` +< ((2Ÿ28@;JJƸPdX` ?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 53398ce95f78f66e66ab5d213f0c60b9b6956b82..6cba1a6b55345906f50090be167574dffb689843 100644 GIT binary patch delta 174 zcmZo*S;IV`u>NWrvjC$M8^<*$eG^LGg3?!@^mQnG14`e9(w9NB5+}#PUN(V-wU1c1 hVmVmA2Er7=41#I6gRD_XnT-S81?V>3oGi>Z697_mCBpy! delta 195 zcmZ3(+`uxSQ29z5vjC$M8^={BeH}{QhSHbYm?zrEnp^{Ml{h&T_Ob~ytbN4770bbb eq7SS9Xbwz2SfA3w``nCICJQsp4B=v+J_G`H5HuLkpftex#H3b+Fn|TBeaYI!f kn8gDOnESvmV48ei#tbS7vi_@% delta 331 zcmexo{m*)Wp&%Q_l3q3e5ibsog+O}2A-RoC&l#bjMo`g)&Z^B;OcNO=xA2HezR&zm z0HS!sVMZ@Dj*D%~0+Zje6biykfC{o~&Syw(CL%Qc~3w^8DSpkWt$wpw+>V7W`6!RjFX%B1vm2u9^wYd-v|1G399SB gES|~tWz3+WFc&{qE;Lz9_Bhm|z(4_d6r@WM0Fhf}2mk;8 diff --git a/xlsx/DB_PropExchange.xlsx b/xlsx/DB_PropExchange.xlsx index ccdf616e54a6052ff92593bd88a7885f911e2bcd..d1addd2e518f7eb967cd987cb32a9b9326ed287f 100644 GIT binary patch delta 7967 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 Date: Sun, 12 Jan 2025 00:01:40 +0800 Subject: [PATCH 34/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/rankmatch.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index 7a87e13..fdcf4c0 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -956,9 +956,9 @@ func (r *RankMatchMgr) NianRankAward() { // 转换为时间戳(以秒为单位) timestamp := t.Unix() end, _ := time.Parse(time.DateTime, endTime) - endTimestamp := end.Unix() + //endTimestamp := end.Unix() nowTime := time.Now().Unix() - if nowTime < timestamp || nowTime > endTimestamp { + if nowTime < timestamp || time.Now().Day()-1 > end.Day() { return } log := &model.NianPlayerRankLog{} From 9a1bccf14cecf2313fc98592d6026d93055ad6e9 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Sun, 12 Jan 2025 00:01:55 +0800 Subject: [PATCH 35/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/rankmatch.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index fdcf4c0..45f0c57 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -956,9 +956,9 @@ func (r *RankMatchMgr) NianRankAward() { // 转换为时间戳(以秒为单位) timestamp := t.Unix() end, _ := time.Parse(time.DateTime, endTime) - //endTimestamp := end.Unix() + endTimestamp := end.Unix() nowTime := time.Now().Unix() - if nowTime < timestamp || time.Now().Day()-1 > end.Day() { + if nowTime < timestamp || nowTime-86400 > endTimestamp { return } log := &model.NianPlayerRankLog{} @@ -1053,7 +1053,8 @@ func (r *RankMatchMgr) NianRankAward() { })).StartByExecutor("NianLuck_Award") } else if info.TypeId == 2 { - if time.Now().Day()-1 != end.Day() { + yesterday := time.Unix(time.Now().Unix()-86400, 0) + if yesterday.Day() != end.Day() { return } rankAward := info.RankInfo From 26ac8c302e8d816b3530003b995b09c7a0cc79f9 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 9 Jan 2025 14:37:05 +0800 Subject: [PATCH 36/74] =?UTF-8?q?=E5=85=85=E5=80=BC=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 1792b46..d9212b8 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2291,7 +2291,7 @@ func init() { retFail("购买记录状态修改失败") return } - if player != nil || (player != nil && player.IsOffline()) { + if player != nil || (player != nil && !player.IsOffline()) { player.DoShopInfo(info, false) // 邀请积分 InviteTask(msg.Platform, player.PSnId, info.SnId, common.InviteScoreTypePay, int64(info.ConsumeNum)) From f5d7e366111d8d8ca2b80037d70b8ddd18153d31 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 9 Jan 2025 14:59:11 +0800 Subject: [PATCH 37/74] =?UTF-8?q?=E5=85=85=E5=80=BC=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index d9212b8..b31c173 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2291,7 +2291,7 @@ func init() { retFail("购买记录状态修改失败") return } - if player != nil || (player != nil && !player.IsOffline()) { + if player != nil && !player.IsOffline() { player.DoShopInfo(info, false) // 邀请积分 InviteTask(msg.Platform, player.PSnId, info.SnId, common.InviteScoreTypePay, int64(info.ConsumeNum)) From 6db4ceec10199e3305a916f9bdfd09f893144228 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 9 Jan 2025 15:44:22 +0800 Subject: [PATCH 38/74] =?UTF-8?q?add=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 4 + data/DB_ACTPushCoin.dat | 8 +- data/DB_ACTPushCoin.json | 8 +- data/DB_GameFree.dat | Bin 26313 -> 26349 bytes data/DB_GameFree.json | 34 ++++-- data/DB_GameItem.dat | Bin 21074 -> 21377 bytes data/DB_GameItem.json | 118 +++++++++++++++++- data/DB_PropExchange.dat | 8 +- data/DB_Task.dat | Bin 7678 -> 7678 bytes model/player.go | 3 +- protocol/activity/pushcoin.pb.go | 201 ++++++++++++++----------------- protocol/activity/pushcoin.proto | 14 +-- worldsrv/action_pushcoin.go | 120 +++++++++++++----- xlsx/DB_ACTPushCoin.xlsx | Bin 10545 -> 10544 bytes xlsx/DB_GameFree.xlsx | Bin 67214 -> 67241 bytes xlsx/DB_GameItem.xlsx | Bin 38246 -> 38578 bytes 16 files changed, 347 insertions(+), 171 deletions(-) diff --git a/common/constant.go b/common/constant.go index 21bddbd..50c2b22 100644 --- a/common/constant.go +++ b/common/constant.go @@ -604,7 +604,11 @@ const ( ItemIDRoomCard = 40002 // 房卡 ItemIDLittleGuaranteed = 50014 //小爆竹 ItemIDBigGuaranteed = 50015 //大爆竹 + ItemIDPlum = 50016 //梅花(推币机) ItemIDBigCoin = 50017 //大金币 + ItemIDCoin1 = 500018 //金币1 + ItemIDCoin2 = 500019 //金币2 + ItemIDCoin3 = 500020 //金币3 ) func ToItemId(id int32) int32 { diff --git a/data/DB_ACTPushCoin.dat b/data/DB_ACTPushCoin.dat index 977012f..b8d081d 100644 --- a/data/DB_ACTPushCoin.dat +++ b/data/DB_ACTPushCoin.dat @@ -1,11 +1,11 @@ -  - +  + І -  +    N  І    І   - d / \ No newline at end of file + d / \ No newline at end of file diff --git a/data/DB_ACTPushCoin.json b/data/DB_ACTPushCoin.json index 75d6770..7910aa7 100644 --- a/data/DB_ACTPushCoin.json +++ b/data/DB_ACTPushCoin.json @@ -4,7 +4,7 @@ "Id": 1, "Rate": 4000, "Gain": { - "100001": 5 + "50018": 5 }, "Value": 25000 }, @@ -12,7 +12,7 @@ "Id": 2, "Rate": 1000, "Gain": { - "100001": 10 + "50018": 10 }, "Value": 50000 }, @@ -20,7 +20,7 @@ "Id": 3, "Rate": 450, "Gain": { - "100001": 20 + "50018": 20 }, "Value": 100000 }, @@ -68,7 +68,7 @@ "Id": 9, "Rate": 100, "Gain": { - "30006": 1 + "30011": 1 }, "Value": 100000000 } diff --git a/data/DB_GameFree.dat b/data/DB_GameFree.dat index aa44140c4cad8e60165d49525a3f892510f090fd..abdae4484f516d5f10292734b2f73714a34927c6 100644 GIT binary patch delta 245 zcmX?kmhtUb#trGtY)^KqeZFh?yY%f>O05J_*4zN94-}7SQs>$D64zj&y-~4n# z*W|sfM_HFFf4+3y=61I_Mwm8k54g5-9tZd#+MdqYrErDO;==Oh7C-NhnSen3@j%f2$SPN7y|%o8GG3P delta 197 zcmaERmht3S#trGtY)?1zKi#!`a<21Uwx@IEzu35HvVqHi$t#_NCo{WlfywT5J<1A} z+}!R~#|RVU_JHd-=W$@NyE{nF+{t!c;xHA_UPt-B`kv0&rErDO;=1+5NO@#giRtpY?UVn6UTxtQKRJ zmyMI3wr;Pu(8kP_$nmI+S%?cL);3k>gI;&HZ&kX`vgCr Q_9rOXA-1a%<@gz;0PBN@%>V!Z delta 26 icmZo%&Uk4Fph}H4 zTQN;!1S(zx)W--_yr7qD^BrbJMgcaCi*3ws;T4A`zhx-|ss#zMz|XB-Q;K-Hemdcts}bag|SQ<`m-5Igo!9%snDd z 0 || pack.ItemId > 0 { p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyDrawInfo), pack) // 增加能量条 - AddPower(p, d.GetValue()) + AddPower(p, 0) + } + } + } +} + +func AddValue(p *Player, item map[int32]int64) { + if item == nil { + return + } + if p.WelfData != nil && p.WelfData.PushCoin != nil { + if p.WelfData.PushCoin.Items == nil { + p.WelfData.PushCoin.Items = make(map[int32]int64) + } + for k, v := range item { + if v > 0 { + switch k { + case common.ItemIDCoin1, common.ItemIDCoin2, common.ItemIDCoin3, common.ItemIDBigCoin: + p.WelfData.PushCoin.Items[common.ItemIDCoin] += v * srvdata.GameItemMgr.Get(p.Platform, k).GetNum() + default: + p.WelfData.PushCoin.Items[k] += v + } } } } diff --git a/xlsx/DB_ACTPushCoin.xlsx b/xlsx/DB_ACTPushCoin.xlsx index 0dc16746b9d80eae5d9b01b117d4ab26743c9829..fc1ee8f897e30169a613e24c738bd33cb4f4e1a3 100644 GIT binary patch delta 1868 zcmV-S2ebIGQm|66o&kT(^QTZd0RR9*0ssIJ0001FZ(~q$Z*X%jV{dY0E_iKheUZ^l z!ypuf?@fG%hWi$1-KM1NlDX{4B_`Hryd!Y7H5N*M+3oFRwW~84FUkM&@ts3HKd2`9 z0PE^j7lTpY_KfC1;DMYD$-|ITwMdP62Ga1SyHZ?Z4LbMlhi zFRK+QQ<7#enZz`$C}niQ2zkr#xi#D`N1z%c{wGdiLSu4Qkr~To>}GmFJOj$!`{%!x zpHNE!1e5S38nYM!m;nw9o5mcX0{{Sf3IG5Y0FwbJ6@M`EH!9>T_9-M?lmLPHW5kGlC+if>32xVqDX7o-smu+`T22XD02J$t*(L# z;exUzMM)T=fHVawX>&}`*DsIn?oc2kZc1FShNS2_5$OHy&p);ubrsFxcoo%{HpnR4^WV{6hXXB0&WdwQ z8fip0sjvioaiXobs=bxJrB`y?!CbFABgEWz2EAl)!&lRSGr$!ag!Yxehg;rF4*VDZM5ovY0u73-=R)j^?`G2TBqbl3qwgswzd<2HNOfJqSF)0MRhQ`1v~8qwbm~9+c#O&y~zr^$#uODMg^u z+kZZ@?jxbclLVA`xI_Uv%ZfJSFLEIj1f*!81}azus&EZz3LQQ}L5<(^y)%l*Dx9w& zywEA?htWwGg64e?+-=a^FM<|*5Ztdpi*Pz7GLSkYsz$plXI%jO3po}oR;w$yUqEsT zWqbfDOj^MEWfyOw3uLh9efzO5aedj?H-B?|`Perfd=YRAFp#&wQzmFvsLzV+a9V4xHeFms&~Z{B-jUBt1MtPDg3_Pb#m&7PZ}*>W7^5I|ig2vn6W zJ1@I?V@<|ddXx-A27--8V1g8Y<#q_5X(tGln!wi3l)_jSODkmnKw|(%JZEl#6o2;r zA*@CS>T50fu+j*AHyCRI6LKe-frw@BikJ6M4uT%#gA-;m?xbiv;>B?vSuftS|Y1pTZ?>fd`sutnNv1iQRU zpBU>zr-F!O@KTqXD7RHjk(@9)Uw2^=~m0Ku%*lD9DTy?Jw!B_(4Ky@}<0*xad< zVRQrScrGOTA*Ub{4e71jJ?x^29rEav5*#B)FD$oV3eyi(d$SFmS!n}mwp6o!wD?H= z#{5Vd5me*=X^BJVV{Z0K{VZ9lt?&nUVG>RU*S8ZK(g^G`aR~p%17q^~0xr9$(tRfK z+y*Uf34f+P;7kZLW}L!tOrOG1)G{tPrc!OcM(k0msBM2ZHtzldvwa9Y3V)H#vv5TL z005Z+000yK004MwFLP*Na%E&wbaH8KXLBxiZES6lPfNov7{>2{-=X9*VJ=B^b4c4A z1jVbU_t3_z(5AIXhu&1sO+kk!-WC5G#nXoN<1AHA`wC_b6q+9Md!OfdpM+SggD^0< zG~s^4Y=CPB7?in@=d-pAc7L|l7n{J~f-sK+5u-LZq#U%I`8kVoVJI)-Hs}ZuuR_S( z4h;#fMKNV+vKJ*G5$c$&HgaI@WYQT{A3>a>dGGPM~10!YreoEK=fMapr zv4pefReUBEEGQfcPSFf+5kX4_8!EUGl2~)>k|6!HG?ulQd>_ccuz$ECe?IxV>P@o# zc+`{qv;6gTlARYt^65_A92e>MVKnQ~e>nZRcq{3GOKPid^@jgqsJ@o-15ir?1QY-O z00;nwPU1kMFK3?Q0kbv~d=LWTB9bE&lgT710X>uSBr^eFlPD#V1kUrPP?NtU#{r3x zhbA@wu#>(fEgO-}vv5TL005Z+000yK0000000031AOHXWs*?sMK>;$8NGCc0T9bn( zHUfbRlb{S0lh7wB0U?w7Cte8*o5mcX0{{SflVT`W0(uCO0Vx%e&?qkfYLY1{28Sd7 G0001DluM%k delta 1822 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

;|t@;}66LQ`2XJJ`zs$n`Oc?X@tEnWS=e?qMD0 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�GF2 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 a000000RSKX006FGlY*8i2EC8~0000T2r Date: Thu, 9 Jan 2025 15:59:26 +0800 Subject: [PATCH 39/74] =?UTF-8?q?fix=20=E8=AE=A2=E5=8D=95=E5=8F=91?= =?UTF-8?q?=E8=B4=A7=E9=87=8D=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/trascate_webapi.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index ea89290..c530b72 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -2272,7 +2272,7 @@ func init() { state = msg.GetState() player := PlayerMgrSington.GetPlayerBySnId(info.SnId) logger.Logger.Info("CallbackPayment player", player) - if player == nil || (player != nil && player.IsOffline()) { + if player == nil || player.IsOffline() { if msg.State == 1 { state = 3 } @@ -2290,7 +2290,7 @@ func init() { retFail("购买记录状态修改失败") return } - if player != nil || (player != nil && player.IsOffline()) { + if player != nil && !player.IsOffline() { player.DoShopInfo(info, false) // 邀请积分 InviteTask(msg.Platform, player.PSnId, info.SnId, common.InviteScoreTypePay, int64(info.ConsumeNum)) From 0b3c9e76bf4b07555d9519329d9db09140353d5c Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 9 Jan 2025 16:23:05 +0800 Subject: [PATCH 40/74] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_PigBank_Diamond.dat | 4 ++-- data/DB_PropExchange.dat | 6 +++--- data/DB_Task.dat | Bin 7678 -> 7679 bytes data/DB_Task.json | 20 ++++++++++---------- xlsx/DB_Task.xlsx | Bin 25585 -> 25585 bytes 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 318e11f..ea6f47d 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@  (8@;PdX`c -< ((2Ÿ28@;JJƸPdX` -?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file +< ((2Ÿ28@;JƸJPdX` +?/ 2(2Ÿ28@;JJƸPdX` \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 5de0d1f..e10fa5a 100644 --- a/data/DB_PropExchange.dat +++ b/data/DB_PropExchange.dat @@ -1,8 +1,8 @@ -6ӆԆՆֆ׆"= +6Նֆ׆ӆԆ"= .ۆ؆نچ"= -Wֆ؆ӆԆنچۆՆ׆"  -]׆نۆӆՆ؆چ܆Ԇֆ" +WԆՆۆӆֆ׆؆نچ"  +]׆چ܆ԆՆֆۆӆ؆ن" "¸0  "0 diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 68f17575ca28557cad3fa45d0b07176745f304df..0dc47a14a31eb69d7ae2c148a7f99366086291af 100644 GIT binary patch delta 414 zcmexo{oi_mp&$px!d^Ck1&8Fk*f^E|St1*qWLO2+I4-s^3$S>>WjE)uHZo0~%qcRN zg`)~6y$Gn36(K#jpTm6eW?qraw>TUaC#Ug>OxEKnpWMtZI9Y*{b@Og6H|EJpxkM(5 z@@Y+O;Sro1z_$*I8T|Z)lfQBcZVu$nVuVU_L9IB@VmtYafId`I1S;ClS+$u*a4!ol z$g!+I58MONjFYd4HgbYkAd!ok6U3G-TQ~}Y+_oZbfvrF4fZj_ds94oCNVD_|s)zh6@p0@7Q;51OQ zV4FNqT368$Rglwx5o!!Smkr0mQ~}A!GBUCPMyRTICUeW^3K|)pii&LZl-bG%0LuJ< A-~a#s delta 413 zcmexw{m*)Wp&%Q_l3q3e5ibsog+O}2A-RoCGOU7do);U(#WrREmd*LBjZ8qri-3xl zpo$O7;+f3IQ9F49x5(s4941g%E|_eK?dIzo&WuoDR)h_cwYjP$GxCXS-pS>`Jb5XX z$YfDIEvPa^n6h5B$pL)pCa3WVPUhzaITK_vve|+BS&WmvatlsABcMOInO|@-kKkSw z-g`jDGD02AI{BJtBPYoDtU!@_n-j#AFiSvucA&);D0Ckr#pTR#D^);fa-x*XWDBWT zLJ(nHFHUfPG(3DQKKY4Mf`HM}{#8$RZh6|eSA)|)(Sm7mh_vox7ir1Kv!qoNO;IIT r9Y9V1namR*F_ZT%-$*fuRth!Eq8OZXfJhqQs<#p6$6ejx-p?`IYh-Uakn93J>rzk`>afl zBaoE%j!n6>(us*;W{pEF`2CFvx=^PX@FrI>E`E4*KHO^o9-bJ6NKT|v%o1M7x zEp3+q*@+o^Jn}YCRgn22))Wr2cPOi~vMDUwU_vO&5i0|Bx3~$S+@d(g?69Gh0{@Fg zWhJmj!+K1Oty-l+bkZ2y5t)hwZL_bG=zLJfT%l$4jul||gKyqIiftg@P5kgUF5Z^I6E zKziX!w!-ZkAH?b2KRkC&++S@Airn~I zbBx7ce4f86RB8(&U0|A1auRBPxK+9g&F3#RiXdCYx_yZzxF{sCa7=Pu44?}n&ey-u zbbE9PdLXWHx!b-me){$1*EQzwy@XKTr!#9l(g&s# z>K};ZvfG;%faAn8r?v;%pC2~g9PPqa1__{*&d5KK8Qro-L z)$RL^p!Fot&Zn=thb8r<3e|->Nl0u>bm3>1p3{7=IP~NC{?Dp+5_lelV{VIUNJR~ z$j56;r^@($f4vJwKTkZ&tQbx_OsptJJS?a;(<1yt|1P`SFx|{AVn(~%(aN#Fxa9g9_U#r+F?A=QClMNcRpoc9YjOOdi82hpYC2G4MCldav7eAe{W)N> zS(*UDK*;KieA{=%2!GXA!L|i2+j@A)_-53{e&1+QcV?4E`%aD*;>3kMYSai;au7G2=|PgTSaE(A!_ofR z=hZyBI%M$G9KZ+Sb1R2LZ@E7hXNSTEomj*Vm*@zJBYT0&Cs+i9J6FKxI#fwrtF9F> zil(5vkq{>R3B!OGr}}c3I(tUL3}r8)nlr3y3~x5-Zx6Mscm`*oN#^jBq3Kkdk?7{! z>mgvxV7xMHEi2z86}5(9q@%Kp?+N;KrP6PKaJna#p&n|bhzhi*`Mb@8i9M#%2!|Te z4NRR3@m*$PM_PN@#yi@4!6Kth4V7+6iRp`QiSv-a_pHZA1B!W)LxH$+cxcl}?UHCw zvKc~FZ{;npB3Q|O*Dk@kQVruaGae>XzTeawOD99prd#JX-qwdEf`VmR-xKAOu{EY4EDl*R!BtTqw~rFFym>;v3}cHHr9q%q|G zb}`;&LmyfR!U5$1hlJSe)E_)$%tUbVB!Y0~n~4O`v^m4#mh@9JZDKlc`gBd}MXwU) zl?PgQRVr5hMlSwuXn{ge#egs!Wr{Yb;j#pV28=`9#!Z<)?YRLN_)e;C;gVO=f(Skh zv9;@IxP~%n%E{>rQbxwOGPTKCm}4->M1#_(m~5i;DC%uL7%>Ad)V*ZuKYXcCko{)O z=ypn~I@dB|=QFrpVpOZ~hQ*2*_~l{t=GE$TIxdb0yoT4%OyylVRF>y_LGe5<2-Z*n z4K|=CbWNl1Rq*^ePeyGmV`728oAhqF$ass0v&l-yK?pH0$3%FpCwruoFe{;Y@(v`I zR%P{?@w3vU<~q`7(1-LDRmm5QWE-(;r_fpO$n{^l=YQQD?AR5^{9echY~iMISEe#b zCKH(Cf05b!uC4B_Lq9oMzD;51ZL^n)FQM-)ioD#q%hCwae6CvZ>av((7W6Qq4s~~i zIBe)1W5^^_)3GaOKc(hB z>eAT$B(HoWdVIOLEPx-N*UbWHA?k7yXB3vVgvpmXspsx@-IbA6>WE+J3~m^EygAb? zZlCBgCDaBF6gIXhSKB#!MMaUX!N@$nCRhF@0Sr=k zm9?^;p2?Q3N8oi%Vt~0@^}oFX{*INB>^6gZ@ZDlcKWK);(}DwS#OdcW=tc6Zw;e35 z&30~c1ObJiuMIrbCleHQ{v0yY!$xPV+mBiGGc4_P;!88DD{MBGWG zWE<5)|MXonH$ukGPiiZ7S39okF+ukNPOu2$&{Itx>6X?vgoc-3PyYj+4Z-}-^bgBO zR^hiYJYEP{U<|^Np|`InnxhDjB4Qd5vI@d$P-Shlb>3mJiPT?AqEK5e-I@Bs*Ww5PtSdwtzIr4E)C@M5HcAuejtmH3*A1QSMWoWDh2l6zJ`9%iLqVvdQ{pH5CozX+N{^POfaT|0=PepNSoG(o9To&c#@FxUy96(%+K_;i2< zzXcY=6GIKE62=;1pIppE9db;nq;{eq6>$UX)tAUc{)`$umr=uyvUBx1hglZ&1R}I?=2H*)`j3rR7253@@ zbErd5ZB9AS8eSn$Qece*NLuEj+i;0QQRkuG3Bp5KQ(>%_BHhR4A5^}{y0Z3+;E_;t z8x=irXcc}1NTc)BV3neemuN#AU6hc9BTXQUFt1q(68es0aDKa>@6t^i#qb|b0pkDT z>g3Ogc9Wd*br{1T9WcN2oe4cS3=)59R}~aHRUUo23+HRb(Zsgt7I4W3^WQ};QA_Lx;X zwQ}tGb|y5r9B0PWh2)+KNoZ^ib&pmzF|^HdxF(XR4U!N^oCKRSj`aJoHSgW;RGcBQ zYH`4NPBUfG{}2gDGkKmBM~D4v$+Cmi_i+w;vMsC{wjGQ_02?cT8uvG3w48(?2F_^_ zW!Nq}<(Bu3MF&^Lkj2-$%G=xqZmMzX+u|nGXu^>*4ysI*o2Zt+H4e2i|~d zhlw2Dt8$hq2*G82&+C;wfQ9(2y56cH2)l$?AF3XP&5A)X*--NL^xzw%{~BTEjzaX-Aez6dh&4yP}tvjurGzg1d!$(kdNP#IhB?z#|r&F=$OIlOs9UCc*qsV*d z<`8oCpf)w+U{9i6lw|5h7M$`^w4f74hh_Wz8MLpYTHDoC$Ve}&)VaJ**^=UCJ=B2^ z^6@>ccPaQ9h;||JsH*&1yr4E;a-2%f(+T7N=ESy9{s`0>1(H-Qy5MwRm8wHUuErfR;z{DKU}y`wdAyRAb&&=17W>|W?APXKYX1qc@lAc z`TiJwSg)tw^BGt@E@{={K`P2ej+;(BjzAn32svQ4F-)RjX;OWyHC^D;%bVX{^sg#a z%~&?Jn-rfH&}y7iZ!)r-S7~JrS2EfbNq$9#Iq?o%L^j{=LFEp>rNKvgORb2YWW%X1 ze0}_?$?CX0DKjN;iueU{jBcKYvcr`H@JSi7Ey}^c%yVp35hFdUKxXcr*;QF!?dE5s zuoabJ!>jeRv;U)`S!v3yg3fXdx$g83B(`t-)SBIj1bJ5Ug=$;JCq~=wqWrJC;rCxy zT267*t7gDybaM%z+KBO;?1tH<%Dw+%56HE=C~$HfECEDZ(dg^r%FS16Tc9vL;~6_v0+Sta<(p` z^gb5v^{6}@SOvBdzm!4>a6yy>e?gStRX@n13?auK6Njr>I7>AA=lm63sHSdVv@_-M zn>wZzS%$4jK6-(!8J#iuO4M|$QZrlu`@$=}zFIfT_1bTd-jHb)BKgpv#Hen^ zEK2$rVB`C_8~$J32TLwhi+1J}rmj#(RZ5l|>XZdVs9(>3q&llN17e&qXfE-@FYnp+ zufEDIIpt*TCeCw9Ci73~dPX`d%S_SI;!p|m5s+Jt{wMYgF16?=J{+Q3=Z+|TF^aW8Dv;e z`=zWFspG~{;ls7wkuRTKeQ0thx=;=&F(YV~xD!E1QXI3GiTrbOv>^~(Tv=viQCmWv zYfp6Ez3^m73j^{%4U)p6c^@U+6;MkU0GW}c4c`~SG7ZZHmcNKT!YtO-I)d_zY(jo_ zfb479rhZe;`hov00GnHW$M#0Sc^{j*v)<9?4yj+vEn%Aa%MejF8rqck+$N2Z7h>e@ z<_V{)MLDf+%XTaY_tV5#g8!WWoZ8#|KL39IKOLx6h^1q zo&%x6dSMVE_A|&7%;qFUcI*;kN-FcY{>c_1hDNM1pU8hKR5c2;N zUhJ2m%h=QI!-kWQ3QQ+d-TC#FTBToIJK`t?T!MG*GaRDHiqHW`&PhRuF6CO?$ zu5dnin2}S7O!nyJ1zqft(Hu0&_5GT8Rg8$>YD9}l4Q#5q(~{mtweQYSLAo_f_CMW< zo@X8AM=G-wCAspQNuz6KutCoHq)_*xnP z3+jEcIfXnZ)KXhIWDtK|p|oSDXFaL#jxrnXI>r2Zb@)d8*bt*2M{(AEC+OgJF`!+7 zk%_)-Mt+Zm4gJWAD69F{@2NoeJW=i++xITP*|7bmRu;7tscUPGL?%V24QGcr2osHX zxFZq#31WQfUziAFg{G5BAq#<`Bzns@&+Th^B*xx zwZANc-N`_Jqdjv)RUAWEx{#kVtQfy681HU7N|l6|u*!9_cWsMBMNOG_O`X{g`W~vX z%9OV1N6sc~P~ri>CM|{iPtFu+BDJVskrrKM#}Dz#esY0Rp?1bb3rC*AQ3xj`t-O*c zji?|VNI%Y-+}O(C*l`Smyk2=?iabA}hYVQcdB{QaU&HK9b^__zk)xP}zjLVi=xixh z5&!)AM^@+Fr^qs`47Uh{Lo{4Jl*@X6;XO-gp9PZ=0_6|=Mt2JA35=ZE&sb(--9h@R$Py!`v-Rn_JtSqP%J!`Q_O&rD{toSb~x9(1D zta@trSP&YjXctH2%^Js-417gjGA9(?N)|2`KO%3-N0-Ny!aua&LK%Z!Siu00^IMPe zeonFTbVr3TL3+Kwv(`Y?S-F>o=1&nh%43Z1TbA95GTGgp>Q}UlumW$T8ftJo7$OB1J8u%aPhyhi;~WFdXCw|+j^&9|GDi4PSy1S z?T>kGzm)u7r`dF~7*H0ehwpUpz!3)}*mFfIQ(A`(xV|WWcqwu&3PUZ?$h3uZq~#(& zo3}_sLW1^#U!EbF?dL$A;)kfpL_l+$&sZqkV*g*=hwD0I|GkMt&0h*NVV_5%%W~*S zf$*ff&U2CDp02sJ572eZmibi9Hj6>KcPYU`G+B|3Rc1yPqrr(&lUB)hen|JGTOlyR zDsNUnw0=y%b8l7wB2$Ev|2h4+Cw^fZ*}4`w7uE6kLAQjiT?&&~usQ|C0bfE2DtvQU zO&(zJEBAn(TD$utLH;_i**iabyc*kN*_p`)27pg|k9Pyv9XHpps8;EfuyU_b+@Eue zb8PWI?1%k%A5Xnhsiy2O&#UC&B?L!)6;+<~312?R6n=EjCYT!3tb)rt#5<5@Zv%!X zM;|Zt(vNhPJ)4jJ)@=I=ZPzv3cSYxYy!BQPxG7$sKD)$m5@UV=nyG=LB@jXlV@s~{ z%J6}a>9{pE33$;rkPX{@_p53MlSkaR-MuEGv5-exdpgqCABVxJshNRxlY9uO`-?rH zqWZ9XZhB{KjnV_BvpRd!6kPNhs~Y685PSD0Pl=zt=rxOMc;Q|RQ&484jX)R(Ymb&i zYB@b_jNR9Y<+CAe_IO<@C8pK9xXoIZq=v)&bR}u^TX0RMm zuyy>HTvkBdIx-Zj8*LNFV(Y*ey{u?}#2FnI!?wd`%;anKFIw23iYl$NW|WB30`QI+ zWpy&p6I5V3xK6SvGnW1H>}8i!RC{HaAHqNBnE8EHjUeY) z<`$Ja(09lHkp4XY09Zp39tbn23Gz3wa&EKDh|L{#u*hREaxauw;RN~y3NdPZ`j*ss zzy3@9$szLZCk&a5(kow>G?K}Bo)47+-bSQNhuup9Ytr0#&}%y?NIEW&{Y-*zww+C~ zUns>!@?>|pgllhuWgU#|uv^tHdU@JvfPam`nBC!@s{|1Jz&1?LwT{ZO!hX7Lv?GOk z>^7324Ylc_Jam9ao-C`}Fpb2w4c>IK_uVFhQ&TqBc5b++&;+%vrLqn*QUM=xVz)m}4_DMrbI?yLht=3$I}Y@%$! z_~A#5APkb_uidnPb@|j?v=}Yu9JD0=)!-km=uY>JCH=X*Ii6wO-9*$)9NtVl;R`R4 zPpfEsgqhJn)OCt@TI5>SYAkPyrZ81e|N30fNQ7JM9>;p(8x90_j0S85)~Aq@E(i9p z`e4rrFiNI8^x8v7c1$eKj4O8t8;kK1{2I%E)y6VH^z`fa#WG@pt9|QF`_0im@}jmL zyJ8**ezUB$R#=llTVVvcC%Lg$r8#+dPe)mhjja5g`fsyWBWws|yR1dXwJ6MuL?fDe z5dxoZgqB9)fw)5V8C`Q6ZQB+P#UsX@JENaWV%)V*M;fYCP@aK!s1ja*9vCPV2VE9+ zrOJ9fI+^>QLw7JEAXG##`&9$egaUQMQWHnM9Ok7XVJY8o&+psQh0){RILOfKzwD|w z%KsI#Plng`JsAAaIR=`=RDh3KmwJt$_gsaZ{D+wZ@M=htcVOUnq)}DkJnKGBH}a!G zfL~F9QhSzs->lY5<+!Az1G&C@nP28xod;M0$bB`Pf2n^u;OpyVzvNsfG+i_)<=3IU z6n()D)6xO%+|hJ4dQA1T>zET{imZffrM)D8)qXg-XXs-oShYw!Cny?)rN5t@>yM+Y^AXH`VE zc4}>0|Lm{9eFn&oY&Vr$7H=^%_29c?!#Ggz{h{-}=Ec9w*G}xDDx~(=!VA9$tzjW* zxxF%iEaa`4)woQ}9oAU~z;c$!_+`V-1Cxo9Pue>rIrwhmHbZ3-?eNfZT!qz;dNnr^ zee$ylkS1gGlQ13WbtxNLkkh)_BT33p)Z-)J+qvp-y3F({f8gqg#=lYAmyqTT7&+oD zjh2P<-%wMS`lm#$zS`u;DP2#8!z%ZKOWsEC^fd!oGW}cQkyn&}WNR~%!)sxY2GUzF zPrAP>$_QXKGkW(kq+&ny3yF&Q8!i913SoAndJ01I0J))QB{EVa{G7oXx)PjT*!Q(EqS*Kbkfo*9mJwru zkQmyNVCE+18(GIz7a+d|;!%)aIXa^syG(-SBFlB=XqxAtLvGc@e*uC>b|X#c&C zKCZ=^I{!GoBhp6X{vtxfnB^{nQ0Al%u1PhyB`f$!$b#d@9GL5=PN>=2BJO2NlbLYVs~ zglr?t{9cLNr+G26v8ip(hBrC8A%9q#u%wGn6H)i>_1X;r<7|4>IZKOIdd~Do=v2=y z5`$F)%(ze4^+TzykOn{`cnt?E+FP*P_G{WQv@{_i{Q@6@+$iS3dWp_esIE4y{nu{Z6uI*6IvODiVqSCSS5u}R9^z&*w?Bool%awz(HqK17n$zO1cHz0zuFW-JP+KNxkhM2(V+Iw@`hC4>- zL4u=JO72)Z7(6hWoyf}|`DvSiYnSsp^sI1m`7H;@m*W=-Vv3QUH%U8R+zKud-)bg0 zgEY^Bx39_QZo8BexhJ#;HY%y9>+RY?PD!e&}nX?ja^h5FTN#sM$d2NtO zpm~K$f18pJaR79KMedEpTW@wQl0TB@^Hf5E>E~r;j5pc4rmF6fg2<@6g5rx0wU$#3 z%hBqxEs`HSy;9m?9mI(;ur95Je}@1Zl5*&+r9WmKW=7L3@*6PUOWYsAX89Cn{J6ic zhf)*=UnT~onBQr|POmxDf%Y1~Z_~ zo+U$bm{|G!NKDaycWTqs^W7K4M1`GTr#Cas!hK?o5Aihxlysv?cX1KK*53hfNbvYt z(~$h#1z+tU8iLf$3NJ%@T3_3`Kf{Yk&^@yB{%s!!vCrsE4NU(CF@FfmC|J8O*_#-? zu_mW`WOz|XY4g<7xIpRc%a-`ySnnQK$b9?MT+Xc=7_D)>9H-BB+u$5KT&$#UF4=R^ zrf?p&mhzB!*dq>jspu+-O{Q(qekdnV5S!E{Rp^*b^>3U)=T`2((1}f4J01oNH;P&) zixo;IV&aIs|M)*uhp%MpyJdJmPr0jn9$Y+FNJnXt?O(`sOIXj7(2)Q8#^&dUg(l9g z3SOu_;YTY5^6R6_E2UQZ1-?3$CQ2|-_e~cwqy}!Oqo>7ghg!dUs8{NkO7{0{Q0^h4 zzUAZD@xL|nTD>Koveu0!yFq`e&~dzZ7@6jy&~cWa^E@;*!ftcRGTdlWxCxu3Aa?4n zERc69b}y6(QsYhjyWCcfo|K;sgkixs{WE?~H!)Vf(|!es98&GXPdJGINhu%z)1BeI z>({q|vu2-;q?{T>X_RbT1n%5ny7zSz+gTvC;@Me$Y_H4BTue8;Xl((L(6|hhH*bp>)izPwazF0Am%DOyA zr^KO9K%y%W(ykL$1d|Fz?qHcfpVe8hn-h1cKwlLChAZS^{sSu_N}7z}_XoQEA?lVi z@EUc)nb`aXWd+pSRzpK1`AC8YruG?X1L8`8K5B*+LU1>+(m@k|gVi2PRm85h8c{>+4Xwsqy@=z;G}uycz5S{R1I@w^i!;HEhoVYhkb3ZgL$4n+6!aKn8!B{`+##*9|GD- zt<+IvLe$0Dg~|%-dy&VfYB}^?vY@Zv;zGxj8Cm!$ z&e(TW84&bg*5d?3N%&{-T>&qoh-c&U(N6_0fsxI+&uDdYthWK*6XF3b^KGZ?QKO%Y zZ$X-UXR&9E3B%Ku6@p*B!3rS>W#ZkKj^VovXcP4lJ`W``aBRJN*|Q`b#I5*!K3Z-Z zZr)@hSurn8ac^px_vXXdW!Km!Pm|t<{+WE-{yhuZE;#F8@%E3?a~43i431mVtdr>J zP!Tshty08gZh_@%#|pAnWsl!Cds$+ssQu+Mx%LG{>GykH+cd#_x+j&%3!W zX!OA0?)O(|$4^R>%FWL+a3JURDdT67_XXdpCPKb<#m?@$mu1I^LBEH3@a9(OlcPU6 zQB|;qMepZ0FHphQmu&W7;R$QM8}V(IEMwfX`QBV7JyPwSAegQT%+pyVyH1#`2Ib%_ z`XFm8J5>reH!NSmTE!3iAV!V+g6hq3-?UG5j6Kmy$;j~`_7o29ZHYZLo^k>!6i*(4 zqDSzgBMg>-A9CqtTPrQ5+=q4yibNss9CnCG*?TboyastfI@jT9G!$%<-WCQ7;75E+ z@Av%luQhb@{bDAxK!j1&a-Hg>N$Zrld|a6Y4Lu#&zDH!=nQ;SW7Mr{!s>#oa4%(Dg zEmwmH73W7IN>WqMFfb+~uno+h8$2E2=;^TVAQ@uo=fNt$g~)041Ik}gQ}XgnV$W#g z95>PUFA531^`1)Nh|m(q%+E5JhTJkKP{7jg$v012x*5(bzwI4=RxWBaE>YlNXQLm*`W5_UTV-8`UYc#rqf3-{C8UB+AyM zk0=Kay=t)tYcq{4;9o@ltkvA>+X`?uGOQY=m0bq9PdZq?5xs86Ih*YgFfRh zJ>G0$jJ_I0F~BosJthnGnPkiqEC|bla!zZJ`_hg=D=&jxkcUJiL*pHUgN^5;t|%{5 zXEeSF(#rbDyL$+rdLb8ICbd55ykPjKWFDI>Wn? zGO;kHvBZzii$l+RQ{OpphfUKUBpg$JE|3e6AKBiS_;whs*AFq;T8FYHg|aURS=uoH z$6?YW?EGUGK8PE!l8w0WYLCV}i0Uqv(yX0LxXvI0YS}>iYj(%BsPwG~_RWT!j=Mh% zGS>x8YQe7?wzO*D4E#5f)B<39cbypM9`wGS^aEeVGuTd0Dg^vnuNY!l7k)_I)8qLi zFAJFe(2oc;pcvlVOdV~kNotj);m#mz(?Ds$ZEIQvJ`6+QT3Uf0&mZ7u@3po#D z^18-uaC%h=D%8`}J9u%|WA(5#2~$prJ^&=Lw&>~SKgs^tQHBRSw|c)&#oCilZfVSV z^YkmBZ2H?Zv5h28IVxa2rf4aGrcf%uckE4DU}=LwvMn7P^P&z$=Fy`!pq{iQ{PoM| ze!;o(1-)8WF3k$vV!!lAKkHmgB8ovI@?aH3lp)(DNvoln3@hO^s;8iK(8jg`$_h0M zwb#}Ta>f!Z?fGcYaLC!_@tF$(?SdQa$W$BvwO&yt?uzh*q(1?vxb_gqokRc?0wFzM?( z{aE+TIZVW8WA4}M^jlXy>!{4kq_46974+57`qXBm@~Yip*~84I%7aUSu~J++?asqH zF4jME@*c)1y1D^1`n3{|V`Pq2hK`R^&6&`jFhJ}J@V@bn?J8QO>ZLJXiSG}5v|jr3 zW0#AbTBT1pSQ~TJU$aMK1(=WfNgO|%BIR(&c%wugw)-^eQI>uP(%)m|`=VZ0it6%em5?{rjufbQJ~ zE5JwWv$YTdCC=C$buM#mRB~N0nj~k+a0`FY)cv9y_=p$zfP7pvG-G}n`ZfQ-`|REX zTkOV+SoSu5osv6$0UUz9VJ$_PuDW*}Su#;`C-A!JNbO z!db@FfBg%1e|W9@kcp}(+>^P!)8chgGok1!^UYrOww4Sz1t~NaZ`DI8zWbAs8_M%C zlj(=9)s^Lt(-y__R+091_12F{H+K=UELSTZt~Q|6jscJU4?iP>#?Q$?0izQJtt!(M zZO%^cjO+=@k69#4sNAjk?3Z3>fw(o7{Q@TPwA+Wu(k8=q+$mvm;Oi%NG;lWb6Xu1r z7zdi%=d^7xIlnblqvypsPlBP1>nppXfOo;KUD&inHa+%UCA9ZhiwV(gdAW>uUXcW= zo&PxXsWVoCz?;c5RueD)lVUr|a@sq%>Sr7x^prE`RIFf=a$dXvh;-IsWn#@F@ zPm-?81fhwOIL+Bf|JkZoprC&5T)$t?P*jljrX(M8f9Rv6D|0>=Ji#O`LHwi?OROX< s3q9z)q;iXTvVZ>5unh%8^xF>d`r8yAIjP$cKPkbI1DY(U%aZH=0V{8+=l}o! delta 12933 zcmZv@WmH_-(lv~`YjC$lf(3VXcTKS15IoopZowr;aCg^66Fk8s1ovP~aEE-&x$kq& zId^>hqu1Cyy5_2?HEY&dyL+Dw!JZDm*5$wg4d}vGYKT+Cd@SX*h{TjZ6V-lrZtgqZm}D64o`NLfxFCx=cE6^^~yM8!*( zTg}3zzeg&hgGWNG|6Lw6#S86tI_~WjbRUMn~Wd3{g0G#i$ zPYeic3*w$3>s41THwJqA#t?#Mkbo(B`1f3XHZK>P6K-~o2xqVdNo0PJcYX1mKCkkP z@*ZDW@?Rsy>Ewyr6%?H&d;4w0jlg8)i6I4YGiK=bM*OIn?{m$k=IVznmx=futZgo) z_s68kHY#_8B5}yS8A?1#)BeaCqXcbZ@0-7b`*V4^;^Oir$>wH&K2@<_tjh}ckR*h^ zgTkOsGQy=qnjATChn}6cEkq|MJHkmPC_TbVCn!H6K-VrY(oetnEwJMgbGzn9{fnMY z7|dO{Y~R7hsFU;C?$Mp8Qde^+cvclGgJ^RElE$iSlyeo_u{X@)QPH};HZ_`S+(<$C zmYKY=@D)Ei)ua*0c6oK`HPxg62C`qgI*p2Q?lP~yBX-OatrddvmlDQ5%B9n=3~td8AvmGK>ayJp%q$5zFrpkD?G()O6_@NRz^!-`j*^pMef1YUBKJ#<9(puTBZNe+e1l}&1 z1go1VKDVlERD&qe5t&y*QL4W5^{CBh#xwoXs!&k+`Y354EJGnHYlY5vrU-vE`5@KB zxv{4%**P2h4oIbw72ve3mu1B}G#gJgN8kuYuj+zAzhp%wsE6n1rUJ`Yq3E=kU@UEs zUxJlEl9c|120em}qJf*<>@ZncthBI~V4C0j4VrEiOBufY((vMNb;+=8Tsb^%1xq@d zLgp%tLdCu<6wD3GqC;0QEP~?V+aM}ytB=_l-k^CNlr26;s&Ckn z8IrZnQIU*st=z@hqdmbSmGC1Z5ns?*y_4tE!^4!i$|@^)ose^cX`#TjI7`DLjTa(d zwUJOPtryjH7 zInoU&6^Jw6$-F`YF06iIOIwWn752^7{|%eUP2%h?7vIUC51|>*I?!3uT8BW>NKmS& z+D9!hJxr6p^r=aM99H#-gf)t29R%#<_+Ytv@18e4eEBwJ4b7#a-OYq>e8B z>}yMu*DpY6Q2hO#`-cwJf`E%qRgjUGaAL@sYsGxF-Zx=A`IYEckT#8S zMlAr(Dty-c<8#6uD6&I3$9e7t!d?@YQM9Wjkzx|g;>8{h#X}rO6s;4f^ykM|(M0+I zmKh92Ne=?yj}gw8LUCc4zP7vh?GZ$jM!vR)I7Ft{(^niFqt$z}1Ql0f1a=aGT5bou z&M!N{6k?n;^7nf03dpKu#jj+CHkvq^S#p8i6uSWt)Pklx(o1@&){@|YN>GrE*{kcx zFVf1`)i7TQ4iy(xW%b)rQ}4Xzy5Wgp)JDqT(MgK@4ndLA1;(>dQ$d%q{6;Z>n=x@; z+xJE{v(?6|EVR`?{#*IRAxUWJqP*vm%hKrB?4nI@C^0p^jQogAcl10~$8{lKmU`eI zC0nR2X=H)TbdFud$TI{@7kOTP#kTscyjBS7R|RWKs}LlB@v0;5fRCeVjxe}F*w&^V zZ|=W{l{Luve)^_6`3E`;_AtEGrC3K-6~>WG2S|h!SXH$hQ%0AK+SfWm8z!FC^#@I` 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 Date: Thu, 9 Jan 2025 16:38:51 +0800 Subject: [PATCH 41/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 6 +-- protocol/activity/pushcoin.pb.go | 79 ++++++++++++++++++-------------- protocol/activity/pushcoin.proto | 1 + worldsrv/action_pushcoin.go | 2 + 4 files changed, 50 insertions(+), 38 deletions(-) diff --git a/common/constant.go b/common/constant.go index 50c2b22..45049b0 100644 --- a/common/constant.go +++ b/common/constant.go @@ -606,9 +606,9 @@ const ( ItemIDBigGuaranteed = 50015 //大爆竹 ItemIDPlum = 50016 //梅花(推币机) ItemIDBigCoin = 50017 //大金币 - ItemIDCoin1 = 500018 //金币1 - ItemIDCoin2 = 500019 //金币2 - ItemIDCoin3 = 500020 //金币3 + ItemIDCoin1 = 50018 //金币1 + ItemIDCoin2 = 50019 //金币2 + ItemIDCoin3 = 50020 //金币3 ) func ToItemId(id int32) int32 { diff --git a/protocol/activity/pushcoin.pb.go b/protocol/activity/pushcoin.pb.go index 973be0e..13224b9 100644 --- a/protocol/activity/pushcoin.pb.go +++ b/protocol/activity/pushcoin.pb.go @@ -602,6 +602,7 @@ type SCPushCoinPlayerOp struct { OpRetCode OpResultPushCoinCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=activity.OpResultPushCoinCode" json:"OpRetCode,omitempty"` OpCode OpCodes `protobuf:"varint,2,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` Exchange *ExchangeInfo `protobuf:"bytes,3,opt,name=Exchange,proto3" json:"Exchange,omitempty"` // 兑换信息,加到背包 + BetId int32 `protobuf:"varint,4,opt,name=BetId,proto3" json:"BetId,omitempty"` // 金币id } func (x *SCPushCoinPlayerOp) Reset() { @@ -657,6 +658,13 @@ func (x *SCPushCoinPlayerOp) GetExchange() *ExchangeInfo { return nil } +func (x *SCPushCoinPlayerOp) GetBetId() int32 { + if x != nil { + return x.BetId + } + return 0 +} + //通知能量值 //PACKET_NotifyPowerLine type NotifyPowerLine struct { @@ -768,7 +776,7 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x4f, 0x70, 0x49, 0x74, - 0x65, 0x6d, 0x22, 0xb1, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, + 0x65, 0x6d, 0x22, 0xc7, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, @@ -779,40 +787,41 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x53, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, - 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, - 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, - 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, - 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10, - 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, - 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, - 0xf9, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, - 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, - 0xfa, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, - 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, - 0xfb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12, - 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f, - 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, - 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, - 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, - 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, - 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x2a, 0x4a, 0x0a, 0x14, 0x4f, - 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, - 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, - 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x0f, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, + 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf9, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfa, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, + 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, + 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, + 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, + 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, + 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, + 0x05, 0x2a, 0x4a, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, + 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/activity/pushcoin.proto b/protocol/activity/pushcoin.proto index 00723d9..077a5c4 100644 --- a/protocol/activity/pushcoin.proto +++ b/protocol/activity/pushcoin.proto @@ -76,6 +76,7 @@ message SCPushCoinPlayerOp { OpResultPushCoinCode OpRetCode = 1; OpCodes OpCode = 2; ExchangeInfo Exchange = 3; // 兑换信息,加到背包 + int32 BetId = 4; // 金币id } //通知能量值 diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index 84c1ad3..2cb4ec5 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -166,6 +166,8 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i if p.GetCoin() < item.GetNum() { goto here } + pack.BetId = int32(msg.GetOpParam()) + p.AddCoin(-item.GetNum(), common.GainWayPushCoinCost, base.SyncFlag_ToClient, "system", "推币机下注") // 增加桌面道具 AddValue(p, map[int32]int64{common.ItemIDCoin: item.GetNum()}) From 05581aa1e803681d9526cb6d7eadab3101a26c0b Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 9 Jan 2025 17:02:29 +0800 Subject: [PATCH 42/74] =?UTF-8?q?=E5=A2=9E=E5=8A=A0log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_nian.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go index fcb3f58..cb7c10a 100644 --- a/worldsrv/action_nian.go +++ b/worldsrv/action_nian.go @@ -331,7 +331,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) for i := 0; i < count; i++ { //随机伤害值 randomValue := int64(rand.Intn(intSlice[1]-intSlice[0]+1) + intSlice[0]) - logger.Logger.Tracef("随机到的伤害值是:%d", randomValue) + logger.Logger.Tracef("sndi :%d,随机到的伤害值是:%d,", p.SnId, randomValue) //计算BUFF if p.WelfData.NianData.BuffCount > 0 { randomValue = randomValue + randomValue/2 @@ -409,7 +409,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) Change: extraItems, GainWay: common.GainWayNianGain_Attack_BigOther, Operator: "system", - Remark: "年兽活动-打爆竹额外活动奖励", + Remark: "年兽活动-大爆竹额外活动奖励", }) extraDrop := &activity.RankAwardData{} extraDrop.ItemId = int32(extraItemId) @@ -565,6 +565,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) luckTime = 0 } damage := p.WelfData.NianData.AttackSumHp + logger.Logger.Tracef("sndi :%d,当前最大幸运值:%d,“总榜伤害值:%d", p.SnId, p.WelfData.NianData.AttackMaxHp, p.WelfData.NianData.AttackSumHp) if damage < RankNeed { damage = 0 } @@ -582,6 +583,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) log.LuckTime = luckTime } mq.Write(log) + logger.Logger.Tracef("更新排行榜数据 snid :%d,log:%v", p.SnId, log) } } return nil From 6554f55c04f5c6d58af53d8be9bed2a45ec59121 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 9 Jan 2025 17:07:13 +0800 Subject: [PATCH 43/74] =?UTF-8?q?fix=20=E9=BE=99=E5=BA=95=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/Base/Slots/FortuneDragon/Bet.xlsx | Bin 13008 -> 13027 bytes .../exported/excel2go/base/fortune_dragon.go | 26 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/FortuneDragon/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/FortuneDragon/Bet.xlsx index d25c047e0c818574817bc45d49c350e309d671f3..01dd33630485dcfd18063127b6b093a030229885 100644 GIT binary patch delta 2457 zcmV;K31;@tW#eVAv;hSu$%a)*leqyc0%)z1=m9?gLz5^1&3|l7=5%^R33+L!p7gib z`hq;n{+~DvNgR@SOC%R`l8lH)K;Gp({SWy!P)h>@6aWAK2mpsp;y`8YTEZy-000pJ z000vJ003lfV^DH$aC0wXb#ruYZ7z6iY^9M=OT#b_$KM6NL&$rYOWJPhXgij+1MxvY z-K&%~-3o0|ntyaU#P4p#oZ^Eo`gr`0-~H|`UcL4mI>^zqS|ylyfRR*{u3NQB@YCal zEHE;*RCU>DB@=v<2CvfVtN4D@gB)!u4RQ!&61=x|SW;@Lz3fZlxmdZR(PLj)SB^WX zo2IQ~uB)k+%2Ez6qt#@r?#b|l!)M;|VE>A&b#<~c+keO7;B?dY6MjTZZ`(S-Z+V#I zc?colMU)W+OpwTr<^&c1T<~lYt&4YzhEp@gNR_=?{r2I`Ve6@~Vrsj3D@TVu*kw1o z7(1pMLQWX>+zmYz&F2u)?=Yqphkx4m7n_@G`*VB{6@dsulozu=Fc3NT#l~jk!4Zrd;rhVKRX z4g&Ad;@yVjAaM}1Knny-moqJmEFzMqlC+id={qDP+KQDRKA6;y|HoOltgoNT!aIVH zj8`#<{E&E1B|K%-J|@3@-d`<D@&b}vZ$5uoH(Wf)96)(UsANoXrRr4> z$Rvl7N}tz%P~k|%MM)KYihUq!0W>wDvIs_DI15V3Dq;yM@eu~kGM2y{PYxwi%0dJb zRH6SeXSM8T&*_JFsh|zU+WB+l;+-9Fyl8UaU&#`|CC`+f@G`KjT}HVKmc2O3V)m5*9E zwyk_L^`mexcE5M!<5rGsClCF_90Pi1%}Fc5wsU#vyY+NuNFLb0P3m>&H*3Kg503?A zK-N?r+GsVxA|~2+gH}wg#P8!KTn9(2RML)r-D-u=xfydeBS5M{V^#*xXm!G|6Pjgj zwW5zc&FG;q#sM^19eVN#trdOr!p-QRF|Q6CxrCtAp=ZNFESnRaGC3X0p|y@f`y1xX z26;2Xi=4zJuC=zjQ^k6b;a(naaBhI3S3qm+9DD<)--FA&voOF@;jD+&x_rY!dnedm zjakz@e5Yd1D(MxFVcJ7qp9x`4y!}wTHr3p5g_oJ>=J=ohZr)Je2pQ+9`@mzbnUA0j zwO7*`#3TEM?-yPuTrhk(%!?6|nhPZ;Q~I8;uzN$%cb0qNHva)oO9KRx?lBs(mkLM& z3i1R0!x;ns09g%_kqQ};Z!!gcl~-Gjn>ZAHueARG`MrR1os5!H1r&9qR;qUP^6Vi_ zVhv!{IAPjfzsDCK7|*DihX9|?Ip4YYV78xL%Obc@(J)@^5DsG$&?@IgR-Jd~uRjkT zA5hRpQXNUbE4o8JXoEiOfBUd)xp-+Vl*#}sRLu@uq^uvKsL3z1Bu&VFYg)m|iHnj* zcogTTsRboRtyC7#ERI)ENmzx9g-7u#Hu&kpa+>k{TGC1yBZ3x0g8$8h)lFyZ_4rHn zj)JrhYv<3MifuN@y z`ivhBc#U8|i~P-K+uYp;k~}}rg65JQp;u6#df=J!7bW;RK(R8e1(ZpWOLn6vEs7ob z0%n8eU(KTKfgzDRIp9xhS9 zud-kj{Yr1N0EHb|Dx#bhU={v@lBpg?K}lYX|HdMY!^Hxxx*vF&>vUN{Y>gQ8nN^2t zYt(1U5XTSm{`ao>+^WOXs^iuFP+wSexOVExuxC~`@3OC~I$W*#ChWr2S5q02F8ov5{;l zG3zBFaIN>=K0Vz-kGy7okDRt5^))|qQ%M2z8>;$a3@ zRe3pX(Zs@ky1yKn)UG*jX5me5X-uys(lp~3YkFsgBo?0el5W@BtXp`<;h0_x91s0W z)31A<&4|MW*1hJ0nc6j{Niqu$(qnoxPCWE;P5~y2=@IKhlUUsJpOc={E>0TI*m5&qj*R9=Qj;_NM#Py_ zO;FGiyr1H54Yd*GKxiH$ul3vWnM*kS>e~x^f>1cN#OlC!;#_tQ@B&jdpQyanK}~8Z zp4d+z_~L;f#|49r4gHO=Lp2vt5GK_d&lo#sE9wQ7LzbADgh>wTQE8SvXhoDHUZg_%`iX#-;)k8 zqy^MNZo<)%w=r7+dJ2=EG8L04G8G*11OLMr1ONb84FCWb000000000103ZMW0MZSU XpfVMcZ!#|dA(NjnD+aDD00000$^47I delta 2437 zcmV;033~S9Wzc1?v;hSQ2GIjcleqyc0$Qw-=m9?gN0TT5&3}ANuIO||33+L!p7gib z`hq;n{+~DvNgNVSoY9LpP2v&p2*|tKr~e`U22e`_1QY-O00;nwPU1kiPdbq(0RR9F z0ssIL0001FZ(~q$Z*X%jV|8Lyue4~bEA<|! zz8@H`6`KW@77>h>h|R_-0jDnE`Jt{N(k*4qXP`>aeQo z5QmU#k_rYmC}FZlB8X#*NlB_EDK_uGo6gMyc(N64_4}s>hwWx&%Xt{P9oG(hw5xG? zF;?dUhXe-1cQ^EdB#Ll~zQYt<9sX&vxZ2!RyC36=1ud2|X&QoS8pTyy#F%bMx}-%- z!!rEM1_zx_b$Mj|0gxKAlLYPp3WRV4jnD!B04E2N-UJzcGA?*+Y>ky$Z`&Xg$KNOI zJ6OEem)sM@soF->CT&u+?($6R;{??<3`pGW)9(N_NgB6m9s)k_|8Xu{mezVPSD!yE8!n&J4nPM;s8vdKT8l*# zscZ)oRUsFDP~%9!Wkof9%59{C1e#k>RYrq2o)o-fd?6_ zmN~;Ln$ianij>?Wi`yANyPffyL8DIkfhqZh^CvU#HBU)wSWrS{k{?iP4sZu$nUeJs zcgs?Cbq_h3t%@<(XoyJ`{496tkdtI^` zzQF;1N*qiHu6b%h2u?MNXS~Ff@IR=S+2kas=(BAbw@MO+qfs*HehA8JzFH?bh?5Um zIkv5QFbRxccSp%Vnyv%HOhYt$i=8esbP;joh4?OmU`3QP1 z0zn1HNA?fjFT7B=WcYO07b7KtOD!qW=ALk{drL8QmVe?_{{c`-0|b)+G8(g(3P=MA z%+RR42Lu2B8x51*1Q~xcE_iKhl~-Mlt2PjQuhjp5c)x)2xmhK-x`eJ;sgZQ%@_S;4=;Jo?=y0zFwM75V(Ql zUUrHSOL8f2D%4cgm~44zW|iz;Ko3Qq`Bf(c3@?> z3x8Td8~tNQ;1&qtp5gxf#`a{o=Bo?}cBGe59YpyzFVuf|7jD8E_PgkQX8d$kAY~pw zd~s1Fui3Bc%1Ut9g>y}mixQ&3Z%}dF;bBnGH&l-iNfIp|a z!+(eFvt>k*hk1W}=svgZ@NeD8>VLQ|tULVQ+?P?$tZ#hmF_yp-Tz9~JD@7N;>VR6b z4b^LxJT8A=>T(T!0TfEw!t-^XY~w4;Pj1Ij?P2_S3*wj@JSO8H+0k#eSr4*7Gv^MdpP=r+)WAxkBKYrLz9t0 zXp~+d>1Pb=n$BZ&M&TPvGile)umuwzbVW)>cbIHuP-jE8<^=-0hwOOLSWwh29sIc<^= zga_*}z1}}O^m9Z1;L;6I&j4|?SO#~q9RsfHEcnWFgiTy_9iPvpVvLn2bl4uQcBk@p&4@xxV zh4~^B9AM4u89pKyoKzBh=sOCbZVzzU(=nf!x->yU8z!Imzwpfh`<##*J{Qba!Y&kS zgjAAprB8Mk?8!vY$I||@X8#|vAriM60`4o5+ATi;Jd+wOGXY?ePA-!L3I@>wOOxg< zIvcuAI*}*=000gG000vJ0000000031AOHXWAd@>UaRG>vtuHnLuPT$?DjbsmFe(9M zlPoYn0TYvMFggLBlc_K^0mhTyFhBv!lOZvr1%z+~jnI?IF Date: Thu, 9 Jan 2025 17:08:37 +0800 Subject: [PATCH 44/74] =?UTF-8?q?=E5=A2=9E=E5=8A=A0log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_nian.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go index cb7c10a..1e3cd0f 100644 --- a/worldsrv/action_nian.go +++ b/worldsrv/action_nian.go @@ -331,7 +331,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) for i := 0; i < count; i++ { //随机伤害值 randomValue := int64(rand.Intn(intSlice[1]-intSlice[0]+1) + intSlice[0]) - logger.Logger.Tracef("sndi :%d,随机到的伤害值是:%d,", p.SnId, randomValue) + logger.Logger.Tracef("snid :%v 随机到的伤害值是:%d", p.SnId, randomValue) //计算BUFF if p.WelfData.NianData.BuffCount > 0 { randomValue = randomValue + randomValue/2 @@ -492,7 +492,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) var bossDieOther []*model.Item for _, info := range pool.List[0].BossDieOtherReward { if p.WelfData.NianData.OtherAwardNum[info.Id] >= info.DropUp { - logger.Logger.Trace("BOSS死亡 额外掉落达到上限 id = ", info.Id, "数量:", p.WelfData.NianData.OtherAwardNum[info.Id]) + logger.Logger.Trace("snid:", p.SnId, "BOSS死亡 额外掉落达到上限 id = ", info.Id, "数量:", p.WelfData.NianData.OtherAwardNum[info.Id]) continue } //随机 @@ -565,7 +565,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) luckTime = 0 } damage := p.WelfData.NianData.AttackSumHp - logger.Logger.Tracef("sndi :%d,当前最大幸运值:%d,“总榜伤害值:%d", p.SnId, p.WelfData.NianData.AttackMaxHp, p.WelfData.NianData.AttackSumHp) + logger.Logger.Tracef("sndi :%v,当前最大幸运值:%v,“总榜伤害值:%v", p.SnId, p.WelfData.NianData.AttackMaxHp, p.WelfData.NianData.AttackSumHp) if damage < RankNeed { damage = 0 } @@ -583,7 +583,7 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) log.LuckTime = luckTime } mq.Write(log) - logger.Logger.Tracef("更新排行榜数据 snid :%d,log:%v", p.SnId, log) + logger.Logger.Tracef("更新排行榜数据 snid :%v,log:%v", p.SnId, log) } } return nil From fc14c2a4677c439d3186222bdae46342c2f1b5f6 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 9 Jan 2025 17:54:05 +0800 Subject: [PATCH 45/74] =?UTF-8?q?modify=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_pushcoin.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index 2cb4ec5..a7b7f30 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -185,10 +185,10 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i id = common.ItemIDCoin } - if p.WelfData.PushCoin.Items[id] < val { - logger.Logger.Errorf("获得道具太多: %d, %d", p.WelfData.PushCoin.Items[id], val) - goto here - } + //if p.WelfData.PushCoin.Items[id] < val { + // logger.Logger.Errorf("获得道具太多: %d, %d", p.WelfData.PushCoin.Items[id], val) + // goto here + //} BagMgrSingleton.AddItems(&model.AddItemParam{ Platform: p.Platform, From 87bca00698ee99f40aaa58859686ef56a8914edf Mon Sep 17 00:00:00 2001 From: "DESKTOP-45ANQ2C\\unis" <121212121@qq.com> Date: Fri, 10 Jan 2025 10:16:02 +0800 Subject: [PATCH 46/74] =?UTF-8?q?=E6=9C=BA=E5=99=A8=E4=BA=BA=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E6=88=BF=E9=97=B4=E4=B8=8D=E8=83=BD=E8=A7=A3?= =?UTF-8?q?=E6=95=A3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/base/robotagent.go | 8 ++++++++ gamesrv/base/scene.go | 3 +++ 2 files changed, 11 insertions(+) diff --git a/gamesrv/base/robotagent.go b/gamesrv/base/robotagent.go index 5ea4833..300df16 100644 --- a/gamesrv/base/robotagent.go +++ b/gamesrv/base/robotagent.go @@ -62,6 +62,14 @@ func (nsa *NpcServerAgent) SyncDBGameFree(roomId int, DBGameFree *server.DB_Game } } +func (nsa *NpcServerAgent) DestroyScene(sceneId int) { + pack := &server.GRDestroyScene{ + SceneId: proto.Int(sceneId), + } + nsa.sendPacket(int(server.SSPacketID_PACKET_GR_DESTROYSCENE), pack) + +} + // Invite 邀请机器人 func (nsa *NpcServerAgent) Invite(roomId, cnt int, gameFreeId int32) bool { //logger.Logger.Trace("(nsa *NpcServerAgent) Invite", roomId, cnt, isAgent, gameFreeId) diff --git a/gamesrv/base/scene.go b/gamesrv/base/scene.go index 8c550ef..fd69683 100644 --- a/gamesrv/base/scene.go +++ b/gamesrv/base/scene.go @@ -908,6 +908,9 @@ func (this *Scene) Destroy(force bool) { } proto.SetDefaults(pack) this.SendToWorld(int(server.SSPacketID_PACKET_GW_DESTROYSCENE), pack) + + NpcServerAgentSingleton.DestroyScene(int(this.SceneId)) + logger.Logger.Trace("(this *Scene) Destroy(force bool) isCompleted", isCompleted) } From c885055c71b59cadcb1fb04536914f4973b411a4 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 Jan 2025 10:41:22 +0800 Subject: [PATCH 47/74] =?UTF-8?q?modify=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E9=9C=87=E5=8A=A8=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 1 + data/DB_GameItem.dat | Bin 21377 -> 21451 bytes data/DB_GameItem.json | 33 ++ data/DB_PigBank_Diamond.dat | 2 +- data/DB_PropExchange.dat | Bin 428 -> 514 bytes data/DB_PropExchange.json | 48 ++- data/DB_Task.dat | Bin 7679 -> 7679 bytes protocol/activity/pushcoin.pb.go | 20 +- protocol/activity/pushcoin.proto | 5 +- protocol/server/pbdata.pb.go | 677 +++++++++++++++---------------- protocol/server/pbdata.proto | 4 +- worldsrv/action_pushcoin.go | 16 +- xlsx/DB_GameItem.xlsx | Bin 38578 -> 38715 bytes xlsx/DB_PropExchange.xlsx | Bin 10842 -> 11490 bytes 14 files changed, 422 insertions(+), 384 deletions(-) diff --git a/common/constant.go b/common/constant.go index 45049b0..6c6970c 100644 --- a/common/constant.go +++ b/common/constant.go @@ -609,6 +609,7 @@ const ( ItemIDCoin1 = 50018 //金币1 ItemIDCoin2 = 50019 //金币2 ItemIDCoin3 = 50020 //金币3 + ItemIDShake = 50021 //震动效果 ) func ToItemId(id int32) int32 { diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 715eea149152e9ff74415eefd115c9e79aa4d5b7..614833846f3435d94471597e88fad27d3619a0eb 100644 GIT binary patch delta 61 zcmZo%&Ukt`cYbVuW} OIlG|JYZgA6x&Z)cS|7#$ delta 9 QcmX@ToUw5^9eoLPelD9#QSX9bFH ze8nihufY!#=YWed0>u~40fxJV2vD38NgNWs8(uMTiEwZsiL-G$1v#6Gf%*^t_dipq literal 428 zcmd-w<6snElw#w!+Qtl~uR-bSQ2H{Iz5=3^I5-yevI!h$vE|a^U;?YZ4VAwErEfy% zTWIRTIUweP%|WscrXOYxy8YPAEhutQ)D23riY;11Lw=oZ2(K(`ph zA|-Z?ML>^!VdfI!U=?5j8utKboSYIH$DtiSe;cp@#o6HETtIP=KB0zCYBymXiZg|DWCB(sn5Z7V>#S#E0k5Ie- diff --git a/data/DB_PropExchange.json b/data/DB_PropExchange.json index 14c1a3a..bd7d6e3 100644 --- a/data/DB_PropExchange.json +++ b/data/DB_PropExchange.json @@ -124,9 +124,51 @@ "Cost": { "50016": 1 }, - "Custom": { - "1": 1 + "Gain": { + "50021": 1 } - } + }, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} ] } \ No newline at end of file diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 0dc47a14a31eb69d7ae2c148a7f99366086291af..22da0e8ec31757e8ca247b7bc7595ba63df72f9d 100644 GIT binary patch delta 218 zcmexw{oi_mp&%Q_l3q3e5ibsog+O}2A-RoCv5bNc-i0=1FR1+H4UD{r<)FXa-MEXwzCavHDT zW`6!PjFZ1|3r;>Gpg*~pUvM*z;9eHqdq6W7p=Pmez9#yIMTm{#K2T8Cixce1hKH}k YH$Ra�bhB+d`D<3Nk; server.DB_ACTPushCoin.GainEntry @@ -13053,31 +13037,30 @@ var file_protocol_server_pbdata_proto_depIdxs = []int32{ 116, // 68: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd 156, // 69: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry 157, // 70: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 158, // 71: server.DB_PropExchange.Custom:type_name -> server.DB_PropExchange.CustomEntry - 118, // 72: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 120, // 73: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 122, // 74: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 124, // 75: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 126, // 76: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 159, // 77: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry - 128, // 78: server.DB_SkinArray.Arr:type_name -> server.DB_Skin - 160, // 79: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry - 130, // 80: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel - 132, // 81: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 134, // 82: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 161, // 83: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 136, // 84: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 138, // 85: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 140, // 86: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 162, // 87: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 163, // 88: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 142, // 89: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 144, // 90: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow - 91, // [91:91] is the sub-list for method output_type - 91, // [91:91] is the sub-list for method input_type - 91, // [91:91] is the sub-list for extension type_name - 91, // [91:91] is the sub-list for extension extendee - 0, // [0:91] is the sub-list for field type_name + 118, // 71: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 120, // 72: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 122, // 73: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 124, // 74: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 126, // 75: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 158, // 76: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry + 128, // 77: server.DB_SkinArray.Arr:type_name -> server.DB_Skin + 159, // 78: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry + 130, // 79: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel + 132, // 80: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 134, // 81: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 160, // 82: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 136, // 83: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 138, // 84: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 140, // 85: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 161, // 86: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 162, // 87: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 142, // 88: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 144, // 89: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow + 90, // [90:90] is the sub-list for method output_type + 90, // [90:90] is the sub-list for method input_type + 90, // [90:90] is the sub-list for extension type_name + 90, // [90:90] is the sub-list for extension extendee + 0, // [0:90] is the sub-list for field type_name } func init() { file_protocol_server_pbdata_proto_init() } @@ -14845,7 +14828,7 @@ func file_protocol_server_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_server_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 164, + NumMessages: 163, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index 901d421..fba7d4f 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -1497,9 +1497,7 @@ message DB_PropExchange { map Gain = 4; - map Custom = 5; - - int32 Times = 6; + int32 Times = 5; } diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index a7b7f30..e62233b 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -91,11 +91,6 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 sort.Slice(info.Gain, func(i, j int) bool { return info.Gain[i].ItemId < info.Gain[j].ItemId }) - for kk, vv := range v.GetCustom() { - if kk == 1 { - info.ShakeTimes = int32(vv) - } - } info.Times = int64(v.GetTimes() - p.WelfData.PushCoin.Exchange[v.Id]) if v.GetTimes() == 0 { @@ -272,6 +267,10 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i ItemId: int32(k), ItemNum: int32(v), }) + if k == common.ItemIDShake { + p.WelfData.PushCoin.Shake += int32(v) + continue + } gain = append(gain, &model.Item{ ItemId: int32(k), ItemNum: v, @@ -287,13 +286,6 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i Operator: "system", Remark: "推币机活动兑换获得", }) - for k, v := range d.GetCustom() { - if k == 1 { - pack.Exchange.ShakeTimes = int32(v) - p.WelfData.PushCoin.Shake += int32(v) - } - } - if p.WelfData.PushCoin.Exchange == nil { p.WelfData.PushCoin.Exchange = make(map[int32]int32) } diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index 3f888c750320acd2c77ccc7716bf675336f38daf..41b58bfae4de202a7e77621df68b709ac8359694 100644 GIT binary patch delta 22206 zcmbSy1z40_yDlBlCEYFEjWiNNBO)nCcMFIEN=V1hAR#5K^pFD5DIpz0DGkzn-tqH` z|KI=KXPYmb;6q z2alzTyA}5fC&z#US&dF!e8saz^YlNZKdr{SE@MhU@KR)Eijdji^q*B?im{>`%LT_3!Ab!4;V*jie;OdZ8VnUp8Wz=ps~VORo+p)rU&xQF`9joEjSt@kSp zCpew-yG`1tx**yfD6hSN&~aI%pFh{5#!EvWs(e~*$Z3tbKXSW!V*X;x@#Dryk_&>a zoOJ_Q53>)I&u6Vz1y31OK8BNwV!uFQvIiez#UfYPx*wXN7uJELe&`-e@Rv(27ez}Y`Lhu8Ohe&?&~AvDS8pN zv{S_IBi0AfWlU^z3C@OoJ^V^qv@5I(#d(z+q!Bi2e(!A6Q#UQrKV13i1Dw59%vZ@Q zAF2+Yn1VOZ&J8It1NaWkH9aV=Ih{gTaj*tk`L8*nW5Uon1fVW&vI~a#v?yKQQFz_4 zm7^)AV_=*s+j*UKJvV0&w?8BCzGE9=kssO4|2%q=S3{B2t^&)wQg-&fUWu$m{K*m$ zzDH|SQw_5Yi3*n<(p9&6Q=sA-QzRZf-iPpMoF5#r@X+0tb-Xq0j=$yA8HarR;LTPF z?b6*fwhJPe+a3Q>n~Ze8i}4nH(5oQnLyP@uGe!hV5(~a_loL(x$x4dZE&JnS7k7*M zL=bVl*l@ddFGz@#y;c}lVz$3*r-~L6rSKhAX>eMs)MyxYeKCC35EFhR?nXpJBvNb! zd7A;AWDakzGl_qjF=a&PM&z%|;A}m`&X4-@b>EkvU8#YFnT3y08B1IP4djdKgEO}` zMXTrS56qBW`JyhbkH12t3p7CZrsHd?d*(Rw=!=w*2cg@@HxBqW)bIwIZ6Wx#1ciA> zEgiv`F%ZVTq(bG3l&%P$`-F6Z=a#a)F1FYG^KP3u+q}JZHysEKQ2ddcFP_KNsfu zZx<|ou5@9E9G9J64pK>=Z7{9)`6@ER1Vs{VE_NFqO?3$ssf~0TFvc2n#7n9$*ZiUp6 z?m^7OaQcPWn#%GA=59_IIL4hjwINUL)gYyDSL0#{B7tvu^iH?y=0$xsz2A8xyK%Ns z#6#n-*K74=M^*|vN3#tdh0^&>@>g;Q96arxo5D3;h`udxTb>m5-gr>&c$6;wsJXG| zKtr6(v*L|=HVN`~7S%bn-H7MDpe`x`)AiR|)n~|?`1J1{d8Isc-p%yN<~`gl-OD-K zSMo^4Y)$~bGTxB8%xzA=Ryb)#iUxlwz(Sc}~}o9q}++bZvFc(OC7FFe;= zxJXoa%Sh}q_6Eu5ry_JD?cOvo|Cn&0w_?@jjZl;)k`WJGgB0pp76>KA7_Gvu>%eqR$kR`DqL+wuAI&j|T9Z}u=f zY2zS1cb1S~+(+OGrb+SVd(}E_Y3by4l)6m}hTIs<#d3Zr`wgD4-oosN zU9gGrP>+OgPPI*PA&R zUfI;%b0fO-wAqkBwW$$~1WXYf=4$lulY^)8_ftR3Vp#WS@s_K!mm$6Cs$oGMzl>=q zkd)S$dXPbqx~B?z%zw|CV&wH^($#zkl0ZmQO>{93CKXC=$mfRdN|w60Ce!Z8(`k67 z?S)r37Y-g)VR=n{6>gq9NTVKh=fK}z+$7gT6>s>ckg}`X7pQ3O$e`8XrEXf3+SNHy z3XVsTe?^0*(T!0bTS~FoK!L%Y2M03j4;Te!s5fqVJ(o3U3C8ENo>UI{_ zezfB~lH@OKZ4w)^ARw}Pl<*0!vn{EOf(YC=s)e5HPu;>@k@i-=V1NDXpdA16i^d1m z>4axml@3!luXLND7Wp%tuUXj*ac4cA$y~Y7V-xi-sy4!5Z?jXV;TRJy+^hEVWGV(F z)@jcwZstC^N>Nv|Iir+9|2iWS=a3(xaTaJp$O~CnjQY+zp6>yN)s@u<&T-@PDVW?n z*f^$_lS!Tq`hcaU+IwMHq*m>K6H#fo%BrHuaCOtPt)Aim=c1w=b-@*+c zMTQrz<2nx%-rUnv{^FR9?7b=NvEO$@Xn&OEZy&;4!#ZrU*Lgs$ajr%h4ODccy%n&o zZ!^-%;nTuKNh-2TAtJWD4>ULa zn|9*};S(J?T{ETG?ulO|%Dlhq3{-eyAL6Nbu=4?hGcIOU46}=b-7x%oL;oE5%>X-e{aaBrhEUjDAr&#~RR7?6 z4EfKU;H3N&Lt&*3th~17dFOO-Tw;S0kVk+%;>DEcU{s?hIy;6}2Pi_CO2Y7VNGX8yu&tzyro40-A^8%ASV{mACEL z*T=V;v^NXj>&T_M{kzVkn^N$})!j91!cV-#=BtBPYvl&TpC$(RIM+Aeo2A>+hd0%i zlkTN0DT+V2Rkzs|lj6VEeKOBG3?&#z#q7H zxw`)9^pvwn`MxE%NOB@s|eZ z18cm2F|fh=rX6VU99pu6k?>BHpcQcTr`n)vQi^%|l2LEc0fQK)1!nc z0W$U>lUg~_+3_r$Gp05mM0jFV(Dl=&eijYJB-LR$o7v?BUPfmKt=vF4GyDc!HRB?O z-^c6IbyN%H8OklUq*XK6obqZS$K;tO6AL@Rw34B342OD@imuY;Toe~RZR|W@xYzT1 zMY!xJp+iZHyOp67TKf2hod0a~R>e=#QYSQbGE;a}KQgsF^ydXOOhpzlW^q1l80M^U zs~K%oL^#;E^1I>PJ=Wa>^<^tB*vY_>z85|^^MX|XPAiZRYj>S z=)3J=6Ta9!bQ`Z~MRYA%Al8}EZj2rKCGYQ#wN!+fH$T8UmO)&H)a>g*TRsQXmf>s| zM0Z8^zB60d2z6wDn|`SuF3&dOX9Cfvol7k1D|bQU+!-A={IR+V2eio+_pVdYs z)Vhc8({!U#S93luZS+C~71K!=cTJI0opa8VeTFnrog*FT)5NT4@6(c0DFf@VhXr-+ z$h9+8o!kQ-2aQR_hYz2x?7Q2Q9Qgdg9rzz40ENd;a{;FVq^~a4dQFUnVwm5%su#xm@Ku3Ts9GxifpuMj zggMvd$5T;6T2`wKqwkL=ZZ0ldX}t93kHaZ_Fg+GLUF@em9ecR}hgI10z&Y#lG5ebv zg_n05tE=@R*#R%F_e#INy|I|QX-U^~Y4eM*sk>nhwrsWufy{xIZnwclSKv!c@SV%; zjLRMLVcR6dy>lP!r^=iEU7GwN6j6Wh0~ z_n(mB9;xlhsm1s(x@#u(aqPZs)~U$Y1MP-R$vMnh*{PL2C8I{5) zwFJI7yE{AspS0cXncXS|*sMHm(yOtGiL8k!zGC~+b&~XQ0}^6Jq>*>$$KLPW|CXkd z2noOY@v}KU-8L2zh@D$r@p!ekg^K8DB7Vq^l7^RQE{!6!+h4i4seNWV4Z5U=ciXN8 zz&G`Go8ar+hj)13yA<&5=r?XGaL<3K)OI!Z)gtZ&Q>~zFb|bTEAwh^8zt>eJpxa-E z^WfS;q?q9aQ*8x&?fJ;v`(QQ;gRWg!qY^rYOVEOF&bzrWx0C`dfHOlxWInu7rKkIM zMRylIcYAlYb8Q!qOE=%|rt-M(6u;t*Jw*p||4W^D?{KZ9Z6-CiaAt4){cTtYwKZ6D z>z&e4^soJ5t(}7vDHeH7u1HT}~_56(yASlt_}%2(aI88D3!{M)ip5>fdpYM~sI3=^smx*T=otXdK*wWB4NDF&dk zMsI3iw4n`6^P`U(lGti1pW%C`f+WbfII7MO7kcM|Y*-fL4%%x65!Eq41)H zbLbm8uUFEr2GcVKj1&v8$?n8pjKYMK)Ci|-%v5lU3Rl0ST3hPYWrKa=R4pZM(qR*N zJMT~sjXKaSY^gxItxjIw6iN!aa>6db<4<4FLgwG8p0Z=6&bDs7;}|wX;~iqvivU3Znb*IzdbMj}Z#N z#dw`-CeF6`wW`G9qdiKLY=sF`nkt|5bY2Msgg0qBsW%1BWLOA!H4Ue+IO6QB1eof8 z)D77zO4uWcXX|Lfrq@4A$mwE_7y6qt(TvYBm)c>vs%Pw}nn<8l1kYvis{=QYa>7o% z-`#PPqR|DRs=MVmBj_^Ot1o~nJWh283qvi#07IKi-KcPUYyN;erg*wA%e5(Dl8EP8 zNRclIcx%R_-YaT;g1b}DXYq~QfJxHuT&bOgerlm}bj>&7Ez=Q!JIK<^4ML^ zK9~LVi2itsd4);X(BF}o!;I}5vJzaYh0e6&Gbn&VXIFK${rD9Pbpx2{AEXg7LhG*l zhEN%i*BG=R+o_o?iNWRVP65C)lY1P}`m3mqE<+@96RQT}YT}8ST#!&!VKB{GbWn&8 zsgEgoZ@Gq!#-|N&78@SsXAZ7SFu-Z~deb6#j!Ccx+>ZhS)*{LoDJ-3#zm zOsAZvg#l{y4!zSAPAL%cGT54BcV(X6NX*^iRt3lfEmj?e;|5A!JD$k?75OlyScZF; z1g#guino5eoVw$|42DM@JEko#a+WcXd%`}J*MzT^>9oNk7LfBPe} z*hIwbH2VW2Tp@$QOkIanKo{mO5DF>5xrE8p{Xn<2g!C9U>Aa zDI9BLgM29q-l-OTc~r66y7+zN_*vk*r}VRL^B+f&06NV#4;2eTnG|}Hh*=FBbv2oQ zz8vc41P_(M;f|Y;F>AH9k;|R|K%|kwYnQlz(AlHk+z+zAMj=86Bqd(OyVfWYHKV4I zN}7K{hrphr1>^-e6-ev_5d*b<=6OUB`s$ zN}(MMSA&(5|2j^Jhc| z2GsX+R+B{y=9H_z($61pPt{ui69tMB)C)NzaV<;80 zA5w@R{mX}tp*mJm0*oT)Yyc|$!It*p|G*Z$1P97*Yb&mnf%98zMRQyYBmv$JFpb_c z6-n}NuqQGYRX%dw>kq|%Cal1DiOK@Rq6eIu*+7Y5&uih^GY{a+rulg>hz;8VL0o&Z z-triCarXsj^Iy9>3}*wV3#1CVDdl-g6qR1?^7M%3$>7DFdz_lJQQ!nN2} z#gMJjIp_}}2?)-rFd2yR>0eFAT`@SC3N38U;;i+bn~X#mr#jtmK&kSz$EJ6T=&oe++@&G%3XOSpGy4Ki)RxJS7 z>-EiiLdOyP|CT0J9){_6i+>N92T&4Q`hS$xI0-JB0V>$jPA^#LYJG&Rpx9P$|SFZRV92S*zula+368m7FAL}>r_*7{p4a;)KE@twE{^{>?CbO+V? z<;ee(yG-LxAgTEOHZy<+kZDdvia(Nzs@lkk=MaP&)IyfUt7P5#{f{7pOg!MTP*|ry*Zrz;Svp$?c_1$d$638~@2~ zf4V^Dmh=FVbYLn2{e|g2#?$bG44TkQ%RHRK`M6oT{zS6ATAaV7(xIX)+n*a#_sv~i z@lgU;jvdGSZ$qOFkNb72Vuy~QyH#%2{hDzcocEf;=7C$!JIk(wK9;Nb3AieV2#!5v zR(1aI-^KaGQV#%F!}D1drvFtK-n2YFL1_h(rvIf{s!9HIz3Caqzm$;NFA#_Wi0OZc zBdG?E^dk$Y4e`?T@#f}D)71XMR{uAoY}^}YS{gkRs8&>R%>J!K-e8ug3Th!U@R4nNcKjGPb*QWW z780!g(g*XFUw1pLeLI!PyxX@T&)wCyR`2EGNerdd1^aJZ1qc2 z<^tU(lXEkXrP%7{^~wDZ)+fSXr+;)Y!X18E#OrWWNU9N7&3%*ulY`N2%#+WY2C46T z-r+8=VX@c}_mGH(e&H-ev`LSU%pgOZJufVjIc}Kl_<~Vu;B+-RlVxv1RL0y6b)Ms} zoGW&I}m=t^{S71M|1n1*Lue&+O`gLQ9@0zcLhZCS^i+1|>c>f$ntLTs;I! zh#I+R6B$A$LJcuj$0xQ-l1g>0DV}omsmBdg`$Fu!AuIrS%ufRuQ4(Ut^bt9fX;4sq z_T5Vaoro(}@+-XaY~%3JoG zc@RCu2;amMLuNi1jBuOY_$4)G4pv9c7nz1HqA)JXV1v30Qpl(hH|ww)E{o*58?ufC zu7|(!gw72H9#B!z{q;&+qM3pyi0MNK7FI2EBGY#-y$sU#gz5f><76%KA_fOvLnq2L z`~;u7wKyCf0+W+u&b*{je<9A!@6gbMgVDikaZkc0gB(B05;+(`%xG*O6&&ee&j6v9 zQKI_4Y$Xm3I_R^>wDWe_@@L-@UUqyB^b*K%kog-+v!}Iguxqqi$E1jmVuy0q{X$RG zhEus6hpAckStz~OYzsRmY)QCviv?92tfCvLl`%-3Io8znX?IvcqV04(ED<`{27IqfW*b&t<)u=f2ocgtQJN0a5!f(M#>Z8PB$`7 zUf3priVwT4hzOlAL*Yk{`ZPqCn6Qkf3SS5FH~EJ1LKeC6R5FYdGFAw$02;(WiS(iE z>w}!~=x$6rkj#rw_-e2%)RAlW!T@`b2Y}5p@HvLh@3e1y-uY(|uh-Um+{F5oODJs>EmIS5f<>@eS(xjg7q9zDr~N%XeC`&= zjkE})O$MEDkYdjn`L%1f?K9mw8$TdmZtHy*Qx{Mo9&BaX9C6_nJQ)Z=X;DEtI z6jy^IO&Z%NAY_l|?r*h?Vgk%T`0Eu8AVd>5co^`Itx!SuG=lit6s*QOV>pmX87fQw zZuf;x%+?Vg8cNg4p%I}4*oDi36|DJi zRlV9lcS#M?CY|DIN8v3c;|7G#foNFg57nZx*9lRl=lk9;I%TOVH zgV2i+@xl=VyhIGxAoSmk>`=)Ij-Nh!nqfiMx|Jzb#wE`?NSrt=gi?*0HE`R!<7?q! zL9oD3u|mzq;=3_SfOzNhSM4tf`v9J9{&AiV0x<<5OrFXcWbptu;$gueLU@DJSRu*s z1}Ku5b{deE(#$}kMX`Y>zy6a500typoCb&@3^5l%L2=_zWPt36>p+GjF)?3=j%TVW zU}b1P=+!}DSi!Ub-D%cSg{>)s!-7KZLqInv8iVZyTg4zzHCXNxSbU?yvm3K$;k>g% zZ9F=e#uNjKC@*;19FnRi#)T0k8&&}`$%r_xJS)W!7<>$1Y&`tmg{d4<;7Oa74CG8v z9OEZ!ncJ{8Co_LT~{Q z(EkJZ(>I6ekODH;m?7k$ygFfL+D81}P5e-)C<;MR(}Y)#^eGf#Bggz3ZRDsx%V<;} zwsK6r|Ah+U3k5d;m!r5BgjUi31)d7TT8`yUbUpz(1peJ2AcnBI+B}nIk`SPytdr50@ZAfx*uf z*c{Lp>zQaDEJMIV-ofSi+ZPO4B4ijLBZgV66TWFJghuQ>$3KwwKS5Vxem)Q~D8r1j za15an<0knFm4B5 z5bDM>FmqrCj*Z|_-%NDf4Vj**sFmODo{2gb1LMI!{>(S4G#SP)h``Xin&OLzZv_%- zY_Ly#-Gb~BF5z_o>BWMCra0Q!c3FRU!YzNMojm|08t4#^FNV}_(}PT_XrUEkWX!B7 zKuVOD;K+mEDH=f@N?_7;Euj6;dVp4dJi@|u&{xw~)c86Is((2+BwkXHraClCV2J3K zi2j10mRY3h->M6+R0Y!l=a=}E3M8ngL2%TG5Mv>Za&*6u#DLfX36iD*m?{H-sKOh= z^QYu53c&stoI5SB<;7ysNE9}rk`7;6K~Zk%#jc2QD9bvei#unTlv#3 zUs3$Q@z@1x613p&S)5I`e#a!BKMPGKgQyBK@C(6;i@yS{mFfBkYlu$L7QT!Hb=m2S zE!=Q=o{hE#7a=n(6l69++kY{~ZwEMkS`?9hC!LT(5h5)4BWmE~YoagY>sVY$&!NKl9o`ysPEf zB`e^1>!OmCXZ$c8Hn)I+vcx_X0B&=vEMj%$KyLNWM1Bb&UNy3idKpiTaFxpq9lMz44-1oANjD`I6Hp~g=A-%S$xoQ4%uZE02`Z@t#M*-yFI_`#UrXUUiR#pZN2{Siek$iv7 zNwajj;g2xwPiYup-t#d|!|78s~$XI8A(W4qU zF471CwbvA>SA{&DJjZ=$wGw+J%-ig}#Et<|~3MBd%9ugvf;;!NqJ1Av{0Bt~f z&V#tdG)ae!179}fNMa7y&oh^Q^)gTV3PG?2 zCSVUV)}ey$NXaczSCOIP$W=xu>)e1K29>8vnRrFGfKLaV4t>rO1O#A0$AK@Kat1Mn zsOOmzJ3gPI{l_nOi{c`jTwAP=N|-HXTr+fcUR(Bqn=rMQ>6OW~xN@D7Z_KKCxErSH zsOr6X(j^#B_0%HrW?h3yyr{uZGLwzRIwNTFnU*t74LL$kp>pT(uxM8m5-QmbDIe_) z2r)o9pbxgzvo|i*h)=_lWD%Xdxl$KidEasHOfwceS$b3AGh`zwNJZBa>DjXxzJvMM zTXW2jfxswr)ooZO-f=9+te6LQ9AyUnIEsVV?MDB4>L~E|Vo1p=Su>N#J(U+-W>bhF z4#3-9qsdUZ$`Y%E`JlE3&a|jknu@^lP+EUH+7+pn`))vJHhIna{UlYB&0+4B5@pvC zgW?!VPvI|aK6md|rg1Q1)D+s&vO)(W5*Vm@Dlj0nx>VXRdam=X?QZTI_e?{XpX!9J zj(vQzJgv4YsuDVb^Yyb^Z_sKPEX**LntNHa3%+NQPY<7lQK;xJI)5Y0cBI8!74VA` z7Fbvr7Ju!^05;N=5#=sM;`(OE69lYPrb#Mv9Qd*+-0c^H94QGu#_Ko^aCsRQZ;@gAWsWLVFcKxCLvNeu@iwA&L^C_SVDEr2i9+LQJ`u zSY1%BTPJEyUpX5cRZ1cZNcmURLOrs`J>0;TVX2sRL*OcLDNTEEYo2Hf0p$u=yq{Ta zq`zS-ybqTn+(E0U3{()UHHd^B1NiXnauFoT&EEMb(#Z##P~64{jNLA@RgaLzM2!Xnj--888|ssa;l;yCm6$?YTKgS z&^{oJZI^3VMq(9B%G=ihQXWlsu2j0gmW1wj1XL*yG+jCHuqVf|s74RVIoMBb>>U5t z&~8Sm%jVeGScOevT%bPr&0gxgYzn_Fo!jw=&rP1SJ#*2=Po0cn{Xr|Qj5qV+k(Qae z5bG=M)D|14ZJc^ooqG(Y+V8w}8|xavp3RAqIp<)Vr&ckFla2SGr&D2D+8LUAs?pYAGe7H>@)1BGvy5mb(?#hf+zR>xd_G-` zvHF(SoRb|l&kHl^n>P^>SvlpinhFOjGD>c9^*y?%0wM`b0;L3TpLL|}RQu0wS0j&c z&0MK2uV)O!4|-|Yv$9s+b|fKSGh5P(K=VkbHd0N#fNyrWIU|@zT)V2+K1oI3@|Q)f z%%yvNuLiSQKBFQ+jw0Mv^3Yl?dv9fFSLP@Z@cC2KraxHY_~lBKr;L*fd%4#GPKK-E z&u)ql`q>Rp6v7AzjFsw+XkWPJFgROfJFR5|%kBO47SBI1K&HRk;kY;7V+z&YMm;yy zfOYdP)q+Ry$oJEHct=>$Kdo=aJbzg15nh|d^KORtnW<%_?}-yA=tBEb2>Uz!$`<^q z*;?GesdDloX4za*)w>B(a-*WxyxHi*sj;(-o?%p0(!w*TEbCq$h0-4jN%{CUQb!YP zlxkBSO>5BB4QJTurQ(pD)kKz> zvWPKZ;6yoSP|kRi1WFshyeE|EGGlJ)`0if!%ZSNAbezG+?ljV-1DuUFXd8;-C57Lg zRd-rM`EGJm9Er-2H~70{X&CNUcelV0-20~e7K9M!Mm{0-szk^F?+EpF)eDLFAzq}C z(WQ_x&irWo|e8SIX+F*i2$I6EW{lc&&nnwOwl6rAEY2K+05&GP*#kn1Q zO)S*!X&i+34e%aPTx8`NKFHByX0RYGbQcJW^*w)HSAVx|AouR6WA-aYYbn zENGJ`!dk+olg25ee=Cq|&C(*!*n;Y3GEOgtgq-ON@z2a3ZCxYbsKXOsLx%F8#Hn?E+s;y#0p1MzyAUD1e{D0V@r%chDFX&c!En;7-^CO?0`_>r zf(7+YMu4~DutT5+jgFNaXqF!xshNXCTx>X^d$?P#kuY5)z^Xt9q5&zy-H-$R zjuoX1XR{AzR`bBPR`_Owb>3hwLB9^nc?JGJc_X_IR=a~&ZF&l~rx**$@WARys!{zF zsuj2laia85zz?@^&o*ElGp}-NG?$EaNJ-8MZ}N35Eq=XWl8EqPvowD%^7+GWs)91_ z($nWP1dpgO-goWGq_%!;9}Q~Q$YW}sYZ%|6# zfEyO*fazvjKKI6f1hYZdc-em8twSejMIUuXZT`KtpC{GeOGpK+6X$E7Loeb~nSO(H zG%TVz<5b%Bl7V)A=i*Bb>_!9aWpXf~o1mAjcnYzprTgkE_}y%&HamX0vU*z!uNMbu z^28H@XP%-cN@^d#mJ=;!W|Q0(`iPkMawh&|A0}6G{Lv*^Gjz*Ja7a_FNqxMmx?`_J zGR+M^pElJl(8K~M1mh?KbJA<_811n1-k|+jr*yM!=NpZiSk3dHT8b!53xYG$C5P|Y zn0BHXwl#Cob&)^BJVMl0@j@Zcvs6TxgyCy((Z`f{f!RyMM#Jo_boF*I2qr_Z^r|I- z?IR{Xpy9w5OSzJet<3M`fUPeXMXz_H9a&a#Xwt^SS#tZW^H@;>Cr2EZ!I*26CwF;2 zmUKs8lyuVPJe8x;-`3Id$ibWJFZ?h|zyK8U!J72pV9A#7&J%szvfmqnh3te%WRZU_ zL(2~#Ttj z2h5bf!%XtdWpCposF0w{U;1jfnMKeqd&?bFE2!HELdpSHKxe2KM7pq{CyI2RlY$XN zY!O84gc@X#e=kGJ<&|j*jQN*U^vjKB7J){D_l^EpBD`IBpCIKP*5besga^n-1N(~Y1uZT<|^j<{{Gr7t(|WKcon#xfeM~0sd=Qs&$2Xx?yE(JSAth7cg`@_OYUMrQIj8WT8KgDpuiq4! zc%Gu#WohR*sW>awpnt{AH+yw?dw94xnNcKiE>X4*zCPU@pF4ZldI3ARirrt7lxn#- z6d94e>Fep)KR7dN;t+e@+H|)W)?=dy2H(OCOTRDO9>c=wmzsV3UcNZ$)Qru}dU$m@ z(%N)+TKYZbqO+$S_@FG{@~ARvpY}YZW*2oKNg!k%Q)(!nCjn^s-_}i+~&9&R1?V;4+$N^Qhx2E8&&^yoB$kl41Yn9lM zv>TNp{S(-b3r&iP^zFtjknzpIIkmH6^Enc!5$(8{+3elb=1o{jM19CZzq{k(Ta$~* zecGj$S8pGB-mG9{O1(V0z0tjRjMvQLdE-oz{p#{yr!xaDmR7{&4)d|W4%^3I>D%+; zLL*3<-!1H>rzqBCQQGS$N!-6>ANB5HePsXP?cpotyU9B|_^%=p1HbK!fe@y#BIDtM z*CYZ7GUEsLP^Giw+ZVqF&F0%Lz-Cb)Pf!OPSv{{#t{jmu!!)2U^R`#Mt;nH63r6vI zL?j7^{2i^U&lCoNi^}Ge&wI`mhPae;;`y1yc4bdFO(c+J z(=RtMU_pP1zj+Xm%nNbT#z(EU*zZ@>N=R2!+(QFr)w^PKs5(-ATcN3DZaigP}6^z7(p7VK+wF9 zdQTD)?9-$|{#-kS1~Xmpe9^3@o~%21g*C6Xxk0IMjVH5hD}2N*SZY_%BmKu3BT^Aj zv|X0+3z0V!7fzBeLhOa%!=H^_OKB{=glq-mVjB-OE_jklw#dsN%jc@|DJ+#kzVNwI4pXjU5Ska4gu{gG;=cwD+s zDgP+oebN3i(^zwq@OWOo+0bVn-8AFA=YN${x9ezS$r>9JkH!+DCR~$Yr6tt@pE zKW+qIgWG~qa`<)~Y4v_Z6_+>^6J8rWrpb1y0v`e#g#iv?(P;d&<9v_T>1k;_{ z=trTloTG`>T3gfhmondV&I0d)5|$}FLF8arX$DD=x6D)yub+{W=i|ND3#FlR6ce}1 z<-R_j44xqvS$>9R3F4KBDbMc_02h_gX{X!Z(i=l~Z=7foJ*9U(u@8OhDJ#?z-Ql}J z{b*#QczVo1;Qv@PaUA=t6#9E&Z-0@g2m@>4#`O@6bMIOo^z)FMkB9Ahk=or*dlz%r zys6d^J!%fU_=pIbQ_|ZfIT=v%gKG0z0tREZT$E?3F8kjcZH$i%O0J4$Zjt|$MY^Ki zrmBzw3qkOc{`OE95*GziK&G9Y6+xjwa(-F9*;2uCc5g>PvG5gK8*3;s_kK2(Y)lSL zij{&qPYz1ILSgf~^6~fBp@k?yOT#pNdbPJdu*m#q!M8PK1=6Whp9!C{ffPI(COghR z3G(extR#s~`trF`yUbe7qQ^duZD`S7%i^nFzdi&f)L~=Y5a6a+Ne0!bmmsOmCD`H* zz6V1*tiZD6q|3bztN$Wiotop_r}cuIRa1 zb*~UFsZrh{WN5cx`Lw{UUI67Z2_R7A<8HNnNMtqEy&~ypeXBCgZ-e|4JQ{T(YU%KDC;}Q6cVN1QIUT>q?@7asnOJ;Z0HiS?-8j&?Psa_+zOQk z#z7^!9Q0Phf4^etMX?o#7ya2I6%YFr4e~Cqu{mob`K+cfHD!;}7wy;cX!Ws&u98nL zm21*7W#%$+-0*&C@8}cE-L<`M%C3)qWR-oY#c>HLl=`9LcAmw6R6%SbHKTHP-*)j0 zH;M8-JHvAM3e%51jfi@gXL$A`b2~Kx`i^)@sf$Nr_=x1VoCk%8KZMDKW>qJ5RzCWS zNm=}CYNMj1`y7N$bDE}N*F-y5v>Je9#Qr`N>E_GbihmdklD?`t-pos&uVXaS;3ekJ zCyWz0;B&{+eTNW7Q|)IpiH5nxkqBiVL_kP}JaN63|i-7bm>p(PfjiXUtSe=C#0GZzI#8>=cV^WNWPUO-&^@vcR4%1nB7)< zzSmdYe|e7(L%hXl*gJdb1k{CPkh4-5b9WuP9V8R?`H9PNMubhfc~5p}2~zopF^$b~ zNo6N^9d%Gsx~+#iIQurc6p8v(N;TKP;QBqk*;2>*YEDT#o2QTC9-9@3V7NO}Og@g& zsJzO4SAmA2KQ;S+Y6{u8=Oky6{0tv^o>+?T{C+R1`OpFPiqHQ z=a!E=&yk!1RL3qdS7}AT@%Fc0a847VrK*z#Q${|Tj?C3CG0gg z4!*E>_Lj7YAx6n>GQ_0S>yZt*0+lKhL;31^Vphjh9)?-Q^4H$0ybqZ@`s&DIb&CDBRLzu{^eYnRPl6DH?p=<7UfK?h9;wdX0uM_N}ND*oeIuwfciV zB*QQnX)Fh;wM4AT*l4`y>k7@E^&DOE5=3AIiGjRI9)5lh&5>=ks7Cni_^JvO>xwNy z2LtAPoZ{lRx0XZ@d*>jYZYD{twx{6Qx5#DgIT}}`T?&=HLl4o#Gs~Aj?ObTax8E!7 zDSwJvu}nKtu3UEEqs@~KkZilWwbe2-(dlWl^`>zQOmBIpI(Ci*vPzsJV7|mX!>$0! zeR4(Wyc3zYnFJehfeDVUE!-n7^rs{2ZKG(~f-wyprq}q*9u~%fQb&mD2jbpa}QmKJq{~N7yP4qv?~r zrL-pJYt1Ku+8kEavD_};Mk&|pwgDP&%J*CU8F>?0%VM1L$d`>O!%tpD=x2@PqPj(Y z4oIU)Kz@mq`B=2%hk@;jR2;6cLsN0mH$)K{s4?6fhCZPujvO2&*OO`oDxNjl6H6FI zk0dsC3s?gRGI}l#njOabVykzfs-`L{K!_f}0`Ed&u&WM1wLCFT+;H(>woI&Y;Af`k zw72d@c`)8!K8)!8y=ICn!jn&9uCY~oc{@}&3+K(@3MFN@*PkU(TB~pdgu4?Lm_X~B zKT*o!KfK%RoSk{7Zc+O(HB=Fu%r?lszuED-zh;q){bsN?t{ph^gw$Ma#nEy*4Kbc!&rOG{ImM=Yk7Dc!%HTx#ntVTplM{YUwF-h~G3)EqS1pY+8NT8q_oMwp`g1-f!h8>*}S? zo)dN;@FZKbaWFMbw%7ylW%ER$fpd1wdQBeA1(tt`+9Nn6;k;6u(A<|^33EG%wzHJE zA9)dMe2>ZLtZn zw^YBNaO~5#TeX$bl!au$+WcU-ejU=?B**{L#Z?AH{b!Y(05C@sBoNlJ&XOM^6mge(mTJp8|z|C@Q|!~Jq+&gVPloO=du z7gEldFF7>y_RGhzK~>%X0JG4SA`v0-jeE)gQlr^%)EA!hFkI>JMj*j9B!gA0Sy7KA zzYx1-L6}b-%q9^3@vP793EE-(8pakW>TLA_DLD5iY21GT6YUyR{z$&rCCO&*z*=Xx zzVrBycR&P-f9J`BEBw4WbM?mkaAxRE`g5eYch52wgFdsj<7xxy>KPqYWrbp#T6A`| zgJEBBD_TxH%iJdu*J^ER$+dS$6)G}?gre%p(zHUb_t0+Qd9oF}@mY{WUiItV{;#01 zYkn5gsdoVo(f#K#ef+s<>GBOEMhhp@Q!HRUdg>m=>7Ocm^m$Ht1n7V;_l;%7BE@3w zyw+>a!tCHAeCfd2=x32tZ%QiFrFMp<%BroQoi*{8&DW>`L0mjNLbNx+1~(I}Nwcd= zI(J7cSmA>J7t`8iinNN1RtR#!62WiRw&k&Rzdb5LkwAzM(%(;pA5}vQrmBjT$9b~% zlKsgLZo~N8hoZWRQH7%$?cz!pumlV?)xD)dTRlm|2u%AXB(*O}Lo2C$9q4;=_Y4L| zwccHitX(9K>nyJuK2DpCpyvIwpx#+iy`n7;V3)EH(f7sVwb<+$Co&Z8GyDyV$46@z z6}ebHlr_SUvr}G1k&k1GR4a5SEm!NKA>VoY&WW9poZJ!IVwQ<0N}aY`DV~b>F}G`o zyHw*KKzFY#|3*{Rq(gp$=Kc$1BsTL9>Y{@ywACB#p1S@L4=K>`3bFk~(?KuqI@R&S zPe~xP_+G-vh(~KqmXrCRLqFgLB2qk#t6sw|HDusu6P0 zGUeBt-?8t=vu134{dtOJE@$?r^+T^PyfJVvq-SFg*!V2-D!;HY`~i;%pA1x7A`fw( zLKG&yV-vJYDI2C>NR=vcnWTNA<{7Str4@KbSpQJwh?MC=sm}GF|u{KtJI<0GO9uEDuZ<)b@;-4vA4xQfM z*B;{1J>+QZ+cbo8ExLxgzYRSQH7c_%_V|qOn?e4HtNQMaI&gPA-(DEF88hJ99TQ=h z;A4NYw}pAOTiK^ma-n>i`gq_jZ=g8PrePZWYH8=o{iHFt4dXT}J7;!_H#RWTwh%YR zKlsPPJ#T1zL79$Hs^s##^sZC?5#06EGyScypX8N&obe4E5vu10504)S^;!$%{ z=Rch;3tl{|4t=C7Gf5Qk*d|_J_IGu`17o)7mD%AvFV`B2LN&{sbn#Kbs~FXlhM3yk^tNlBgf zU&3kk%%pPM8(o-US<5A&Dn^*?d}#HGvGBv*_EK|i3VG-ibnUK2EQg2W)#r|s2tI6; zRn^m>!^}a~+y@qc7f6&%%UEHh#b)jYtDCy*e1DkPrESP`n!cI{?w$iz@;UF(yy72XiEcWa?G~c=w3|FdU&o zqK9vIUohqSolh_QH`)h?7Cqf&kMzTwUv?3A*lE4q^M6ADQs7 zSrPwI#g=Z0P>ZTRFA*>`s!eerYCbR|aU4{<8YJ^4{;KXyr*kU>0EISTNW`Dwn<@ko|St ze_{U|!53DNv&?w=K^w=ITWVEG2%p<_hE1fmrZPUu-_N|kt!Bd8O-(>jrqn4tOAHwo zmpA=qixq?7?Fw%vl9A<%CcO0AU2d>k9;0r^Ib0BqgQn2172;f-B)t+FBC~}Rq;Ydk zU8d|$rXdaItAHK+hVI#LL`P&r5U;E>ZxkpW^f3yuCE701>`-H-rIQ6aJ2%zS@3L`^ z`(0BsYAQVbGsD9FF4?~J5RWv}e%HtE5id|$VWw)*`Qacx=gsoGq(;Ee%B_|YFG>A2 z!^EbRCArD3v_46Gbt0>%%Ey5&5L5&Poh?gZ1;w&pfxVlXSoSnUyCmo>|27ewtWBZa z6>}KNUP3Lr4fg|;TpcM308RZm3;R9V82AZx~lRNkyFl6si zRu1mFFXD*WIBL!LmkZ3GcQxyINCo-$nY}xOtTcQ)-A_~BD!(HY-}1inq<+eKbx7LY zG@_fZFX^DzG!RMrbD85x+-@sF-fgLw0u~G-kXxwy>$J3(zX`f+IcVvC)NNB*oawt; zW^secv7}j^tS~&xvRR!;7=%evD(kxqne3EY)$sT!t~4#!0=c!x4O7i6$@_I^XEfc>f^qwa7R>zt5;W zpuy@xv9tku)0lZ15kyh)68T<~Q}pbhvdEZgedTHH2KG?(-Q_!jW)%er-vd8m3VQVf z7Ou1-|076h^;Ge3ho6ttV5)EglUF;vw&NWbw~w-9lnSBv@~RF(RaHtYG&;xyO;#Z)&6?Q~LQcMF zFlTQ*wevN2Ah zG%a2^j1X)$g;>8f%F_jM#6MNyVn3-$3%tol`_|f6XQ}^PHop))8vaV`iN5*;;2M_E zt#@Hw>`)cqaFz!%`)#5f&emH*<9gbS@iZfEHId(^g(bZkDUoNS@t#PQt;~cx5pS_3 zAXP4$ZW7nzoEI_&uWOiJJkq$r!9LzgHfvt%u~CLnsVqyMZ8t3oX*4r z=IyhjjJzka0bSTIJU%C8SFarUsEw)j(R=ulW1k@T+K%U%fqB$w+ZX!q1ffQ1=fXK( zI&}d-^89xDzPv5y)IIW(DJt#9174^`{`u!59@?5Vx`UE(;1*TXp71$<<$xP&T}8Z0 z+HblJozPR1$ayl(cBtwkURnU?ghPI674(U4l1l7c{Ia0Gwe9u?Wf0CMY)z&1VS#6! zH6ghLNeSv$^|q1&rJsV&1hGc8F$+BV>lxrJQqd7g8=f@qQ|e3w2gA5{T1GX@DtMk? zC{xVt}D}%mQe5;tcJ;Onof0446?ep)zL3U2T%^I85`_|Yn(o`{sw}i+1IMex-r1j+-8-N zevobXc$~FTa@SagxQl)1#l*LeRkL_1?UTt&^loH&mYpGa$*6?gnr)dQCB5=r{EDtX z1=n2#Z@)u_zGFgb#|sc^z6F8MG#F;|+jw>`;w}1fd_4KTy{>3Av;h$-IuWfzh9m}o z{1CU%ZxgPePtY_(81xm4BvAue5hKj;uiPXL0{wLc{(=a^b2+i-R~TimdnmdWBSSQR zCQgt9?>nJ0oS4vt2?AhJ03DPdM-+#yOW@`BU#BS;#QK-v68|M>LLVdua{Oa7KtLci ka?twNBAwC=k^+OIAT@xb+36*P6AM;hcT#y??RKnKLcbNFS<@-qj%Dmbx-UC?g^uSRx@H5FkKS zAw=NdWI6S2Uh>F;7k334Us+tXOAGcb6LP814T#+se%6y@3o>Oc-L^S2%*3wo1uRPj z{CE}Qkpeoz=$ozLctlM=9I{sRW~N$}XGXkLKGa78WA-B^rZ-X?>9>8*n9#SXP}V6& z-fC1T|KtxTyGZ-FQ^YpI=k%HJLGnM{7byq9ITl$ovoFE#Xja0LDAHCkEE85~$#-5w zbE|w(E|$)Cih!O_fQT_ieqBW97xL;-N6n>)Ak|Wn5;(jHtK?^cQK%mz_LLf(gfYT^zkMFf2 zf-Q1nqH4z_TZ6BELVljtmWhBr23)TmWta84Ar2qg-EG`l`DMF(y++_2(;NX;H{0Dr zF-f=G9iFcHX&v{|(O*CF6b`<9YqOR3wc~ER`i}GDq>$5b+0Ae$+b!?w?Y7O(cqxxK z!rc>#ueUOf7SnZdZv5C!PV*XD635$vufecUEg8wt<-0?Rwwtrlkt9-IV zH}LTd5pC~hGS(&J+szxi?}&GIdrOP3)Whrf77=j$-A^w^DY2hx--z*kWZ&p*aZJGuXLSrg9lG~sSYX0AQT0Vqj5Jc-TTTE~Zc;km=X|TYZ?Xw%0VWey3)eMhJ``u59uSmRW zx3=xz(4fo1(!k2BYoy?{-mgD9ln@9xdaMsIcJgm`dU-mob>BW%-spM2!s261OEe{Z z#KDrV)1#h8EnZZC->F8kmY~+ydoX@>+_cM5dw4AwhPEN&c8hA9Dk#wA@!!Ef1@{!%=Np` z(P^fbFZPIP&*_g?1!`n6=E=7Brp=l-yI6OBQ(R?I=7&m+AHISyN(-JFHrCg3!upN~KUrs794!By&K{y1<|8bg`q3F6m#wp1x*2JZ}< z_+Uqp8`$nMFWYZ9G>=~6t`P@(Blh~17h!ZXIsns`VkMXx<|I7INkcFA?sKF;kThv6 zqbD0qBJ$O63LHAN*tQzW94_!027D2&DG%$Z48%Mr4tuyI&US9Z=k8kgF@CaIC2dY` zgkV*l`;Byq2d=cbzvFAG|eagl1k-I@HvSw-`WBWH${RG}K-ZgRA3S+rW{B9hOs*eHE=kZI8!xirZ4CfUB#h65WGED}F z2@hU;z#R%Uz|P8Mb1C}BnOq_yC0*aTHnH+L5NQc*<1FqQEehlnt_oOez#?iS*nopu zSKz*jjiVvcu&t|#fi^WEb)T)czRJOmet%kMQ7%YL)wZc)6|Qfnci7f>Qf(qRy9RBD+Eec}mzJ%+$6PX$mw^^@Mmt zFb`#l^Smjwz@4bXCB+x4_`$OD>->utfza+wjVN@?(lFQAVBaq;GFnT|gEaYh%w%d* zSfDDYBeWWG-A*1RmVJ)*GnnN+eFOqwUXV;>VQcJ4oTdG^P%*1?Hn42wj4&Bw%W#my zDm8?8Rbq}1^G^zw`T|ilBcJs4$aPv-mO_wGrrNOWmXv3tGQh5^;;fnIPxn|~81V=4 z(%jYzvX#Lw_dOM!GGw|EH*A{evowuc{H#6#+46JmuVa}CkLbgi)+Sv}-I$9^OS!qy z&6~!nu)}}Xnb4JgyL#@`(W8frALf!s&1p11?y~OWE!zqV?-!*EVLvl`q{My4p&!T9 z`=qh&3~s@W8s8tv(>#XxoHRE+WgIhYOTW*LHJJ2mw<5zq4JzMOZ6wv!2MEkHPXg9uKs4!4pvUmJdr1w--Op~C%VdGCJ1D;r(AxXYM83}^*S#90w;W^ zd+$=|X?R+{tU1;2q)4}4>S)%Z4xX7L!YrkaSoRuAcIAwMLW1!AX+L8lWFV%eQL-1u zooMhoPtNh_K$~YUCD`$$KPK!#u1zPHM@D+l4e=xy0|$xQk`H9W$Zl%TB^AdZY`8yV z_(r%{ZM^Bj$CczWN;{yVDKcH2-C(<&urF-bOO3#fWBI6M7$^Q?!enq-XEIXe>TwnazOYkfwhZ;29#dtjPI_O2{$%U~QMK9q)I3?I3vG*8KJ-Bt{&Dli zk6_tZp+I^UH%PkcUBiPL4@NJO>m*&gA9=Yts2wfP%2%`6&Ev_R+Hxi7j zWmj&)Wfr#C?;w5jO}=N6pS#`jHdrZyZY@hxChCiK$U z``Ix`%NDD1&%qvwr>~SbI)D^fzzf5DVOW+QZv(S7^(`+uafq&-a(v>2)^F<~m@PG%v%diHNi5 z)D2g|HUq=TqYU!|3@){3IUoHIqD^y=rR)Wq2U}v6G(76MPpe}C@P`|-35{+KZu6IK zcYXz>G2&Fwe}z4~VAssGZXm8^udZ&aTz@NwF03*nOOIA}@uUC!bM ztMn3f0mI&piH>U>6DtO~5%s^|O;-Z?h3@TwWJeYcRNkH^(w})XnzvkinFvZOe{{X) z=V6zy@~BB_ag5;pSO&xJn`s3SjM4buVX753NfdZn6APa2Ep+*WMcT+7DkwS6X|jWy3)G&(z|EBh3J&^6gVc*{vDq zf>8$lBNsJ~gZ$@InsJjs&#c&dvb*QsD-g%U$TZ}qr{sQ8ae!68$$FO3%=!}^qBsR- zV{USisQX(*hE$5$oikU}Vl&#Ij|Y%WS`$ZUZhMSOe)~*{4#ziA2O8aT?F9t~suHsl zT8{EkK^pMw3Lo`|qqMO2(m3=v=T3r5466q^&v|L&ImR8#j>XZH9bY;dcqh`2;r^dx^~BdEKzc<-%}|8GF{tl9=Q+8yXz zO=R6Twz4tA4(fXZuB38&S2Jls{JJ;kk#1|cQyuGMm(*#Jn3$b*iW4HSUz*em$U@4$ zq*bkA6{L)lkL>0cbD+XrqumjfPou6NmvJGZFA89zlHe;Cs?X_NAm!n2M2Gm5pg@r# z+S*eeO6zZnfa&%P)xTD~-z?3eyoIAWR}RTdN;=dK3DYeJ=JPK3?po53`**P=F`RSxk}u-8T{%rGTsKr^QZ>H3`o_#bI# zt)$9+@~n~~`*$AC9Ij<-t}MAqFMQ?{0FMd*)#{yf;oM}7_-ViA`;ER_21sE4y$^Dm z!Qu(QJ6q(YiNcef`dY)@y(WIhEqh%m)tganDqo{WTR>}k6IhAB>FT->9lvk~{&y0o zdGLGimi!d#eze2=;wgZG2Q0TdH)B91mZqlP_7qxv6kzR_-|xgbF?N}XLjDZ{IJnOq zao~mP7&nDZ?g3=AeGKS?!vhdfb3!<%`Xfk7%3$N;QO9p8*GjdZjp`Y@ zrGdIF2_-dgK(mCG^gWL6m1XBKza%Xd@Y%Pa8l`17mro1ay)k2*WzCdJkMoh#3|iUpF#1GtLQ&g$@C zS858|*&5w#A9Eb7Zg>0@fU)4DuCv)a!@`lw*t3=DRbZipxdYios^^loo1;i8sqs3u zx{2{jMPpk{gn|rxm5k+a%iZzv9T?Vem)LPvd3Wk}_k(9gf~aAkq>#(YwAe>uN!j6# z>%1w(+=qAvol)3trIETcyc-iN%+a`3PTyjlQ3!;OB-k!Kb(C8B-!di&!`T!Jd%q0_ zO|_MqCHi`7Hx8G!aKH-e@0KiXcROyh?$+Jzeu6KqIV1vCqV4}RQza_A(_>#= z*76d$t7)!Kfp|6zNcrLxpxg1jv{i8JVOw~MW%vW`Yk{|9%nAf89Iki^Iw(d{fUzO& zL(>vk9=HIUan0*&4BIxU1K-KqjCWl5-JLJrj#^y9WbQg>T>{u*eUoOz!S1U6o+stL zH}A1nrLUvI#M$zqgv6_8PyWnim*LjpAH@eEt+$j%GZ_;Rk!%Z1S&lg&XVDXdFXb7U z;oYki?t;Gw|o7K+I zk2u*itG?9Jo`1CX@C<1Y3#9F6%d}=b=R(6TQaAi&H23_`qNibr*W1@06f_dx@oe$i z;=q%}%xW$b-6!uqqoQo&s@2n?O@@^s)jhVsDzypGFyjw&Cv2nZ(l|X6ZuBs;d0?pCI#M9;(k466Rl3L zw}zuOt;uDt-dw-_R9p2@NcqcUDfCDO+!MwhtSK`X@MV~Q2D<^ldgX3gJ>!F7Px*%zZAmT?6>B z0p~{&XSpkPHvu9Q``gm=A{{IcK~QxT48qPy3eK)-N{oe011$z=d&-9aE#`GA`lvgY zLOxixH0Q)kPC-u=lV#e!u~!20*mYNehaIbg=j3+^!A{j*N@+W?%qI(i91GZAjQ@g> zY_;C}>Bzt+;?U*?Z_U3bZp+&i2WOmX#Uz|@YOX5#g0`Y+C$f_E9B-Q%kHuwOeUd$6 zh35Fg0@*Q4!WMA=Cr*?bGYu-Jc^sXTjkb5+(3vLYZIg`-7FRUn6B8}u5f`Z2<>?bpx%HzykKJP54gD zqDFx$X3yj9*ANdjVqPEJm9(lrAFR?}moY#I{P$cpW$ZbU;))UxJu8vZbd#vgnv&lM zT}agNcvXNPkz73Y^j~G8LflwL!Kcz>Wq8ONrN~qtibyG=wo`wl@jHg~MuiFQ5`5;*RV(e0tuCDi262zEEjYm(#Cv(2s$0&o z9Dp>|e7k`dkZiPC$a^L_aBCD4E~D$NZ=eG)ba|uY06wc;&1MyDM50o;JhJ?%DDoMUq$pRxvxG>u zPK)a!&!6UtI04=;km|rJ&!g@&bgE`{werguRDa>Lq#E};GVtGNrUlhJk<+yr?XC0- zfqKVk!Q2`E4$^xUm&@5d^Wg)5yS(Dyf3Wu%5?D^3t1Eu@`i!3 z*plm~s_(VBs$VFfQr`kp3y9~RDSCPt3M&kx60-u#VCM}0jsygkt%;w|qh_}rH#>X5 zc4Ko40%2y8a`NH{-UR@651r<$ zymVV$LQUx**lZlh>}Y~d^Z&PF;n)X<6FeAvY#VEdKbtW!aslM7+%?|- zrke5!3Qff!@MP{CBw3s$8l-_3+t2(<1ZN?RY*e8CAmznm>cwkzZwpAAKrBE9_DBX1 zs0rYppGr2%#B2**ZY1L~80zGhz6VLYg8nk;!Bpw!K(hv)@j*xd7xCYWC26t?v$Hqr zf|_(@?H+L11Cpup-(mgV3CqxMk1ZP*Yjx%{LpfK4%dkseCySfmm7Zgc_%RiSZ}67_(~vvYE%B0?U|wSXsKEM%U9;y(sPs z7yWFB1BQlg)oNRfR2(9nYZS(s`WvOL5V{AXByF2(ub+lMci6UwovJ$;+*tsXQ-@S= z%Yy%lrmDT%ScnvA^4G^r%GTr?k)Cszw6g(3Vc@&gJ=Dt2gj8+EF&ee8UWVh0Y z^YH#(*}$GXJekwX>9bGV2zY7*qX>>8z)lh{KoBK9z(aa@H=0{eYXwv@C^eVtjJBBJ znEGv^zx&p>2@GZ*9sgk=UZH^cIs9L|?oVGti^%Cka;?cdm(0TEGnq7S%3QNHnHm0T zn17<9`DY{KH9Iljc+_AtptCUnu_PHva|UGPt3FeefpD9xhe>Z2<~*>3Ot* z5im~AakTM?=J2Kl1kWW$@hO14RU`jjsrR7iH}eb!;{PTdFbODqHuo9_bioMh_2=Bn z<6Py!O#!@r%iMo2Re=L8O_h^ku*jkK9RJ8PU6Q79llxUdii0>f!V9lETjM7+nRTt1 z=6o$`n*MZ=*mHc{b=8!x9@TH%4c>xxCYB5jU1{HKVaJ1g2?tX(HD;viCfd=ne~-XT z{LkkE?i-e-Vz&XnuLed{v@Ny9QTDKHvy@qmeXJ@l#*z8bi)|LQMYerCe&)R9(Sfki zuB(l^_s_qkb z_7{^H3w_$E*fyVYr8n$bMn?4Bo!Q%+%=ysd{1=n{Os6T(6JCw~m|XrywUO7&4b%%@ z)-@dn4BX>Wb4dEz`*u~r|EbsT0m;P6YfEYaxairY=1kKNp5H2ki&0a-t62_UT>YQo zF#Hk+bpW%Q0A~MFj%fCnE5WRXZ4<;+$A7Y_fFjGyLaD#Q)puwDnB$}YY5$Knn?|v} zv{kg|VzW$3>tMO<`Q6bHRjaHApGb(O_$(XSx_#G@Qbw+N7qQQ#Fa;1hMJWYt(vQ-J zm5rQrwG;w091HYyQ%b;i@C#JrA$^m2^etJuAud1tNLpF3Q>(@{_%{p&<$*~swQKXG zuKhn)7}pWaf{UPbUqNpHTbUPb*oQ#DTA-SRW6)|FbDgxwXixYAGL*c=76;IuEfFqL zNV~r;?LNF*J{@^97D}4}T)<#Ug?NH@y4?fQsVE()2o=TP19=1t_?nF)(~iB+xdjNK zJyyVGSSGU+`o3kJPa-{>eP_f)ev{djJ)Ug~u#nde*b_bgE*Aacmx-~d|1vSul*)SS zZ`9xAntoN0txOub;ZGG)eszm23YcesDzYttBT0rX1iquywz}EC9w9vSW0w*j(4EU% zj2U5ms){2zrMEHP!#2?;B7{=d-%HA(^rp>mac=BPPa@lr3uDY@(VSvYGlFxyz6ZPC zPr-yL{*%kziyx8pCWZSipK{=YWM?eGIxpR0PVu?haYT!N1+o+&nwdIN_=buo}PP)p}i=O@%Z*^_g644A_ngz9sxevo_p1$?N zQfmk#RDzo&!Haiwd#@iK=K3@A*JhWVqK0pMLHO&)?5qK9TL_+n1dC{>c*fz*MrF&S zcLSo_?>GX;U0%*1?#b5S>Tjdmk3gVs2%?N6$@=t`W!IGIE2Hiu7g>C60^Ki7izARv z{4@|s30?@f1|BJVlmG3(;%r#qTGHzpwNARr>K+Y0#0bh;w zr8*BAd)6oux?hK3XrZYzt7kShA+8egMdY@OVxy10N94PpQ?6S3Jxg-@5s`SMd9XS=8U>EDLtae#V>9L1zs?_}kw7YB|@eVp~mI+<#1a%#lS}6;q zr*hVKzfTCYI_VO?+&IQrC_i_V@<8EWM$CiAsS#-rgx4$xqt_TKcX4JD<`D(MxyxOj zi)q;B5;GHCR;q-&TIkW$%PklNB=;*njgoNpm|h|3C^Z!gz#w*LE@C|qaC`JV({=BL%vJuFrt~F5hVzpax>>RXfhW@fNs(?Lk_9C@#gXR z1VCv3SL`5ETJj8kpyVI0PdBk0SL9wQmI^P9g*f7$wn4DfHLum8&hKmmbC>f-<~iVkEa1oFLAXN4qcXhC>H(J;C*H}x2ezj&`f^3_0M^w-}7 z#spi0Puo)5OUr?i?R0osUxS zjPV%hE)!vNvOf~+*rlsm^cz29S#tj)!Nh#Mkh|dJgRn|6KzfDAcm$UTaKhCSh`8$+ zB<<;eWh$u4&R}Z&%Dq*aM#EoRmOs2@F$7Rmc;3RK0Qer0{q7e}F2br+eH0UAx%K{AxF|QNTqlX zUM+42RGQ%4C7yaHgj+*{rqhRa)n4~N2l`9Q0r1Ft0|X0O=824oFFRyhLJQ|#LJxe# zV+$FOFoa~QU?3_(*d!lAI@B>B%!-;2QVk+NCnhoAIss`=(&9#!`T0^{v>Fu50}#a# zfD~=h=tz)`HGs)j{AxbU#!F)&h9Es>E48w4CmzV8lo;LLLY}^=p?lx>%gKPtQ(1qQ z!*36Q?17Yt$-MzfLs0c&=UIY|u&~030pAEc975Fp8-yT-@|F-c0aQjmcA%NRD*cCy zK&Is5f<}PA=l=5GK1jZX3_vp!l1w4V9EUs=xZM86*rjne1VW~z4B?c+#&Bv>`1r2e zB3BNQq@fA?KOQ7kO&gLbN`NHg3y|6J9xY%V0EyK}(ZN6eXk=^)j%c<$yc#XPkfI7l ziq@E*7Z1s*wn;iHsVKakg=(t!Q3vzFn0@J_iocLTaOqC~pMNZF>Nmrm?FkFeOP)WO zKbM{0KQ#K8mh>%-xJ<`U-kjLHsRJvp{ zOh~(o7RkT)(SH<(0HUbL0FhD_!G*I8@MVCDT7awoK-7Q?$YMkCR8Rr(>wpz7mhbo$ z@Z6sFFn`-1n_`E310V0L8;*me0x}a4v6o>i^cR}1U{_bRfl^W)CKQLcfs`xR#pKI` zyQ?NaRWV0WEU4|weLr32S6V*MJO*Cam&HE!`wgQmTQ8Qo+lCwvSN_DMydaG~=Bi(n zuwMa|37{>jCf1<`Q{&2_pZ6A~{dAz9&Upnm=z3giHwm4H%*AWjA2#-huI@O2!Vk6I zN3iD-R=43_E!6qiFNtOom|q?+v^vxjgP~Rsl;|9L$et7pSmBshS zIu+@A3GG-wH_9dsS>rr*ohE=Hb`2Qz*;jcCrk^LnkFB#UXyG`>gM8k6FLGC2o+# z8f){mC@vx!S9g{N3%<+E%A)=HJb&}L@SgqT7f zvdNwi%4#Mf64RsMz?WSWl9&_r6Y9O|0{X4m0;C^3;89K>gt}(q3`i&Mv*BA#I-~*H zR@$UEmthYr5`zr__7GDY>WxUOBr0y%de?jN&8}VV8G(>FP=+M+iohqZL8O6RA^JcJ zde(AOF?$5~av~WpvY}tU-o!%@qeH|PaGgc;RDJBZMzf#s<0aC@D!wdt!LJZ8^x#Al z#Es-NcoI-|#1B48Db`L_OX!~6CS5Pzl&Zlh2cK+d=Wz9k74(N~;h?Z| zS^H$ihl&DIFt7mDgxXtdO#9l%UEZaJD~o_nv|_!Nw0dn$(%l8C2=ive5}I01v=Hh8 zlb;gBeCeW2^h%3;0;#@M3kIGM8T1975iuD)5;5fN4=1Hu;L$t9x&&AFYISkmHsdxL zwUnDh){meB=yUCE;$G`}T(Nxta{v!1MSS@6tcV5h7=mf_=X$0FqN>d=QgL|922w9{ z+thrhi)tAXTCT`Q`dwArO&KxAP6SQAz9L=~^;HxF>YNZ)^$kBEN`9p=T(p0-gnChS z<4bdj4V8QGi}gq>a00|c`;h;^=VX5B^hiadesiRLRsIpzXw(FGTxvTUnUQCE?uh;D z@K{T25(yp){5>AhNuN(2TM%ER3yE?Qm^}VM4EeuCi>4Mabsb`QQFdS29m?!d~ai?vC_64m6p?vO@0_F(Ae!_|!x)!gFR6d!Lxv6SK_kSH#~ z`+X`?t;dP#Z=%+%oy5Y|SMf!;8OGlGu=fk&i`8>~`+~~Yk3&Yy+E5tcZmJV$!xIXu zb*33=G#qL)ejI8$c*h1;M0+cg-Ahf3`}xK|KpbVxNSmeNl+#89;+*Zw#o&$#t>&G8lQ&9^t(N?tbSek}DS@ z*rZ@S1qgqB$z|ckbfucB{&qBId!!Wom~wrj(#;8TBr%ptV>=~aKjO<=wU1@H z>u3fK2Ii^GW!c%#7jcsCpOPxQLDRD(5*uvC?+5z?*=xe8K7Xv(Zd#n$2iw2owTR!z z==Z&R=W|QVMSYA*&C5e!(r)tXQ&56Y*1Gt(&dUH`Ob$450ac%<8&91;dplcClwP+x zE?Txb(qz^+4+UvHdh;o081>kCSC4m7_w7?@drNb{vDPmUZoG7YygXS3LQ;6yG^92o z>TVvn{RBguOL52EL)Ib!Fe)6hB=x@8-D*UHfCL;_O&x5{m{VEq_Nu|pSP;R-%;1kV zBXe{Qn?&kEO|yt`lHyABSJQ=dVDH{RzVzHNY@rdwC9U)Oq5tr{XT#vPNGQuqVNw&w zkNA(1%@U{C%L2D>2AKO8+~z~zw{W1M*$?w1zK6BiB745~;UM2&H;|_ll;x(3GTlQG zH2Cov(Gw_95gDJW9rl3gOF8cM=wkjv+|)f^)POT)>FKY%-wrDu+)o4pZ>CHu8s7cRhsRA zd^Y3k>McS;<8 zZRsf`uq6eGfnbIZQ~rAM^Cw6@=&7kf{z{`NM(&@LUg@fZ^cryr0O=?K$I=KI4J_5( zgV!LQEKf`rK};2>&@6J(g)vcBkOp>=`b&9WGXZcaL6D4?z@W7VR(KIN8S>kcjwjj= zUO<(1S~zcKgav?BcO0fXCi2XRP0A*ZfL<8uh6kBCTUlfOs1M$E#%rp@*hpSUYS>Q& zTFkh?{FH%pVZk2T(*|opVUZG4DV}wKr9~N+l>IoIdP`wR?Rhv2=n^{9iDp*H^J8%G zHvF8N4t(Rq7Iu;RuI?)CQ5vQnQ9t~#Z%~s7x_M>gOsjXnFdu`vIW1W~w0Vh#?aBt{ zwYlPsd}4O#6)>P7Lx2Ho-NCfwBQ*#*8fF3_5j-fo*Qsv7>|?=n_1>Tmac6pZ!?!T= zKo+0tIa=2V3T`BBj}RR*Mm0?Fo~imnM6oRJ#jt7`V`E=+5PD-8et%t~G0rC+QQ*Vq zb;l)I(@K@jx>Y2@T_sa0Zg&t2znWQJ_FlC)5`3xhlLHQGDv#Uvw5m(U3EMDd>Erp} z6xmOIyKz=&+yg)Um0G5h=%VuM$)@5%N(j~5?e4UByjtjlr1j-~M7at3yW&1@EP7El z1F!Kznj%=+U4`#p4Wf#(|?tM`T-V?h=} zA_IuiuS2I_BhD1l(5RZcrWE|OKB9e2=oXm+S*&~$4(DL}vR^s~dlY|g&1_}YV+KZ= z$)S|>QNVnoR&hW2H657gh%P4OaaXSzzmbomsU~8;A1I?=?y(Pg2Gp z|7H`JNN&cA-3s{;p|28jAx>YY4D}JsE2N6#9l8HKfd3^SlH>y^C z!lCT^y+$dK$@)pE6uy~A=$dfD+wxyU{lr85Gqc_72GHUR}2sL zD)mo5AKW>!UpOg8uLzrlWG^we>plo;>1ZJsNR4I?v8NYt5NeV`{3~pV+Ijv?6*yXd>g1Z8!S~U@EE_BQzVo}Ciw2+;$&xZit0LM_*~}s)!Fv`72Wdn z;pI)gpIaXA)6a`+yZqY?;1S`Asq`flip&ET_;U4VekvdAf4%dwK_>WObzj6SkCyK1 z_2JZd+17abP3=K-`^}D6!V*|IDCp{TeX&gDZs+IVttQHTp#Oktzt2U|_EGR=Qdz#x z#_jD`dcN4kyd6#^%;5QE(iZ%^((NrNwV?bxp65%!O}$%^1&|xM=NBWPkZe~c#fT9TbbSXA$7hlSWEC$D7Uq*le#RMYO5z?DsanY%Rx$nPFeT($8o~ZfeGPoWC zBTBPr)w1JxKs$2e>5_@j>-!|hM;v|a>sAVtDRyrcdN2CV`?F167BlKAVVZv?zbhbI zc9DMmSj4n-NU8)gRG!(U)v&_6saoUwBh%!nP?aUiRv{CnYwuWU-D@U+xS=i_u%sI- zEnNSL_}d;KTFG%EH9G%iYz`%FV_u_Zck-OSO=E3n*yHHXNJ6!iIx?k~{*pO1o~RVW ztd5c{X{b4*K35oDWZFDzo?|P{pQU1;+Ou2Gj<`)m1vh5<^wGyPpQubo_MP8yH1+bj63bAyZ1f6EGJ{vI z^|gY=toIyvj3@M1=?Fw=93I9o_9YT{kGid6q+5RXO-P?(Jy)J$(n7KoWQ}^r+zj#X*P9H za%-lSP5#<=ZU91B`Jm2~eTSJN8OlDRXhR&*I0o6B1#x}c3Y0sRbnJw3?qQbTHowd4 z3lVfa+G!`VO3u*+CNy zrmwe?=+P)0a04So9~)+mR?QB+KcF1Gh5A0+2E;qy zXw4kl=_PW4U^V=i0?TK$zlLQb!5@{Ymd5EtDAW67>2V1&l$c3L0rb_Z@NKuNcg11O z&a8s9R*6QSM0epmzAKb>CMF=?6HWpN1692V>S!snLSo-Qk-6Bpr^LTxX zUf7|tq&2!p_fJw~S3VO_g;?4Mf>nk-MXn-oQ3?j{E_uT4>mn!? zvxaN;vEvx%e&EZ47OqBO(zb_M;X6EgS1(I2m8ilo;Js*4E+C0=rrdfTRDmgPb0DV^e z;AU*WCtV#J@YycYoM5T(ZSuB!6)fqom6w*O`_*LqA{Elr(3D{O9NT)y%wX?4N`x2P zUbC=48r4$@P@yjp-hx))%XKbr^JgNQ0F4H##)Sx?*i_PEh`i0%Y!A+j>QESG(2zBy zs4#v~^DZm4jPm0!e7+lTN-Ov04If?OQ*Jv0+F?H%TprO14$|Azy>nuJel$YLXEyo# zAluou^E{%rIH8T5`9u8+!$XP$`a@ZbtuVhiCqjpL{1G{FoyokcCS4^yFxi)R$Ivrf z!~Q-GDvuQUhEMx8{CNqCchLq@MD~6}g0!;Iv27gIS9gZq=f^c`Pw1Uo_Pb18ZzDA8 zQFoL?hj8}J%lhiHqGaK{R_`4&iA8VJF~xqu+H3Oq8^R88%bvG@zB8Uh#@FK^d_*za z2Zx&}-?_>67u058Ywz-ldnGr{!6?$QA;@@=djjc`XEGUD{a5Jq1`2#Am#^+Vo#S@1 z3iX$j23uKI6xU~Y?0U|=axo!IKUh`OxJ81zx@55oJGK!@rbPVkXLQ7Bk%auFe1^QNCy9kBaciniVjsNuLloICn1&n7Bm4ZvPpL8b>ytZElJAEt zIWD1g+=dfV=C-wu9V;a@8ya4GycBPfTQTv%A@_T>bhqa%wDQQOs-(+9YQ@(SPaIZn z<`EbMZZ;?JHm#YAbiXK=T5l#qzXXM(*|py}{HPNTd-sM@v%^BTsbGl$y%GFO8~1iY zF-m=??x-vuY+5C!-V}h&jppJ}-!h~#8`2QG|D#vd!L4@nc2q8HytPZb174o^qQo~Z$~HN_!w9{kma2DF{0y$$4ozzw zz8PP>J8qxUtA;wxvEk4`+t_KTv&h$+OxD=4#aGKs!3;7z#}oug_uF>XXqTl6y^tBP zn@sN&-5jfF-QIYF*JvHuZ`^q3X|7`@mMjk(*;^ze*lx7qm!9ENs@F0GTWS$i3bxB$ zktvWTkbbz?@qQS-y6|N~nkq4x_nW2iUK<@rCzlDQ3;u@Pyy+h_X3K*-2oMvaesqVZ# zY-r(w_^hG;)@$UHy&I3@K9Ow=Vc!`k22mHu>6w6P5R6aGPyCHzJ?@| zu%b7SecuPwA1BpCf~pVWi74k^oJxAMw1T*K65F0itVisj#wn&Mn6uP`okp#EQ4?A7 zn(HcxdN7rUEv=uAD-Gpm}TKmGNO|bpJf~V)YGi%k} zdF8IIEOmcog1j>7{6*RVnev-P)M$6XWD;d7uvr$}t>DW7nD1M-`-EU zCw>sC+@mf0dhr57k>joOMW_$Dw=G(lO9FeKsyL*Gljxmtp?5u=y4@Xb?92}B^;xHan7KlDNFF@C!+a897mnG4 zC<-p(7qf4r@_f_vnIMqDu-{<*A>H8&QeB=aJz{VkeMFd|<|t|a`+SHk1J(Mj7yi5H z8S@3IzC$C;hfAKROYvQ+X?lcNu+O)dt=%QzRyReWbiSv1cloRs7K`E6#?xe!T^)l~ zF(VU-$J2aT3DLaWl>?H)Mzf{+&x5*DrWnCQ4tOPLTr7(FxrYVRL;r-F)xsk3WmSDj zylUxUjmnu)K;H9ypS$}PL>FWMFy|=B(7M7QkG7dP*fE4&kCHxkR{6Ri=qr8U#E2}w zzltI$uS;ZZn=i&@Me*CG7-ZJZpyv4&RBtB(?$MB6swqZH*!jCk4HazAYdIhmww}oK z@5hCVk|D-t?tE4sR3fK@Ajfm1AXB|6qkeOe_^yef2VX>0Dl-z9C4rI>t4)U#Ep@b7 zz{epbOl;*IAJrp%6G?HEvMIy2-kiALPgC9nBKSta!;BuXWj{SgX(F&9JQvE!sKW~B z2`9_vzJ1TbdIaJL)3@up{D4MOwHS2S{*L&*a?tbs2Z|F`{`vbT9wwOcA`zz556G`W zJtyw_-8d5^^kFtDiyFS$C$o}iyNagkoe?PwLo|A@N#x0$^pSzwjHsA&Ks{l!1&o*4 zCg$-9e|l!nEP5aUieAh*#K_cdMG%vqF>$2mk>axdp*MKyduO;KH=jc}wC{r{Z(R?P zw(a*M0+Zpz^=y1T%z5g#_>d}VX`UbYr#Rf*a#2=0C>;C)@|Qd@ixy{(Co^rCiFMLi z>}xjMpBounz{Kemb)S;?kFXIS-GOT@k8EwNRKFZxEVPuc#5-RkLKHKf_gZXWMj>BM zvt8bJe2_IuRh+|$V)Yh|_&-%#S5y;-5+yW)K|%>diZm$#0VI?did5;LDQJ-1q_awu zlBI))0tuiXT|lKsjDSds^iTu@6bMzSK%`5MlE>~lZ_nHLn2)*locW%6&s?spZep=G znBW3o@epo%=El@k6=7yKG3R6@RVLPDJsdSC+q%5ooK+l@x}7JQbH^E`({;<_?VH{Q zW^>GJs6|4!GQn-w4bx|d1fM@-0Is0d?mvFMUZa@BC`W8ODuS5Vh-bQC(2Fj+b20Pc zl0-hrM)A83GQDlV5>8lhZeYo^u?bT)0f8E3dEO%FMwu{^ZY!^G>|r}A>rER4A7|7{ zB8*f6$tS&x6xL+_lxBh>%j&W_p_U;IU#E7Qw4Z$XZDka4epJ|oC&60tdotR-YRws0 zuc@V|A(L)QBAqHeMUM1DOJ;vWK%akNEb*Zz4OBl`B?yLY*;y^Fw8P>T)beb(JtWJS z99cY42Ehb(GK9XaKY6Z%@LQ()7p0s+yZ$l)Q8(b4nWR+S!FmIx~=CSK6lOBm&8 zr7m87m$dxx5#5YX=ub#kwwNEkAncCvE>~TgslT?nSQQCA?#fdQK<6wTS{Odmhe?=U zNbh055Z)F35|c2t@-9SL5GO_BN9kVo?b0}IvUFZl^F(xbh1$jd2MvwB?D-_A@ZWB7 zC0&{d4T!Bt)`9b6bk~-32uA?M+5Xy=tAE4ewhZ3MtA(w0lXkNR588O*2-}kI&k2xcC6~z;Bd#z4sEJC z!t7aOt*XzpZ??^84G-NlblDZSUovl9nm3-TP-CisPs_tWLo37S zqVOg_!Bq6t@L1b0ylHc2DQJ>AUiG}EXGnODsDse>+FpIKG&Ps>WA_8Ge(0KZHCuy~ zbwbzpl+2)jHe}3RVIkJ&z#GBS(l)C%e^8*Cv$n&Z+TN#saBjXFJj&8ZpXAt|5)jHYK_ z?Ddys|J+{POq}|RfO@@g;}{CM7IW~DKqX`myqNn{5AtuKWcH!=VPi3)Js%YOgR?e^ z(LTZHQ@;*P^clXe%)rdls#ks@F$~dp_g>!=>1SkglZw9wULTh)^=tCDVETAGr{k7q zu6#Y%x_QBwjtqsvm2ZvMGq%1i>F> zTBl57@$0XyjK|Gt)2$pizOEnl(wm$`plxjnf*2S1z=1=4L;;VXA0Zsx>d$HoV&0aT z=*&ZIYXF64N69W*rAFfrj&TA#y>HG$IjL-4=lPS6Dr4p3GW+4tYBp%UzMvlq>r?Ob zmh$p-uX`y&4$g8)Al7XGjCm)p^`e4ZDXPOl^=L;@CHJ~%0r{rXKMUNm1Feu zo)4(U+8sK~#h2s=eUrY8on^+-&Nw0ibeBIbKIO66^s;|<;V9^uIM2Do)j-KE?rtJx z(=XjtWg}}cv0gXh72n68FK?ZNfPK()BgC;IPxo4;2 z@`aZaUn8|_k~iWvj+xMnmAWft<8Bs4`89ptB^!+++*o=$Ba~#{)KKn%`?$1L1_K|0 zv$w@5QgkXuy_Olbi^pWG5X^iZDHI`H`>?7ylxk?*TVL@f2AssCFROY#UB#MC)4+Qr zj+=L0f7qG}(KspTgxal_-nPMwux@c&mK56^R^a)r;~ds7)~APtm+!o$eT5fojiu3C zT43P$>7xIZ!1>8^6BZnunRXa@aR-L7R94%+Mho$bPz;$odO~iFmSUS;J7ESG5hLC+ zJLU#V%ej^p#>NJdQ*NLFi`e}w>69IIgKCM(gObiR2?n^(TpYJQOe6+z$f*4?;$6p& zK2Dpxn2feSr5>~$wRY@seMe-Ur#F4IA<*DO_#Im7l(;|p_p{3#GtC3mZS)Rbd_)-6 zK9;sF=~YgcCN z2<^&L%}S#25?|WlO!#jphfLfw;fJ2Y8N^+Tw63{c;_qnjEOgjCulsIs5Pw{+2zvEZu96D5=v{zFc1e);*2zJuDLC<4Yu8{{2KWxyEhld#_5;92 zMu}Ye(Y(HntpSQf)OQ>)X+QS=yFTS8YY2_3>%-S_*px-jbI=ZyuKy5>T# z1Knq_$R^g7eW!}}7fShaG?1me1mLloXem?}Zf#mq1x^KZdjWI9+E;A0xJO-61T5j^ zAoLqJ^^~D|jXCp?5nMvQ_gv)deNeUj&`lw9D5wgoKh>vLUozpwFT|u01>IRsn�!f zZZPubec|C-74uzBV){5zRd#a&p;I9F7`?o=XBHixt$taf_7RHnoO)9Vwe%l2Oj6CerYP`zxBOaXeD7Ln%u*KOT zEn^d;m$pnhN4AtGnLrDx(qGrB{9c~={eyC22TRboV!q;}SCI=6PogVg7_f&kXw$^Z zUxhKS8+LrvvNKPwZ+p|;j6G!%d~dbDGgNL)&u2{K$^l$Mg9g@ao8#hCep#Z1T4_`5 zKjn#Oiuh|^fL~C8>Tr!leRS#L(Nd2T}Z{iFd0n$#G+z8W6S~E z7(uKiz#rp?l?Q+@=~!ie0;UHG<@>j?bmk146@W(QtZQLdGqo-({YgU;>Ld3cFwDp8 z0p==J2osgb0=SDw%~Yn1b;Gc_b7CelrD!9gFpOEM>S^?UvqSvvdq246<`(!s&fFM4 z3pvxQ{%1M-J4*Cyd{+P6*My16lIH)nCGr2bpTk-3=-IX`PX50o*0Z!%8-~Api~lE0 QJO51*%I0Kb%J>WT53v+HssI20 diff --git a/xlsx/DB_PropExchange.xlsx b/xlsx/DB_PropExchange.xlsx index d1addd2e518f7eb967cd987cb32a9b9326ed287f..ac7d0a4ad3a096d0e305a1a425ef516626bcc4c6 100644 GIT binary patch delta 8551 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 Date: Fri, 10 Jan 2025 11:41:45 +0800 Subject: [PATCH 48/74] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/svc/l_friendunread.go | 9 +++++++++ dbproxy/svc/u_friend.go | 4 ++++ dbproxy/svc/u_player.go | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/dbproxy/svc/l_friendunread.go b/dbproxy/svc/l_friendunread.go index 1f1b9b4..3823014 100644 --- a/dbproxy/svc/l_friendunread.go +++ b/dbproxy/svc/l_friendunread.go @@ -36,6 +36,9 @@ func (svc *FriendUnreadSvc) UpsertFriendUnread(args *model.FriendUnreadByKey, re if cc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("UpsertFriendUnread Find is err: ", err) @@ -76,6 +79,9 @@ func (svc *FriendUnreadSvc) UpdateFriendUnread(args *model.FriendUnreadByKey, re if cc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("UpdateFriendUnread Find is err: ", err) @@ -98,6 +104,9 @@ func (svc *FriendUnreadSvc) QueryFriendUnreadByKey(args *model.FriendUnreadByKey if fc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := fc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("QueryFriendUnreadByKey is err: ", err) diff --git a/dbproxy/svc/u_friend.go b/dbproxy/svc/u_friend.go index ed308e2..7476263 100644 --- a/dbproxy/svc/u_friend.go +++ b/dbproxy/svc/u_friend.go @@ -54,6 +54,10 @@ func (svc *FriendSvc) QueryFriendByKey(args *model.FriendByKey, ret *model.Frien if fc == nil { return FriendColError } + if ret == nil { + ret = &model.FriendRet{} + ret.Fri = &model.Friend{} + } err := fc.Find(bson.M{"platform": args.Platform, "snid": args.SnId}).One(&ret.Fri) if err != nil && !errors.Is(err, mgo.ErrNotFound) { logger.Logger.Error("QueryFriendByKey is err: ", err) diff --git a/dbproxy/svc/u_player.go b/dbproxy/svc/u_player.go index 21efae5..9e3eae0 100644 --- a/dbproxy/svc/u_player.go +++ b/dbproxy/svc/u_player.go @@ -9,6 +9,7 @@ import ( "reflect" "strconv" "strings" + "sync" "time" newMongo "go.mongodb.org/mongo-driver/mongo" @@ -68,6 +69,7 @@ func PlayerDelBackupDataCollection(plt string) *mongo.Collection { } type PlayerDataSvc struct { + mu sync.Mutex // 互斥锁 } func (svc *PlayerDataSvc) InsertPlayerData(args *model.InsertPlayerDataParam, ret *model.PlayerDataRet) (err error) { @@ -323,6 +325,8 @@ func SavePlayerData(pd *model.PlayerData) (err error) { * 保存玩家的全部信息 */ func (svc *PlayerDataSvc) SavePlayerData(pd *model.PlayerData, ret *bool) (err error) { + svc.mu.Lock() + defer svc.mu.Unlock() err = SavePlayerData(pd) *ret = err == nil return From 72778de447af2f03c242086a6aedeeecd81f495d Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 Jan 2025 10:54:44 +0800 Subject: [PATCH 49/74] =?UTF-8?q?add=20=E7=BA=A2=E5=8C=85=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/internal/red_packet_history.go | 283 +++++++++++++++++++++ dao/red_packet_history.go | 88 +++++++ dbproxy/mq/c_welfarelog.go | 25 ++ dbproxy/svc/l_redpacket.go | 17 ++ model/redpacket.go | 39 +++ mq/keyconf.go | 5 +- protocol/rank/rank.pb.go | 380 +++++++++++++++++++++++------ protocol/rank/rank.proto | 17 ++ ranksrv/action_gatesrv.go | 36 +++ worldsrv/welfmgr.go | 11 + 10 files changed, 820 insertions(+), 81 deletions(-) create mode 100644 dao/internal/red_packet_history.go create mode 100644 dao/red_packet_history.go diff --git a/dao/internal/red_packet_history.go b/dao/internal/red_packet_history.go new file mode 100644 index 0000000..9a6c257 --- /dev/null +++ b/dao/internal/red_packet_history.go @@ -0,0 +1,283 @@ +// -------------------------------------------------------------------------------------------- +// The following code is automatically generated by the mongo-dao-generator tool. +// Please do not modify this code manually to avoid being overwritten in the next generation. +// For more tool details, please click the link to view https://github.com/dobyte/mongo-dao-generator +// -------------------------------------------------------------------------------------------- + +package internal + +import ( + "context" + "errors" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + modelpkg "mongo.games.com/game/model" +) + +type RedPacketHistoryFilterFunc func(cols *RedPacketHistoryColumns) interface{} +type RedPacketHistoryUpdateFunc func(cols *RedPacketHistoryColumns) interface{} +type RedPacketHistoryPipelineFunc func(cols *RedPacketHistoryColumns) interface{} +type RedPacketHistoryCountOptionsFunc func(cols *RedPacketHistoryColumns) *options.CountOptions +type RedPacketHistoryAggregateOptionsFunc func(cols *RedPacketHistoryColumns) *options.AggregateOptions +type RedPacketHistoryFindOneOptionsFunc func(cols *RedPacketHistoryColumns) *options.FindOneOptions +type RedPacketHistoryFindManyOptionsFunc func(cols *RedPacketHistoryColumns) *options.FindOptions +type RedPacketHistoryUpdateOptionsFunc func(cols *RedPacketHistoryColumns) *options.UpdateOptions +type RedPacketHistoryDeleteOptionsFunc func(cols *RedPacketHistoryColumns) *options.DeleteOptions +type RedPacketHistoryInsertOneOptionsFunc func(cols *RedPacketHistoryColumns) *options.InsertOneOptions +type RedPacketHistoryInsertManyOptionsFunc func(cols *RedPacketHistoryColumns) *options.InsertManyOptions + +type RedPacketHistory struct { + Columns *RedPacketHistoryColumns + Database *mongo.Database + Collection *mongo.Collection +} + +type RedPacketHistoryColumns struct { + Platform string // 平台 + ID string + Cid string // 红包活动id + Snid string // 玩家id + Ts string // 时间戳 + ItemId string // 道具id + ItemNum string // 道具数量 +} + +var redPacketHistoryColumns = &RedPacketHistoryColumns{ + Platform: "-", // 平台 + ID: "_id", + Cid: "Cid", // 红包活动id + Snid: "Snid", // 玩家id + Ts: "Ts", // 时间戳 + ItemId: "ItemId", // 道具id + ItemNum: "ItemNum",// 道具数量 +} + +func NewRedPacketHistory() *RedPacketHistory { + return &RedPacketHistory{ + Columns: redPacketHistoryColumns, + } +} + +// Count returns the number of documents in the collection. +func (dao *RedPacketHistory) Count(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryCountOptionsFunc) (int64, error) { + var ( + opts *options.CountOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.CountDocuments(ctx, filter, opts) +} + +// Aggregate executes an aggregate command against the collection and returns a cursor over the resulting documents. +func (dao *RedPacketHistory) Aggregate(ctx context.Context, pipelineFunc RedPacketHistoryPipelineFunc, optionsFunc ...RedPacketHistoryAggregateOptionsFunc) (*mongo.Cursor, error) { + var ( + opts *options.AggregateOptions + pipeline = pipelineFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.Aggregate(ctx, pipeline, opts) +} + +// InsertOne executes an insert command to insert a single document into the collection. +func (dao *RedPacketHistory) InsertOne(ctx context.Context, model *modelpkg.RedPacketHistory, optionsFunc ...RedPacketHistoryInsertOneOptionsFunc) (*mongo.InsertOneResult, error) { + if model == nil { + return nil, errors.New("model is nil") + } + + if err := dao.autofill(ctx, model); err != nil { + return nil, err + } + + var opts *options.InsertOneOptions + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.InsertOne(ctx, model, opts) +} + +// InsertMany executes an insert command to insert multiple documents into the collection. +func (dao *RedPacketHistory) InsertMany(ctx context.Context, models []*modelpkg.RedPacketHistory, optionsFunc ...RedPacketHistoryInsertManyOptionsFunc) (*mongo.InsertManyResult, error) { + if len(models) == 0 { + return nil, errors.New("models is empty") + } + + documents := make([]interface{}, 0, len(models)) + for i := range models { + model := models[i] + if err := dao.autofill(ctx, model); err != nil { + return nil, err + } + documents = append(documents, model) + } + + var opts *options.InsertManyOptions + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.InsertMany(ctx, documents, opts) +} + +// UpdateOne executes an update command to update at most one document in the collection. +func (dao *RedPacketHistory) UpdateOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) { + var ( + opts *options.UpdateOptions + filter = filterFunc(dao.Columns) + update = updateFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.UpdateOne(ctx, filter, update, opts) +} + +// UpdateOneByID executes an update command to update at most one document in the collection. +func (dao *RedPacketHistory) UpdateOneByID(ctx context.Context, id string, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.UpdateOne(ctx, func(cols *RedPacketHistoryColumns) interface{} { + return bson.M{"_id": objectID} + }, updateFunc, optionsFunc...) +} + +// UpdateMany executes an update command to update documents in the collection. +func (dao *RedPacketHistory) UpdateMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) { + var ( + opts *options.UpdateOptions + filter = filterFunc(dao.Columns) + update = updateFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.UpdateMany(ctx, filter, update, opts) +} + +// FindOne executes a find command and returns a model for one document in the collection. +func (dao *RedPacketHistory) FindOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryFindOneOptionsFunc) (*modelpkg.RedPacketHistory, error) { + var ( + opts *options.FindOneOptions + model = &modelpkg.RedPacketHistory{} + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + err := dao.Collection.FindOne(ctx, filter, opts).Decode(model) + if err != nil { + if err == mongo.ErrNoDocuments { + return nil, nil + } + return nil, err + } + + return model, nil +} + +// FindOneByID executes a find command and returns a model for one document in the collection. +func (dao *RedPacketHistory) FindOneByID(ctx context.Context, id string, optionsFunc ...RedPacketHistoryFindOneOptionsFunc) (*modelpkg.RedPacketHistory, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.FindOne(ctx, func(cols *RedPacketHistoryColumns) interface{} { + return bson.M{"_id": objectID} + }, optionsFunc...) +} + +// FindMany executes a find command and returns many models the matching documents in the collection. +func (dao *RedPacketHistory) FindMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryFindManyOptionsFunc) ([]*modelpkg.RedPacketHistory, error) { + var ( + opts *options.FindOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + cur, err := dao.Collection.Find(ctx, filter, opts) + if err != nil { + return nil, err + } + + models := make([]*modelpkg.RedPacketHistory, 0) + + if err = cur.All(ctx, &models); err != nil { + return nil, err + } + + return models, nil +} + +// DeleteOne executes a delete command to delete at most one document from the collection. +func (dao *RedPacketHistory) DeleteOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) { + var ( + opts *options.DeleteOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.DeleteOne(ctx, filter, opts) +} + +// DeleteOneByID executes a delete command to delete at most one document from the collection. +func (dao *RedPacketHistory) DeleteOneByID(ctx context.Context, id string, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.DeleteOne(ctx, func(cols *RedPacketHistoryColumns) interface{} { + return bson.M{"_id": objectID} + }, optionsFunc...) +} + +// DeleteMany executes a delete command to delete documents from the collection. +func (dao *RedPacketHistory) DeleteMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) { + var ( + opts *options.DeleteOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.DeleteMany(ctx, filter, opts) +} + +// autofill when inserting data +func (dao *RedPacketHistory) autofill(ctx context.Context, model *modelpkg.RedPacketHistory) error { + if model.ID.IsZero() { + model.ID = primitive.NewObjectID() + } + + return nil +} diff --git a/dao/red_packet_history.go b/dao/red_packet_history.go new file mode 100644 index 0000000..a418ed3 --- /dev/null +++ b/dao/red_packet_history.go @@ -0,0 +1,88 @@ +package dao + +import ( + "context" + + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/mongox" + + "mongo.games.com/game/dao/internal" + modelpkg "mongo.games.com/game/model" +) + +var ( + _ = context.Background() + _ = logger.Logger + _ = bson.M{} + _ = mongo.Database{} +) + +type RedPacketHistoryColumns = internal.RedPacketHistoryColumns + +type RedPacketHistory struct { + *internal.RedPacketHistory +} + +func GetRedPacketHistory(key string) (*RedPacketHistory, error) { + return mongox.GetDao(key, NewRedPacketHistory) +} + +func NewRedPacketHistory(db *mongo.Database, c *mongo.Collection) (*RedPacketHistory, any) { + if db == nil || c == nil { + return &RedPacketHistory{}, &modelpkg.RedPacketHistory{} + } + + v := internal.NewRedPacketHistory() + v.Database = db + v.Collection = c + c.Indexes().CreateMany(context.Background(), []mongo.IndexModel{ + { + Keys: bson.D{{"snid", 1}, {"cid", 1}, {"ts", -1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"cid", 1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"ts", 1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"itemid", -1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"itemnum", -1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + }) + + return &RedPacketHistory{RedPacketHistory: v}, &modelpkg.RedPacketHistory{} +} + +func (r *RedPacketHistory) GetHistory(snid int32, cid int64) ([]*modelpkg.RedPacketHistory, error) { + res, err := r.FindMany(context.Background(), func(cols *internal.RedPacketHistoryColumns) interface{} { + return bson.M{cols.Snid: snid, cols.Cid: cid} + }, func(cols *internal.RedPacketHistoryColumns) *options.FindOptions { + return options.Find().SetSort(bson.D{{cols.Ts, -1}}).SetLimit(30) + }) + if err != nil { + logger.Logger.Error("RedPacketHistory.GetHistory ", err) + return nil, err + } + + return res, err +} + +func (r *RedPacketHistory) Save(history *modelpkg.RedPacketHistory) error { + _, err := r.InsertOne(context.Background(), history) + if err != nil { + logger.Logger.Error("RedPacketHistory.Insert ", err) + return err + } + return nil +} diff --git a/dbproxy/mq/c_welfarelog.go b/dbproxy/mq/c_welfarelog.go index 68f30e6..d8c2ea0 100644 --- a/dbproxy/mq/c_welfarelog.go +++ b/dbproxy/mq/c_welfarelog.go @@ -3,6 +3,7 @@ package mq import ( "mongo.games.com/goserver/core/logger" + "mongo.games.com/game/dao" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" @@ -27,4 +28,28 @@ func init() { return }, }) + + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBRedPacket, + Data: &model.RedPacketHistory{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.RedPacketHistory) + if !ok { + return + } + + d, err := dao.GetRedPacketHistory(log.Platform) + if err != nil { + logger.Logger.Errorf("get RedPacketHistory failed: %v", err) + return err + } + + err = d.Save(log) + if err != nil { + logger.Logger.Errorf("Save RedPacketHistory failed: %v", err) + return err + } + return nil + }, + }) } diff --git a/dbproxy/svc/l_redpacket.go b/dbproxy/svc/l_redpacket.go index 6ce45a1..a057d9a 100644 --- a/dbproxy/svc/l_redpacket.go +++ b/dbproxy/svc/l_redpacket.go @@ -52,3 +52,20 @@ func (r *RedPacketService) UpdateAll(req *model.UpdateRedPacketAllReq, res *bool return nil } + +func (r *RedPacketService) GetHistory(req *model.GetRedPacketHistoryReq, res *[]*model.RedPacketHistory) error { + d, err := dao.GetRedPacketHistory(req.Plt) + if err != nil { + return err + } + + list, err := d.GetHistory(req.Snid, req.Cid) + if err != nil { + logger.Logger.Errorf("RedPacketService.GetHistory error: %v", err) + return err + } + + *res = list + + return nil +} diff --git a/model/redpacket.go b/model/redpacket.go index 2b577f4..112da34 100644 --- a/model/redpacket.go +++ b/model/redpacket.go @@ -75,3 +75,42 @@ type BackRedPacket struct { ItemNum int64 // 道具数量 Ts int64 // 时间戳 } + +//go:generate mongoctl -model-dir=. -model-names=RedPacketHistory -dao-dir=../dao/ +type RedPacketHistory struct { + Platform string `bson:"-"` // 平台 + ID primitive.ObjectID `bson:"_id" gen:"autoFill"` + Cid int64 // 红包活动id + Snid int32 // 玩家id + Ts int64 // 时间戳 + ItemId int32 // 道具id + ItemNum int64 // 道具数量 +} + +type GetRedPacketHistoryReq struct { + Plt string + Snid int32 + Cid int64 +} + +func GetRedPacketHistory(plt string, snid int32, cid int64) (res []*RedPacketHistory, err error) { + if rpcCli == nil { + logger.Logger.Error("model.GetRedPacketHistory rpcCli == nil") + return nil, errors.New("rpc client is nil") + } + + req := &GetRedPacketHistoryReq{ + Plt: plt, + Snid: snid, + Cid: cid, + } + res = make([]*RedPacketHistory, 0) + + err = rpcCli.CallWithTimeout("RedPacketService.GetHistory", req, &res, time.Second*30) + if err != nil { + logger.Logger.Errorf("GetRedPacketHistory error: %v", err) + return nil, err + } + + return res, nil +} diff --git a/mq/keyconf.go b/mq/keyconf.go index 9c526bf..5e13415 100644 --- a/mq/keyconf.go +++ b/mq/keyconf.go @@ -46,8 +46,9 @@ const ( DBInvite = "db_invite" DBAPILog = "db_apilog" DBGiveLog = "db_givelog" - DBLotteryCode = "db_lotterycode" // 玩家抽奖码 - DBLotteryLog = "db_lotterylog" // 中奖记录 + DBLotteryCode = "db_lotterycode" // 玩家抽奖码 + DBLotteryLog = "db_lotterylog" // 中奖记录 + DBRedPacket = "db_redpackethistory" // 红包记录 ) // ranksrv 消息 diff --git a/protocol/rank/rank.pb.go b/protocol/rank/rank.pb.go index 2bc12a4..e8e5b46 100644 --- a/protocol/rank/rank.pb.go +++ b/protocol/rank/rank.pb.go @@ -55,6 +55,9 @@ const ( //年兽排行榜 Rank_PACKET_RANK_CSNian Rank = 10019 Rank_PACKET_RANK_SCNian Rank = 10020 + // 红包抽奖记录 + Rank_PACKET_CSRedPacketHistory Rank = 10021 + Rank_PACKET_SCRedPacketHistory Rank = 10022 ) // Enum value maps for Rank. @@ -82,30 +85,34 @@ var ( 10018: "PACKET_SCLotteryHistory", 10019: "PACKET_RANK_CSNian", 10020: "PACKET_RANK_SCNian", + 10021: "PACKET_CSRedPacketHistory", + 10022: "PACKET_SCRedPacketHistory", } Rank_value = map[string]int32{ - "PACKET_RANK_ZERO": 0, - "PACKET_RANK_CSRankMatch": 10000, - "PACKET_RANK_SCRankMatch": 10001, - "PACKET_RANK_CSCoin": 10002, - "PACKET_RANK_SCCoin": 10003, - "PACKET_RANK_CSInvite": 10004, - "PACKET_RANK_SCInvite": 10005, - "PACKET_CSInviteLog": 10006, - "PACKET_SCInviteLog": 10007, - "PACKET_RANK_CSWinCoin": 10008, - "PACKET_RANK_SCWinCoin": 10009, - "PACKET_RANK_CSLevel": 10010, - "PACKET_RANK_SCLevel": 10011, - "PACKET_RANK_CSPermit": 10012, - "PACKET_RANK_SCPermit": 10013, - "PACKET_CSRoomAward": 10014, - "PACKET_SCRoomAward": 10015, - "PACKET_SCRoomAwardOne": 10016, - "PACKET_CSLotteryHistory": 10017, - "PACKET_SCLotteryHistory": 10018, - "PACKET_RANK_CSNian": 10019, - "PACKET_RANK_SCNian": 10020, + "PACKET_RANK_ZERO": 0, + "PACKET_RANK_CSRankMatch": 10000, + "PACKET_RANK_SCRankMatch": 10001, + "PACKET_RANK_CSCoin": 10002, + "PACKET_RANK_SCCoin": 10003, + "PACKET_RANK_CSInvite": 10004, + "PACKET_RANK_SCInvite": 10005, + "PACKET_CSInviteLog": 10006, + "PACKET_SCInviteLog": 10007, + "PACKET_RANK_CSWinCoin": 10008, + "PACKET_RANK_SCWinCoin": 10009, + "PACKET_RANK_CSLevel": 10010, + "PACKET_RANK_SCLevel": 10011, + "PACKET_RANK_CSPermit": 10012, + "PACKET_RANK_SCPermit": 10013, + "PACKET_CSRoomAward": 10014, + "PACKET_SCRoomAward": 10015, + "PACKET_SCRoomAwardOne": 10016, + "PACKET_CSLotteryHistory": 10017, + "PACKET_SCLotteryHistory": 10018, + "PACKET_RANK_CSNian": 10019, + "PACKET_RANK_SCNian": 10020, + "PACKET_CSRedPacketHistory": 10021, + "PACKET_SCRedPacketHistory": 10022, } ) @@ -2569,6 +2576,165 @@ func (x *SCNian) GetTypeId() int32 { return 0 } +// 红包抽奖记录 +// PACKET_CSRedPacketHistory +type CSRedPacketHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 红包活动id +} + +func (x *CSRedPacketHistory) Reset() { + *x = CSRedPacketHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSRedPacketHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSRedPacketHistory) ProtoMessage() {} + +func (x *CSRedPacketHistory) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSRedPacketHistory.ProtoReflect.Descriptor instead. +func (*CSRedPacketHistory) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{33} +} + +func (x *CSRedPacketHistory) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +type RedPacketHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ts int64 `protobuf:"varint,1,opt,name=Ts,proto3" json:"Ts,omitempty"` // 时间戳 + ItemId int32 `protobuf:"varint,5,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 道具id + ItemNum int64 `protobuf:"varint,6,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` // 道具数量 +} + +func (x *RedPacketHistory) Reset() { + *x = RedPacketHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedPacketHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedPacketHistory) ProtoMessage() {} + +func (x *RedPacketHistory) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RedPacketHistory.ProtoReflect.Descriptor instead. +func (*RedPacketHistory) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{34} +} + +func (x *RedPacketHistory) GetTs() int64 { + if x != nil { + return x.Ts + } + return 0 +} + +func (x *RedPacketHistory) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *RedPacketHistory) GetItemNum() int64 { + if x != nil { + return x.ItemNum + } + return 0 +} + +type SCRedPacketHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*RedPacketHistory `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` +} + +func (x *SCRedPacketHistory) Reset() { + *x = SCRedPacketHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCRedPacketHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCRedPacketHistory) ProtoMessage() {} + +func (x *SCRedPacketHistory) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCRedPacketHistory.ProtoReflect.Descriptor instead. +func (*SCRedPacketHistory) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{35} +} + +func (x *SCRedPacketHistory) GetList() []*RedPacketHistory { + if x != nil { + return x.List + } + return nil +} + var File_protocol_rank_rank_proto protoreflect.FileDescriptor var file_protocol_rank_rank_proto_rawDesc = []byte{ @@ -2805,56 +2971,72 @@ var file_protocol_rank_rank_proto_rawDesc = []byte{ 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x2a, 0xd0, 0x04, 0x0a, 0x04, 0x52, - 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, - 0x4e, 0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, - 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, - 0x94, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, - 0x4b, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, - 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x4c, 0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, - 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, - 0x53, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, - 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, - 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, - 0x5f, 0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, - 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, - 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x10, 0x9f, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, 0x65, 0x10, 0xa0, 0x4e, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa1, 0x4e, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, - 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa2, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, - 0x6e, 0x10, 0xa3, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, - 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0xa4, 0x4e, 0x2a, 0x8d, 0x01, - 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, - 0x00, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, - 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x5f, 0x55, 0x70, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, - 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, - 0x61, 0x6e, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x12, 0x43, 0x53, + 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, + 0x22, 0x54, 0x0a, 0x10, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, + 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x40, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x61, 0x6e, + 0x6b, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x90, 0x05, 0x0a, 0x04, 0x52, 0x61, 0x6e, + 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, + 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, + 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, + 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, + 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, + 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, + 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, + 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, + 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, + 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, + 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9f, + 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, + 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, 0x65, 0x10, 0xa0, 0x4e, 0x12, 0x1c, 0x0a, + 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa1, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa2, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x10, + 0xa3, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, + 0x4b, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0xa4, 0x4e, 0x12, 0x1e, 0x0a, 0x19, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa5, 0x4e, 0x12, 0x1e, 0x0a, 0x19, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa6, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, + 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, + 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, + 0x12, 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, + 0x70, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, 0x22, 0x6d, + 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x61, 0x6e, + 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2870,7 +3052,7 @@ func file_protocol_rank_rank_proto_rawDescGZIP() []byte { } var file_protocol_rank_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_protocol_rank_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_protocol_rank_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_protocol_rank_rank_proto_goTypes = []interface{}{ (Rank)(0), // 0: rank.Rank (RankInvite)(0), // 1: rank.RankInvite @@ -2907,6 +3089,9 @@ var file_protocol_rank_rank_proto_goTypes = []interface{}{ (*CSNian)(nil), // 32: rank.CSNian (*NianRankData)(nil), // 33: rank.NianRankData (*SCNian)(nil), // 34: rank.SCNian + (*CSRedPacketHistory)(nil), // 35: rank.CSRedPacketHistory + (*RedPacketHistory)(nil), // 36: rank.RedPacketHistory + (*SCRedPacketHistory)(nil), // 37: rank.SCRedPacketHistory } var file_protocol_rank_rank_proto_depIdxs = []int32{ 3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank @@ -2929,11 +3114,12 @@ var file_protocol_rank_rank_proto_depIdxs = []int32{ 30, // 17: rank.SCLotteryHistory.List:type_name -> rank.LotteryHistory 33, // 18: rank.SCNian.Ranks:type_name -> rank.NianRankData 33, // 19: rank.SCNian.Me:type_name -> rank.NianRankData - 20, // [20:20] is the sub-list for method output_type - 20, // [20:20] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 36, // 20: rank.SCRedPacketHistory.List:type_name -> rank.RedPacketHistory + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_protocol_rank_rank_proto_init() } @@ -3338,6 +3524,42 @@ func file_protocol_rank_rank_proto_init() { return nil } } + file_protocol_rank_rank_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSRedPacketHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_rank_rank_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedPacketHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_rank_rank_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCRedPacketHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -3345,7 +3567,7 @@ func file_protocol_rank_rank_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_rank_rank_proto_rawDesc, NumEnums: 2, - NumMessages: 33, + NumMessages: 36, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/rank/rank.proto b/protocol/rank/rank.proto index 2bd7790..3ddd14e 100644 --- a/protocol/rank/rank.proto +++ b/protocol/rank/rank.proto @@ -36,6 +36,9 @@ enum Rank{ //年兽排行榜 PACKET_RANK_CSNian = 10019; PACKET_RANK_SCNian = 10020; + // 红包抽奖记录 + PACKET_CSRedPacketHistory = 10021; + PACKET_SCRedPacketHistory = 10022; } // 排位榜 @@ -299,3 +302,17 @@ message SCNian{ int32 Total = 5; // 总数量 int32 TypeId = 6; } + +// 红包抽奖记录 +// PACKET_CSRedPacketHistory +message CSRedPacketHistory{ + int64 Id = 1; // 红包活动id +} +message RedPacketHistory{ + int64 Ts = 1; // 时间戳 + int32 ItemId = 5; // 道具id + int64 ItemNum = 6; // 道具数量 +} +message SCRedPacketHistory{ + repeated RedPacketHistory List = 1; +} \ No newline at end of file diff --git a/ranksrv/action_gatesrv.go b/ranksrv/action_gatesrv.go index 5744dc8..9dd4355 100644 --- a/ranksrv/action_gatesrv.go +++ b/ranksrv/action_gatesrv.go @@ -34,6 +34,8 @@ func init() { com.Register(int(rankproto.Rank_PACKET_CSLotteryHistory), rankproto.CSLotteryHistory{}, CSLotteryHistory) //年兽排行榜 com.Register(int(rankproto.Rank_PACKET_RANK_CSNian), rankproto.CSNian{}, CSNian) + // 红包历史记录 + com.Register(int(rankproto.Rank_PACKET_CSRedPacketHistory), rankproto.CSRedPacketHistory{}, CSRedPacketHistory) } func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { @@ -648,6 +650,7 @@ func CSLotteryHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int }) return nil } + func CSNian(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { logger.Logger.Trace("CSNian data:", data) msg, ok := data.(*rankproto.CSNian) @@ -783,3 +786,36 @@ func CSNian(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data int } return nil } + +func CSRedPacketHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSRedPacketHistory data:", data) + msg, ok := data.(*rankproto.CSRedPacketHistory) + if !ok { + return nil + } + + pack := &rankproto.SCRedPacketHistory{} + + var list []*model.RedPacketHistory + var err error + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + list, err = model.GetRedPacketHistory(d.Platform, d.Snid, msg.GetId()) + if err != nil { + logger.Logger.Errorf("GetRedPacketHistory error: %v", err) + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if err == nil { + for _, v := range list { + pack.List = append(pack.List, &rankproto.RedPacketHistory{ + Ts: v.Ts, + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + } + + common.SendToGate(sid, int(rankproto.Rank_PACKET_SCRedPacketHistory), pack, s) + }), "CSRedPacketHistory").Start() + return nil +} diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 106d546..95cd2fa 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -8,6 +8,7 @@ import ( "sort" "time" + "go.mongodb.org/mongo-driver/bson/primitive" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/module" @@ -2474,6 +2475,16 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr Ts: now, }, mq.BackRedPacket) + mq.Write(&model.RedPacketHistory{ + Platform: p.Platform, + ID: primitive.NewObjectID(), + Cid: id, + Snid: p.SnId, + Ts: time.Now().Unix(), + ItemId: cfg.GetItemId(), + ItemNum: reward, + }, mq.DBRedPacket) + _, pack.RemainCount = RedPacketMgrInst.GetRemainTimesByConfig(p, cfg) Send(welfare.OpResultCode_OPRC_Sucess) return pack From ceb83a8eb42272d110dc7fdc756e8ba7b3b07dfd Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 Jan 2025 14:55:36 +0800 Subject: [PATCH 50/74] =?UTF-8?q?fix=20=E7=BA=A2=E5=8C=85=E9=A2=86?= =?UTF-8?q?=E5=8F=96=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/redpacket.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/model/redpacket.go b/model/redpacket.go index 112da34..f761420 100644 --- a/model/redpacket.go +++ b/model/redpacket.go @@ -87,6 +87,14 @@ type RedPacketHistory struct { ItemNum int64 // 道具数量 } +func (r *RedPacketHistory) DatabaseName() string { + return "log" +} + +func (r *RedPacketHistory) CollectionName() string { + return "log_redpackethistory" +} + type GetRedPacketHistoryReq struct { Plt string Snid int32 From 7feca849307be9aa31781bae9ef7e70f3a0d0248 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 Jan 2025 15:10:45 +0800 Subject: [PATCH 51/74] =?UTF-8?q?fix=20=E7=BA=A2=E5=8C=85=E9=A2=86?= =?UTF-8?q?=E5=8F=96=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/red_packet_history.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dao/red_packet_history.go b/dao/red_packet_history.go index a418ed3..d4aa21d 100644 --- a/dao/red_packet_history.go +++ b/dao/red_packet_history.go @@ -43,6 +43,10 @@ func NewRedPacketHistory(db *mongo.Database, c *mongo.Collection) (*RedPacketHis Keys: bson.D{{"snid", 1}, {"cid", 1}, {"ts", -1}}, // 1 表示升序,-1 表示降序 Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 }, + { + Keys: bson.D{{"snid", 1}, {"ts", -1}}, + Options: options.Index().SetBackground(true).SetSparse(true), + }, { Keys: bson.D{{"cid", 1}}, // 1 表示升序,-1 表示降序 Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 @@ -66,7 +70,10 @@ func NewRedPacketHistory(db *mongo.Database, c *mongo.Collection) (*RedPacketHis func (r *RedPacketHistory) GetHistory(snid int32, cid int64) ([]*modelpkg.RedPacketHistory, error) { res, err := r.FindMany(context.Background(), func(cols *internal.RedPacketHistoryColumns) interface{} { - return bson.M{cols.Snid: snid, cols.Cid: cid} + if cid > 0 { + return bson.M{cols.Snid: snid, cols.Cid: cid} + } + return bson.M{cols.Snid: snid} }, func(cols *internal.RedPacketHistoryColumns) *options.FindOptions { return options.Find().SetSort(bson.D{{cols.Ts, -1}}).SetLimit(30) }) From aefb7c97cd287423b503e06dca2f131abe468828 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 Jan 2025 15:43:25 +0800 Subject: [PATCH 52/74] =?UTF-8?q?fix=20=E7=BA=A2=E5=8C=85=E9=A2=86?= =?UTF-8?q?=E5=8F=96=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/internal/red_packet.go | 6 +++--- dao/internal/red_packet_history.go | 10 +++++----- model/redpacket.go | 16 ++++++++-------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dao/internal/red_packet.go b/dao/internal/red_packet.go index 1008510..3cee7c1 100644 --- a/dao/internal/red_packet.go +++ b/dao/internal/red_packet.go @@ -43,9 +43,9 @@ type RedPacketColumns struct { var redPacketColumns = &RedPacketColumns{ ID: "_id", - Cid: "Cid", // 红包活动id - Use: "Use", // 已发红包 红包奖励数量:已发个数 - Ts: "Ts", // 更新时间戳 + Cid: "cid", // 红包活动id + Use: "use", // 已发红包 红包奖励数量:已发个数 + Ts: "ts", // 更新时间戳 } func NewRedPacket() *RedPacket { diff --git a/dao/internal/red_packet_history.go b/dao/internal/red_packet_history.go index 9a6c257..b87040d 100644 --- a/dao/internal/red_packet_history.go +++ b/dao/internal/red_packet_history.go @@ -47,11 +47,11 @@ type RedPacketHistoryColumns struct { var redPacketHistoryColumns = &RedPacketHistoryColumns{ Platform: "-", // 平台 ID: "_id", - Cid: "Cid", // 红包活动id - Snid: "Snid", // 玩家id - Ts: "Ts", // 时间戳 - ItemId: "ItemId", // 道具id - ItemNum: "ItemNum",// 道具数量 + Cid: "cid", // 红包活动id + Snid: "snid", // 玩家id + Ts: "ts", // 时间戳 + ItemId: "itemid", // 道具id + ItemNum: "itemnum",// 道具数量 } func NewRedPacketHistory() *RedPacketHistory { diff --git a/model/redpacket.go b/model/redpacket.go index f761420..1eeaa81 100644 --- a/model/redpacket.go +++ b/model/redpacket.go @@ -11,9 +11,9 @@ import ( //go:generate mongoctl -model-dir=. -model-names=RedPacket -dao-dir=../dao/ type RedPacket struct { ID primitive.ObjectID `bson:"_id" gen:"autoFill"` - Cid int64 // 红包活动id - Use map[int64]int64 // 已发红包 红包奖励数量:已发个数 - Ts int64 // 更新时间戳 + Cid int64 `bson:"cid"` // 红包活动id + Use map[int64]int64 `bson:"use"` // 已发红包 红包奖励数量:已发个数 + Ts int64 `bson:"ts"` // 更新时间戳 } func (r *RedPacket) DatabaseName() string { @@ -80,11 +80,11 @@ type BackRedPacket struct { type RedPacketHistory struct { Platform string `bson:"-"` // 平台 ID primitive.ObjectID `bson:"_id" gen:"autoFill"` - Cid int64 // 红包活动id - Snid int32 // 玩家id - Ts int64 // 时间戳 - ItemId int32 // 道具id - ItemNum int64 // 道具数量 + Cid int64 `bson:"cid"` // 红包活动id + Snid int32 `bson:"snid"` // 玩家id + Ts int64 `bson:"ts"` // 时间戳 + ItemId int32 `bson:"itemid"` // 道具id + ItemNum int64 `bson:"itemnum"` // 道具数量 } func (r *RedPacketHistory) DatabaseName() string { From 894c28fa0eae348110f2d54740fca1a633d81724 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 Jan 2025 16:27:06 +0800 Subject: [PATCH 53/74] =?UTF-8?q?modify=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_pushcoin.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index e62233b..1b04d6e 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -53,10 +53,15 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 } if p.WelfData.PushCoin == nil { + // 初始化 p.WelfData.PushCoin = &model.PushCoinData{ Power: PowerInit, Exchange: make(map[int32]int32), - Items: make(map[int32]int64), + Items: map[int32]int64{ + common.ItemIDVCard: 1, + common.ItemIDCoin: 50 * 5000, + common.ItemIDPlum: 1, + }, } } @@ -216,9 +221,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i p.WelfData.PushCoin.Refresh++ // 1个v卡,50个金币,大梅花1个 p.WelfData.PushCoin.Items = map[int32]int64{ - common.ItemIDVCard: 1, - common.ItemIDCoin: 50 * 5000, - common.ItemIDPlum: 1, + common.ItemIDCoin: 50 * 5000, } case activity.OpCodes_OP_Exchange: From d230bbd74552fdbb2559419750700ea7d1ee202c Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 10 Jan 2025 17:27:28 +0800 Subject: [PATCH 54/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/activity/nian.pb.go | 290 ++++++++++++++++++++--------------- protocol/activity/nian.proto | 5 +- worldsrv/action_nian.go | 4 + 3 files changed, 173 insertions(+), 126 deletions(-) diff --git a/protocol/activity/nian.pb.go b/protocol/activity/nian.pb.go index 5525454..95990c0 100644 --- a/protocol/activity/nian.pb.go +++ b/protocol/activity/nian.pb.go @@ -212,6 +212,8 @@ type SCNianData struct { OtherSignAwardProp int32 `protobuf:"varint,18,opt,name=OtherSignAwardProp,proto3" json:"OtherSignAwardProp,omitempty"` //额外奖励概率 OtherSignAward []*RankAwardData `protobuf:"bytes,19,rep,name=OtherSignAward,proto3" json:"OtherSignAward,omitempty"` //签到额外奖励 OtherSignMaxCount int32 `protobuf:"varint,20,opt,name=OtherSignMaxCount,proto3" json:"OtherSignMaxCount,omitempty"` //额外奖励领取次数上限 + AttackMaxHp int64 `protobuf:"varint,21,opt,name=AttackMaxHp,proto3" json:"AttackMaxHp,omitempty"` //单次攻击最大血量 + AttackSumHp int64 `protobuf:"varint,22,opt,name=AttackSumHp,proto3" json:"AttackSumHp,omitempty"` //攻击总伤害 } func (x *SCNianData) Reset() { @@ -386,6 +388,20 @@ func (x *SCNianData) GetOtherSignMaxCount() int32 { return 0 } +func (x *SCNianData) GetAttackMaxHp() int64 { + if x != nil { + return x.AttackMaxHp + } + return 0 +} + +func (x *SCNianData) GetAttackSumHp() int64 { + if x != nil { + return x.AttackSumHp + } + return 0 +} + type ShopData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -766,15 +782,17 @@ type SCNianAttackData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-小爆竹 2-小爆竹*10 3-大爆竹 - BossHp int64 `protobuf:"varint,2,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //BOSS当前血量 - Award []*RankAwardData `protobuf:"bytes,3,rep,name=Award,proto3" json:"Award,omitempty"` //获得道具 - AttackHp int64 `protobuf:"varint,4,opt,name=AttackHp,proto3" json:"AttackHp,omitempty"` // 攻击伤害 - IsDie bool `protobuf:"varint,5,opt,name=IsDie,proto3" json:"IsDie,omitempty"` //BOSS是否死亡 - DieAward []*RankAwardData `protobuf:"bytes,6,rep,name=DieAward,proto3" json:"DieAward,omitempty"` //BOSS死亡奖励 - BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //BUFF剩余次数 - ExtraDrop []*RankAwardData `protobuf:"bytes,8,rep,name=ExtraDrop,proto3" json:"ExtraDrop,omitempty"` //大爆竹额外掉落 - FloorReward []*RankAwardData `protobuf:"bytes,9,rep,name=FloorReward,proto3" json:"FloorReward,omitempty"` //保底奖励 + TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-小爆竹 2-小爆竹*10 3-大爆竹 + BossHp int64 `protobuf:"varint,2,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //BOSS当前血量 + Award []*RankAwardData `protobuf:"bytes,3,rep,name=Award,proto3" json:"Award,omitempty"` //获得道具 + AttackHp int64 `protobuf:"varint,4,opt,name=AttackHp,proto3" json:"AttackHp,omitempty"` // 攻击伤害 + IsDie bool `protobuf:"varint,5,opt,name=IsDie,proto3" json:"IsDie,omitempty"` //BOSS是否死亡 + DieAward []*RankAwardData `protobuf:"bytes,6,rep,name=DieAward,proto3" json:"DieAward,omitempty"` //BOSS死亡奖励 + BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //BUFF剩余次数 + ExtraDrop []*RankAwardData `protobuf:"bytes,8,rep,name=ExtraDrop,proto3" json:"ExtraDrop,omitempty"` //大爆竹额外掉落 + FloorReward []*RankAwardData `protobuf:"bytes,9,rep,name=FloorReward,proto3" json:"FloorReward,omitempty"` //保底奖励 + AttackMaxHp int64 `protobuf:"varint,10,opt,name=AttackMaxHp,proto3" json:"AttackMaxHp,omitempty"` //单次攻击最大血量 + AttackSumHp int64 `protobuf:"varint,11,opt,name=AttackSumHp,proto3" json:"AttackSumHp,omitempty"` //攻击总伤害 } func (x *SCNianAttackData) Reset() { @@ -872,6 +890,20 @@ func (x *SCNianAttackData) GetFloorReward() []*RankAwardData { return nil } +func (x *SCNianAttackData) GetAttackMaxHp() int64 { + if x != nil { + return x.AttackMaxHp + } + return 0 +} + +func (x *SCNianAttackData) GetAttackSumHp() int64 { + if x != nil { + return x.AttackSumHp + } + return 0 +} + //领取签到奖励 //PACKET_CSNianSignAward type CSNianSignAward struct { @@ -1119,7 +1151,7 @@ var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2f, 0x6e, 0x69, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, - 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x93, 0x06, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, + 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xd7, 0x06, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, @@ -1168,123 +1200,131 @@ var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4f, 0x74, 0x68, 0x65, 0x72, - 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5c, 0x0a, 0x08, - 0x53, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, - 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, - 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x22, 0x65, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, - 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, - 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x52, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, - 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x52, 0x61, - 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x26, 0x0a, - 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x16, 0x0a, - 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, - 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0xe8, 0x02, 0x0a, 0x10, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, - 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x6b, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x6b, 0x48, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x44, - 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x20, + 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, + 0x22, 0x5c, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, + 0x6f, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1e, + 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, 0x0c, + 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x22, 0x65, 0x0a, 0x0a, + 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, + 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, + 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x22, 0x52, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, + 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, + 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, + 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, + 0x6d, 0x22, 0x26, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0xac, 0x03, 0x0a, 0x10, 0x53, 0x43, + 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, + 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, + 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, - 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, + 0x69, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, + 0x33, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, - 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x45, 0x78, 0x74, 0x72, - 0x61, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x22, 0xcc, 0x02, 0x0a, 0x0f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, - 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, - 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, - 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, - 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, - 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x20, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x2a, 0xe2, 0x02, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, - 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, - 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, - 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, - 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, - 0x61, 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, - 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, - 0xed, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, - 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x10, 0xef, 0x14, 0x2a, 0x3e, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, - 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, - 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, - 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, + 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, + 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, + 0x78, 0x48, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, + 0x53, 0x75, 0x6d, 0x48, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, + 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0xcc, 0x02, 0x0a, 0x0f, + 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0e, + 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, + 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x4f, + 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, + 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x2e, 0x0a, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x50, 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, + 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, + 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x0c, 0x43, 0x53, + 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x8a, 0x01, 0x0a, + 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, + 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x39, + 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0xe2, 0x02, 0x0a, 0x0c, 0x4e, 0x69, + 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, + 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, + 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, + 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, + 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, + 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xed, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xef, 0x14, 0x2a, 0x3e, + 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, + 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x01, 0x42, 0x28, + 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/activity/nian.proto b/protocol/activity/nian.proto index 9bd9eba..6de8149 100644 --- a/protocol/activity/nian.proto +++ b/protocol/activity/nian.proto @@ -49,7 +49,8 @@ message SCNianData{ int32 OtherSignAwardProp = 18;//额外奖励概率 repeated RankAwardData OtherSignAward = 19;//签到额外奖励 int32 OtherSignMaxCount = 20;//额外奖励领取次数上限 - + int64 AttackMaxHp =21; //单次攻击最大血量 + int64 AttackSumHp = 22; //攻击总伤害 } message ShopData{ @@ -98,6 +99,8 @@ message SCNianAttackData{ int64 BuffCount = 7; //BUFF剩余次数 repeated RankAwardData ExtraDrop = 8;//大爆竹额外掉落 repeated RankAwardData FloorReward = 9;//保底奖励 + int64 AttackMaxHp = 10; //单次攻击最大血量 + int64 AttackSumHp = 11; //攻击总伤害 } //领取签到奖励 //PACKET_CSNianSignAward diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go index 1e3cd0f..8bc3b60 100644 --- a/worldsrv/action_nian.go +++ b/worldsrv/action_nian.go @@ -177,6 +177,8 @@ func CSNianData(s *netlib.Session, packetid int, data interface{}, sid int64) er pack.SignAwardTime = signTime pack.ChangeData = changeData pack.Switch = pool.Switch + pack.AttackMaxHp = p.WelfData.NianData.AttackMaxHp + pack.AttackSumHp = p.WelfData.NianData.AttackSumHp logger.Logger.Trace("请求年兽活动信息 ", pack) p.SendToClient(int(activity.NianPacketID_PACKET_SCNianData), pack) } @@ -555,6 +557,8 @@ func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) pack.DieAward = append(pack.DieAward, dieInfo) } pack.BuffCount = p.WelfData.NianData.BuffCount + pack.AttackMaxHp = p.WelfData.NianData.AttackMaxHp + pack.AttackSumHp = p.WelfData.NianData.AttackSumHp p.SendToClient(int(activity.NianPacketID_PACKET_SCNianAttackData), pack) TaskSubjectSingleton.Touch(common.TaskTypeNianBossDamage, &TaskData{SnId: p.SnId, Num: AttackHp}) // 对年兽造成伤害 //更新年兽排行榜榜 From 4e55ce186db0ffa12a971f625b35d42bf291c331 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 13 Jan 2025 09:18:48 +0800 Subject: [PATCH 55/74] =?UTF-8?q?add=20=E7=BA=A2=E5=8C=85=E9=9B=A8?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/welfmgr.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 95cd2fa..3d9432a 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -2485,6 +2485,8 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr ItemNum: reward, }, mq.DBRedPacket) + TaskSubjectSingleton.Touch(common.TaskTypeBuyRedBag, &TaskData{SnId: p.SnId, Num: 1}) + _, pack.RemainCount = RedPacketMgrInst.GetRemainTimesByConfig(p, cfg) Send(welfare.OpResultCode_OPRC_Sucess) return pack From 5e283880abad4a023d6b90cdf5538b13e0196243 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 13 Jan 2025 10:42:08 +0800 Subject: [PATCH 56/74] =?UTF-8?q?add=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/activity/pushcoin.pb.go | 45 +++++++++++++++++++-------- protocol/activity/pushcoin.proto | 4 +++ worldsrv/action_pushcoin.go | 53 ++++++++++++++++++++------------ 3 files changed, 71 insertions(+), 31 deletions(-) diff --git a/protocol/activity/pushcoin.pb.go b/protocol/activity/pushcoin.pb.go index d89e4e8..f45142b 100644 --- a/protocol/activity/pushcoin.pb.go +++ b/protocol/activity/pushcoin.pb.go @@ -142,8 +142,12 @@ func (OpCodes) EnumDescriptor() ([]byte, []int) { type OpResultPushCoinCode int32 const ( - OpResultPushCoinCode_OPRC_PushCoin_Success OpResultPushCoinCode = 0 //成功 - OpResultPushCoinCode_OPRC_PushCoin_Error OpResultPushCoinCode = 1 //失败 + OpResultPushCoinCode_OPRC_PushCoin_Success OpResultPushCoinCode = 0 //成功 + OpResultPushCoinCode_OPRC_PushCoin_Error OpResultPushCoinCode = 1 //失败 + OpResultPushCoinCode_OPRC_PushCoin_BetNotEnough OpResultPushCoinCode = 2 //投币,金币不足 + OpResultPushCoinCode_OPRC_PushCoin_ExchangeNotEnough OpResultPushCoinCode = 3 //兑换次数不足 + OpResultPushCoinCode_OPRC_PushCoin_ShakeNotEnough OpResultPushCoinCode = 4 //震动次数不足 + OpResultPushCoinCode_OPRC_PushCoin_ItemNotEnough OpResultPushCoinCode = 5 //兑换消耗道具不足 ) // Enum value maps for OpResultPushCoinCode. @@ -151,10 +155,18 @@ var ( OpResultPushCoinCode_name = map[int32]string{ 0: "OPRC_PushCoin_Success", 1: "OPRC_PushCoin_Error", + 2: "OPRC_PushCoin_BetNotEnough", + 3: "OPRC_PushCoin_ExchangeNotEnough", + 4: "OPRC_PushCoin_ShakeNotEnough", + 5: "OPRC_PushCoin_ItemNotEnough", } OpResultPushCoinCode_value = map[string]int32{ - "OPRC_PushCoin_Success": 0, - "OPRC_PushCoin_Error": 1, + "OPRC_PushCoin_Success": 0, + "OPRC_PushCoin_Error": 1, + "OPRC_PushCoin_BetNotEnough": 2, + "OPRC_PushCoin_ExchangeNotEnough": 3, + "OPRC_PushCoin_ShakeNotEnough": 4, + "OPRC_PushCoin_ItemNotEnough": 5, } ) @@ -804,14 +816,23 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, - 0x05, 0x2a, 0x4a, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, - 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, - 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x42, 0x28, 0x5a, - 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x05, 0x2a, 0xd2, 0x01, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x1e, + 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, + 0x42, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x23, + 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, + 0x68, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, + 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, + 0x6f, 0x75, 0x67, 0x68, 0x10, 0x05, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/activity/pushcoin.proto b/protocol/activity/pushcoin.proto index ddb31d5..bbc6588 100644 --- a/protocol/activity/pushcoin.proto +++ b/protocol/activity/pushcoin.proto @@ -68,6 +68,10 @@ enum OpCodes { enum OpResultPushCoinCode { OPRC_PushCoin_Success = 0; //成功 OPRC_PushCoin_Error = 1; //失败 + OPRC_PushCoin_BetNotEnough = 2; //投币,金币不足 + OPRC_PushCoin_ExchangeNotEnough = 3; //兑换次数不足 + OPRC_PushCoin_ShakeNotEnough = 4; //震动次数不足 + OPRC_PushCoin_ItemNotEnough = 5; //兑换消耗道具不足 } //PACKET_SCPushCoinPlayerOp diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index 1b04d6e..ca80bc0 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -53,16 +53,7 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 } if p.WelfData.PushCoin == nil { - // 初始化 - p.WelfData.PushCoin = &model.PushCoinData{ - Power: PowerInit, - Exchange: make(map[int32]int32), - Items: map[int32]int64{ - common.ItemIDVCard: 1, - common.ItemIDCoin: 50 * 5000, - common.ItemIDPlum: 1, - }, - } + InitPlayerPushCoin(p) } pack := &activity.SCPushCoinInfo{ @@ -164,6 +155,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i } if p.GetCoin() < item.GetNum() { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_BetNotEnough goto here } pack.BetId = int32(msg.GetOpParam()) @@ -185,10 +177,12 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i id = common.ItemIDCoin } - //if p.WelfData.PushCoin.Items[id] < val { - // logger.Logger.Errorf("获得道具太多: %d, %d", p.WelfData.PushCoin.Items[id], val) - // goto here - //} + if p.WelfData.PushCoin.Items[id] < val { + logger.Logger.Errorf("获得道具太多: %d, %d", p.WelfData.PushCoin.Items[id], val) + // 刷新桌面余额 + UpdatePlayerPushCoin(p) + goto here + } BagMgrSingleton.AddItems(&model.AddItemParam{ Platform: p.Platform, @@ -213,16 +207,13 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i case activity.OpCodes_OP_Shake: if p.WelfData.PushCoin.Shake < int32(msg.GetOpParam()) { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ShakeNotEnough goto here } p.WelfData.PushCoin.Shake -= int32(msg.GetOpParam()) case activity.OpCodes_OP_Refresh: - p.WelfData.PushCoin.Refresh++ - // 1个v卡,50个金币,大梅花1个 - p.WelfData.PushCoin.Items = map[int32]int64{ - common.ItemIDCoin: 50 * 5000, - } + UpdatePlayerPushCoin(p) case activity.OpCodes_OP_Exchange: d := srvdata.PBDB_PropExchangeMgr.GetData(int32(msg.GetOpParam())) @@ -231,6 +222,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i } // 兑换次数 if d.GetTimes() > 0 && p.WelfData.PushCoin.Exchange[d.Id] >= d.GetTimes() { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ExchangeNotEnough goto here } @@ -244,6 +236,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i ItemNum: int32(v), }) if k == common.ItemIDCoin && p.GetCoin() < v { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ItemNotEnough goto here } cost = append(cost, &model.Item{ @@ -262,6 +255,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i Remark: "推币机活动兑换消耗", }) if !ok { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ItemNotEnough goto here } @@ -307,6 +301,27 @@ here: return nil } +func InitPlayerPushCoin(p *Player) { + // 初始化 + p.WelfData.PushCoin = &model.PushCoinData{ + Power: PowerInit, + Exchange: make(map[int32]int32), + Items: map[int32]int64{ + common.ItemIDVCard: 1, + common.ItemIDCoin: 50 * 5000, + common.ItemIDPlum: 1, + }, + } +} + +func UpdatePlayerPushCoin(p *Player) { + p.WelfData.PushCoin.Refresh++ + // 50个金币 + p.WelfData.PushCoin.Items = map[int32]int64{ + common.ItemIDCoin: 50 * 5000, + } +} + func AddPower(p *Player, value int64) { if value < 0 { return From 0217cca00f1faf57efd44b916b738ce36ee24c7b Mon Sep 17 00:00:00 2001 From: tomas Date: Mon, 13 Jan 2025 11:17:10 +0800 Subject: [PATCH 57/74] add dragon test code --- .../slotspkg/internal/exported/excel2go/base/fortune_dragon.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go index 7d7804e..8354dcb 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go @@ -324,7 +324,7 @@ func init() { FortuneDragonOthers = []*structs.FortuneDragonOthers{ { - FreespinTriggerPro: 0.005, + FreespinTriggerPro: 0.50, FreeSpinCount: 8, MaxWin: 2500, SureWinFreespinTriggerPro: 0.0273, From 00654c7bae28c89208c544fafa20c1c1b87e91b5 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 13 Jan 2025 12:01:12 +0800 Subject: [PATCH 58/74] =?UTF-8?q?fix=20=E7=BA=A2=E5=8C=85=E4=B8=AD?= =?UTF-8?q?=E5=A5=96=E6=A6=82=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/welfmgr.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 3d9432a..00bb254 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -2363,7 +2363,7 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr // 记录参与次数 if id == 0 { for _, v := range this.GetConfig(p.Platform).RedPacketConfig.GetList() { - if v.GetOn() == common.On && now >= common.IntToTime(int(v.GetStartHMS())).Unix() || now < common.IntToTime(int(v.GetEndHMS())).Unix() { + if v.GetOn() == common.On && now >= common.IntToTime(int(v.GetStartHMS())).Unix() && now < common.IntToTime(int(v.GetEndHMS())).Unix() { if p.WelfData.RedPacket[v.GetId()] == nil { p.WelfData.RedPacket[v.GetId()] = &model.RedPacketData{} } @@ -2412,10 +2412,10 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr if remain <= 0 || (playerLimit > 0 && playerRN >= playerLimit) { // 空奖 } else { - f := func() { + f := func(total int64) { // 概率抽奖 rate := 0 - n := rand.Int63n(10000) + n := rand.Int63n(total) for _, v := range cfg.GetRedList() { rate += int(v.GetRate()) if n < int64(rate) { @@ -2427,23 +2427,22 @@ func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDr if cfg.GetMaxCount() > 0 { // 保底计算 if data.RN >= cfg.GetLessCount() { - f() + f(10000) } else { sub := cfg.GetLessCount() - data.RN if cfg.GetMaxCount()-data.N <= sub { // 必中 - for i := 0; i < 1000; i++ { - f() - if reward > 0 { - break - } + var total int64 + for _, v := range cfg.GetRedList() { + total += v.GetRate() } + f(total) } else { - f() + f(10000) } } } else { - f() + f(10000) } } From e601156305d63680ad0d43332b2da00b35bdbedb Mon Sep 17 00:00:00 2001 From: tomas Date: Mon, 13 Jan 2025 13:24:30 +0800 Subject: [PATCH 59/74] del testcode --- .../slotspkg/internal/exported/excel2go/base/fortune_dragon.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go index 8354dcb..7d7804e 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go @@ -324,7 +324,7 @@ func init() { FortuneDragonOthers = []*structs.FortuneDragonOthers{ { - FreespinTriggerPro: 0.50, + FreespinTriggerPro: 0.005, FreeSpinCount: 8, MaxWin: 2500, SureWinFreespinTriggerPro: 0.0273, From 9bedfc1dfe1ef14fa323530e1d719feaaa4283a6 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 13 Jan 2025 15:57:20 +0800 Subject: [PATCH 60/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/red_packet.go | 4 ---- worldsrv/action_pushcoin.go | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/dao/red_packet.go b/dao/red_packet.go index 3753428..5a10a32 100644 --- a/dao/red_packet.go +++ b/dao/red_packet.go @@ -71,10 +71,6 @@ func (r *RedPacket) GetAll() (res []*modelpkg.RedPacket, err error) { func (r *RedPacket) UpdateAll(list []*modelpkg.RedPacket) error { var operations []mongo.WriteModel for _, v := range list { - updateDataMap := bson.M{ - "$set": v, - } - delete(updateDataMap["$set"].(bson.M), "_id") // 删除 _id 字段 operations = append(operations, mongo.NewUpdateOneModel().SetFilter(bson.M{"_id": v.ID}).SetUpdate(bson.M{"$set": v}).SetUpsert(true)) } diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index ca80bc0..a4fd358 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -393,6 +393,7 @@ func Draw(p *Player) { for k, v := range d.GetGain() { pack.ItemId = int32(k) pack.ItemNum = int32(v) + AddValue(p, map[int32]int64{pack.ItemId: int64(pack.ItemNum)}) } if pack.Coin > 0 || pack.ItemId > 0 { p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyDrawInfo), pack) From 046d5ea7fbcf3f2a026f23c94129837a2bb7345e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 13 Jan 2025 16:42:57 +0800 Subject: [PATCH 61/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_pushcoin.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index a4fd358..db38f66 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -213,7 +213,11 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i p.WelfData.PushCoin.Shake -= int32(msg.GetOpParam()) case activity.OpCodes_OP_Refresh: - UpdatePlayerPushCoin(p) + if p.WelfData.PushCoin.Refresh <= 0 { + InitPlayerPushCoin(p) + } else { + UpdatePlayerPushCoin(p) + } case activity.OpCodes_OP_Exchange: d := srvdata.PBDB_PropExchangeMgr.GetData(int32(msg.GetOpParam())) From 7316751e36259efd72a1ad308049408debe76537 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 13 Jan 2025 17:10:47 +0800 Subject: [PATCH 62/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/activity/pushcoin.pb.go | 210 ++++++++++++++++--------------- protocol/activity/pushcoin.proto | 3 +- worldsrv/action_pushcoin.go | 15 ++- 3 files changed, 124 insertions(+), 104 deletions(-) diff --git a/protocol/activity/pushcoin.pb.go b/protocol/activity/pushcoin.pb.go index f45142b..5ab35a5 100644 --- a/protocol/activity/pushcoin.pb.go +++ b/protocol/activity/pushcoin.pb.go @@ -249,6 +249,7 @@ type SCPushCoinInfo struct { PowerLine int64 `protobuf:"varint,4,opt,name=PowerLine,proto3" json:"PowerLine,omitempty"` // 当前能量值 PowerLineMax int64 `protobuf:"varint,5,opt,name=PowerLineMax,proto3" json:"PowerLineMax,omitempty"` // 能量值上限 RefreshTimes int64 `protobuf:"varint,6,opt,name=RefreshTimes,proto3" json:"RefreshTimes,omitempty"` // 刷新次数 + Items []*ItemInfo `protobuf:"bytes,7,rep,name=Items,proto3" json:"Items,omitempty"` // 桌面数据 } func (x *SCPushCoinInfo) Reset() { @@ -325,13 +326,20 @@ func (x *SCPushCoinInfo) GetRefreshTimes() int64 { return 0 } +func (x *SCPushCoinInfo) GetItems() []*ItemInfo { + if x != nil { + return x.Items + } + return nil +} + type ItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id - ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 + ItemNum int64 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 } func (x *ItemInfo) Reset() { @@ -373,7 +381,7 @@ func (x *ItemInfo) GetItemId() int32 { return 0 } -func (x *ItemInfo) GetItemNum() int32 { +func (x *ItemInfo) GetItemNum() int64 { if x != nil { return x.ItemNum } @@ -732,7 +740,7 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x10, 0x0a, 0x0e, - 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x82, + 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xac, 0x02, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, @@ -749,90 +757,93 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, - 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, - 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3c, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0c, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, + 0x43, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, + 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, + 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, + 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, + 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x47, 0x61, - 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, - 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, - 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x43, - 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, - 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xc7, 0x01, 0x0a, + 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x4f, 0x70, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, + 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, - 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, - 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x4f, 0x70, 0x49, 0x74, - 0x65, 0x6d, 0x22, 0xc7, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, - 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, - 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, - 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x0f, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, - 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, - 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, - 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf9, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfa, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, - 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, - 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, - 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, - 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, - 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, - 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, - 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, - 0x05, 0x2a, 0xd2, 0x01, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, - 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, - 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x1e, - 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, - 0x42, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x23, - 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, - 0x68, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, - 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, - 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, - 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, - 0x6f, 0x75, 0x67, 0x68, 0x10, 0x05, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, - 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, + 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, + 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, + 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, + 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10, + 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, + 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, + 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, + 0xf9, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, + 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, + 0xfa, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, + 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, + 0xfb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, + 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, + 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, + 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, + 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x2a, 0xd2, 0x01, 0x0a, 0x14, + 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, + 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x42, 0x65, 0x74, 0x4e, 0x6f, 0x74, + 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x03, 0x12, 0x20, 0x0a, + 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, + 0x68, 0x61, 0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, + 0x1f, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x05, + 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -863,20 +874,21 @@ var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{ (*NotifyPowerLine)(nil), // 10: activity.NotifyPowerLine } var file_protocol_activity_pushcoin_proto_depIdxs = []int32{ - 6, // 0: activity.SCPushCoinInfo.ExchangeList:type_name -> activity.ExchangeInfo - 7, // 1: activity.SCPushCoinInfo.DrawList:type_name -> activity.DrawInfo - 5, // 2: activity.ExchangeInfo.Cost:type_name -> activity.ItemInfo - 5, // 3: activity.ExchangeInfo.Gain:type_name -> activity.ItemInfo - 1, // 4: activity.CSPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes - 5, // 5: activity.CSPushCoinPlayerOp.OpItem:type_name -> activity.ItemInfo - 2, // 6: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode - 1, // 7: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes - 6, // 8: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 6, // 0: activity.SCPushCoinInfo.ExchangeList:type_name -> activity.ExchangeInfo + 7, // 1: activity.SCPushCoinInfo.DrawList:type_name -> activity.DrawInfo + 5, // 2: activity.SCPushCoinInfo.Items:type_name -> activity.ItemInfo + 5, // 3: activity.ExchangeInfo.Cost:type_name -> activity.ItemInfo + 5, // 4: activity.ExchangeInfo.Gain:type_name -> activity.ItemInfo + 1, // 5: activity.CSPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes + 5, // 6: activity.CSPushCoinPlayerOp.OpItem:type_name -> activity.ItemInfo + 2, // 7: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode + 1, // 8: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes + 6, // 9: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_protocol_activity_pushcoin_proto_init() } diff --git a/protocol/activity/pushcoin.proto b/protocol/activity/pushcoin.proto index bbc6588..bdb624c 100644 --- a/protocol/activity/pushcoin.proto +++ b/protocol/activity/pushcoin.proto @@ -24,11 +24,12 @@ message SCPushCoinInfo { int64 PowerLine = 4; // 当前能量值 int64 PowerLineMax = 5; // 能量值上限 int64 RefreshTimes = 6; // 刷新次数 + repeated ItemInfo Items = 7; // 桌面数据 } message ItemInfo{ int32 ItemId = 1; //道具id - int32 ItemNum = 2; //道具数量 + int64 ItemNum = 2; //道具数量 } message ExchangeInfo{ diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index db38f66..df93439 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -63,6 +63,13 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 RefreshTimes: p.WelfData.PushCoin.Refresh, } + for k, v := range p.WelfData.PushCoin.Items { + pack.Items = append(pack.Items, &activity.ItemInfo{ + ItemId: k, + ItemNum: v, + }) + } + for _, v := range srvdata.PBDB_PropExchangeMgr.Datas.Arr { if v.GetGroup() == 2 { info := &activity.ExchangeInfo{ @@ -72,7 +79,7 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 for kk, vv := range v.GetCost() { info.Cost = append(info.Cost, &activity.ItemInfo{ ItemId: int32(kk), - ItemNum: int32(vv), + ItemNum: vv, }) } sort.Slice(info.Cost, func(i, j int) bool { @@ -81,7 +88,7 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64 for kk, vv := range v.GetGain() { info.Gain = append(info.Gain, &activity.ItemInfo{ ItemId: int32(kk), - ItemNum: int32(vv), + ItemNum: vv, }) } sort.Slice(info.Gain, func(i, j int) bool { @@ -237,7 +244,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i for k, v := range d.GetCost() { pack.Exchange.Cost = append(pack.Exchange.Cost, &activity.ItemInfo{ ItemId: int32(k), - ItemNum: int32(v), + ItemNum: v, }) if k == common.ItemIDCoin && p.GetCoin() < v { pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ItemNotEnough @@ -266,7 +273,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i for k, v := range d.GetGain() { pack.Exchange.Gain = append(pack.Exchange.Gain, &activity.ItemInfo{ ItemId: int32(k), - ItemNum: int32(v), + ItemNum: v, }) if k == common.ItemIDShake { p.WelfData.PushCoin.Shake += int32(v) From 5adc0638f8bf863dec3ee701ba8cb563680d3d18 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Tue, 14 Jan 2025 09:03:30 +0800 Subject: [PATCH 63/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/rankmatch.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index 45f0c57..5642b2e 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -961,16 +961,16 @@ func (r *RankMatchMgr) NianRankAward() { if nowTime < timestamp || nowTime-86400 > endTimestamp { return } - log := &model.NianPlayerRankLog{} - log.Ts = time.Now().Unix() - log.Platform = platform for _, info := range rankConfig.RankData { if info.TypeId == 1 { - log.TypeId = info.TypeId rankAward := info.RankInfo if rankAward == nil { continue } + log := &model.NianPlayerRankLog{} + log.Ts = time.Now().Unix() + log.Platform = platform + log.TypeId = info.TypeId var players []*model.PlayerBaseInfo list, err := model.FindLuckNianRankList(&model.FindNianListArgs{ Platform: platform, @@ -1062,6 +1062,9 @@ func (r *RankMatchMgr) NianRankAward() { continue } var players []*model.PlayerBaseInfo + log := &model.NianPlayerRankLog{} + log.Ts = time.Now().Unix() + log.Platform = platform log.TypeId = info.TypeId list, err := model.FindDamageNianRankList(&model.FindNianListArgs{ Platform: platform, From 280ef5d42e991731cc34c051fe50ae6bcdad7d6b Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Tue, 14 Jan 2025 09:05:01 +0800 Subject: [PATCH 64/74] =?UTF-8?q?=E5=B9=B4=E5=85=BD=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/rankmatch.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index 5642b2e..351d577 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -967,10 +967,6 @@ func (r *RankMatchMgr) NianRankAward() { if rankAward == nil { continue } - log := &model.NianPlayerRankLog{} - log.Ts = time.Now().Unix() - log.Platform = platform - log.TypeId = info.TypeId var players []*model.PlayerBaseInfo list, err := model.FindLuckNianRankList(&model.FindNianListArgs{ Platform: platform, @@ -995,6 +991,10 @@ func (r *RankMatchMgr) NianRankAward() { return } rankId := int32(1) + log := &model.NianPlayerRankLog{} + log.Ts = time.Now().Unix() + log.Platform = platform + log.TypeId = info.TypeId for k, player := range players { localRankId := rankId if player == nil { @@ -1062,10 +1062,6 @@ func (r *RankMatchMgr) NianRankAward() { continue } var players []*model.PlayerBaseInfo - log := &model.NianPlayerRankLog{} - log.Ts = time.Now().Unix() - log.Platform = platform - log.TypeId = info.TypeId list, err := model.FindDamageNianRankList(&model.FindNianListArgs{ Platform: platform, }) @@ -1088,6 +1084,10 @@ func (r *RankMatchMgr) NianRankAward() { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList err:%v", err) return } + log := &model.NianPlayerRankLog{} + log.Ts = time.Now().Unix() + log.Platform = platform + log.TypeId = info.TypeId rankId := int32(1) for k, player := range players { localRankId := rankId // 将 rankId 复制到局部变量 From 167a17b29aaef5c24fc6ab3a8e381b06d5619d1e Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Tue, 14 Jan 2025 09:24:25 +0800 Subject: [PATCH 65/74] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E5=A5=96=E5=8A=B1?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/activity/nian.pb.go | 285 ++++++++++++++++++----------------- protocol/activity/nian.proto | 1 + worldsrv/action_nian.go | 8 + 3 files changed, 158 insertions(+), 136 deletions(-) diff --git a/protocol/activity/nian.pb.go b/protocol/activity/nian.pb.go index 95990c0..5ada796 100644 --- a/protocol/activity/nian.pb.go +++ b/protocol/activity/nian.pb.go @@ -214,6 +214,7 @@ type SCNianData struct { OtherSignMaxCount int32 `protobuf:"varint,20,opt,name=OtherSignMaxCount,proto3" json:"OtherSignMaxCount,omitempty"` //额外奖励领取次数上限 AttackMaxHp int64 `protobuf:"varint,21,opt,name=AttackMaxHp,proto3" json:"AttackMaxHp,omitempty"` //单次攻击最大血量 AttackSumHp int64 `protobuf:"varint,22,opt,name=AttackSumHp,proto3" json:"AttackSumHp,omitempty"` //攻击总伤害 + SignAward []*RankAwardData `protobuf:"bytes,23,rep,name=SignAward,proto3" json:"SignAward,omitempty"` //签到奖励 } func (x *SCNianData) Reset() { @@ -402,6 +403,13 @@ func (x *SCNianData) GetAttackSumHp() int64 { return 0 } +func (x *SCNianData) GetSignAward() []*RankAwardData { + if x != nil { + return x.SignAward + } + return nil +} + type ShopData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1151,7 +1159,7 @@ var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2f, 0x6e, 0x69, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, - 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xd7, 0x06, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, + 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8e, 0x07, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, @@ -1205,126 +1213,130 @@ var file_protocol_activity_nian_proto_rawDesc = []byte{ 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, - 0x22, 0x5c, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, - 0x6f, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1e, - 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, 0x0c, - 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x22, 0x65, 0x0a, 0x0a, - 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, - 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, - 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x22, 0x52, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, - 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, - 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, - 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, - 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, - 0x6d, 0x22, 0x26, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0xac, 0x03, 0x0a, 0x10, 0x53, 0x43, - 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, - 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, - 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, - 0x69, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, - 0x33, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, - 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, - 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, - 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, - 0x78, 0x48, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, - 0x53, 0x75, 0x6d, 0x48, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, - 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0xcc, 0x02, 0x0a, 0x0f, - 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0e, - 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x4f, - 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, - 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, - 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x2e, 0x0a, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x50, 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, - 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, - 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x12, 0x35, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x17, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, + 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x53, 0x69, + 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, + 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, + 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, + 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, + 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, + 0x75, 0x66, 0x66, 0x22, 0x65, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, + 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, - 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x0c, 0x43, 0x53, - 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x8a, 0x01, 0x0a, - 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, - 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x39, - 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0xe2, 0x02, 0x0a, 0x0c, 0x4e, 0x69, - 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, - 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, - 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, - 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, - 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, - 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, - 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, - 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, - 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, - 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, - 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xed, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xef, 0x14, 0x2a, 0x3e, - 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, - 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, - 0x73, 0x73, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x01, 0x42, 0x28, - 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x52, 0x0a, 0x0c, 0x4e, 0x69, + 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, + 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4e, 0x69, 0x61, 0x6e, + 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x55, + 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x26, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, + 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, + 0x22, 0xac, 0x03, 0x0a, 0x10, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, + 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, + 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, + 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, + 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x45, 0x78, 0x74, + 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, + 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, + 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x41, + 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x20, 0x0a, + 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x22, + 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x22, 0xcc, 0x02, 0x0a, 0x0f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, + 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, + 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, + 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, + 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, + 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0x20, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x4e, 0x75, 0x6d, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x2a, 0xe2, 0x02, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, + 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, 0x6e, + 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, 0x12, + 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, 0x12, + 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, + 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, + 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xed, + 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, + 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x10, 0xef, 0x14, 0x2a, 0x3e, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x00, + 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x4e, + 0x69, 0x61, 0x6e, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, + 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1363,23 +1375,24 @@ var file_protocol_activity_nian_proto_depIdxs = []int32{ 7, // 0: activity.SCNianData.RankData:type_name -> activity.NianRankData 4, // 1: activity.SCNianData.shopData:type_name -> activity.ShopData 9, // 2: activity.SCNianData.OtherSignAward:type_name -> activity.RankAwardData - 1, // 3: activity.SCNianBuff.OpRetCode:type_name -> activity.OpResultCode_Nian - 8, // 4: activity.NianRankData.Data:type_name -> activity.NianRankInfo - 9, // 5: activity.NianRankInfo.Award:type_name -> activity.RankAwardData - 9, // 6: activity.SCNianAttackData.Award:type_name -> activity.RankAwardData - 9, // 7: activity.SCNianAttackData.DieAward:type_name -> activity.RankAwardData - 9, // 8: activity.SCNianAttackData.ExtraDrop:type_name -> activity.RankAwardData - 9, // 9: activity.SCNianAttackData.FloorReward:type_name -> activity.RankAwardData - 9, // 10: activity.SCNianSignAward.SignAward:type_name -> activity.RankAwardData - 9, // 11: activity.SCNianSignAward.OtherSignAward:type_name -> activity.RankAwardData - 1, // 12: activity.SCNianSignAward.OpRetCode:type_name -> activity.OpResultCode_Nian - 9, // 13: activity.SCNianChange.Award:type_name -> activity.RankAwardData - 1, // 14: activity.SCNianChange.OpRetCode:type_name -> activity.OpResultCode_Nian - 15, // [15:15] is the sub-list for method output_type - 15, // [15:15] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 9, // 3: activity.SCNianData.SignAward:type_name -> activity.RankAwardData + 1, // 4: activity.SCNianBuff.OpRetCode:type_name -> activity.OpResultCode_Nian + 8, // 5: activity.NianRankData.Data:type_name -> activity.NianRankInfo + 9, // 6: activity.NianRankInfo.Award:type_name -> activity.RankAwardData + 9, // 7: activity.SCNianAttackData.Award:type_name -> activity.RankAwardData + 9, // 8: activity.SCNianAttackData.DieAward:type_name -> activity.RankAwardData + 9, // 9: activity.SCNianAttackData.ExtraDrop:type_name -> activity.RankAwardData + 9, // 10: activity.SCNianAttackData.FloorReward:type_name -> activity.RankAwardData + 9, // 11: activity.SCNianSignAward.SignAward:type_name -> activity.RankAwardData + 9, // 12: activity.SCNianSignAward.OtherSignAward:type_name -> activity.RankAwardData + 1, // 13: activity.SCNianSignAward.OpRetCode:type_name -> activity.OpResultCode_Nian + 9, // 14: activity.SCNianChange.Award:type_name -> activity.RankAwardData + 1, // 15: activity.SCNianChange.OpRetCode:type_name -> activity.OpResultCode_Nian + 16, // [16:16] is the sub-list for method output_type + 16, // [16:16] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_protocol_activity_nian_proto_init() } diff --git a/protocol/activity/nian.proto b/protocol/activity/nian.proto index 6de8149..ee3a6d0 100644 --- a/protocol/activity/nian.proto +++ b/protocol/activity/nian.proto @@ -51,6 +51,7 @@ message SCNianData{ int32 OtherSignMaxCount = 20;//额外奖励领取次数上限 int64 AttackMaxHp =21; //单次攻击最大血量 int64 AttackSumHp = 22; //攻击总伤害 + repeated RankAwardData SignAward = 23;//签到奖励 } message ShopData{ diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go index 8bc3b60..cb1c7b6 100644 --- a/worldsrv/action_nian.go +++ b/worldsrv/action_nian.go @@ -162,6 +162,14 @@ func CSNianData(s *netlib.Session, packetid int, data interface{}, sid int64) er break } } + //签到奖励 + for _, info := range pool.List[0].SignReward { + pack.SignAward = append(pack.SignAward, &activity.RankAwardData{ + ItemId: info.ItemId, + ItemNum: info.ItemNum, + }) + } + pack.OtherSignMaxCount = int32(count) StartTs := common.IntToTime(int(pool.List[0].BuffStartTime)).Unix() EndTs := common.IntToTime(int(pool.List[0].BuffEndTime)).Unix() From f23351de24a8c6c18bdb96d8f9a5b9fe784ce554 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 14 Jan 2025 09:25:19 +0800 Subject: [PATCH 66/74] upgrade go1.23 --- go.mod | 20 +++++++++++--------- go.sum | 34 ++++++++++++++++------------------ worldsrv/action_pushcoin.go | 21 ++++++++++++--------- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/go.mod b/go.mod index 4c38e80..66a4c4b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module mongo.games.com/game -go 1.22.5 +go 1.23.0 + +toolchain go1.23.3 replace mongo.games.com/goserver => ../goserver @@ -31,8 +33,8 @@ require ( github.com/zeromicro/go-zero v1.7.3 go.etcd.io/etcd/client/v3 v3.5.16 go.mongodb.org/mongo-driver v1.17.1 - golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c - google.golang.org/protobuf v1.35.1 + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 + google.golang.org/protobuf v1.36.2 gorm.io/gorm v1.25.12 mongo.games.com/goserver v0.0.0-00010101000000-000000000000 ) @@ -45,7 +47,7 @@ require ( github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davidminor/uint128 v0.0.0-20141227063632-5745f1bf8041 // indirect github.com/dlclark/regexp2 v1.10.0 // indirect - github.com/fatih/color v1.17.0 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-sql-driver/mysql v1.8.1 // indirect github.com/gocarina/gocsv v0.0.0-20221105105431-c8ef78125b99 // indirect @@ -58,12 +60,12 @@ require ( github.com/innopals/sls-logrus-hook v0.0.0-20190808032145-2fe1d6f7ce00 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/klauspost/compress v1.17.9 // indirect - github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/klauspost/reedsolomon v1.12.4 // indirect github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible // indirect github.com/lestrrat-go/strftime v1.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/montanaflynn/stats v0.7.1 // indirect @@ -103,11 +105,11 @@ require ( go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.9.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.32.0 // indirect golang.org/x/image v0.18.0 // indirect - golang.org/x/net v0.33.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.7.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect diff --git a/go.sum b/go.sum index ff0a805..365e6ba 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= @@ -179,8 +179,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= -github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= -github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/klauspost/reedsolomon v1.12.4 h1:5aDr3ZGoJbgu/8+j45KtUJxzYm8k08JGtB9Wx1VQ4OA= github.com/klauspost/reedsolomon v1.12.4/go.mod h1:d3CzOMOt0JXGIFZm1StgkyF14EYr3xneR2rNWo7NcMU= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -204,10 +204,9 @@ github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= @@ -439,11 +438,11 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/image v0.0.0-20200922025426-e59bae62ef32/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= @@ -475,8 +474,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -513,11 +512,10 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -572,8 +570,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= +google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index df93439..f6a9284 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -169,7 +169,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i p.AddCoin(-item.GetNum(), common.GainWayPushCoinCost, base.SyncFlag_ToClient, "system", "推币机下注") // 增加桌面道具 - AddValue(p, map[int32]int64{common.ItemIDCoin: item.GetNum()}) + PushCoinAddValue(p, map[int32]int64{common.ItemIDCoin: item.GetNum()}) case activity.OpCodes_OP_Gain: @@ -207,9 +207,9 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i for _, v := range msg.GetOpItem() { // 增加能量条 - AddPower(p, PushCoinItemValue[v.GetItemId()]*int64(v.GetItemNum())) + PushCoinAddPower(p, PushCoinItemValue[v.GetItemId()]*int64(v.GetItemNum())) // 减少桌面道具 - AddValue(p, map[int32]int64{v.GetItemId(): -int64(v.GetItemNum())}) + PushCoinAddValue(p, map[int32]int64{v.GetItemId(): -int64(v.GetItemNum())}) } case activity.OpCodes_OP_Shake: @@ -333,7 +333,8 @@ func UpdatePlayerPushCoin(p *Player) { } } -func AddPower(p *Player, value int64) { +// PushCoinAddPower 增加能量条 +func PushCoinAddPower(p *Player, value int64) { if value < 0 { return } @@ -349,10 +350,11 @@ func AddPower(p *Player, value int64) { return } // 抽奖 - Draw(p) + PushCoinDraw(p) } -func Draw(p *Player) { +// PushCoinDraw 抽奖 +func PushCoinDraw(p *Player) { if p.WelfData.PushCoin.Power < PowerMax { return } @@ -404,18 +406,19 @@ func Draw(p *Player) { for k, v := range d.GetGain() { pack.ItemId = int32(k) pack.ItemNum = int32(v) - AddValue(p, map[int32]int64{pack.ItemId: int64(pack.ItemNum)}) + PushCoinAddValue(p, map[int32]int64{pack.ItemId: int64(pack.ItemNum)}) } if pack.Coin > 0 || pack.ItemId > 0 { p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyDrawInfo), pack) // 增加能量条 - AddPower(p, 0) + PushCoinAddPower(p, 0) } } } } -func AddValue(p *Player, item map[int32]int64) { +// PushCoinAddValue 增加桌面道具 +func PushCoinAddValue(p *Player, item map[int32]int64) { if item == nil { return } From e7cce8205a3512fc37b40f6c0e2ae2072af1326e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 14 Jan 2025 10:13:25 +0800 Subject: [PATCH 67/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E6=95=B0=E6=8D=AE=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_pushcoin.go | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index f6a9284..1e594d8 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -177,20 +177,21 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i // 有效区 for _, v := range msg.GetOpItem() { id := v.GetItemId() - val := int64(v.GetItemNum()) - switch v.GetItemId() { - case common.ItemIDBigCoin, common.ItemIDCoin1, common.ItemIDCoin2, common.ItemIDCoin3: - val *= srvdata.GameItemMgr.Get(p.Platform, id).GetNum() - id = common.ItemIDCoin - } + val := v.GetItemNum() if p.WelfData.PushCoin.Items[id] < val { logger.Logger.Errorf("获得道具太多: %d, %d", p.WelfData.PushCoin.Items[id], val) // 刷新桌面余额 - UpdatePlayerPushCoin(p) + //UpdatePlayerPushCoin(p) goto here } + switch v.GetItemId() { + case common.ItemIDBigCoin, common.ItemIDCoin1, common.ItemIDCoin2, common.ItemIDCoin3: + val *= srvdata.GameItemMgr.Get(p.Platform, id).GetNum() + id = common.ItemIDCoin + } + BagMgrSingleton.AddItems(&model.AddItemParam{ Platform: p.Platform, SnId: p.SnId, @@ -220,11 +221,11 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i p.WelfData.PushCoin.Shake -= int32(msg.GetOpParam()) case activity.OpCodes_OP_Refresh: - if p.WelfData.PushCoin.Refresh <= 0 { - InitPlayerPushCoin(p) - } else { - UpdatePlayerPushCoin(p) - } + //if p.WelfData.PushCoin.Refresh <= 0 { + // InitPlayerPushCoin(p) + //} else { + // UpdatePlayerPushCoin(p) + //} case activity.OpCodes_OP_Exchange: d := srvdata.PBDB_PropExchangeMgr.GetData(int32(msg.GetOpParam())) @@ -319,7 +320,7 @@ func InitPlayerPushCoin(p *Player) { Exchange: make(map[int32]int32), Items: map[int32]int64{ common.ItemIDVCard: 1, - common.ItemIDCoin: 50 * 5000, + common.ItemIDCoin1: 50, common.ItemIDPlum: 1, }, } @@ -329,7 +330,7 @@ func UpdatePlayerPushCoin(p *Player) { p.WelfData.PushCoin.Refresh++ // 50个金币 p.WelfData.PushCoin.Items = map[int32]int64{ - common.ItemIDCoin: 50 * 5000, + common.ItemIDCoin1: 50, } } @@ -429,8 +430,6 @@ func PushCoinAddValue(p *Player, item map[int32]int64) { for k, v := range item { if v > 0 { switch k { - case common.ItemIDCoin1, common.ItemIDCoin2, common.ItemIDCoin3, common.ItemIDBigCoin: - p.WelfData.PushCoin.Items[common.ItemIDCoin] += v * srvdata.GameItemMgr.Get(p.Platform, k).GetNum() default: p.WelfData.PushCoin.Items[k] += v } From c5a3238036afa1051aad83510aebd7c2994bfb77 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 14 Jan 2025 10:22:54 +0800 Subject: [PATCH 68/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E6=95=B0=E6=8D=AE=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_pushcoin.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index 1e594d8..f341fc1 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -26,6 +26,7 @@ var PushCoinItemValue = map[int32]int64{ common.ItemIDCoin1: 5000, common.ItemIDCoin2: 10000, common.ItemIDCoin3: 15000, + common.ItemIDDiamond: 100000, } func init() { @@ -169,7 +170,9 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i p.AddCoin(-item.GetNum(), common.GainWayPushCoinCost, base.SyncFlag_ToClient, "system", "推币机下注") // 增加桌面道具 - PushCoinAddValue(p, map[int32]int64{common.ItemIDCoin: item.GetNum()}) + PushCoinAddValue(p, map[int32]int64{ + int32(msg.GetOpParam()): 1, + }) case activity.OpCodes_OP_Gain: @@ -208,9 +211,9 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i for _, v := range msg.GetOpItem() { // 增加能量条 - PushCoinAddPower(p, PushCoinItemValue[v.GetItemId()]*int64(v.GetItemNum())) + PushCoinAddPower(p, PushCoinItemValue[v.GetItemId()]*v.GetItemNum()) // 减少桌面道具 - PushCoinAddValue(p, map[int32]int64{v.GetItemId(): -int64(v.GetItemNum())}) + PushCoinAddValue(p, map[int32]int64{v.GetItemId(): -v.GetItemNum()}) } case activity.OpCodes_OP_Shake: @@ -326,14 +329,6 @@ func InitPlayerPushCoin(p *Player) { } } -func UpdatePlayerPushCoin(p *Player) { - p.WelfData.PushCoin.Refresh++ - // 50个金币 - p.WelfData.PushCoin.Items = map[int32]int64{ - common.ItemIDCoin1: 50, - } -} - // PushCoinAddPower 增加能量条 func PushCoinAddPower(p *Player, value int64) { if value < 0 { From 0edc943ede2e3f04af537c36c510bf002de43597 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 14 Jan 2025 13:40:40 +0800 Subject: [PATCH 69/74] =?UTF-8?q?add=20=E7=BA=A2=E5=8C=85=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/welfare/welfare.pb.go | 292 +++++++++++++++++---------------- protocol/welfare/welfare.proto | 1 + worldsrv/welfmgr.go | 7 + 3 files changed, 159 insertions(+), 141 deletions(-) diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 4600b73..efa3fa8 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -4697,6 +4697,7 @@ type RedPacketInfo struct { StayTs int64 `protobuf:"varint,4,opt,name=StayTs,proto3" json:"StayTs,omitempty"` // 持续时长,单位秒;0代表不限制 RemainCount int64 `protobuf:"varint,5,opt,name=RemainCount,proto3" json:"RemainCount,omitempty"` // 剩余次数;-1代表不限制 IsJoin bool `protobuf:"varint,6,opt,name=IsJoin,proto3" json:"IsJoin,omitempty"` // 是否参与过 + RedType int32 `protobuf:"varint,7,opt,name=RedType,proto3" json:"RedType,omitempty"` // 红包类型 1.金币 2.钻石 } func (x *RedPacketInfo) Reset() { @@ -4773,6 +4774,13 @@ func (x *RedPacketInfo) GetIsJoin() bool { return false } +func (x *RedPacketInfo) GetRedType() int32 { + if x != nil { + return x.RedType + } + return 0 +} + // 抽红包 //PACKET_CSRedPacketDraw type CSRedPacketDraw struct { @@ -5393,7 +5401,7 @@ var file_protocol_welfare_welfare_proto_rawDesc = []byte{ 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa1, 0x01, 0x0a, 0x0d, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xbb, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, @@ -5403,151 +5411,153 @@ var file_protocol_welfare_welfare_proto_rawDesc = []byte{ 0x74, 0x61, 0x79, 0x54, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4a, 0x6f, 0x69, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x22, - 0x21, 0x0a, 0x0f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x72, - 0x61, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x44, 0x72, 0x61, 0x77, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0xf5, 0x02, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, - 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, - 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, - 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, - 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, - 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, - 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, - 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x12, - 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x65, 0x65, - 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x10, 0x2a, 0x86, - 0x0d, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, - 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, - 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, - 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, - 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, - 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x52, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x52, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x53, 0x52, + 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x72, 0x61, 0x77, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, + 0x0f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x72, 0x61, 0x77, + 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, + 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x2a, 0xf5, 0x02, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, + 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, + 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, + 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, + 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, + 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, + 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, + 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0d, 0x12, 0x13, + 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, + 0x6f, 0x73, 0x74, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, + 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x10, 0x2a, 0x86, 0x0d, 0x0a, 0x09, 0x53, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, - 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, - 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, - 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, - 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, - 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, - 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, - 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, - 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, - 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, - 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, - 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, - 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, + 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, + 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, + 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, + 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, + 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, + 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, + 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, + 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, + 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, + 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, + 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, + 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, + 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, + 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, + 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, + 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, + 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, - 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, - 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, - 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, - 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, - 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, - 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, - 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, - 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, - 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, - 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, - 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe2, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, - 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, + 0xa7, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, + 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, + 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, + 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, + 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, + 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, + 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, + 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, + 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, + 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, + 0xe2, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x10, 0xe5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, + 0xe8, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe8, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, - 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xec, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, - 0x70, 0x10, 0xed, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x8c, 0x17, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xee, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, - 0x6f, 0x10, 0xef, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x10, 0xf0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, - 0x10, 0xf1, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf2, 0x16, - 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x64, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf3, 0x16, 0x12, 0x1b, 0x0a, + 0x65, 0x10, 0xec, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0xed, 0x16, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x8c, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, + 0x10, 0xee, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xef, 0x16, 0x12, 0x1e, + 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf0, 0x16, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf1, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x44, 0x72, 0x61, 0x77, 0x10, 0xf4, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf2, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x44, 0x72, 0x61, 0x77, 0x10, 0xf5, 0x16, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, - 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf3, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x72, 0x61, + 0x77, 0x10, 0xf4, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x72, 0x61, 0x77, 0x10, 0xf5, + 0x16, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index 8b1220f..ef3aeb8 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -579,6 +579,7 @@ message RedPacketInfo{ int64 StayTs = 4; // 持续时长,单位秒;0代表不限制 int64 RemainCount = 5; // 剩余次数;-1代表不限制 bool IsJoin = 6; // 是否参与过 + int32 RedType = 7; // 红包类型 1.金币 2.钻石 } // 抽红包 diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 00bb254..f53c62f 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -2312,6 +2312,13 @@ func (this *WelfareMgr) SendRedPacketInfo(p *Player) *welfare.SCRedPacketInfo { EndTs: endTs, StayTs: v.GetStayTs(), } + if v.GetItemId() == common.ItemIDCoin { + info.RedType = 1 + } + if v.GetItemId() == common.ItemIDDiamond { + info.RedType = 2 + } + if p.WelfData != nil && p.WelfData.RedPacket != nil { if p.WelfData.RedPacket[v.GetId()] != nil { info.IsJoin = p.WelfData.RedPacket[v.GetId()].JN > 0 || p.WelfData.RedPacket[v.GetId()].N > 0 From b98c74c983869c1a955b419d2ced61105cb46f36 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 20 Jan 2025 00:03:52 +0800 Subject: [PATCH 70/74] =?UTF-8?q?fix=20=E5=AE=9A=E6=97=B6=E5=99=A8?= =?UTF-8?q?=E5=91=A8=E5=8F=98=E6=9B=B4=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/clock.go | 6 +++--- common/time.go | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/common/clock.go b/common/clock.go index c46dc37..ea5bc03 100644 --- a/common/clock.go +++ b/common/clock.go @@ -122,9 +122,9 @@ func (this *ClockMgr) Update() { this.LastDay = day this.fireDayEvent() - week := GetWeekStartTs(tNow.Unix()) - if week != int64(this.LastWeek) { - this.LastWeek = int(week) + _, week := tNow.ISOWeek() + if week != this.LastWeek { + this.LastWeek = week this.fireWeekEvent() } diff --git a/common/time.go b/common/time.go index c528189..3d39d6e 100644 --- a/common/time.go +++ b/common/time.go @@ -76,8 +76,12 @@ func InSameWeek(tNow, tPre time.Time) bool { if tPre.IsZero() { return true } - - if GetWeekStartTs(tNow.Unix()) == GetWeekStartTs(tPre.Unix()) { + y1, w1 := tNow.ISOWeek() + y2, w2 := tPre.ISOWeek() + if y1 != y2 { + return false + } + if w1 == w2 { return true } return false From 02bbc5a2594435027e0bdb81deb791ea1a73bec0 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 15 Jan 2025 10:12:21 +0800 Subject: [PATCH 71/74] =?UTF-8?q?fix=20=E6=8E=A8=E5=B8=81=E6=9C=BA?= =?UTF-8?q?=E8=B4=A6=E5=8F=98=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_pushcoin.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go index f341fc1..365b8ca 100644 --- a/worldsrv/action_pushcoin.go +++ b/worldsrv/action_pushcoin.go @@ -7,7 +7,6 @@ import ( "mongo.games.com/goserver/core/netlib" "mongo.games.com/game/common" - "mongo.games.com/game/gamesrv/base" "mongo.games.com/game/model" "mongo.games.com/game/protocol/activity" "mongo.games.com/game/srvdata" @@ -136,6 +135,11 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i return nil } + if p.scene != nil { + logger.Logger.Warn("CSPushCoinPlayerOp p.scene != nil") + return nil + } + if p.WelfData == nil { logger.Logger.Warn("CSPushCoinPlayerOp p.WelfData == nil") return nil @@ -168,7 +172,7 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i } pack.BetId = int32(msg.GetOpParam()) - p.AddCoin(-item.GetNum(), common.GainWayPushCoinCost, base.SyncFlag_ToClient, "system", "推币机下注") + p.AddCoin(-item.GetNum(), 0, common.GainWayPushCoinCost, "system", "推币机下注") // 增加桌面道具 PushCoinAddValue(p, map[int32]int64{ int32(msg.GetOpParam()): 1, From 45ee2d2979c90c8738a202e1a96c8b1b72c2184c Mon Sep 17 00:00:00 2001 From: tomas Date: Thu, 16 Jan 2025 10:30:28 +0800 Subject: [PATCH 72/74] add GateofOlympus --- gamerule/gatesofolympus/constants.go | 22 + .../gatesofolympus/action_gatesofolympus.go | 46 + .../playerdata_gatesofolympus.go | 68 + .../scenedata_gatesofolympus.go | 45 + .../scenepolicy_gatesofolympus.go | 585 +++ gamesrv/main.go | 1 + gamesrv/slotspkg/assemble/difgame.go | 1 + .../slotspkg/external/ExportGoConfig-mac.sh | 21 + .../excel/Base/Slots/GatesOfOlympus/Bet.xlsx | Bin 0 -> 14341 bytes .../GatesOfOlympus/Feature/Multiplier.xlsx | Bin 0 -> 11115 bytes .../GatesOfOlympus/Feature/S_ReelChoose.xlsx | Bin 0 -> 9762 bytes .../Slots/GatesOfOlympus/Feature/Scatter.xlsx | Bin 0 -> 12738 bytes .../GatesOfOlympus/Generic/Formation.xlsx | Bin 0 -> 10686 bytes .../GatesOfOlympus/Generic/ReelBaseSpin.xlsx | Bin 0 -> 18331 bytes .../GatesOfOlympus/Generic/ReelBaseSpin1.xlsx | Bin 0 -> 15302 bytes .../GatesOfOlympus/Generic/ReelBaseSpin2.xlsx | Bin 0 -> 15403 bytes .../GatesOfOlympus/Generic/ReelBaseSpin3.xlsx | Bin 0 -> 15299 bytes .../GatesOfOlympus/Generic/ReelBaseSpin7.xlsx | Bin 0 -> 15010 bytes .../GatesOfOlympus/Generic/ReelBaseSpin8.xlsx | Bin 0 -> 15436 bytes .../GatesOfOlympus/Generic/ReelFreeSpin.xlsx | Bin 0 -> 15344 bytes .../GatesOfOlympus/Generic/ReelFreeSpin4.xlsx | Bin 0 -> 15343 bytes .../GatesOfOlympus/Generic/ReelFreeSpin5.xlsx | Bin 0 -> 15321 bytes .../Slots/GatesOfOlympus/Generic/S_Map.xlsx | Bin 0 -> 12378 bytes .../Slots/GatesOfOlympus/Generic/Symbol.xlsx | Bin 0 -> 13406 bytes .../Base/Slots/GatesOfOlympus/Settings.xlsx | Bin 0 -> 10031 bytes .../exported/excel2go/base/cash_mania.go | 744 +-- .../exported/excel2go/base/fortune_dragon.go | 352 +- .../exported/excel2go/base/fortune_mouse.go | 250 +- .../exported/excel2go/base/fortune_ox.go | 276 +- .../exported/excel2go/base/fortune_rabbit.go | 344 +- .../exported/excel2go/base/fortune_tiger.go | 262 +- .../excel2go/base/gates_of_olympus.go | 1339 ++++++ .../internal/exported/excel2go/base/matrix.go | 342 +- .../exported/excel2go/base/opt_group.go | 14 +- .../exported/excel2go/base/prize_model.go | 30 +- .../exported/excel2go/base/simulator.go | 126 +- .../internal/exported/excel2go/base/test.go | 4134 ++++++++--------- .../internal/exported/excel2go/base/var.go | 476 +- .../exported/excel2go/storage/storage.go | 87 + .../exported/excel2go/structs/structs.go | 49 + .../slotspkg/internal/generic/key/theme.go | 48 +- .../slotspkg/internal/module/shared/types.go | 21 + gamesrv/slotspkg/slots/formation/formation.go | 14 + gamesrv/slotspkg/slots/intf/formation.go | 4 + gamesrv/slotspkg/slots/intf/spinner.go | 1 + gamesrv/slotspkg/slots/machine/formation.go | 20 + .../plugin/gatesofolympus/choose_wheel.go | 36 + .../slots/plugin/gatesofolympus/common.go | 30 + .../slots/plugin/gatesofolympus/descx.go | 84 + .../slots/plugin/gatesofolympus/eliminate.go | 239 + .../slots/plugin/gatesofolympus/free_spin.go | 106 + .../slots/plugin/gatesofolympus/init.go | 10 + .../slots/plugin/gatesofolympus/tospecial.go | 77 + gamesrv/slotspkg/slots/plugin/init.go | 8 + protocol/cashmania/cashmania.proto | 10 +- protocol/gatesofolympus/gatesofolympus.proto | 10 +- 56 files changed, 6646 insertions(+), 3686 deletions(-) create mode 100644 gamerule/gatesofolympus/constants.go create mode 100644 gamesrv/gatesofolympus/action_gatesofolympus.go create mode 100644 gamesrv/gatesofolympus/playerdata_gatesofolympus.go create mode 100644 gamesrv/gatesofolympus/scenedata_gatesofolympus.go create mode 100644 gamesrv/gatesofolympus/scenepolicy_gatesofolympus.go create mode 100644 gamesrv/slotspkg/external/ExportGoConfig-mac.sh create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Bet.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Feature/Multiplier.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Feature/S_ReelChoose.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Feature/Scatter.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/Formation.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin1.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin2.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin3.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin7.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin8.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelFreeSpin.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelFreeSpin4.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelFreeSpin5.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/S_Map.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/Symbol.xlsx create mode 100644 gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Settings.xlsx create mode 100644 gamesrv/slotspkg/internal/exported/excel2go/base/gates_of_olympus.go create mode 100644 gamesrv/slotspkg/slots/plugin/gatesofolympus/choose_wheel.go create mode 100644 gamesrv/slotspkg/slots/plugin/gatesofolympus/common.go create mode 100644 gamesrv/slotspkg/slots/plugin/gatesofolympus/descx.go create mode 100644 gamesrv/slotspkg/slots/plugin/gatesofolympus/eliminate.go create mode 100644 gamesrv/slotspkg/slots/plugin/gatesofolympus/free_spin.go create mode 100644 gamesrv/slotspkg/slots/plugin/gatesofolympus/init.go create mode 100644 gamesrv/slotspkg/slots/plugin/gatesofolympus/tospecial.go diff --git a/gamerule/gatesofolympus/constants.go b/gamerule/gatesofolympus/constants.go new file mode 100644 index 0000000..7a61b2e --- /dev/null +++ b/gamerule/gatesofolympus/constants.go @@ -0,0 +1,22 @@ +package gatesofolympus + +// 房间类型 +const ( + RoomMode_Classic int = iota //经典 + RoomMode_Max +) + +// 场景状态 +const ( + GatesOfOlympusStateStart int = iota //默认状态 + GatesOfOlympusStateMax +) + +// 玩家操作 +const ( + GatesOfOlympusPlayerOpStart int = iota + GatesOfOlympusPlayerOpSwitch +) +const NowByte int64 = 10000 + +const GameDataKey = "FortuneData" diff --git a/gamesrv/gatesofolympus/action_gatesofolympus.go b/gamesrv/gatesofolympus/action_gatesofolympus.go new file mode 100644 index 0000000..0422af3 --- /dev/null +++ b/gamesrv/gatesofolympus/action_gatesofolympus.go @@ -0,0 +1,46 @@ +package gatesofolympus + +import ( + "mongo.games.com/game/common" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/protocol/gatesofolympus" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" +) + +type CSGatesOfOlympusOpPacketFactory struct { +} +type CSGatesOfOlympusOpHandler struct { +} + +func (this *CSGatesOfOlympusOpPacketFactory) CreatePacket() interface{} { + pack := &gatesofolympus.CSGatesOfOlympusOp{} + return pack +} + +func (this *CSGatesOfOlympusOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { + if op, ok := data.(*gatesofolympus.CSGatesOfOlympusOp); ok { + p := base.PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warn("CSGatesOfOlympusOpHandler p == nil") + return nil + } + scene := p.GetScene() + if scene == nil { + logger.Logger.Warn("CSGatesOfOlympusOpHandler p.scene == nil") + return nil + } + if !scene.HasPlayer(p) { + return nil + } + if scene.GetScenePolicy() != nil { + scene.GetScenePolicy().OnPlayerOp(scene, p, int(op.GetOpCode()), op.GetParams()) + } + return nil + } + return nil +} +func init() { + common.RegisterHandler(int(gatesofolympus.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP), &CSGatesOfOlympusOpHandler{}) + netlib.RegisterFactory(int(gatesofolympus.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP), &CSGatesOfOlympusOpPacketFactory{}) +} diff --git a/gamesrv/gatesofolympus/playerdata_gatesofolympus.go b/gamesrv/gatesofolympus/playerdata_gatesofolympus.go new file mode 100644 index 0000000..537ac3a --- /dev/null +++ b/gamesrv/gatesofolympus/playerdata_gatesofolympus.go @@ -0,0 +1,68 @@ +package gatesofolympus + +import ( + "mongo.games.com/game/gamerule/gatesofolympus" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/gamesrv/slotspkg/slots" +) + +type GatesOfOlympusPlayerData struct { + *base.Player + base.LabaLog + leaveTime int32 //离开时间 + SlotsSession *base.SlotsSession + + BetSizeIndex int64 `json:"bsi"` //选中的单注下标 + BetLevelIndex int64 `json:"bli"` //选中的等级下标 + BetLineIndex int64 `json:"bii"` //选中的线数下标 + BetMode int64 `json:"bm,optional"` //0.常规 1.%125 2.购买 + + taxCoin int64 + winCoin int64 + currentLogId string + totalBet int64 + + isFree bool //只用于判断是否可以离开 +} +type LinkPositions struct { + Positions []int64 `json:"Positions,omitempty"` +} +type CustomEliminate struct { + LinkPositions []*LinkPositions `json:"LinkPositions,omitempty"` //消除的位置 + AppendSymbols [][]int64 `json:"AppendSymbols,omitempty"` //新增 + FormattedSymbols [][]int64 `json:"FormattedSymbols,omitempty"` //最终的结果 + LinePays []float64 `json:"LinePays,omitempty"` //赔付 + WinCoins []float64 `json:"WinCoins,omitempty"` //输赢 + MultiStr string `json:"multi_str,omitempty"` + MultiStrVal string `json:"multi_str_val,omitempty"` + SymbolsAbove []int64 `json:"symbols_above,omitempty"` + SymbolsBelow []int64 `json:"symbols_below,omitempty"` +} +type SpinLock struct { + CustomEliminates []CustomEliminate `json:"CustomEliminates,omitempty"` + Pay float64 `json:"Pay,omitempty"` + Multi int64 `json:"Multi,omitempty"` + SymbolsAbove []int64 `json:"symbols_above,omitempty"` + SymbolsBelow []int64 `json:"symbols_below,omitempty"` +} + +func (p *GatesOfOlympusPlayerData) init() { + p.SlotsSession = base.NewSession(uint64(p.SnId), p.Coin*gatesofolympus.NowByte) +} +func (p *GatesOfOlympusPlayerData) Clear() { + p.taxCoin = 0 + p.winCoin = 0 + p.currentLogId = "" + p.LabaLog.Clear() +} + +// 需要带到world上进行数据处理 +func (p *GatesOfOlympusPlayerData) PushPlayer() map[string]string { + cache := slots.SlotsMgrSington.PushPlayer(p.SlotsSession) + return cache +} + +// 进房的时候需要带进来 +func (p *GatesOfOlympusPlayerData) PullPlayer(data map[string]string) { + slots.SlotsMgrSington.PullPlayer(p.SlotsSession, data) +} diff --git a/gamesrv/gatesofolympus/scenedata_gatesofolympus.go b/gamesrv/gatesofolympus/scenedata_gatesofolympus.go new file mode 100644 index 0000000..2d75fa1 --- /dev/null +++ b/gamesrv/gatesofolympus/scenedata_gatesofolympus.go @@ -0,0 +1,45 @@ +package gatesofolympus + +import ( + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/gamesrv/slotspkg/assemble" +) + +type GatesOfOlympusSceneData struct { + *base.Scene //场景 + players map[int32]*GatesOfOlympusPlayerData //玩家信息 + BetConfig *assemble.BetConfig +} + +func NewGatesOfOlympusSceneData(s *base.Scene) *GatesOfOlympusSceneData { + sceneEx := &GatesOfOlympusSceneData{ + Scene: s, + players: make(map[int32]*GatesOfOlympusPlayerData), + } + sceneEx.Init() + return sceneEx +} +func (s *GatesOfOlympusSceneData) Init() { + +} + +func (s *GatesOfOlympusSceneData) Clear() { + //应该是水池变一次就判断修改一次 + //s.slotRateWeight = s.slotRateWeightTotal[0] +} +func (s *GatesOfOlympusSceneData) SceneDestroy(force bool) { + //销毁房间 + s.Scene.Destroy(force) +} + +func (s *GatesOfOlympusSceneData) delPlayer(SnId int32) { + if _, exist := s.players[SnId]; exist { + delete(s.players, SnId) + } +} +func (s *GatesOfOlympusSceneData) OnPlayerLeave(p *base.Player, reason int) { + if /*playerEx*/ _, ok := p.ExtraData.(*GatesOfOlympusPlayerData); ok { + + } + s.delPlayer(p.SnId) +} diff --git a/gamesrv/gatesofolympus/scenepolicy_gatesofolympus.go b/gamesrv/gatesofolympus/scenepolicy_gatesofolympus.go new file mode 100644 index 0000000..b878255 --- /dev/null +++ b/gamesrv/gatesofolympus/scenepolicy_gatesofolympus.go @@ -0,0 +1,585 @@ +package gatesofolympus + +import ( + "encoding/json" + "mongo.games.com/game/common" + "mongo.games.com/game/gamerule/gatesofolympus" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/gamesrv/slotspkg/assemble" + "mongo.games.com/game/gamesrv/slotspkg/slots" + "mongo.games.com/game/model" + "mongo.games.com/game/proto" + protocol "mongo.games.com/game/protocol/gatesofolympus" + "mongo.games.com/game/protocol/server" + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/logger" + "time" +) + +// //////////////////////////////////////////////////////////// +var ScenePolicyGatesOfOlympusSington = &ScenePolicyGatesOfOlympus{} + +type ScenePolicyGatesOfOlympus struct { + base.BaseScenePolicy + states [gatesofolympus.GatesOfOlympusStateMax]base.SceneState +} + +// 创建场景扩展数据 +func (this *ScenePolicyGatesOfOlympus) CreateSceneExData(s *base.Scene) interface{} { + sceneEx := NewGatesOfOlympusSceneData(s) + if sceneEx != nil { + if sceneEx.GetInit() { + s.SetExtraData(sceneEx) + } + } + return sceneEx +} + +// 创建玩家扩展数据 +func (this *ScenePolicyGatesOfOlympus) CreatePlayerExData(s *base.Scene, p *base.Player) interface{} { + playerEx := &GatesOfOlympusPlayerData{Player: p} + p.SetExtraData(playerEx) + return playerEx +} + +// 场景开启事件 +func (this *ScenePolicyGatesOfOlympus) OnStart(s *base.Scene) { + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnStart, sceneId=", s.GetSceneId()) + sceneEx := NewGatesOfOlympusSceneData(s) + if sceneEx != nil { + if sceneEx.GetInit() { + s.SetExtraData(sceneEx) + s.ChangeSceneState(gatesofolympus.GatesOfOlympusStateStart) + } + } +} + +// 场景关闭事件 +func (this *ScenePolicyGatesOfOlympus) OnStop(s *base.Scene) { + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnStop , sceneId=", s.GetSceneId()) +} + +// 场景心跳事件 +func (this *ScenePolicyGatesOfOlympus) OnTick(s *base.Scene) { + if s == nil { + return + } + if s.GetSceneState() != nil { + s.GetSceneState().OnTick(s) + } +} + +// 玩家进入事件 +func (this *ScenePolicyGatesOfOlympus) OnPlayerEnter(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.Name) + if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok { + playerEx := &GatesOfOlympusPlayerData{Player: p} + + playerEx.init() + + d := p.GameData[gatesofolympus.GameDataKey] + if d != nil { + m := make(map[string]string) + json.Unmarshal(d.Data.([]byte), &m) + playerEx.PullPlayer(m) + } else { + m := make(map[string]string) + //json.Unmarshal(d.Data.([]byte), &m) + playerEx.PullPlayer(m) + } + + playerEx.SlotsSession.SetCoin(playerEx.Coin * gatesofolympus.NowByte) + + playerEx.Clear() + + sceneEx.players[p.SnId] = playerEx + + p.SetExtraData(playerEx) + GatesOfOlympusSendRoomInfo(s, sceneEx, playerEx) + + s.FirePlayerEvent(p, base.PlayerEventEnter, nil) + } +} + +// 玩家离开事件 +func (this *ScenePolicyGatesOfOlympus) OnPlayerLeave(s *base.Scene, p *base.Player, reason int) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerLeave, sceneId=", s.GetSceneId(), " player=", p.SnId) + if playerEx, ok := p.ExtraData.(*GatesOfOlympusPlayerData); ok { + playerEx.LabaLog.Save(2) // 没有收到结束消息,算2秒游戏时长 + m := playerEx.PushPlayer() + if m != nil && len(m) > 0 { + b, err := json.Marshal(m) + if err != nil { + logger.Logger.Error("OnPlayerLeave, json.Marshal error:", err) + } else { + p.GameData[gatesofolympus.GameDataKey] = &model.PlayerGameData{ + Platform: p.Platform, + SnId: p.SnId, + Id: gatesofolympus.GameDataKey, + Data: b, + } + } + } + } + if sceneEx, ok := s.ExtraData.(*GatesOfOlympusSceneData); ok { + s.FirePlayerEvent(p, base.PlayerEventLeave, nil) + sceneEx.OnPlayerLeave(p, reason) + } +} + +// 玩家掉线 +func (this *ScenePolicyGatesOfOlympus) OnPlayerDropLine(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerDropLine, sceneId=", s.GetSceneId(), " player=", p.SnId) + s.FirePlayerEvent(p, base.PlayerEventDropLine, nil) +} + +// 玩家重连 +func (this *ScenePolicyGatesOfOlympus) OnPlayerRehold(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId) + if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok { + if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok { + GatesOfOlympusSendRoomInfo(s, sceneEx, playerEx) + } + } +} + +// 返回房间 +func (this *ScenePolicyGatesOfOlympus) OnPlayerReturn(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerReturn, GetSceneId()=", s.GetSceneId(), " player=", p.Name) + if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok { + if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok { + //if p.IsMarkFlag(base.PlayerState_Auto) { + // p.UnmarkFlag(base.PlayerState_Auto) + // p.SyncFlag() + //} + //发送房间信息给自己 + GatesOfOlympusSendRoomInfo(s, sceneEx, playerEx) + s.FirePlayerEvent(p, base.PlayerEventReturn, nil) + } + } +} + +func GatesOfOlympusSendRoomInfo(s *base.Scene, sceneEx *GatesOfOlympusSceneData, playerEx *GatesOfOlympusPlayerData) { + pack := GatesOfOlympusCreateRoomInfoPacket(s, sceneEx, playerEx) + logger.Logger.Trace("RoomInfo: ", pack) + playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMINFO), pack) +} +func GatesOfOlympusCreateRoomInfoPacket(s *base.Scene, sceneEx *GatesOfOlympusSceneData, playerEx *GatesOfOlympusPlayerData) interface{} { + //房间信息 + pack := &protocol.SCGatesOfOlympusRoomInfo{ + RoomId: s.SceneId, + GameId: s.GameId, + RoomMode: s.SceneMode, + SceneType: s.GetSceneType(), + Params: common.CopySliceInt64ToInt32(s.Params), + NumOfGames: proto.Int(sceneEx.NumOfGames), + State: proto.Int(s.SceneState.GetState()), + ParamsEx: s.GetDBGameFree().OtherIntParams, + GameFreeId: proto.Int32(s.GetDBGameFree().Id), + //BetLimit: s.GetDBGameFree().BetLimit, + } + + //自己的信息 + if playerEx != nil { + pd := &protocol.GatesOfOlympusPlayerData{ + SnId: proto.Int32(playerEx.SnId), + Name: proto.String(playerEx.Name), + Head: proto.Int32(playerEx.Head), + Sex: proto.Int32(playerEx.Sex), + Coin: proto.Int64(playerEx.Coin), + Pos: proto.Int(playerEx.Pos), + Flag: proto.Int(playerEx.GetFlag()), + City: proto.String(playerEx.City), + HeadOutLine: proto.Int32(playerEx.HeadOutLine), + VIP: proto.Int32(playerEx.VIP), + } + pack.Player = pd + } + + //get data + Response, err := slots.SlotsMgrSington.Enter(playerEx.SlotsSession, int64(s.GameId)) + if err == nil { + data := assemble.DataToCli(Response).(assemble.TableInfo) + pi, _ := json.Marshal(data) + pack.PlayerInfo = string(pi) + if sceneEx.BetConfig == nil { + sceneEx.BetConfig = &data.BetConfig + } + } else { + logger.Logger.Error("slots enter err:", err) + } + proto.SetDefaults(pack) + return pack +} +func (this *ScenePolicyGatesOfOlympus) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool { + if s == nil || p == nil { + return false + } + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerOp, sceneId=", s.GetSceneId(), " player=", p.SnId, " opcode=", opcode, " params=", params) + if s.GetSceneState() != nil { + if s.GetSceneState().OnPlayerOp(s, p, opcode, params) { + p.SetLastOPTimer(time.Now()) + return true + } + return false + } + return true +} + +func (this *ScenePolicyGatesOfOlympus) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " eventcode=", evtcode, " params=", params) + if s.GetSceneState() != nil { + s.GetSceneState().OnPlayerEvent(s, p, evtcode, params) + } +} + +// 当前状态能否换桌 +func (this *ScenePolicyGatesOfOlympus) CanChangeCoinScene(s *base.Scene, p *base.Player) bool { + if s == nil || p == nil { + return false + } + if s.GetSceneState() != nil { + return s.GetSceneState().CanChangeCoinScene(s, p) + } + return false +} + +// 状态基类 +type SceneBaseStateGatesOfOlympus struct { +} + +func (this *SceneBaseStateGatesOfOlympus) GetTimeout(s *base.Scene) int { + if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok { + return int(time.Now().Sub(sceneEx.GetStateStartTime()) / time.Second) + } + return 0 +} + +func (this *SceneBaseStateGatesOfOlympus) CanChangeTo(s base.SceneState) bool { + return true +} + +// 当前状态能否换桌 +func (this *SceneBaseStateGatesOfOlympus) CanChangeCoinScene(s *base.Scene, p *base.Player) bool { + return true +} +func (this *SceneBaseStateGatesOfOlympus) OnEnter(s *base.Scene) { + if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok { + sceneEx.SetStateStartTime(time.Now()) + } +} + +func (this *SceneBaseStateGatesOfOlympus) OnLeave(s *base.Scene) {} +func (this *SceneBaseStateGatesOfOlympus) OnTick(s *base.Scene) { + if time.Now().Sub(s.GameStartTime) > time.Second*3 { + if sceneEx, ok := s.ExtraData.(*GatesOfOlympusSceneData); ok { + for _, p := range sceneEx.players { + if p.IsOnLine() { + p.leaveTime = 0 + continue + } + p.leaveTime++ + if p.leaveTime < 60*2 { + continue + } + //踢出玩家 + sceneEx.PlayerLeave(p.Player, common.PlayerLeaveReason_LongTimeNoOp, true) + } + } + s.GameStartTime = time.Now() + } +} +func (this *SceneBaseStateGatesOfOlympus) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool { + return false +} +func (this *SceneBaseStateGatesOfOlympus) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) { +} + +// //////////////////////////////////////////////////////////// +// 开始状态 +// //////////////////////////////////////////////////////////// +type SceneStateStartGatesOfOlympus struct { + SceneBaseStateGatesOfOlympus +} + +func (this *SceneStateStartGatesOfOlympus) GetState() int { + return gatesofolympus.GatesOfOlympusStateStart +} + +func (this *SceneStateStartGatesOfOlympus) CanChangeTo(s base.SceneState) bool { + return false +} + +// 当前状态能否换桌 +func (this *SceneStateStartGatesOfOlympus) CanChangeCoinScene(s *base.Scene, p *base.Player) bool { + if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok { + if playerEx.isFree { + return false + } + } + return true +} + +func (this *SceneStateStartGatesOfOlympus) GetTimeout(s *base.Scene) int { + return 0 +} + +func (this *SceneStateStartGatesOfOlympus) OnEnter(s *base.Scene) { + this.SceneBaseStateGatesOfOlympus.OnEnter(s) + if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok { + sceneEx.SetGameNowTime(time.Now()) + } +} + +// 状态离开时 +func (this *SceneStateStartGatesOfOlympus) OnLeave(s *base.Scene) { + this.SceneBaseStateGatesOfOlympus.OnLeave(s) + logger.Logger.Tracef("(this *SceneStateStartGatesOfOlympus) OnLeave, sceneid=%v", s.GetSceneId()) +} + +// 玩家操作 +func (this *SceneStateStartGatesOfOlympus) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool { + logger.Logger.Tracef("(this *SceneStateStartGatesOfOlympus) OnPlayerOp, sceneid=%v params=%v", s.GetSceneId(), params) + if this.SceneBaseStateGatesOfOlympus.OnPlayerOp(s, p, opcode, params) { + return true + } + if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok { + if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok { + switch opcode { + case gatesofolympus.GatesOfOlympusPlayerOpStart: + playerEx.Clear() + if len(params) < 4 { + pack := &protocol.SCGatesOfOlympusBilled{ + OpRetCode: proto.Int32(1), + } + proto.SetDefaults(pack) + logger.Logger.Trace("SCGatesOfOlympusBilled", pack.String()) + playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED), pack) + return true + } + playerEx.BetSizeIndex = params[0] + playerEx.BetLevelIndex = params[1] + playerEx.BetLineIndex = params[2] + playerEx.BetMode = params[3] + needCoin := sceneEx.BetConfig.BetSize[params[0]] * float64(sceneEx.BetConfig.BetLevel[params[1]]) * + float64(sceneEx.BetConfig.BetLines[params[2]]) * float64(sceneEx.BetConfig.BaseBet[params[2]]) + if needCoin > float64(playerEx.Coin) && !playerEx.isFree { + pack := &protocol.SCGatesOfOlympusBilled{ + OpRetCode: proto.Int32(1), + } + proto.SetDefaults(pack) + logger.Logger.Trace("SCGatesOfOlympusBilled:", pack.String()) + playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED), pack) + return true + } + + //playerEx.SlotsSession.SetCoin(playerEx.Coin * gatesofolympus.NowByte) + //logger.Logger.Trace("=============init dif coin", playerEx.Coin-playerEx.SlotsSession.Coin()/gatesofolympus.NowByte) + + //get data + Response, err := slots.SlotsMgrSington.Play(playerEx.SlotsSession, &base.SpinReq{ + GameId: int64(sceneEx.GameId), + BetSizeIndex: playerEx.BetSizeIndex, + BetLevelIndex: playerEx.BetLevelIndex, + BetLineIndex: playerEx.BetLineIndex, + BetMode: playerEx.BetMode, + Ts: time.Now().Unix(), + }) + var gameEndStr string + var data assemble.GameEnd + if err == nil { + s.SetGameNowTime(time.Now()) + data = assemble.DataToCli(Response).(assemble.GameEnd) + + data.BetSizeIndex = playerEx.BetSizeIndex + data.BetLevelIndex = playerEx.BetLevelIndex + data.LinesIndex = playerEx.BetLineIndex + //data.BaseBetIndex = 1 + + data.Results[0].BetMode = playerEx.BetMode + if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 { + //logger.Logger.Trace("=====================AddCoin=====TotalBet===", -data.TotalBet) + //第一次触发或者正常模式 + playerEx.AddCoin(int64(-data.TotalBet), common.GainWay_HundredSceneLost, base.SyncFlag_ToClient, "system", s.GetSceneName()) + playerEx.totalBet = int64(data.TotalBet) + } + var taxCoin float64 + if data.RoundReward > 0 { + //税收比例 + taxRate := sceneEx.GetDBGameFree().GetTaxRate() + if taxRate < 0 || taxRate > 10000 { + taxRate = 500 + } + taxCoin = data.RoundReward * float64(taxRate) / 10000 + data.RoundReward = data.RoundReward - taxCoin + playerEx.AddServiceFee(int64(taxCoin)) + playerEx.taxCoin = int64(taxCoin) + playerEx.winCoin = int64(data.RoundReward) + } + pi, _ := json.Marshal(data) + gameEndStr = string(pi) + + if data.Results[0].FreeStatus == 3 || data.Results[0].FreeNumMax == 0 { + //logger.Logger.Trace("=====================AddCoin=====RoundReward===", data.RoundReward) + playerEx.AddCoin(int64(data.RoundReward), common.GainWay_HundredSceneWin, 0, "system", s.GetSceneName()) + //免费游戏结束或者正常模式 + sceneEx.StaticsLaba(&base.StaticLabaParam{ + SnId: playerEx.SnId, + Gain: int64(data.RoundReward - data.TotalBet), + GainTax: int64(taxCoin), + IsAddTimes: true, + }) + } + if data.Results[0].FreeNum > 0 { + playerEx.isFree = true + } else { + playerEx.isFree = false + } + } else { + logger.Logger.Error("slots Play err:", err) + } + + playerEx.SlotsSession.SetCoin(int64(data.FinalCoin) * gatesofolympus.NowByte) + //logger.Logger.Trace("=====================end===== playerEx.Coin===", playerEx.Coin) + //logger.Logger.Trace("=====================end===== data.FinalCoin===", data.FinalCoin) + + pack := &protocol.SCGatesOfOlympusBilled{ + OpRetCode: proto.Int32(0), + GameEndStr: proto.String(gameEndStr), + } + proto.SetDefaults(pack) + logger.Logger.Trace("SCGatesOfOlympusBilled", pack.String()) + playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED), pack) + + if playerEx.Coin != int64(data.FinalCoin) { + logger.Logger.Error("==========playerEx.Coin != Response.Coin==============", playerEx.Coin, data.FinalCoin) + } + + // 记录本次操作 + GatesOfOlympusAndSaveLog(sceneEx, playerEx, data) + case 1000: + playerEx.Save(0) + } + } + } + return true +} + +// 玩家事件 +func (this *SceneStateStartGatesOfOlympus) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) { + logger.Logger.Trace("(this *SceneStateStartGatesOfOlympus) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " evtcode=", evtcode) + this.SceneBaseStateGatesOfOlympus.OnPlayerEvent(s, p, evtcode, params) +} + +func (this *SceneStateStartGatesOfOlympus) OnTick(s *base.Scene) { + this.SceneBaseStateGatesOfOlympus.OnTick(s) +} + +// ////////////////////////////////////////////////////////////////////////////// +func (this *ScenePolicyGatesOfOlympus) RegisteSceneState(state base.SceneState) { + if state == nil { + return + } + stateid := state.GetState() + if stateid < 0 || stateid >= gatesofolympus.GatesOfOlympusStateMax { + return + } + this.states[stateid] = state +} + +func (this *ScenePolicyGatesOfOlympus) GetSceneState(s *base.Scene, stateid int) base.SceneState { + if stateid >= 0 && stateid < gatesofolympus.GatesOfOlympusStateMax { + return this.states[stateid] + } + return nil +} +func GatesOfOlympusAndSaveLog(sceneEx *GatesOfOlympusSceneData, playerEx *GatesOfOlympusPlayerData, data assemble.GameEnd) { + if !playerEx.IsRob { + data.SnId = playerEx.SnId + if data.Results[0].FreeStatus != 1 && data.Results[0].FreeNumMax != 0 { + data.TotalBet = 0 + } + info, err := model.MarshalGameNoteByROLL(data) + if err == nil { + logid, _ := model.AutoIncGameLogId() + playerEx.currentLogId = logid + var totalin, totalout int64 + if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 { + totalin = playerEx.totalBet + } + if data.Results[0].FreeStatus == 3 || data.Results[0].FreeNumMax == 0 { + totalout = int64(data.RoundReward) + playerEx.taxCoin + } + playerEx.Cache(sceneEx.Scene, &base.SaveGameDetailedParam{ + LogId: logid, + Detail: info, + }, &base.SaveGamePlayerListLogParam{ + LogId: logid, + Platform: playerEx.Platform, + Snid: playerEx.SnId, + PlayerName: playerEx.Name, + TotalIn: totalin, + TotalOut: totalout, + TaxCoin: playerEx.taxCoin, + BetAmount: totalin, + WinAmountNoAnyTax: totalout - totalin - playerEx.taxCoin, + IsFirstGame: sceneEx.IsPlayerFirst(playerEx.Player), + IsFree: playerEx.isFree, + }) + } + } + + //统计输下注金币数 + if !sceneEx.Testing && !playerEx.IsRob { + playerBet := &server.PlayerData{ + SnId: proto.Int32(playerEx.SnId), + Bet: proto.Int64(playerEx.CurrentBet), + Gain: proto.Int64(int64(data.RoundReward) + playerEx.taxCoin), + Tax: proto.Int64(playerEx.taxCoin), + Coin: proto.Int64(playerEx.GetCoin()), + GameCoinTs: proto.Int64(playerEx.GameCoinTs), + } + gwPlayerBet := &server.GWPlayerData{ + SceneId: sceneEx.SceneId, + GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), + } + gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) + sceneEx.SyncPlayerDatas(&base.PlayerDataParam{ + HasRobotGaming: false, + Data: gwPlayerBet, + }) + } + + playerEx.taxCoin = 0 + playerEx.winCoin = 0 + + if sceneEx.CheckNeedDestroy() && data.Results[0].FreeNum <= 0 { + sceneEx.SceneDestroy(true) + } +} +func init() { + //主状态 + ScenePolicyGatesOfOlympusSington.RegisteSceneState(&SceneStateStartGatesOfOlympus{}) + core.RegisteHook(core.HOOK_BEFORE_START, func() error { + base.RegisteScenePolicy(common.GameId_GatesOfOlympus, gatesofolympus.RoomMode_Classic, ScenePolicyGatesOfOlympusSington) + return nil + }) +} diff --git a/gamesrv/main.go b/gamesrv/main.go index 5a06e0d..f1764d5 100644 --- a/gamesrv/main.go +++ b/gamesrv/main.go @@ -36,6 +36,7 @@ import ( _ "mongo.games.com/game/gamesrv/fortunerabbit" _ "mongo.games.com/game/gamesrv/fortunetiger" _ "mongo.games.com/game/gamesrv/fruits" + _ "mongo.games.com/game/gamesrv/gatesofolympus" _ "mongo.games.com/game/gamesrv/iceage" _ "mongo.games.com/game/gamesrv/richblessed" _ "mongo.games.com/game/gamesrv/slotspkg/slots" diff --git a/gamesrv/slotspkg/assemble/difgame.go b/gamesrv/slotspkg/assemble/difgame.go index 721eec1..9736274 100644 --- a/gamesrv/slotspkg/assemble/difgame.go +++ b/gamesrv/slotspkg/assemble/difgame.go @@ -12,6 +12,7 @@ type CustomFortune struct { FreeNumMax int64 `json:"fnm"` //总次数 FreeNumTrigger int64 `json:"fnt"` //新增freespin ForceRound int64 `json:"fr"` //第n次 + ScatterWin int64 `json:"sw,omitempty"` } func getDataByTheme(NodeTree *shared.LiteNodeTree) (map[int64]*shared.SpinLock, CustomFortune, int64) { diff --git a/gamesrv/slotspkg/external/ExportGoConfig-mac.sh b/gamesrv/slotspkg/external/ExportGoConfig-mac.sh new file mode 100644 index 0000000..9b911a2 --- /dev/null +++ b/gamesrv/slotspkg/external/ExportGoConfig-mac.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# 检查 "external" 目录是否存在,如果存在,则进入目录 +if [ -d "external" ]; then + cd external +fi + +# 检查 converter 文件是否存在 +if [ ! -f "converter" ]; then + echo "Building converter..." + go build -o converter ../tools/converter +else + echo "converter already exists." +fi + +# 执行 converter 文件 +./converter go /excel ../internal/exported/excel2go .. + +echo "Done." +read -p "Press [Enter] to exit..." +exit 0 \ No newline at end of file diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Bet.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Bet.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d7734ae818213edd165f03de38192ac9b2ffcd39 GIT binary patch literal 14341 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 V1^T|t0ziHH!+&#Vm}Gi?`+t_qY&8G? literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Feature/Multiplier.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Feature/Multiplier.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..31bd28bd81e330e7a59591830579f257b3d9912f GIT binary patch literal 11115 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 C<8xF1 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Feature/Scatter.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Feature/Scatter.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b67124fa52db9dcc42d24a3981cc8fbdf4781957 GIT binary patch literal 12738 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 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/Formation.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/Formation.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a4f53ef52607c9ffca391baaf60d672667b60bcd GIT binary patch literal 10686 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 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..35ec79ae8ffa6a2982e144661d840b89c226934b GIT binary patch literal 18331 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 HTj_rRthZ`< literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin1.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c54dbc2919a2323f7d32c48d3228f9cbe7be8ec1 GIT binary patch literal 15302 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 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin3.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin3.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..59930bde0b391333f528fdeced04c8fa9edce319 GIT binary patch literal 15299 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 bZS;5dt0)5j4ApN7c?5tQFxvGwze)cEoXM`P literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin7.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin7.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fb8757177fd0faab4f87ad3bda838998c69ef5ab GIT binary patch literal 15010 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 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin8.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelBaseSpin8.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..db126a2e427c0e3115b97993d194c4f76e097471 GIT binary patch literal 15436 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 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelFreeSpin.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelFreeSpin.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ccb274e7a7696370de6231f733f7845a4b22095f GIT binary patch literal 15344 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

TB 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∋7ntPTIkJ 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 D@57KD literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelFreeSpin5.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/ReelFreeSpin5.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f20b84a06cbcf349df37f9ecf7d502c9c309678e GIT binary patch literal 15321 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 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/S_Map.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/S_Map.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..49abd74cf4cc942f322910187473ee138df2d7e4 GIT binary patch literal 12378 zcmeHtWmH`0(skqRjk|?F=_EG+OzDF~w_3#L6~1ouMQPeH8EZreRm&v%2d z5)Av2eJQO>kvmonz^=RYu*3qjlg52L)XAn*W)}^GpX?F=L^>BWhI3xH&%LVc=&2IE zhiP=_^Ao?yVwfhXu#M9S?eQv?;5cpWDLPEi#j%B(*ABg+LNz&l_ce!kR5&Yht6fU> zse#TH?Bpaj3DTiS1WaU5ptXDUz*5A5W2@&?asSZtgaDh&X@KmNXzW9}vwjZJ;FySu zB>$`K>C>yq1oI1f*k}-%*SC#$$xA*hsz9IDLD+kn0Fg#dmkDn&gzbbxrtUR^IcY7m z91ELD#*jIVTKs`kwGPCvJ-EAT47^nHPyDuooBWjWoh*(-nF z(t?1Mee$ElYu$4D=E*w>{o*&9g`xr>z@l3NnSg2LshF3eql|c7Q z4x@}#KV^$Fe1%APjI)1S22sEbCSUlfJN1@tg#K&p)9W^MvNOC-0=PG_){M#v4 zzGmJ#nw}c}kGl~cZ>h{+$mn$Mb9RpGCRJ6XX~QyL-hRE_=Y?zND3o%;30O*(_SV;%NkYq3q-YHK8r9W!#i@l)>93Rv3G(We?xj(klA zI&dbmwph?ENbpA0I^xvXGjL2AC{)&pz=<@%a`RW3G-=(qk{vTC>Bsrd5mu=j=U)P; z3S@#86^7xw$9oP)4~Ye!j4=G?!UuL0gWuH`Ag3ZSU+Wq`HGEDKJ|$no8#ofL5s2%t zkg1~G0ZsD>)?kAXbi5H5j}XHTjHLT0Dy2bCuty=*_b@yN%lg$iisX8`M1^I-N#a%v z&!iO#Gm4&1a!SGwd}k6;JWHVbW~*OMqWLyx`)a6-Z|K^PAlHAvl!^UG&ISLhbZ(?d zRms!Hd>liD_*L*bqZGXmp<&*L#W&L|TsS~mYXqiJJUJ9GawS;Y(}1gV`E?QU8u`-UBp;ZktMGu%sd{^;<3Ox?Wgg;ddUW@J%&~t1ij|jS;&wP3ybDi2!rcR`hDh7_-S`g?#aSo>?1PtO7oUgPY)mem!}AE)9u7(Y-Y9O(X6;=lV@Z zbAl6BJG}~5a(UH^CCLsq_!HTa*@F+lv`60<-#lALxj%el_Y0hLRb=6eC1>Hx^2=tj z#9sg_;FlL)scuZ#lf*DLlaFl|1mI0~wNqCFpq0S!y&5SR>G*t)(|V2mPq8dWuVoko z63a|r0RSQZA{2y}zlXCw)AL`U4GNNjLazP4eRL%E*!Hoah98Bz51D-FlK5hoz{7_= z#IX4g>UsW$yhu_;4?VE|lbRPni3Z}#@UmBrA~f@h%btr7N@wZ<5G6Z0NQ%8Fa(8qw;}?w(SIrnas})a+Q?_n($h{Ls|~-B z<$UISebTpXy+6(c$fn5ipmpdtLLSJn7IjN|gRZMz8uNK+qkNftR%cZMXw(0l^DWz$ zg*;1WuW&D`2NPUH^qigbJ)EhSOWaAj^oy!un-fGuxAsL(Y7_TY5i#mhIn>G6Oi{BA zc8n`eM{koAS}5pVE5$y#IN@v`Wio)8twIZ8ByVN-`InI7ks|l#zoa@+@AAh*Wk5h80iem_bFxA1XfNoJe z(ZGh}*A(Fm#f}Umi;i7yIB8yJN`e_~kB*dL51P_NifndYS?pxoZhN{r!9`d<5INT0 zsN+-J1ep@-U9R|N4DL2HP{nXea#72zC@)4mmt+tw-zkvK+??bZzEYQ|93q8N?*FW1 zu0DCI@m(R|={GckAQI_kOj0ZaZJI4Rbm51fan$8%*K2Zv6u#(K-6%tL_e$qU5ajo6 zVN#p2jG#XA5-Ij9*o$%1?ID_D6;|v!pMJgFC)0DXI16e3CR;S7OukaL_6F(T2HMP9 zutHJoOLAym^gyY~pvH}^s=S$218r&@qbC~;G{lRBm8*Ra0jM7l8J-`cc^p*}H&ze*J z?*7c94-fKJ5LQ0^{zN#(dXRfrF<~c+kZz$gfxGW^`;!pzx-b_VuxH-Z=l~zV44d3e z=o}KVm`#F8-!vl(@RSf-FX;DWox?k{?ZTCL&}k(*;bU~le2;CjFWR%SzP{1rP7d&; z@(dx&R*3BDy_rsEqSNkcf`q%vj5iKKSCu<3DHx`|nzz5cfkX zQf|mGF9{ZhEr~(nWy{u|->YkgeEMB1R{cu81*`9NA66jap!|Q zrW$C+5|gp5!%EHDnRh>tD-~cQ^L|>40!@p{Vyy1;t>3p_kI%)}0R+Xw_v9A5R&b;F zCIi1RvynEms1ldA4l1=#{!iWiby`C)dhaq`=Z^c`sPwN(^>2SFNb91#5Hf#n0$0n z&YXN~sT*{5rc^S*4)gB|UVG0BYso7|ABWjh^juOjXVvw0Bx>Ksv(+l6otbI+5xu(J zIhF4nH;9&v|Mu~Xg0|NH=9DM`992ZPGpC*x>^r%(to(&X$tUPoL-6ZcSI+~Y)&~ec zCEnF{1u9(@TbYUDJKl$x^Dp6B9RL6a@j`cIM`3=6d@9X@W1nWD1%l!iL`aTx_B z7g1_w5tK z^>a@u#B{aXqqE@k)2NElvkC@#VtxaC@K``6j2aXUKex%RXs{kcQMSF-jOefm~GT5K|))Z$&H zY5k@%$*22VsA{vS-33_h!@uNE-~lhSyX?%jr8DqmS2>#(J2Mdr1SBioB|Z@3C0nZq zI_a8S>#nt7%txcR)?9tPQW)fPxug0wYu?&+>OTZC5#U=*ZQWG&nsZp1(Dgxe=6`Qa zNnXyEzy58>Xw(x%wKMOtdr+ zthD{~as`XX?|J|DXuy5KBXBE5LsR+G@EW1OfA}L0t-*xLe))U=bgPXZxLPN1Wz`Ut z4fpd2R+cEPnUpM)e>eC7)wXc zH;KMBFPQ#Fm(fpT_|sYchnVxU7k@R^Sv-|P@-$DFD*3l!;D1+OxrW_D-~Inng!6Zb ztT;ge%is##L4at-;9Tq?vu2j9oq8q9bVKDbN6$7v7&%$IQN~5rWla*NDj6Q`JPG{D zHu~YnnSU|veBkL+MwF$j91?+volPq4%ZGE`8_7tFr5Sx47~JKM;>-Ft@*=%G%}zK( zSfl~12DCg7;b}hH*h^CZ)|M&lV()IHX7f(B?me*V9~2?t$CUF#>*J0AvNoGm_Jl&M zi=G5t-)g>ikeOa5%KGZqcqrZb4IK-m)O_wzS+3z}PU--Er*g}Yfu^(A3-sRt3)^#% z04!PgwTfm1nfTH0ES6>w6P$tmNcYyqa#o!l5_@yTRbqw!Bf0sp$dn&>=yJC4NsE4K zs)y8L(JOB8%zkFlcN=qWA(<%mfyeh{EFiVt29ez{$H&TCd+thFO_9Slyw(hm+_Wot z!|&*n%4F};0F9i7$pHhipb4@~VF)yqlmu@EnqZ(R?%Qp+kM~L#F=mo=IH!Jon<5wA z2N>`-K?tHF$(C~Nk8YS7#a2KQR~xE+kf0SqYI`U4$ zJeZyMI{_3IV41q}n&_dR%2&$+iox2l3Dk}92kh(2_%s&JnhkyFl_{8f=qL0rq=Enk zrD+eDunsrW{F`#^g;M?APepYl+pJqxP+xKMIq}Yn=_#p(Ge^WHTfNV9DIlXr3=_=P zSwbO;ewK3pC&Q2>_2wk{EEq1Kr!quIq&4zVLtHgjR5$Wii)r4S#Sdfme zBhxj(6fTacN($O27@Yk1#kcbpO#PfF%He9tzMlN=D8-q&9Yho8yQnev#sMG+ubJw_)3e$u@#VB;s>Lh0+MN{I zL484t4xZ|2w>&kG4$1vX!k`)w?S;d}@F-MPHPq z43jH+Kc%?~IR`%$@a+_@iVsnTQq6fM0rJ*Dd^Xmw@`V0*FpDedZT{4ab!=>_oVE3y z2aTdL-Xbo8LH32eLa4ci0?xm zPr&{6nSy)e)krk*>0}xASNi$4f?@9nyIL;dBfU5xU4l!ggK#DeRD@s$=eq?^M*Ui- z*V~Ts0PrVJaocgEdY^FEv}QO?4`@6Bt+MK=nLE&1D!1zd1+%Sc16+t;c-45H5UR*@ZE%PSmitPUZp?BJAv0gA=RE_GntbyZexsNr zSr)2jjqIXxg&L|X(8=c;5zBj8=_AUlPh*cVDmV~_4)-Egp)iXbR8uH!#`L{Ry`Q(VljGY* zMVb(c7E5(32KTJyk-E|;clACWqWm{b$+J~N(oh2lT zB)T4V(QPUCdf%$+*Ro)`c?@vV9lCD>`N|OrXrV|ezTx9*cvK4iJB>$sz2$Vcz=2p{Y)xn-g+my zjshc6gUiqU{k>W#*u9{3*F_87dY*@^H)E8`bk_a;_c%hRrX%Gkd(T@-7ThOinRwz$Flh4TJ4y&XL&sTR~xO07ZMiIR!1*C z=q3%}IvS^s0U0II-siqw3>K)w+v`OMQ?JJR2`lBxbDFrhkV`~0@}nJeN659z*Z{%NPnRT8B{jEJQhFN- z4Q{C>HkH|8b+T72q-uvd0*SGi#@Lkl^A%EH5crv$bJD_`vG<^F$2Bf*R4aw75-c@1 zNHr%lrj?40s)zJ6HKb;0%W@s3xrd_m+CWtylINO{c4dclK-iH6TlPUthZBA@yK%$V zwjzfUQDg7?_dQM)F~>gZ4j_>sgE3tL3e9b~dbCk;yo&&2zwZP?W`O2qw<2>Fqgz;J z$JGg~rN`6;6G@B*h_e5^YKTb=ZF>f(wIz`N0La$dZ<_Ds?rm@3_FEqGL31p2k^48b z7r^YWqaRMRBTfwFHH3mv&Fyv!(zl7Mi#&doyHlA()ol2kMrey{bE=qrYH&zdqzP}{ zf#@htSa~y^<8;iAqcF*;61Wqa9&VSizWQ-6qEtLh|3LL_&*6}X)s|6%7FV|xNUjr- zVW!ytqF@+ka$yB7I6ng(7y=#exXWYhImm!?i*VX0K6bEKYUYmB80b!ZG{ zV)MXHfD-whZ!uF{rArP_eSM{jHsE{#22pI|MA|UC1qzfIv9J7*`HAOr!U0~7*V9JJ zr9xb2tYFYM72VzynW7x}yr=kj{FxW?sk+K=f2}8{Z`XO3kCdrRZYla!@+e5?eLh zbc#2y4;t5;C|Ro7k>{+Oue)*Wyx9_38k#@Twh|hPe(xk6cw9d_nG=W#nvrc?1~sX{ zQOvf{KiqB%20YxsR5b=kH3&JIwDP;$)IcLY!yVGG(?mdTyloe`6TBL5JpRL zu{2t6?vXW!vwsqXQJ@r@8(>O$-o9$cPKo{(1xlnLJIf)$f~GIV{Ubn%ajTjX4; zzko2U4N@Ng|6rW8iK~UVn!Brwqty@Mna9^E_OTL#deVS{aq7pTY7Gn<-A)GvT9lA{ z3F~O>jn_|~#!>iSx=)2$XL87#l3xeqWJAW^Jvkq`!xYEbf6IFWEuJi0 zT;=q-A%iFq#SE~b>Iat&$^*v*W4eR+l90?zLAZi2bmO_ zP+v4+#<3I-qeNdzYx<-WY`YRFscZ_)CeFr$laTi0dAs-~A@xa`nK%%`e9>CX7oCbl zN-B7N8E&%wfeh#=>%2qZNL=26q14_N{+g!~Mv%%p7}txrb-M*-z>*@LLp2J@2JEm5 zQ`oH>0)0SQgw$_jh@sgkg5tCFv6LZz)1=64$*u`V=i*GR&qc7K=m7WqLAwH<@ZmmFc5>Ua7y6Q-U?TFZt3mRZ*NHN-3L6z? z%rMOp8`S*+a(8Z&9N)G5$9obp*~mr?r_q@nruScq${ zKvx3sI2}kl#Qd|znK(QD*Wn3hB}PaJY*45o8U}Afgx+0w##tS*nU- zUYobc0>h;FQ*RiI>PjGvlf*k=ctxsI`%>OBZjQ&DSso7VMWfIBHr)so3ep1w$u!1= zOvyTyo9rUsYw5(mUZA)h455w$#qHf5KKJF9pl5KDk$6wc3&q_zO}I&#WU^|NP-dmMt(}l}Pg6P%PHbH8;$Pp5;<1*65sN!IS09Nofk*DWGFh`TC@-0r5r1Nkarw!qOVEv!m8Fw>XUmz3v?19 z54*rJI2Q?vyOiE_Bw88F9oV_eS*?aVr@wpm=jA}{a`>-< z|I57rfWm}N@_nqpLCAoX#IVp<+=3&i!{Af}1sO1_T~2noa)RcaY_Y`M%Gd;-px5Na z#_d(dCtnu5&N5-%p~)B0+kv43u&OB2?mlTD#R_oS6g5>}6qbpZ+?#|@0)Oj zkQmT8tYR&EH9lIZ5gm$puil9Evf|}bhRWyhv<>w1ri0K;>F08`ubvJdVJCS=_pA{k z2z$Q{xdqj+t(#jlXKt)|yxvFgN7dbGdxGF3$jle#g1XDkMA;MC!zpKl`H8J4I#r`h zw=2Y$mrD(ENB8>k5!sPYQ+lYG+ANPApU+tj)6H6cTWv0HQT)Wj3M&lp$ictH%6>Ke>#)mD zQvl#4@(<(xF#7T<&aaaWKaqw||GkL6%{}~z@@o(DC(0S-Kcf8Ti2jQ5YftDW3Iind z{D&EgA047!QGVSv|B0di=|uel%8yO-Ur~PDUHpk+PxJ%j*S*GH0e&r2e*zd&`~dh_ zxc+MTYtH@Cbc*_S(_b_2UlIPAjsCO;0B&difWPIYzncFwwfM8SJ>8$o|41}`wf?Jg h|JhoO;ZN3P{}ys(c{qr}0|4ldR}zFXwT!=g`+se9@}vL& literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/Symbol.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Generic/Symbol.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f12c84e58d95894593f397a8a16858689f304c81 GIT binary patch literal 13406 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 G)BgdLCc*vy literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Settings.xlsx b/gamesrv/slotspkg/external/excel/Base/Slots/GatesOfOlympus/Settings.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a31818e0b6900d02754ce7efb4dddc6886523e22 GIT binary patch literal 10031 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 SB^>}ruOI1GZ{LXCe*GW0l29T5 literal 0 HcmV?d00001 diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/cash_mania.go b/gamesrv/slotspkg/internal/exported/excel2go/base/cash_mania.go index 868f814..ff48968 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/cash_mania.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/cash_mania.go @@ -9,131 +9,131 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { CashManiaBetBetChangeList = map[int64]*structs.CashManiaBetBetChangeList{ 0: { - Index: 0, + Index: 0, BetChangeList: 0.3, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { - Index: 1, + Index: 1, BetChangeList: 0.6, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { - Index: 2, + Index: 2, BetChangeList: 0.9, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { - Index: 3, + Index: 3, BetChangeList: 1, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { - Index: 4, + Index: 4, BetChangeList: 1.5, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { - Index: 5, + Index: 5, BetChangeList: 3, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { - Index: 6, + Index: 6, BetChangeList: 5, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { - Index: 7, + Index: 7, BetChangeList: 9, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { - Index: 8, + Index: 8, BetChangeList: 10, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { - Index: 9, + Index: 9, BetChangeList: 15, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { - Index: 10, + Index: 10, BetChangeList: 30, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { - Index: 11, + Index: 11, BetChangeList: 45, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { - Index: 12, + Index: 12, BetChangeList: 90, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 9, }, } CashManiaBetBetLevel = map[int64]*structs.CashManiaBetBetLevel{ 0: { - Index: 0, + Index: 0, BetLevel: 1, }, 1: { - Index: 1, + Index: 1, BetLevel: 2, }, 2: { - Index: 2, + Index: 2, BetLevel: 3, }, 3: { - Index: 3, + Index: 3, BetLevel: 4, }, 4: { - Index: 4, + Index: 4, BetLevel: 5, }, 5: { - Index: 5, + Index: 5, BetLevel: 6, }, 6: { - Index: 6, + Index: 6, BetLevel: 7, }, 7: { - Index: 7, + Index: 7, BetLevel: 8, }, 8: { - Index: 8, + Index: 8, BetLevel: 9, }, 9: { - Index: 9, + Index: 9, BetLevel: 10, }, } CashManiaBetBetLine = map[int64]*structs.CashManiaBetBetLine{ 0: { - Index: 0, + Index: 0, BetLine: 1, BaseBet: 10, }, @@ -141,55 +141,55 @@ func init() { CashManiaBetBetSize = map[int64]*structs.CashManiaBetBetSize{ 0: { - Index: 0, + Index: 0, BetSize: 300, }, 1: { - Index: 1, + Index: 1, BetSize: 1000, }, 2: { - Index: 2, + Index: 2, BetSize: 3000, }, 3: { - Index: 3, + Index: 3, BetSize: 9000, }, } CashManiaBetFirstBet = map[int64]*structs.CashManiaBetFirstBet{ 1: { - Index: 1, - BetSizeIndex: 1, + Index: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, } CashManiaFormation = []*structs.CashManiaFormation{ { - SpinType: 1, - NodeType: "BaseSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line1Form5X5TypeA", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line1Form5X5TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 2, - NodeType: "FreeSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line1Form5X5TypeA", - Symbol: "Default", - FirstInitMethod: 3, - OtherInitMethod: 3, + SpinType: 2, + NodeType: "FreeSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line1Form5X5TypeA", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, @@ -197,124 +197,124 @@ func init() { CashManiaItemInfo = map[int64]*structs.CashManiaItemInfo{ 1: { - Index: 1, + Index: 1, ItemID: 1, - Value: 10, - IsMid: false, + Value: 10, + IsMid: false, }, 2: { - Index: 2, + Index: 2, ItemID: 2, - Value: 5, - IsMid: false, + Value: 5, + IsMid: false, }, 3: { - Index: 3, + Index: 3, ItemID: 3, - Value: 1, - IsMid: false, + Value: 1, + IsMid: false, }, 4: { - Index: 4, + Index: 4, ItemID: 4, - Value: 0.5, - IsMid: false, + Value: 0.5, + IsMid: false, }, 5: { - Index: 5, + Index: 5, ItemID: 5, - Value: 0.1, - IsMid: false, + Value: 0.1, + IsMid: false, }, 6: { - Index: 6, + Index: 6, ItemID: 6, - Value: 1, - IsMid: true, + Value: 1, + IsMid: true, }, 7: { - Index: 7, + Index: 7, ItemID: 7, - Value: 1, - IsMid: true, + Value: 1, + IsMid: true, }, 8: { - Index: 8, + Index: 8, ItemID: 8, - Value: 1, - IsMid: true, + Value: 1, + IsMid: true, }, 9: { - Index: 9, + Index: 9, ItemID: 9, - Value: 1, - IsMid: true, + Value: 1, + IsMid: true, }, 10: { - Index: 10, + Index: 10, ItemID: 10, - Value: 2, - IsMid: true, + Value: 2, + IsMid: true, }, 11: { - Index: 11, + Index: 11, ItemID: 11, - Value: 3, - IsMid: true, + Value: 3, + IsMid: true, }, 12: { - Index: 12, + Index: 12, ItemID: 12, - Value: 5, - IsMid: true, + Value: 5, + IsMid: true, }, 13: { - Index: 13, + Index: 13, ItemID: 13, - Value: 10, - IsMid: true, + Value: 10, + IsMid: true, }, 14: { - Index: 14, + Index: 14, ItemID: 14, - Value: 15, - IsMid: true, + Value: 15, + IsMid: true, }, 15: { - Index: 15, + Index: 15, ItemID: 15, - Value: 20, - IsMid: true, + Value: 20, + IsMid: true, }, 16: { - Index: 16, + Index: 16, ItemID: 16, - Value: 30, - IsMid: true, + Value: 30, + IsMid: true, }, 17: { - Index: 17, + Index: 17, ItemID: 17, - Value: 40, - IsMid: true, + Value: 40, + IsMid: true, }, 18: { - Index: 18, + Index: 18, ItemID: 18, - Value: 50, - IsMid: true, + Value: 50, + IsMid: true, }, 19: { - Index: 19, + Index: 19, ItemID: 19, - Value: 100, - IsMid: true, + Value: 100, + IsMid: true, }, 200: { - Index: 200, + Index: 200, ItemID: 200, - Value: 0, - IsMid: true, + Value: 0, + IsMid: true, }, } @@ -323,164 +323,164 @@ func init() { ID: 1, TypeWeight: map[int64]*structs.CashManiaMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "96", - Rtp: 0.96, + Rtp: 0.96, }, 2: { ID: 2, TypeWeight: map[int64]*structs.CashManiaMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "80", - Rtp: 0.8, + Rtp: 0.8, }, 3: { ID: 3, TypeWeight: map[int64]*structs.CashManiaMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "120", - Rtp: 1.2, + Rtp: 1.2, }, } CashManiaMidItemInfo = map[int64]*structs.CashManiaMidItemInfo{ 6: { - Index: 6, - ItemID: 6, - Multi: 1, + Index: 6, + ItemID: 6, + Multi: 1, FreeSpinCount: 5, }, 7: { - Index: 7, - ItemID: 7, - Multi: 1, + Index: 7, + ItemID: 7, + Multi: 1, FreeSpinCount: 10, }, 8: { - Index: 8, - ItemID: 8, - Multi: 1, + Index: 8, + ItemID: 8, + Multi: 1, FreeSpinCount: 20, }, 9: { - Index: 9, - ItemID: 9, - Multi: 1, + Index: 9, + ItemID: 9, + Multi: 1, FreeSpinCount: 0, }, 10: { - Index: 10, - ItemID: 10, - Multi: 2, + Index: 10, + ItemID: 10, + Multi: 2, FreeSpinCount: 0, }, 11: { - Index: 11, - ItemID: 11, - Multi: 3, + Index: 11, + ItemID: 11, + Multi: 3, FreeSpinCount: 0, }, 12: { - Index: 12, - ItemID: 12, - Multi: 5, + Index: 12, + ItemID: 12, + Multi: 5, FreeSpinCount: 0, }, 13: { - Index: 13, - ItemID: 13, - Multi: 10, + Index: 13, + ItemID: 13, + Multi: 10, FreeSpinCount: 0, }, 14: { - Index: 14, - ItemID: 14, - Multi: 15, + Index: 14, + ItemID: 14, + Multi: 15, FreeSpinCount: 0, }, 15: { - Index: 15, - ItemID: 15, - Multi: 20, + Index: 15, + ItemID: 15, + Multi: 20, FreeSpinCount: 0, }, 16: { - Index: 16, - ItemID: 16, - Multi: 30, + Index: 16, + ItemID: 16, + Multi: 30, FreeSpinCount: 0, }, 17: { - Index: 17, - ItemID: 17, - Multi: 40, + Index: 17, + ItemID: 17, + Multi: 40, FreeSpinCount: 0, }, 18: { - Index: 18, - ItemID: 18, - Multi: 50, + Index: 18, + ItemID: 18, + Multi: 50, FreeSpinCount: 0, }, 19: { - Index: 19, - ItemID: 19, - Multi: 100, + Index: 19, + ItemID: 19, + Multi: 100, FreeSpinCount: 0, }, } CashManiaOthers = []*structs.CashManiaOthers{ { - BaseWinPro: 0.15, - FreeWinPro: 0.15, - MaxWin: 2000, - WinNudgePro: 0.01, - WinRespinPro: 0.02, - NoWinNudgePro: 0.005, + BaseWinPro: 0.15, + FreeWinPro: 0.15, + MaxWin: 2000, + WinNudgePro: 0.01, + WinRespinPro: 0.02, + NoWinNudgePro: 0.005, NoWinRespinPro: 0.02, }, } CashManiaRandomItemWeight = []*structs.CashManiaRandomItemWeight{ { - ID: 1, - ItemID: 1, + ID: 1, + ItemID: 1, BaseWeight: 1, FreeWeight: 1, }, { - ID: 2, - ItemID: 2, + ID: 2, + ItemID: 2, BaseWeight: 1, FreeWeight: 1, }, { - ID: 3, - ItemID: 3, + ID: 3, + ItemID: 3, BaseWeight: 1, FreeWeight: 1, }, { - ID: 4, - ItemID: 4, + ID: 4, + ItemID: 4, BaseWeight: 1, FreeWeight: 1, }, { - ID: 5, - ItemID: 5, + ID: 5, + ItemID: 5, BaseWeight: 1, FreeWeight: 1, }, @@ -488,86 +488,86 @@ func init() { CashManiaRandomMidWeight = []*structs.CashManiaRandomMidWeight{ { - ID: 1, - ItemID: 6, + ID: 1, + ItemID: 6, BaseWeight: 12, FreeWeight: 12, }, { - ID: 2, - ItemID: 7, + ID: 2, + ItemID: 7, BaseWeight: 4, FreeWeight: 4, }, { - ID: 3, - ItemID: 8, + ID: 3, + ItemID: 8, BaseWeight: 1, FreeWeight: 1, }, { - ID: 4, - ItemID: 9, + ID: 4, + ItemID: 9, BaseWeight: 33, FreeWeight: 33, }, { - ID: 5, - ItemID: 10, + ID: 5, + ItemID: 10, BaseWeight: 50, FreeWeight: 50, }, { - ID: 6, - ItemID: 11, + ID: 6, + ItemID: 11, BaseWeight: 50, FreeWeight: 50, }, { - ID: 7, - ItemID: 12, + ID: 7, + ItemID: 12, BaseWeight: 50, FreeWeight: 50, }, { - ID: 8, - ItemID: 13, + ID: 8, + ItemID: 13, BaseWeight: 50, FreeWeight: 50, }, { - ID: 9, - ItemID: 14, + ID: 9, + ItemID: 14, BaseWeight: 50, FreeWeight: 50, }, { - ID: 10, - ItemID: 15, + ID: 10, + ItemID: 15, BaseWeight: 50, FreeWeight: 50, }, { - ID: 11, - ItemID: 16, + ID: 11, + ItemID: 16, BaseWeight: 50, FreeWeight: 50, }, { - ID: 12, - ItemID: 17, + ID: 12, + ItemID: 17, BaseWeight: 50, FreeWeight: 50, }, { - ID: 13, - ItemID: 18, + ID: 13, + ItemID: 18, BaseWeight: 50, FreeWeight: 50, }, { - ID: 14, - ItemID: 19, + ID: 14, + ItemID: 19, BaseWeight: 50, FreeWeight: 50, }, @@ -591,184 +591,184 @@ func init() { CashManiaSymbol = map[int64]*structs.CashManiaSymbol{ 1: { - ID: 1, - Name: "10倍", - IsWild: false, - Group: []int64{1}, - PayRate: []int64{0, 0, 100}, + ID: 1, + Name: "10倍", + IsWild: false, + Group: []int64{1}, + PayRate: []int64{0, 0, 100}, ClientOrder: 1, - ClientDsc: "", + ClientDsc: "", }, 2: { - ID: 2, - Name: "5倍", - IsWild: false, - Group: []int64{2}, - PayRate: []int64{0, 0, 50}, + ID: 2, + Name: "5倍", + IsWild: false, + Group: []int64{2}, + PayRate: []int64{0, 0, 50}, ClientOrder: 2, - ClientDsc: "", + ClientDsc: "", }, 3: { - ID: 3, - Name: "1倍", - IsWild: false, - Group: []int64{3}, - PayRate: []int64{0, 0, 10}, + ID: 3, + Name: "1倍", + IsWild: false, + Group: []int64{3}, + PayRate: []int64{0, 0, 10}, ClientOrder: 3, - ClientDsc: "", + ClientDsc: "", }, 4: { - ID: 4, - Name: "0.5倍", - IsWild: false, - Group: []int64{4}, - PayRate: []int64{0, 0, 5}, + ID: 4, + Name: "0.5倍", + IsWild: false, + Group: []int64{4}, + PayRate: []int64{0, 0, 5}, ClientOrder: 4, - ClientDsc: "", + ClientDsc: "", }, 5: { - ID: 5, - Name: "0.1倍", - IsWild: false, - Group: []int64{5}, - PayRate: []int64{0, 0, 1}, + ID: 5, + Name: "0.1倍", + IsWild: false, + Group: []int64{5}, + PayRate: []int64{0, 0, 1}, ClientOrder: 5, - ClientDsc: "", + ClientDsc: "", }, 6: { - ID: 6, - Name: "5FreeSpin", - IsWild: true, - Group: []int64{6}, - PayRate: []int64{0, 0, 0}, + ID: 6, + Name: "5FreeSpin", + IsWild: true, + Group: []int64{6}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 7: { - ID: 7, - Name: "10FreeSpin", - IsWild: true, - Group: []int64{7}, - PayRate: []int64{0, 0, 0}, + ID: 7, + Name: "10FreeSpin", + IsWild: true, + Group: []int64{7}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 8: { - ID: 8, - Name: "20FreeSpin", - IsWild: true, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 8, + Name: "20FreeSpin", + IsWild: true, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 9: { - ID: 9, - Name: "wildx1", - IsWild: true, - Group: []int64{9}, - PayRate: []int64{0, 0, 0}, + ID: 9, + Name: "wildx1", + IsWild: true, + Group: []int64{9}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 10: { - ID: 10, - Name: "wildx2", - IsWild: true, - Group: []int64{10}, - PayRate: []int64{0, 0, 0}, + ID: 10, + Name: "wildx2", + IsWild: true, + Group: []int64{10}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 11: { - ID: 11, - Name: "wildx3", - IsWild: true, - Group: []int64{11}, - PayRate: []int64{0, 0, 0}, + ID: 11, + Name: "wildx3", + IsWild: true, + Group: []int64{11}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 12: { - ID: 12, - Name: "wildx5", - IsWild: true, - Group: []int64{12}, - PayRate: []int64{0, 0, 0}, + ID: 12, + Name: "wildx5", + IsWild: true, + Group: []int64{12}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 13: { - ID: 13, - Name: "wildx10", - IsWild: true, - Group: []int64{13}, - PayRate: []int64{0, 0, 0}, + ID: 13, + Name: "wildx10", + IsWild: true, + Group: []int64{13}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 14: { - ID: 14, - Name: "wildx15", - IsWild: true, - Group: []int64{14}, - PayRate: []int64{0, 0, 0}, + ID: 14, + Name: "wildx15", + IsWild: true, + Group: []int64{14}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 15: { - ID: 15, - Name: "wildx20", - IsWild: true, - Group: []int64{15}, - PayRate: []int64{0, 0, 0}, + ID: 15, + Name: "wildx20", + IsWild: true, + Group: []int64{15}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 16: { - ID: 16, - Name: "wildx30", - IsWild: true, - Group: []int64{16}, - PayRate: []int64{0, 0, 0}, + ID: 16, + Name: "wildx30", + IsWild: true, + Group: []int64{16}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 17: { - ID: 17, - Name: "wildx40", - IsWild: true, - Group: []int64{17}, - PayRate: []int64{0, 0, 0}, + ID: 17, + Name: "wildx40", + IsWild: true, + Group: []int64{17}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 18: { - ID: 18, - Name: "wildx50", - IsWild: true, - Group: []int64{18}, - PayRate: []int64{0, 0, 0}, + ID: 18, + Name: "wildx50", + IsWild: true, + Group: []int64{18}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 19: { - ID: 19, - Name: "wildx100", - IsWild: true, - Group: []int64{19}, - PayRate: []int64{0, 0, 0}, + ID: 19, + Name: "wildx100", + IsWild: true, + Group: []int64{19}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 200: { - ID: 200, - Name: "empty", - IsWild: false, - Group: []int64{200}, - PayRate: []int64{0, 0, 0}, + ID: 200, + Name: "empty", + IsWild: false, + Group: []int64{200}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, } @@ -780,32 +780,32 @@ func init() { CashManiaWinItemWeight = []*structs.CashManiaWinItemWeight{ { - ID: 1, - ItemID: 1, + ID: 1, + ItemID: 1, BaseWeight: 8, FreeWeight: 18, }, { - ID: 2, - ItemID: 2, + ID: 2, + ItemID: 2, BaseWeight: 18, FreeWeight: 15, }, { - ID: 3, - ItemID: 3, + ID: 3, + ItemID: 3, BaseWeight: 18, FreeWeight: 36, }, { - ID: 4, - ItemID: 4, + ID: 4, + ItemID: 4, BaseWeight: 28, FreeWeight: 29, }, { - ID: 5, - ItemID: 5, + ID: 5, + ItemID: 5, BaseWeight: 28, FreeWeight: 27, }, @@ -813,89 +813,89 @@ func init() { CashManiaWinMidWeight = []*structs.CashManiaWinMidWeight{ { - ID: 1, - ItemID: 6, + ID: 1, + ItemID: 6, BaseWeight: 48, FreeWeight: 4, }, { - ID: 2, - ItemID: 7, + ID: 2, + ItemID: 7, BaseWeight: 24, FreeWeight: 0, }, { - ID: 3, - ItemID: 8, + ID: 3, + ItemID: 8, BaseWeight: 6, FreeWeight: 0, }, { - ID: 4, - ItemID: 9, + ID: 4, + ItemID: 9, BaseWeight: 322, FreeWeight: 56, }, { - ID: 5, - ItemID: 10, + ID: 5, + ItemID: 10, BaseWeight: 800, FreeWeight: 30, }, { - ID: 6, - ItemID: 11, + ID: 6, + ItemID: 11, BaseWeight: 300, FreeWeight: 15, }, { - ID: 7, - ItemID: 12, + ID: 7, + ItemID: 12, BaseWeight: 200, FreeWeight: 10, }, { - ID: 8, - ItemID: 13, + ID: 8, + ItemID: 13, BaseWeight: 10, FreeWeight: 1, }, { - ID: 9, - ItemID: 14, + ID: 9, + ItemID: 14, BaseWeight: 10, FreeWeight: 1, }, { - ID: 10, - ItemID: 15, + ID: 10, + ItemID: 15, BaseWeight: 1, FreeWeight: 5, }, { - ID: 11, - ItemID: 16, + ID: 11, + ItemID: 16, BaseWeight: 1, FreeWeight: 2, }, { - ID: 12, - ItemID: 17, + ID: 12, + ItemID: 17, BaseWeight: 1, FreeWeight: 2, }, { - ID: 13, - ItemID: 18, + ID: 13, + ItemID: 18, BaseWeight: 0, FreeWeight: 2, }, { - ID: 14, - ItemID: 19, + ID: 14, + ItemID: 19, BaseWeight: 0, FreeWeight: 2, }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go index 7d7804e..457a7eb 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_dragon.go @@ -9,170 +9,170 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { FortuneDragonBaseMultiplier = []*structs.FortuneDragonBaseMultiplier{ { - WinRateMin: 0, - WinRateMax: 0.01, - ItemIds: []int64{200, 8, 9, 10}, + WinRateMin: 0, + WinRateMax: 0.01, + ItemIds: []int64{200, 8, 9, 10}, MultiplierWeights: []int64{140, 10, 20, 10}, }, { - WinRateMin: 0.01, - WinRateMax: 1, - ItemIds: []int64{200, 8, 9, 10}, + WinRateMin: 0.01, + WinRateMax: 1, + ItemIds: []int64{200, 8, 9, 10}, MultiplierWeights: []int64{1689, 98, 176, 100}, }, { - WinRateMin: 1, - WinRateMax: 3, - ItemIds: []int64{200, 8, 9, 10}, + WinRateMin: 1, + WinRateMax: 3, + ItemIds: []int64{200, 8, 9, 10}, MultiplierWeights: []int64{60, 8, 10, 2}, }, { - WinRateMin: 3, - WinRateMax: 10, - ItemIds: []int64{200, 8, 9, 10}, + WinRateMin: 3, + WinRateMax: 10, + ItemIds: []int64{200, 8, 9, 10}, MultiplierWeights: []int64{2883, 100, 100, 250}, }, { - WinRateMin: 10, - WinRateMax: 20, - ItemIds: []int64{200, 8, 9, 10}, + WinRateMin: 10, + WinRateMax: 20, + ItemIds: []int64{200, 8, 9, 10}, MultiplierWeights: []int64{820, 1585, 100, 10}, }, { - WinRateMin: 20, - WinRateMax: 999999, - ItemIds: []int64{200, 8, 9, 10}, + WinRateMin: 20, + WinRateMax: 999999, + ItemIds: []int64{200, 8, 9, 10}, MultiplierWeights: []int64{2884, 8, 10, 287}, }, } FortuneDragonBetBetChangeList = map[int64]*structs.FortuneDragonBetBetChangeList{ 0: { - Index: 0, + Index: 0, BetChangeList: 15000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { - Index: 1, + Index: 1, BetChangeList: 30000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { - Index: 2, + Index: 2, BetChangeList: 45000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { - Index: 3, + Index: 3, BetChangeList: 50000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { - Index: 4, + Index: 4, BetChangeList: 75000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { - Index: 5, + Index: 5, BetChangeList: 150000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { - Index: 6, + Index: 6, BetChangeList: 250000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { - Index: 7, + Index: 7, BetChangeList: 450000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { - Index: 8, + Index: 8, BetChangeList: 500000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { - Index: 9, + Index: 9, BetChangeList: 750000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { - Index: 10, + Index: 10, BetChangeList: 1500000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { - Index: 11, + Index: 11, BetChangeList: 2250000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { - Index: 12, + Index: 12, BetChangeList: 4500000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 9, }, } FortuneDragonBetBetLevel = map[int64]*structs.FortuneDragonBetBetLevel{ 0: { - Index: 0, + Index: 0, BetLevel: 1, }, 1: { - Index: 1, + Index: 1, BetLevel: 2, }, 2: { - Index: 2, + Index: 2, BetLevel: 3, }, 3: { - Index: 3, + Index: 3, BetLevel: 4, }, 4: { - Index: 4, + Index: 4, BetLevel: 5, }, 5: { - Index: 5, + Index: 5, BetLevel: 6, }, 6: { - Index: 6, + Index: 6, BetLevel: 7, }, 7: { - Index: 7, + Index: 7, BetLevel: 8, }, 8: { - Index: 8, + Index: 8, BetLevel: 9, }, 9: { - Index: 9, + Index: 9, BetLevel: 10, }, } FortuneDragonBetBetLine = map[int64]*structs.FortuneDragonBetBetLine{ 0: { - Index: 0, + Index: 0, BetLine: 5, BaseBet: 1, }, @@ -180,81 +180,81 @@ func init() { FortuneDragonBetBetSize = map[int64]*structs.FortuneDragonBetBetSize{ 0: { - Index: 0, + Index: 0, BetSize: 30000000, }, 1: { - Index: 1, + Index: 1, BetSize: 100000000, }, 2: { - Index: 2, + Index: 2, BetSize: 300000000, }, 3: { - Index: 3, + Index: 3, BetSize: 900000000, }, } FortuneDragonBetFirstBet = map[int64]*structs.FortuneDragonBetFirstBet{ 1: { - Index: 1, - BetSizeIndex: 1, + Index: 1, + BetSizeIndex: 1, BetLevelIndex: 1, }, } FortuneDragonFormation = []*structs.FortuneDragonFormation{ { - SpinType: 1, - NodeType: "BaseSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 3, - NodeType: "FreeSpin", - ID: 1, - SeqID: 1, - Reel: "FreeSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 2, + SpinType: 3, + NodeType: "FreeSpin", + ID: 1, + SeqID: 1, + Reel: "FreeSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 2, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 1, - NodeType: "SureWinBaseSpin", - ID: 1, - SeqID: 1, - Reel: "SureWinBaseSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "SureWinBaseSpin", + ID: 1, + SeqID: 1, + Reel: "SureWinBaseSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 3, - NodeType: "SureWinFreeSpin", - ID: 1, - SeqID: 1, - Reel: "SureWinFreeSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 2, + SpinType: 3, + NodeType: "SureWinFreeSpin", + ID: 1, + SeqID: 1, + Reel: "SureWinFreeSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 2, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, @@ -278,11 +278,11 @@ func init() { FortuneDragonFreeMultiplierCount = []*structs.FortuneDragonFreeMultiplierCount{ { MultiplierCount: 2, - Weight: 3, + Weight: 3, }, { MultiplierCount: 3, - Weight: 1, + Weight: 1, }, } @@ -291,44 +291,44 @@ func init() { ID: 1, TypeWeight: map[int64]*structs.FortuneDragonMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "96", - Rtp: 0.96, + Rtp: 0.96, }, 2: { ID: 2, TypeWeight: map[int64]*structs.FortuneDragonMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "80", - Rtp: 0.8, + Rtp: 0.8, }, 3: { ID: 3, TypeWeight: map[int64]*structs.FortuneDragonMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "120", - Rtp: 1.2, + Rtp: 1.2, }, } FortuneDragonOthers = []*structs.FortuneDragonOthers{ { - FreespinTriggerPro: 0.005, - FreeSpinCount: 8, - MaxWin: 2500, + FreespinTriggerPro: 0.005, + FreeSpinCount: 8, + MaxWin: 2500, SureWinFreespinTriggerPro: 0.0273, - SureWinBetMultiplier: 5, + SureWinBetMultiplier: 5, }, } @@ -398,103 +398,103 @@ func init() { FortuneDragonSymbol = map[int64]*structs.FortuneDragonSymbol{ 1: { - ID: 1, - Name: "Wild", - IsWild: true, - Group: []int64{1}, - PayRate: []int64{0, 0, 100}, + ID: 1, + Name: "Wild", + IsWild: true, + Group: []int64{1}, + PayRate: []int64{0, 0, 100}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 2: { - ID: 2, - Name: "元宝", - IsWild: false, - Group: []int64{2}, - PayRate: []int64{0, 0, 50}, + ID: 2, + Name: "元宝", + IsWild: false, + Group: []int64{2}, + PayRate: []int64{0, 0, 50}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 3: { - ID: 3, - Name: "红包", - IsWild: false, - Group: []int64{3}, - PayRate: []int64{0, 0, 25}, + ID: 3, + Name: "红包", + IsWild: false, + Group: []int64{3}, + PayRate: []int64{0, 0, 25}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 4: { - ID: 4, - Name: "灯笼", - IsWild: false, - Group: []int64{4}, - PayRate: []int64{0, 0, 10}, + ID: 4, + Name: "灯笼", + IsWild: false, + Group: []int64{4}, + PayRate: []int64{0, 0, 10}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 5: { - ID: 5, - Name: "福炮", - IsWild: false, - Group: []int64{5}, - PayRate: []int64{0, 0, 5}, + ID: 5, + Name: "福炮", + IsWild: false, + Group: []int64{5}, + PayRate: []int64{0, 0, 5}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 6: { - ID: 6, - Name: "花结", - IsWild: false, - Group: []int64{6}, - PayRate: []int64{0, 0, 3}, + ID: 6, + Name: "花结", + IsWild: false, + Group: []int64{6}, + PayRate: []int64{0, 0, 3}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 7: { - ID: 7, - Name: "铜钱", - IsWild: false, - Group: []int64{7}, - PayRate: []int64{0, 0, 2}, + ID: 7, + Name: "铜钱", + IsWild: false, + Group: []int64{7}, + PayRate: []int64{0, 0, 2}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 8: { - ID: 8, - Name: "X2", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 8, + Name: "X2", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 9: { - ID: 9, - Name: "X5", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 9, + Name: "X5", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 10: { - ID: 10, - Name: "X10", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 10, + Name: "X10", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 200: { - ID: 200, - Name: "Empty", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 200, + Name: "Empty", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, } @@ -504,4 +504,4 @@ func init() { }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go index 91f5598..8a06843 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_mouse.go @@ -9,131 +9,131 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { FortuneMouseBetBetChangeList = map[int64]*structs.FortuneMouseBetBetChangeList{ 0: { - Index: 0, + Index: 0, BetChangeList: 15000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { - Index: 1, + Index: 1, BetChangeList: 30000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { - Index: 2, + Index: 2, BetChangeList: 45000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { - Index: 3, + Index: 3, BetChangeList: 50000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { - Index: 4, + Index: 4, BetChangeList: 75000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { - Index: 5, + Index: 5, BetChangeList: 150000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { - Index: 6, + Index: 6, BetChangeList: 250000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { - Index: 7, + Index: 7, BetChangeList: 450000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { - Index: 8, + Index: 8, BetChangeList: 500000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { - Index: 9, + Index: 9, BetChangeList: 750000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { - Index: 10, + Index: 10, BetChangeList: 1500000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { - Index: 11, + Index: 11, BetChangeList: 2250000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { - Index: 12, + Index: 12, BetChangeList: 4500000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 9, }, } FortuneMouseBetBetLevel = map[int64]*structs.FortuneMouseBetBetLevel{ 0: { - Index: 0, + Index: 0, BetLevel: 1, }, 1: { - Index: 1, + Index: 1, BetLevel: 2, }, 2: { - Index: 2, + Index: 2, BetLevel: 3, }, 3: { - Index: 3, + Index: 3, BetLevel: 4, }, 4: { - Index: 4, + Index: 4, BetLevel: 5, }, 5: { - Index: 5, + Index: 5, BetLevel: 6, }, 6: { - Index: 6, + Index: 6, BetLevel: 7, }, 7: { - Index: 7, + Index: 7, BetLevel: 8, }, 8: { - Index: 8, + Index: 8, BetLevel: 9, }, 9: { - Index: 9, + Index: 9, BetLevel: 10, }, } FortuneMouseBetBetLine = map[int64]*structs.FortuneMouseBetBetLine{ 0: { - Index: 0, + Index: 0, BetLine: 5, BaseBet: 1, }, @@ -141,55 +141,55 @@ func init() { FortuneMouseBetBetSize = map[int64]*structs.FortuneMouseBetBetSize{ 0: { - Index: 0, + Index: 0, BetSize: 30000000, }, 1: { - Index: 1, + Index: 1, BetSize: 100000000, }, 2: { - Index: 2, + Index: 2, BetSize: 300000000, }, 3: { - Index: 3, + Index: 3, BetSize: 900000000, }, } FortuneMouseBetFirstBet = map[int64]*structs.FortuneMouseBetFirstBet{ 1: { - Index: 1, - BetSizeIndex: 1, + Index: 1, + BetSizeIndex: 1, BetLevelIndex: 1, }, } FortuneMouseFormation = []*structs.FortuneMouseFormation{ { - SpinType: 1, - NodeType: "BaseSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 3, - NodeType: "ReSpin", - ID: 1, - SeqID: 1, - Reel: "ReSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 3, - OtherInitMethod: 3, + SpinType: 3, + NodeType: "ReSpin", + ID: 1, + SeqID: 1, + Reel: "ReSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, @@ -200,42 +200,42 @@ func init() { ID: 1, TypeWeight: map[int64]*structs.FortuneMouseMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "96", - Rtp: 0.96, + Rtp: 0.96, }, 2: { ID: 2, TypeWeight: map[int64]*structs.FortuneMouseMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "80", - Rtp: 0.8, + Rtp: 0.8, }, 3: { ID: 3, TypeWeight: map[int64]*structs.FortuneMouseMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "120", - Rtp: 1.2, + Rtp: 1.2, }, } FortuneMouseOthers = []*structs.FortuneMouseOthers{ { RespinTriggerPro: 0.0123, - MaxWin: 1000, - ExtraWin: 700, + MaxWin: 1000, + ExtraWin: 700, }, } @@ -273,37 +273,37 @@ func init() { FortuneMouseSuperStackWeight = []*structs.FortuneMouseSuperStackWeight{ { - ID: 1, + ID: 1, ItemID: 1, Weight: 0, }, { - ID: 2, + ID: 2, ItemID: 2, Weight: 3, }, { - ID: 3, + ID: 3, ItemID: 3, Weight: 5, }, { - ID: 4, + ID: 4, ItemID: 4, Weight: 7, }, { - ID: 5, + ID: 5, ItemID: 5, Weight: 8, }, { - ID: 6, + ID: 6, ItemID: 6, Weight: 9, }, { - ID: 7, + ID: 7, ItemID: 7, Weight: 10, }, @@ -311,76 +311,76 @@ func init() { FortuneMouseSymbol = map[int64]*structs.FortuneMouseSymbol{ 1: { - ID: 1, - Name: "wild", - IsWild: true, - Group: []int64{1}, - PayRate: []int64{0, 0, 300}, + ID: 1, + Name: "wild", + IsWild: true, + Group: []int64{1}, + PayRate: []int64{0, 0, 300}, ClientOrder: 1, - ClientDsc: "", + ClientDsc: "", }, 2: { - ID: 2, - Name: "倒福", - IsWild: false, - Group: []int64{2}, - PayRate: []int64{0, 0, 100}, + ID: 2, + Name: "倒福", + IsWild: false, + Group: []int64{2}, + PayRate: []int64{0, 0, 100}, ClientOrder: 2, - ClientDsc: "", + ClientDsc: "", }, 3: { - ID: 3, - Name: "红包", - IsWild: false, - Group: []int64{3}, - PayRate: []int64{0, 0, 50}, + ID: 3, + Name: "红包", + IsWild: false, + Group: []int64{3}, + PayRate: []int64{0, 0, 50}, ClientOrder: 3, - ClientDsc: "", + ClientDsc: "", }, 4: { - ID: 4, - Name: "钱袋", - IsWild: false, - Group: []int64{4}, - PayRate: []int64{0, 0, 30}, + ID: 4, + Name: "钱袋", + IsWild: false, + Group: []int64{4}, + PayRate: []int64{0, 0, 30}, ClientOrder: 4, - ClientDsc: "", + ClientDsc: "", }, 5: { - ID: 5, - Name: "爆竹", - IsWild: false, - Group: []int64{5}, - PayRate: []int64{0, 0, 15}, + ID: 5, + Name: "爆竹", + IsWild: false, + Group: []int64{5}, + PayRate: []int64{0, 0, 15}, ClientOrder: 5, - ClientDsc: "", + ClientDsc: "", }, 6: { - ID: 6, - Name: "橘子", - IsWild: false, - Group: []int64{6}, - PayRate: []int64{0, 0, 5}, + ID: 6, + Name: "橘子", + IsWild: false, + Group: []int64{6}, + PayRate: []int64{0, 0, 5}, ClientOrder: 6, - ClientDsc: "", + ClientDsc: "", }, 7: { - ID: 7, - Name: "花生", - IsWild: false, - Group: []int64{7}, - PayRate: []int64{0, 0, 3}, + ID: 7, + Name: "花生", + IsWild: false, + Group: []int64{7}, + PayRate: []int64{0, 0, 3}, ClientOrder: 7, - ClientDsc: "", + ClientDsc: "", }, 8: { - ID: 8, - Name: "SuperStack", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 8, + Name: "SuperStack", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, } @@ -390,4 +390,4 @@ func init() { }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go index 0a51f61..82d9173 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_ox.go @@ -9,131 +9,131 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { FortuneOxBetBetChangeList = map[int64]*structs.FortuneOxBetBetChangeList{ 0: { - Index: 0, + Index: 0, BetChangeList: 30000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { - Index: 1, + Index: 1, BetChangeList: 60000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { - Index: 2, + Index: 2, BetChangeList: 90000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { - Index: 3, + Index: 3, BetChangeList: 100000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { - Index: 4, + Index: 4, BetChangeList: 150000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { - Index: 5, + Index: 5, BetChangeList: 300000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { - Index: 6, + Index: 6, BetChangeList: 500000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { - Index: 7, + Index: 7, BetChangeList: 900000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { - Index: 8, + Index: 8, BetChangeList: 1000000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { - Index: 9, + Index: 9, BetChangeList: 1500000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { - Index: 10, + Index: 10, BetChangeList: 3000000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { - Index: 11, + Index: 11, BetChangeList: 4500000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { - Index: 12, + Index: 12, BetChangeList: 9000000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 9, }, } FortuneOxBetBetLevel = map[int64]*structs.FortuneOxBetBetLevel{ 0: { - Index: 0, + Index: 0, BetLevel: 1, }, 1: { - Index: 1, + Index: 1, BetLevel: 2, }, 2: { - Index: 2, + Index: 2, BetLevel: 3, }, 3: { - Index: 3, + Index: 3, BetLevel: 4, }, 4: { - Index: 4, + Index: 4, BetLevel: 5, }, 5: { - Index: 5, + Index: 5, BetLevel: 6, }, 6: { - Index: 6, + Index: 6, BetLevel: 7, }, 7: { - Index: 7, + Index: 7, BetLevel: 8, }, 8: { - Index: 8, + Index: 8, BetLevel: 9, }, 9: { - Index: 9, + Index: 9, BetLevel: 10, }, } FortuneOxBetBetLine = map[int64]*structs.FortuneOxBetBetLine{ 0: { - Index: 0, + Index: 0, BetLine: 10, BaseBet: 1, }, @@ -141,55 +141,55 @@ func init() { FortuneOxBetBetSize = map[int64]*structs.FortuneOxBetBetSize{ 0: { - Index: 0, + Index: 0, BetSize: 30000000, }, 1: { - Index: 1, + Index: 1, BetSize: 100000000, }, 2: { - Index: 2, + Index: 2, BetSize: 300000000, }, 3: { - Index: 3, + Index: 3, BetSize: 900000000, }, } FortuneOxBetFirstBet = map[int64]*structs.FortuneOxBetFirstBet{ 1: { - Index: 1, - BetSizeIndex: 1, + Index: 1, + BetSizeIndex: 1, BetLevelIndex: 1, }, } FortuneOxFormation = []*structs.FortuneOxFormation{ { - SpinType: 1, - NodeType: "BaseSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line10Form343TypeA", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line10Form343TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 3, - NodeType: "ReSpin", - ID: 1, - SeqID: 1, - Reel: "ReSpin", - Matrix: "Line10Form343TypeA", - Symbol: "Default", - FirstInitMethod: 3, - OtherInitMethod: 3, + SpinType: 3, + NodeType: "ReSpin", + ID: 1, + SeqID: 1, + Reel: "ReSpin", + Matrix: "Line10Form343TypeA", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, @@ -200,42 +200,42 @@ func init() { ID: 1, TypeWeight: map[int64]*structs.FortuneOxMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "96", - Rtp: 0.96, + Rtp: 0.96, }, 2: { ID: 2, TypeWeight: map[int64]*structs.FortuneOxMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "80", - Rtp: 0.8, + Rtp: 0.8, }, 3: { ID: 3, TypeWeight: map[int64]*structs.FortuneOxMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "120", - Rtp: 1.2, + Rtp: 1.2, }, } FortuneOxOthers = []*structs.FortuneOxOthers{ { RespinTriggerPro: 0.0107, - Multiplier: 10, - MaxWin: 2000, + Multiplier: 10, + MaxWin: 2000, }, } @@ -273,37 +273,37 @@ func init() { FortuneOxSuperStack1Weight = []*structs.FortuneOxSuperStack1Weight{ { - ID: 1, + ID: 1, ItemID: 1, Weight: 0, }, { - ID: 2, + ID: 2, ItemID: 2, Weight: 1, }, { - ID: 3, + ID: 3, ItemID: 3, Weight: 4, }, { - ID: 4, + ID: 4, ItemID: 4, Weight: 10, }, { - ID: 5, + ID: 5, ItemID: 5, Weight: 15, }, { - ID: 6, + ID: 6, ItemID: 6, Weight: 30, }, { - ID: 7, + ID: 7, ItemID: 7, Weight: 40, }, @@ -311,37 +311,37 @@ func init() { FortuneOxSuperStack2Weight = []*structs.FortuneOxSuperStack2Weight{ { - ID: 1, + ID: 1, ItemID: 1, Weight: 0, }, { - ID: 2, + ID: 2, ItemID: 2, Weight: 1, }, { - ID: 3, + ID: 3, ItemID: 3, Weight: 2, }, { - ID: 4, + ID: 4, ItemID: 4, Weight: 3, }, { - ID: 5, + ID: 5, ItemID: 5, Weight: 4, }, { - ID: 6, + ID: 6, ItemID: 6, Weight: 5, }, { - ID: 7, + ID: 7, ItemID: 7, Weight: 6, }, @@ -349,85 +349,85 @@ func init() { FortuneOxSymbol = map[int64]*structs.FortuneOxSymbol{ 1: { - ID: 1, - Name: "wild", - IsWild: true, - Group: []int64{1}, - PayRate: []int64{0, 0, 200}, + ID: 1, + Name: "wild", + IsWild: true, + Group: []int64{1}, + PayRate: []int64{0, 0, 200}, ClientOrder: 1, - ClientDsc: "", + ClientDsc: "", }, 2: { - ID: 2, - Name: "元宝", - IsWild: false, - Group: []int64{2}, - PayRate: []int64{0, 0, 100}, + ID: 2, + Name: "元宝", + IsWild: false, + Group: []int64{2}, + PayRate: []int64{0, 0, 100}, ClientOrder: 2, - ClientDsc: "", + ClientDsc: "", }, 3: { - ID: 3, - Name: "金锦盒", - IsWild: false, - Group: []int64{3}, - PayRate: []int64{0, 0, 50}, + ID: 3, + Name: "金锦盒", + IsWild: false, + Group: []int64{3}, + PayRate: []int64{0, 0, 50}, ClientOrder: 3, - ClientDsc: "", + ClientDsc: "", }, 4: { - ID: 4, - Name: "钱袋", - IsWild: false, - Group: []int64{4}, - PayRate: []int64{0, 0, 20}, + ID: 4, + Name: "钱袋", + IsWild: false, + Group: []int64{4}, + PayRate: []int64{0, 0, 20}, ClientOrder: 4, - ClientDsc: "", + ClientDsc: "", }, 5: { - ID: 5, - Name: "红包", - IsWild: false, - Group: []int64{5}, - PayRate: []int64{0, 0, 10}, + ID: 5, + Name: "红包", + IsWild: false, + Group: []int64{5}, + PayRate: []int64{0, 0, 10}, ClientOrder: 5, - ClientDsc: "", + ClientDsc: "", }, 6: { - ID: 6, - Name: "橘子", - IsWild: false, - Group: []int64{6}, - PayRate: []int64{0, 0, 5}, + ID: 6, + Name: "橘子", + IsWild: false, + Group: []int64{6}, + PayRate: []int64{0, 0, 5}, ClientOrder: 6, - ClientDsc: "", + ClientDsc: "", }, 7: { - ID: 7, - Name: "炮竹", - IsWild: false, - Group: []int64{7}, - PayRate: []int64{0, 0, 3}, + ID: 7, + Name: "炮竹", + IsWild: false, + Group: []int64{7}, + PayRate: []int64{0, 0, 3}, ClientOrder: 7, - ClientDsc: "", + ClientDsc: "", }, 8: { - ID: 8, - Name: "SuperStack1", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 8, + Name: "SuperStack1", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 9: { - ID: 9, - Name: "SuperStack2", - IsWild: false, - Group: []int64{9}, - PayRate: []int64{0, 0, 0}, + ID: 9, + Name: "SuperStack2", + IsWild: false, + Group: []int64{9}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, } @@ -437,4 +437,4 @@ func init() { }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go index 48c8d7a..809fd22 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_rabbit.go @@ -9,131 +9,131 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { FortuneRabbitBetBetChangeList = map[int64]*structs.FortuneRabbitBetBetChangeList{ 0: { - Index: 0, + Index: 0, BetChangeList: 30000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { - Index: 1, + Index: 1, BetChangeList: 60000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { - Index: 2, + Index: 2, BetChangeList: 90000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { - Index: 3, + Index: 3, BetChangeList: 100000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { - Index: 4, + Index: 4, BetChangeList: 150000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { - Index: 5, + Index: 5, BetChangeList: 300000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { - Index: 6, + Index: 6, BetChangeList: 500000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { - Index: 7, + Index: 7, BetChangeList: 900000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { - Index: 8, + Index: 8, BetChangeList: 1000000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { - Index: 9, + Index: 9, BetChangeList: 1500000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { - Index: 10, + Index: 10, BetChangeList: 3000000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { - Index: 11, + Index: 11, BetChangeList: 4500000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { - Index: 12, + Index: 12, BetChangeList: 9000000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 9, }, } FortuneRabbitBetBetLevel = map[int64]*structs.FortuneRabbitBetBetLevel{ 0: { - Index: 0, + Index: 0, BetLevel: 1, }, 1: { - Index: 1, + Index: 1, BetLevel: 2, }, 2: { - Index: 2, + Index: 2, BetLevel: 3, }, 3: { - Index: 3, + Index: 3, BetLevel: 4, }, 4: { - Index: 4, + Index: 4, BetLevel: 5, }, 5: { - Index: 5, + Index: 5, BetLevel: 6, }, 6: { - Index: 6, + Index: 6, BetLevel: 7, }, 7: { - Index: 7, + Index: 7, BetLevel: 8, }, 8: { - Index: 8, + Index: 8, BetLevel: 9, }, 9: { - Index: 9, + Index: 9, BetLevel: 10, }, } FortuneRabbitBetBetLine = map[int64]*structs.FortuneRabbitBetBetLine{ 0: { - Index: 0, + Index: 0, BetLine: 10, BaseBet: 1, }, @@ -141,156 +141,156 @@ func init() { FortuneRabbitBetBetSize = map[int64]*structs.FortuneRabbitBetBetSize{ 0: { - Index: 0, + Index: 0, BetSize: 30000000, }, 1: { - Index: 1, + Index: 1, BetSize: 100000000, }, 2: { - Index: 2, + Index: 2, BetSize: 300000000, }, 3: { - Index: 3, + Index: 3, BetSize: 900000000, }, } FortuneRabbitBetFirstBet = map[int64]*structs.FortuneRabbitBetFirstBet{ 1: { - Index: 1, - BetSizeIndex: 1, + Index: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, } FortuneRabbitCashPrizeWeight = []*structs.FortuneRabbitCashPrizeWeight{ { - ID: 1, - PrizeValue: 0.5, - Weight: 150, + ID: 1, + PrizeValue: 0.5, + Weight: 150, NoWinWeight: 100, }, { - ID: 2, - PrizeValue: 1, - Weight: 25, + ID: 2, + PrizeValue: 1, + Weight: 25, NoWinWeight: 25, }, { - ID: 3, - PrizeValue: 2, - Weight: 9, + ID: 3, + PrizeValue: 2, + Weight: 9, NoWinWeight: 9, }, { - ID: 4, - PrizeValue: 5, - Weight: 55, + ID: 4, + PrizeValue: 5, + Weight: 55, NoWinWeight: 55, }, { - ID: 5, - PrizeValue: 10, - Weight: 6, + ID: 5, + PrizeValue: 10, + Weight: 6, NoWinWeight: 12, }, { - ID: 6, - PrizeValue: 20, - Weight: 3, + ID: 6, + PrizeValue: 20, + Weight: 3, NoWinWeight: 9, }, { - ID: 7, - PrizeValue: 30, - Weight: 0.6, + ID: 7, + PrizeValue: 30, + Weight: 0.6, NoWinWeight: 6, }, { - ID: 8, - PrizeValue: 50, - Weight: 1, + ID: 8, + PrizeValue: 50, + Weight: 1, NoWinWeight: 3, }, { - ID: 9, - PrizeValue: 100, - Weight: 0.39, + ID: 9, + PrizeValue: 100, + Weight: 0.39, NoWinWeight: 0.9, }, { - ID: 10, - PrizeValue: 500, - Weight: 0.01, + ID: 10, + PrizeValue: 500, + Weight: 0.01, NoWinWeight: 0.1, }, } FortuneRabbitForceCashCountWeight = []*structs.FortuneRabbitForceCashCountWeight{ { - ID: 1, - Count: 5, + ID: 1, + Count: 5, Weight: 80, }, { - ID: 2, - Count: 6, + ID: 2, + Count: 6, Weight: 15, }, { - ID: 3, - Count: 7, + ID: 3, + Count: 7, Weight: 5, }, { - ID: 4, - Count: 8, + ID: 4, + Count: 8, Weight: 0, }, { - ID: 5, - Count: 9, + ID: 5, + Count: 9, Weight: 0, }, { - ID: 6, - Count: 10, + ID: 6, + Count: 10, Weight: 0, }, { - ID: 7, - Count: 11, + ID: 7, + Count: 11, Weight: 0, }, } FortuneRabbitFormation = []*structs.FortuneRabbitFormation{ { - SpinType: 1, - NodeType: "BaseSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line10Form343TypeA", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line10Form343TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 3, - NodeType: "FreeSpin", - ID: 1, - SeqID: 1, - Reel: "FreeSpin", - Matrix: "Line10Form343TypeA", - Symbol: "Default", - FirstInitMethod: 3, - OtherInitMethod: 3, + SpinType: 3, + NodeType: "FreeSpin", + ID: 1, + SeqID: 1, + Reel: "FreeSpin", + Matrix: "Line10Form343TypeA", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, @@ -301,58 +301,58 @@ func init() { ID: 1, TypeWeight: map[int64]*structs.FortuneRabbitMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "96", - Rtp: 0.96, + Rtp: 0.96, }, 2: { ID: 2, TypeWeight: map[int64]*structs.FortuneRabbitMapRTPModeTypeWeight{ 2: { - ID: 2, + ID: 2, Weight: 1, }, }, Desc: "80", - Rtp: 0.8, + Rtp: 0.8, }, 3: { ID: 3, TypeWeight: map[int64]*structs.FortuneRabbitMapRTPModeTypeWeight{ 3: { - ID: 3, + ID: 3, Weight: 1, }, }, Desc: "120", - Rtp: 1.2, + Rtp: 1.2, }, } FortuneRabbitOthers = []*structs.FortuneRabbitOthers{ { FreespinTriggerPro: 0.0106, - FreeSpinCount: 8, - MaxWin: 5000, + FreeSpinCount: 8, + MaxWin: 5000, }, } FortuneRabbitOthersRTP120 = []*structs.FortuneRabbitOthersRTP120{ { FreespinTriggerPro: 0.01785, - FreeSpinCount: 8, - MaxWin: 5000, + FreeSpinCount: 8, + MaxWin: 5000, }, } FortuneRabbitOthersRTP80 = []*structs.FortuneRabbitOthersRTP80{ { FreespinTriggerPro: 0.00577, - FreeSpinCount: 8, - MaxWin: 5000, + FreeSpinCount: 8, + MaxWin: 5000, }, } @@ -390,85 +390,85 @@ func init() { FortuneRabbitSymbol = map[int64]*structs.FortuneRabbitSymbol{ 1: { - ID: 1, - Name: "wild", - IsWild: true, - Group: []int64{1}, - PayRate: []int64{0, 0, 200}, + ID: 1, + Name: "wild", + IsWild: true, + Group: []int64{1}, + PayRate: []int64{0, 0, 200}, ClientOrder: 1, - ClientDsc: "", + ClientDsc: "", }, 2: { - ID: 2, - Name: "元宝", - IsWild: false, - Group: []int64{2}, - PayRate: []int64{0, 0, 100}, + ID: 2, + Name: "元宝", + IsWild: false, + Group: []int64{2}, + PayRate: []int64{0, 0, 100}, ClientOrder: 2, - ClientDsc: "", + ClientDsc: "", }, 3: { - ID: 3, - Name: "钱袋", - IsWild: false, - Group: []int64{3}, - PayRate: []int64{0, 0, 50}, + ID: 3, + Name: "钱袋", + IsWild: false, + Group: []int64{3}, + PayRate: []int64{0, 0, 50}, ClientOrder: 3, - ClientDsc: "", + ClientDsc: "", }, 4: { - ID: 4, - Name: "红包", - IsWild: false, - Group: []int64{4}, - PayRate: []int64{0, 0, 10}, + ID: 4, + Name: "红包", + IsWild: false, + Group: []int64{4}, + PayRate: []int64{0, 0, 10}, ClientOrder: 4, - ClientDsc: "", + ClientDsc: "", }, 5: { - ID: 5, - Name: "铜币", - IsWild: false, - Group: []int64{5}, - PayRate: []int64{0, 0, 5}, + ID: 5, + Name: "铜币", + IsWild: false, + Group: []int64{5}, + PayRate: []int64{0, 0, 5}, ClientOrder: 5, - ClientDsc: "", + ClientDsc: "", }, 6: { - ID: 6, - Name: "爆竹", - IsWild: false, - Group: []int64{6}, - PayRate: []int64{0, 0, 3}, + ID: 6, + Name: "爆竹", + IsWild: false, + Group: []int64{6}, + PayRate: []int64{0, 0, 3}, ClientOrder: 6, - ClientDsc: "", + ClientDsc: "", }, 7: { - ID: 7, - Name: "胡萝卜", - IsWild: false, - Group: []int64{7}, - PayRate: []int64{0, 0, 2}, + ID: 7, + Name: "胡萝卜", + IsWild: false, + Group: []int64{7}, + PayRate: []int64{0, 0, 2}, ClientOrder: 7, - ClientDsc: "", + ClientDsc: "", }, 8: { - ID: 8, - Name: "Cash", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 8, + Name: "Cash", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 200: { - ID: 200, - Name: "Empty", - IsWild: false, - Group: []int64{200}, - PayRate: []int64{0, 0, 0}, + ID: 200, + Name: "Empty", + IsWild: false, + Group: []int64{200}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, } @@ -478,4 +478,4 @@ func init() { }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go index 464f49e..d483857 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/fortune_tiger.go @@ -9,131 +9,131 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { FortuneTigerBetBetChangeList = map[int64]*structs.FortuneTigerBetBetChangeList{ 0: { - Index: 0, + Index: 0, BetChangeList: 15000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { - Index: 1, + Index: 1, BetChangeList: 30000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { - Index: 2, + Index: 2, BetChangeList: 45000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { - Index: 3, + Index: 3, BetChangeList: 50000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { - Index: 4, + Index: 4, BetChangeList: 75000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { - Index: 5, + Index: 5, BetChangeList: 150000, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { - Index: 6, + Index: 6, BetChangeList: 250000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { - Index: 7, + Index: 7, BetChangeList: 450000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { - Index: 8, + Index: 8, BetChangeList: 500000, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { - Index: 9, + Index: 9, BetChangeList: 750000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { - Index: 10, + Index: 10, BetChangeList: 1500000, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { - Index: 11, + Index: 11, BetChangeList: 2250000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { - Index: 12, + Index: 12, BetChangeList: 4500000, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 9, }, } FortuneTigerBetBetLevel = map[int64]*structs.FortuneTigerBetBetLevel{ 0: { - Index: 0, + Index: 0, BetLevel: 1, }, 1: { - Index: 1, + Index: 1, BetLevel: 2, }, 2: { - Index: 2, + Index: 2, BetLevel: 3, }, 3: { - Index: 3, + Index: 3, BetLevel: 4, }, 4: { - Index: 4, + Index: 4, BetLevel: 5, }, 5: { - Index: 5, + Index: 5, BetLevel: 6, }, 6: { - Index: 6, + Index: 6, BetLevel: 7, }, 7: { - Index: 7, + Index: 7, BetLevel: 8, }, 8: { - Index: 8, + Index: 8, BetLevel: 9, }, 9: { - Index: 9, + Index: 9, BetLevel: 10, }, } FortuneTigerBetBetLine = map[int64]*structs.FortuneTigerBetBetLine{ 0: { - Index: 0, + Index: 0, BetLine: 5, BaseBet: 1, }, @@ -141,55 +141,55 @@ func init() { FortuneTigerBetBetSize = map[int64]*structs.FortuneTigerBetBetSize{ 0: { - Index: 0, + Index: 0, BetSize: 30000000, }, 1: { - Index: 1, + Index: 1, BetSize: 100000000, }, 2: { - Index: 2, + Index: 2, BetSize: 300000000, }, 3: { - Index: 3, + Index: 3, BetSize: 900000000, }, } FortuneTigerBetFirstBet = map[int64]*structs.FortuneTigerBetFirstBet{ 1: { - Index: 1, - BetSizeIndex: 1, + Index: 1, + BetSizeIndex: 1, BetLevelIndex: 1, }, } FortuneTigerFormation = []*structs.FortuneTigerFormation{ { - SpinType: 1, - NodeType: "BaseSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 4, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 4, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, { - SpinType: 3, - NodeType: "ReSpin", - ID: 1, - SeqID: 1, - Reel: "ReSpin", - Matrix: "Line5Form3X3TypeB", - Symbol: "Default", - FirstInitMethod: 3, - OtherInitMethod: 3, + SpinType: 3, + NodeType: "ReSpin", + ID: 1, + SeqID: 1, + Reel: "ReSpin", + Matrix: "Line5Form3X3TypeB", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, @@ -200,42 +200,42 @@ func init() { ID: 1, TypeWeight: map[int64]*structs.FortuneTigerMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "96", - Rtp: 0.96, + Rtp: 0.96, }, 2: { ID: 2, TypeWeight: map[int64]*structs.FortuneTigerMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "80", - Rtp: 0.8, + Rtp: 0.8, }, 3: { ID: 3, TypeWeight: map[int64]*structs.FortuneTigerMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "120", - Rtp: 1.2, + Rtp: 1.2, }, } FortuneTigerOthers = []*structs.FortuneTigerOthers{ { RespinTriggerPro: 0.0104, - Multiplier: 10, - MaxWin: 2500, + Multiplier: 10, + MaxWin: 2500, }, } @@ -273,37 +273,37 @@ func init() { FortuneTigerSuperStackWeight = []*structs.FortuneTigerSuperStackWeight{ { - ID: 1, + ID: 1, ItemID: 1, Weight: 0, }, { - ID: 2, + ID: 2, ItemID: 2, Weight: 0.66, }, { - ID: 3, + ID: 3, ItemID: 3, Weight: 3.34, }, { - ID: 4, + ID: 4, ItemID: 4, Weight: 11, }, { - ID: 5, + ID: 5, ItemID: 5, Weight: 15, }, { - ID: 6, + ID: 6, ItemID: 6, Weight: 20, }, { - ID: 7, + ID: 7, ItemID: 7, Weight: 50, }, @@ -311,85 +311,85 @@ func init() { FortuneTigerSymbol = map[int64]*structs.FortuneTigerSymbol{ 1: { - ID: 1, - Name: "wild", - IsWild: true, - Group: []int64{1}, - PayRate: []int64{0, 0, 250}, + ID: 1, + Name: "wild", + IsWild: true, + Group: []int64{1}, + PayRate: []int64{0, 0, 250}, ClientOrder: 1, - ClientDsc: "", + ClientDsc: "", }, 2: { - ID: 2, - Name: "元宝", - IsWild: false, - Group: []int64{2}, - PayRate: []int64{0, 0, 100}, + ID: 2, + Name: "元宝", + IsWild: false, + Group: []int64{2}, + PayRate: []int64{0, 0, 100}, ClientOrder: 2, - ClientDsc: "", + ClientDsc: "", }, 3: { - ID: 3, - Name: "玉饰", - IsWild: false, - Group: []int64{3}, - PayRate: []int64{0, 0, 25}, + ID: 3, + Name: "玉饰", + IsWild: false, + Group: []int64{3}, + PayRate: []int64{0, 0, 25}, ClientOrder: 3, - ClientDsc: "", + ClientDsc: "", }, 4: { - ID: 4, - Name: "福袋", - IsWild: false, - Group: []int64{4}, - PayRate: []int64{0, 0, 10}, + ID: 4, + Name: "福袋", + IsWild: false, + Group: []int64{4}, + PayRate: []int64{0, 0, 10}, ClientOrder: 4, - ClientDsc: "", + ClientDsc: "", }, 5: { - ID: 5, - Name: "红包", - IsWild: false, - Group: []int64{5}, - PayRate: []int64{0, 0, 8}, + ID: 5, + Name: "红包", + IsWild: false, + Group: []int64{5}, + PayRate: []int64{0, 0, 8}, ClientOrder: 5, - ClientDsc: "", + ClientDsc: "", }, 6: { - ID: 6, - Name: "爆竹", - IsWild: false, - Group: []int64{6}, - PayRate: []int64{0, 0, 5}, + ID: 6, + Name: "爆竹", + IsWild: false, + Group: []int64{6}, + PayRate: []int64{0, 0, 5}, ClientOrder: 6, - ClientDsc: "", + ClientDsc: "", }, 7: { - ID: 7, - Name: "橘子", - IsWild: false, - Group: []int64{7}, - PayRate: []int64{0, 0, 3}, + ID: 7, + Name: "橘子", + IsWild: false, + Group: []int64{7}, + PayRate: []int64{0, 0, 3}, ClientOrder: 7, - ClientDsc: "", + ClientDsc: "", }, 8: { - ID: 8, - Name: "SuperStack", - IsWild: false, - Group: []int64{8}, - PayRate: []int64{0, 0, 0}, + ID: 8, + Name: "SuperStack", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, 200: { - ID: 200, - Name: "Empty", - IsWild: false, - Group: []int64{200}, - PayRate: []int64{0, 0, 0}, + ID: 200, + Name: "Empty", + IsWild: false, + Group: []int64{200}, + PayRate: []int64{0, 0, 0}, ClientOrder: 0, - ClientDsc: "", + ClientDsc: "", }, } @@ -399,4 +399,4 @@ func init() { }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/gates_of_olympus.go b/gamesrv/slotspkg/internal/exported/excel2go/base/gates_of_olympus.go new file mode 100644 index 0000000..8d88753 --- /dev/null +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/gates_of_olympus.go @@ -0,0 +1,1339 @@ +//go:build !debug +// +build !debug + +// +package base + +import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs" + +func init() { + GatesOfOlympusBetBetChangeList = map[int64]*structs.GatesOfOlympusBetBetChangeList{ + 0: { + Index: 0, + BetChangeList: 0.2, + BetSizeIndex: 0, + BetLevelIndex: 0, + }, + 1: { + Index: 1, + BetChangeList: 0.4, + BetSizeIndex: 0, + BetLevelIndex: 1, + }, + 2: { + Index: 2, + BetChangeList: 0.6, + BetSizeIndex: 0, + BetLevelIndex: 2, + }, + 3: { + Index: 3, + BetChangeList: 0.8, + BetSizeIndex: 0, + BetLevelIndex: 3, + }, + 4: { + Index: 4, + BetChangeList: 1, + BetSizeIndex: 0, + BetLevelIndex: 4, + }, + 5: { + Index: 5, + BetChangeList: 1.2, + BetSizeIndex: 0, + BetLevelIndex: 5, + }, + 6: { + Index: 6, + BetChangeList: 1.4, + BetSizeIndex: 0, + BetLevelIndex: 6, + }, + 7: { + Index: 7, + BetChangeList: 1.6, + BetSizeIndex: 0, + BetLevelIndex: 7, + }, + 8: { + Index: 8, + BetChangeList: 1.8, + BetSizeIndex: 0, + BetLevelIndex: 8, + }, + 9: { + Index: 9, + BetChangeList: 2, + BetSizeIndex: 0, + BetLevelIndex: 9, + }, + 10: { + Index: 10, + BetChangeList: 4, + BetSizeIndex: 1, + BetLevelIndex: 1, + }, + 11: { + Index: 11, + BetChangeList: 6, + BetSizeIndex: 1, + BetLevelIndex: 2, + }, + 12: { + Index: 12, + BetChangeList: 8, + BetSizeIndex: 1, + BetLevelIndex: 3, + }, + 13: { + Index: 13, + BetChangeList: 10, + BetSizeIndex: 1, + BetLevelIndex: 4, + }, + 14: { + Index: 14, + BetChangeList: 12, + BetSizeIndex: 1, + BetLevelIndex: 5, + }, + 15: { + Index: 15, + BetChangeList: 14, + BetSizeIndex: 1, + BetLevelIndex: 6, + }, + 16: { + Index: 16, + BetChangeList: 15, + BetSizeIndex: 4, + BetLevelIndex: 0, + }, + 17: { + Index: 17, + BetChangeList: 16, + BetSizeIndex: 1, + BetLevelIndex: 7, + }, + 18: { + Index: 18, + BetChangeList: 18, + BetSizeIndex: 1, + BetLevelIndex: 8, + }, + 19: { + Index: 19, + BetChangeList: 20, + BetSizeIndex: 1, + BetLevelIndex: 9, + }, + 20: { + Index: 20, + BetChangeList: 24, + BetSizeIndex: 2, + BetLevelIndex: 5, + }, + 21: { + Index: 21, + BetChangeList: 28, + BetSizeIndex: 2, + BetLevelIndex: 6, + }, + 22: { + Index: 22, + BetChangeList: 30, + BetSizeIndex: 3, + BetLevelIndex: 2, + }, + 23: { + Index: 23, + BetChangeList: 32, + BetSizeIndex: 2, + BetLevelIndex: 7, + }, + 24: { + Index: 24, + BetChangeList: 36, + BetSizeIndex: 2, + BetLevelIndex: 8, + }, + 25: { + Index: 25, + BetChangeList: 40, + BetSizeIndex: 2, + BetLevelIndex: 9, + }, + 26: { + Index: 26, + BetChangeList: 45, + BetSizeIndex: 4, + BetLevelIndex: 2, + }, + 27: { + Index: 27, + BetChangeList: 50, + BetSizeIndex: 3, + BetLevelIndex: 4, + }, + 28: { + Index: 28, + BetChangeList: 60, + BetSizeIndex: 3, + BetLevelIndex: 5, + }, + 29: { + Index: 29, + BetChangeList: 70, + BetSizeIndex: 3, + BetLevelIndex: 6, + }, + 30: { + Index: 30, + BetChangeList: 75, + BetSizeIndex: 4, + BetLevelIndex: 4, + }, + 31: { + Index: 31, + BetChangeList: 80, + BetSizeIndex: 3, + BetLevelIndex: 7, + }, + 32: { + Index: 32, + BetChangeList: 90, + BetSizeIndex: 3, + BetLevelIndex: 8, + }, + 33: { + Index: 33, + BetChangeList: 100, + BetSizeIndex: 3, + BetLevelIndex: 9, + }, + 34: { + Index: 34, + BetChangeList: 105, + BetSizeIndex: 4, + BetLevelIndex: 6, + }, + 35: { + Index: 35, + BetChangeList: 120, + BetSizeIndex: 4, + BetLevelIndex: 7, + }, + 36: { + Index: 36, + BetChangeList: 135, + BetSizeIndex: 4, + BetLevelIndex: 8, + }, + 37: { + Index: 37, + BetChangeList: 150, + BetSizeIndex: 4, + BetLevelIndex: 9, + }, + 38: { + Index: 38, + BetChangeList: 160, + BetSizeIndex: 5, + BetLevelIndex: 3, + }, + 39: { + Index: 39, + BetChangeList: 200, + BetSizeIndex: 5, + BetLevelIndex: 4, + }, + 40: { + Index: 40, + BetChangeList: 240, + BetSizeIndex: 5, + BetLevelIndex: 5, + }, + 41: { + Index: 41, + BetChangeList: 280, + BetSizeIndex: 5, + BetLevelIndex: 6, + }, + 42: { + Index: 42, + BetChangeList: 320, + BetSizeIndex: 5, + BetLevelIndex: 7, + }, + 43: { + Index: 43, + BetChangeList: 360, + BetSizeIndex: 5, + BetLevelIndex: 8, + }, + 44: { + Index: 44, + BetChangeList: 400, + BetSizeIndex: 5, + BetLevelIndex: 9, + }, + 45: { + Index: 45, + BetChangeList: 3, + BetSizeIndex: 6, + BetLevelIndex: 0, + }, + 46: { + Index: 46, + BetChangeList: 5, + BetSizeIndex: 7, + BetLevelIndex: 0, + }, + 47: { + Index: 47, + BetChangeList: 25, + BetSizeIndex: 8, + BetLevelIndex: 0, + }, + 48: { + Index: 48, + BetChangeList: 300, + BetSizeIndex: 9, + BetLevelIndex: 0, + }, + } + + GatesOfOlympusBetBetLevel = map[int64]*structs.GatesOfOlympusBetBetLevel{ + 0: { + Index: 0, + BetLevel: 1, + }, + 1: { + Index: 1, + BetLevel: 2, + }, + 2: { + Index: 2, + BetLevel: 3, + }, + 3: { + Index: 3, + BetLevel: 4, + }, + 4: { + Index: 4, + BetLevel: 5, + }, + 5: { + Index: 5, + BetLevel: 6, + }, + 6: { + Index: 6, + BetLevel: 7, + }, + 7: { + Index: 7, + BetLevel: 8, + }, + 8: { + Index: 8, + BetLevel: 9, + }, + 9: { + Index: 9, + BetLevel: 10, + }, + } + + GatesOfOlympusBetBetLine = map[int64]*structs.GatesOfOlympusBetBetLine{ + 0: { + Index: 0, + BetLine: 20, + BaseBet: 1, + }, + } + + GatesOfOlympusBetBetSize = map[int64]*structs.GatesOfOlympusBetBetSize{ + 0: { + Index: 0, + BetSize: 100, + }, + 1: { + Index: 1, + BetSize: 1000, + }, + 2: { + Index: 2, + BetSize: 2000, + }, + 3: { + Index: 3, + BetSize: 5000, + }, + 4: { + Index: 4, + BetSize: 7500, + }, + 5: { + Index: 5, + BetSize: 20000, + }, + 6: { + Index: 6, + BetSize: 1500, + }, + 7: { + Index: 7, + BetSize: 2500, + }, + 8: { + Index: 8, + BetSize: 12500, + }, + 9: { + Index: 9, + BetSize: 150000, + }, + } + + GatesOfOlympusBetFirstBet = map[int64]*structs.GatesOfOlympusBetFirstBet{ + 1: { + Index: 1, + BetSizeIndex: 1, + BetLevelIndex: 1, + }, + } + + GatesOfOlympusFormation = []*structs.GatesOfOlympusFormation{ + { + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "BaseSpin1", + ID: 1, + SeqID: 1, + Reel: "BaseSpin1", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "BaseSpin2", + ID: 1, + SeqID: 1, + Reel: "BaseSpin2", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "BaseSpin3", + ID: 1, + SeqID: 1, + Reel: "BaseSpin3", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "BaseSpin7", + ID: 1, + SeqID: 1, + Reel: "BaseSpin7", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "BaseSpin8", + ID: 1, + SeqID: 1, + Reel: "BaseSpin8", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 2, + NodeType: "FreeSpin", + ID: 1, + SeqID: 1, + Reel: "FreeSpin", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 2, + NodeType: "FreeSpin4", + ID: 1, + SeqID: 1, + Reel: "FreeSpin4", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 2, + NodeType: "FreeSpin5", + ID: 1, + SeqID: 1, + Reel: "FreeSpin5", + Matrix: "SameForm5X6TypeA", + Symbol: "Default", + FirstInitMethod: 3, + OtherInitMethod: 3, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "MoreScatterBaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "SameForm5X6TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "MoreScatterBaseSpin1", + ID: 1, + SeqID: 1, + Reel: "BaseSpin1", + Matrix: "SameForm5X6TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "MoreScatterBaseSpin2", + ID: 1, + SeqID: 1, + Reel: "BaseSpin2", + Matrix: "SameForm5X6TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "MoreScatterBaseSpin3", + ID: 1, + SeqID: 1, + Reel: "BaseSpin3", + Matrix: "SameForm5X6TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "MoreScatterBaseSpin7", + ID: 1, + SeqID: 1, + Reel: "BaseSpin7", + Matrix: "SameForm5X6TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + { + SpinType: 1, + NodeType: "MoreScatterBaseSpin8", + ID: 1, + SeqID: 1, + Reel: "BaseSpin8", + Matrix: "SameForm5X6TypeB", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, + FirstInitSymbols: []int64{}, + OtherInitSymbols: []int64{}, + }, + } + + GatesOfOlympusMapRTPMode = map[int64]*structs.GatesOfOlympusMapRTPMode{ + 1: { + ID: 1, + TypeWeight: map[int64]*structs.GatesOfOlympusMapRTPModeTypeWeight{ + 1: { + ID: 1, + Weight: 1, + }, + }, + Desc: "96", + Rtp: 0.96, + }, + 2: { + ID: 2, + TypeWeight: map[int64]*structs.GatesOfOlympusMapRTPModeTypeWeight{ + 1: { + ID: 1, + Weight: 1, + }, + }, + Desc: "80", + Rtp: 0.8, + }, + 3: { + ID: 3, + TypeWeight: map[int64]*structs.GatesOfOlympusMapRTPModeTypeWeight{ + 1: { + ID: 1, + Weight: 1, + }, + }, + Desc: "120", + Rtp: 1.2, + }, + } + + GatesOfOlympusMultiplier = []*structs.GatesOfOlympusMultiplier{ + { + Multiple: 2, + ID: 13, + Weights: []int64{3150, 3150, 3150}, + }, + { + Multiple: 3, + ID: 14, + Weights: []int64{2250, 2250, 2000}, + }, + { + Multiple: 4, + ID: 15, + Weights: []int64{1500, 1500, 1500}, + }, + { + Multiple: 5, + ID: 16, + Weights: []int64{1100, 1100, 1000}, + }, + { + Multiple: 6, + ID: 17, + Weights: []int64{300, 300, 600}, + }, + { + Multiple: 8, + ID: 18, + Weights: []int64{150, 150, 400}, + }, + { + Multiple: 10, + ID: 19, + Weights: []int64{80, 80, 200}, + }, + { + Multiple: 12, + ID: 20, + Weights: []int64{30, 30, 100}, + }, + { + Multiple: 15, + ID: 21, + Weights: []int64{10, 10, 50}, + }, + { + Multiple: 20, + ID: 22, + Weights: []int64{20, 20, 50}, + }, + { + Multiple: 25, + ID: 23, + Weights: []int64{10, 10, 50}, + }, + { + Multiple: 50, + ID: 24, + Weights: []int64{1, 1, 25}, + }, + { + Multiple: 100, + ID: 25, + Weights: []int64{1, 1, 25}, + }, + { + Multiple: 250, + ID: 26, + Weights: []int64{0, 0, 10}, + }, + { + Multiple: 500, + ID: 27, + Weights: []int64{0, 0, 10}, + }, + } + + GatesOfOlympusMultiplierKeyID = map[int64]*structs.GatesOfOlympusMultiplierKeyID{ + 13: { + Multiple: 2, + ID: 13, + Weights: []int64{3150, 3150, 3150}, + }, + 14: { + Multiple: 3, + ID: 14, + Weights: []int64{2250, 2250, 2000}, + }, + 15: { + Multiple: 4, + ID: 15, + Weights: []int64{1500, 1500, 1500}, + }, + 16: { + Multiple: 5, + ID: 16, + Weights: []int64{1100, 1100, 1000}, + }, + 17: { + Multiple: 6, + ID: 17, + Weights: []int64{300, 300, 600}, + }, + 18: { + Multiple: 8, + ID: 18, + Weights: []int64{150, 150, 400}, + }, + 19: { + Multiple: 10, + ID: 19, + Weights: []int64{80, 80, 200}, + }, + 20: { + Multiple: 12, + ID: 20, + Weights: []int64{30, 30, 100}, + }, + 21: { + Multiple: 15, + ID: 21, + Weights: []int64{10, 10, 50}, + }, + 22: { + Multiple: 20, + ID: 22, + Weights: []int64{20, 20, 50}, + }, + 23: { + Multiple: 25, + ID: 23, + Weights: []int64{10, 10, 50}, + }, + 24: { + Multiple: 50, + ID: 24, + Weights: []int64{1, 1, 25}, + }, + 25: { + Multiple: 100, + ID: 25, + Weights: []int64{1, 1, 25}, + }, + 26: { + Multiple: 250, + ID: 26, + Weights: []int64{0, 0, 10}, + }, + 27: { + Multiple: 500, + ID: 27, + Weights: []int64{0, 0, 10}, + }, + } + + GatesOfOlympusReelBaseSpinRange = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelBaseSpinReel = [][]int64{ + {1, 6, 6, 11, 11, 10, 10, 9, 9, 6, 6, 8, 8, 8, 10, 10, 10, 11, 11, 6, 6, 10, 10, 10, 8, 8, 11, 11, 4, 4, 9, 9, 8, 8, 11, 11, 10, 10, 5, 5, 8, 8, 11, 11, 11, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 11, 11, 11, 5, 5, 7, 7, 9}, + {1, 9, 9, 6, 6, 8, 8, 10, 11, 11, 9, 9, 10, 10, 10, 4, 4, 9, 9, 9, 11, 11, 8, 8, 10, 10, 5, 5, 8, 8, 3, 3, 6, 6, 10, 10, 10, 9, 9, 4, 4, 1, 3, 3, 11, 11, 5, 5, 10, 10, 7, 7, 9, 9, 6, 6, 10, 10, 8, 8, 11, 11, 11}, + {1, 5, 5, 5, 8, 8, 11, 11, 5, 5, 9, 9, 6, 6, 7, 7, 3, 3, 5, 5, 5, 7, 7, 8, 8, 11, 11, 4, 4, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 7, 7, 7, 4, 4, 9, 9, 10, 10, 8, 8, 11, 11, 8, 8, 8, 10, 10, 11, 11, 6, 6, 7, 7}, + {1, 4, 4, 11, 11, 5, 5, 7, 7, 9, 9, 11, 11, 10, 10, 4, 4, 9, 9, 11, 11, 5, 5, 8, 8, 10, 10, 11, 11, 5, 5, 3, 3, 9, 9, 6, 6, 10, 10, 4, 4, 7, 7, 7, 11, 11, 6, 6, 6, 9, 9, 10, 10, 10, 11, 11, 3, 3, 3, 7, 7, 10, 10}, + {1, 9, 10, 10, 11, 11, 6, 6, 8, 8, 5, 5, 11, 11, 6, 6, 8, 8, 10, 10, 11, 11, 6, 6, 10, 10, 4, 4, 9, 9, 7, 7, 4, 4, 4, 5, 5, 9, 9, 8, 8, 8, 11, 11, 7, 7, 9, 9, 9, 3, 3, 11, 11, 11, 10, 10, 9, 9, 5, 5, 7, 7, 7}, + {1, 6, 6, 6, 4, 4, 9, 9, 8, 8, 7, 7, 11, 11, 9, 9, 7, 7, 8, 8, 5, 5, 11, 11, 11, 9, 9, 8, 8, 10, 10, 5, 5, 7, 7, 11, 11, 10, 10, 3, 3, 6, 6, 6, 11, 11, 9, 9, 9, 10, 10, 10, 4, 4, 4, 3, 3, 9, 9, 5, 5, 8, 8}, + } + + GatesOfOlympusReelBaseSpinWeight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelBaseSpin1Range = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelBaseSpin1Reel = [][]int64{ + {1, 6, 6, 11, 11, 10, 10, 9, 9, 6, 6, 8, 8, 8, 10, 10, 10, 11, 11, 6, 6, 10, 10, 10, 8, 8, 11, 11, 4, 4, 9, 9, 8, 8, 11, 11, 10, 10, 5, 5, 8, 8, 11, 11, 11, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 11, 11, 11, 5, 5, 7, 7, 9}, + {1, 9, 9, 6, 6, 8, 8, 10, 11, 11, 9, 9, 10, 10, 10, 4, 4, 9, 9, 9, 11, 11, 8, 8, 10, 10, 5, 5, 8, 8, 3, 3, 6, 6, 10, 10, 10, 9, 9, 4, 4, 1, 3, 3, 11, 11, 5, 5, 10, 10, 7, 7, 9, 9, 6, 6, 10, 10, 8, 8, 11, 11, 11}, + {1, 5, 5, 5, 8, 8, 11, 11, 5, 5, 9, 9, 6, 6, 7, 7, 3, 3, 5, 5, 5, 7, 7, 8, 8, 11, 11, 4, 4, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 7, 7, 7, 4, 4, 9, 9, 10, 10, 8, 8, 11, 11, 8, 8, 8, 10, 10, 11, 11, 6, 6, 7, 7}, + {1, 4, 4, 11, 11, 5, 5, 7, 7, 9, 9, 11, 11, 10, 10, 4, 4, 9, 9, 11, 11, 5, 5, 8, 8, 10, 10, 11, 11, 5, 5, 3, 3, 9, 9, 6, 6, 10, 10, 4, 4, 7, 7, 7, 11, 11, 6, 6, 6, 9, 9, 10, 10, 10, 11, 11, 3, 3, 3, 7, 7, 10, 10}, + {1, 9, 10, 10, 11, 11, 6, 6, 8, 8, 5, 5, 11, 11, 6, 6, 8, 8, 10, 10, 11, 11, 6, 6, 10, 10, 4, 4, 9, 9, 7, 7, 4, 4, 4, 5, 5, 9, 9, 8, 8, 8, 11, 11, 7, 7, 9, 9, 9, 3, 3, 11, 11, 11, 10, 10, 9, 9, 5, 5, 7, 7, 7}, + {1, 6, 6, 6, 4, 4, 9, 9, 8, 8, 7, 7, 11, 11, 9, 9, 7, 7, 8, 8, 5, 5, 11, 11, 11, 9, 9, 8, 8, 10, 10, 5, 5, 7, 7, 11, 11, 10, 10, 3, 3, 6, 6, 6, 11, 11, 9, 9, 9, 10, 10, 10, 4, 4, 4, 3, 3, 9, 9, 5, 5, 8, 8}, + } + + GatesOfOlympusReelBaseSpin1Weight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelBaseSpin2Range = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelBaseSpin2Reel = [][]int64{ + {1, 6, 6, 11, 8, 10, 11, 9, 7, 6, 6, 11, 8, 8, 9, 10, 7, 11, 11, 8, 6, 10, 9, 10, 8, 8, 3, 11, 11, 4, 4, 9, 11, 8, 7, 11, 11, 9, 10, 5, 5, 8, 10, 11, 6, 11, 10, 7, 11, 9, 10, 10, 4, 4, 3, 3, 7, 6, 11, 5, 5, 7, 10, 9}, + {1, 9, 9, 6, 6, 8, 8, 10, 4, 11, 9, 9, 10, 10, 11, 4, 10, 8, 9, 9, 7, 11, 8, 8, 10, 10, 5, 5, 7, 9, 10, 3, 6, 7, 8, 6, 11, 9, 7, 4, 4, 1, 3, 11, 11, 9, 5, 5, 10, 6, 7, 7, 10, 9, 6, 6, 11, 10, 8, 8, 11, 7, 11}, + {1, 5, 11, 5, 8, 8, 11, 7, 5, 10, 9, 7, 10, 6, 7, 1, 10, 3, 5, 10, 5, 7, 7, 8, 7, 9, 11, 11, 4, 4, 7, 10, 9, 11, 11, 10, 4, 4, 9, 3, 7, 10, 7, 4, 11, 9, 9, 10, 7, 8, 8, 11, 7, 8, 9, 8, 10, 7, 11, 11, 6, 6, 8, 7}, + {1, 4, 4, 11, 10, 5, 5, 11, 11, 9, 9, 6, 11, 10, 9, 4, 4, 9, 9, 4, 11, 10, 5, 8, 8, 8, 10, 10, 11, 11, 5, 5, 3, 11, 9, 9, 6, 8, 6, 10, 4, 4, 7, 9, 7, 11, 11, 6, 7, 6, 10, 9, 8, 7, 10, 3, 11, 3, 11, 3, 7, 7, 10, 10}, + {1, 9, 10, 10, 11, 7, 4, 6, 8, 8, 1, 5, 9, 11, 6, 6, 8, 8, 10, 10, 11, 6, 11, 6, 11, 10, 7, 4, 4, 11, 9, 7, 6, 8, 9, 4, 5, 5, 7, 9, 7, 8, 8, 9, 10, 7, 7, 11, 11, 9, 3, 3, 11, 11, 8, 10, 10, 9, 9, 5, 5, 10, 11, 7}, + {1, 6, 7, 6, 4, 11, 9, 9, 10, 8, 3, 7, 11, 6, 9, 9, 8, 7, 10, 8, 5, 6, 11, 10, 11, 9, 9, 8, 8, 7, 10, 5, 5, 7, 7, 11, 9, 10, 11, 3, 7, 6, 10, 6, 11, 11, 9, 9, 9, 10, 8, 10, 4, 11, 4, 3, 3, 9, 9, 5, 5, 9, 8}, + } + + GatesOfOlympusReelBaseSpin2Weight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelBaseSpin3Range = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelBaseSpin3Reel = [][]int64{ + {12, 6, 6, 11, 11, 10, 10, 9, 9, 6, 6, 8, 8, 8, 10, 10, 10, 11, 11, 6, 6, 10, 10, 10, 8, 8, 11, 11, 4, 4, 9, 9, 8, 8, 11, 11, 10, 10, 5, 5, 8, 8, 11, 11, 11, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 11, 11, 11, 5, 5, 7, 7, 9}, + {12, 9, 9, 6, 6, 8, 8, 10, 11, 11, 9, 9, 10, 10, 10, 4, 4, 9, 9, 9, 11, 11, 8, 8, 10, 10, 5, 5, 8, 8, 3, 3, 6, 6, 10, 10, 10, 9, 9, 4, 4, 12, 3, 3, 11, 11, 5, 5, 10, 10, 7, 7, 9, 9, 6, 6, 10, 10, 8, 8, 11, 11, 11}, + {12, 5, 5, 5, 8, 8, 11, 11, 5, 5, 9, 9, 6, 6, 7, 7, 3, 3, 5, 5, 5, 7, 7, 8, 8, 11, 11, 4, 4, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 7, 7, 7, 4, 4, 9, 9, 10, 10, 8, 8, 11, 11, 8, 8, 8, 10, 10, 11, 11, 6, 6, 7, 7}, + {12, 4, 4, 11, 11, 5, 5, 7, 7, 9, 9, 11, 11, 10, 10, 4, 4, 9, 9, 11, 11, 5, 5, 8, 8, 10, 10, 11, 11, 5, 5, 3, 3, 9, 9, 6, 6, 10, 10, 4, 4, 7, 7, 7, 11, 11, 6, 6, 6, 9, 9, 10, 10, 10, 11, 11, 3, 3, 3, 7, 7, 10, 10}, + {12, 9, 10, 10, 11, 11, 6, 6, 8, 8, 5, 5, 11, 11, 6, 6, 8, 8, 10, 10, 11, 11, 6, 6, 10, 10, 4, 4, 9, 9, 7, 7, 4, 4, 4, 5, 5, 9, 9, 8, 8, 8, 11, 11, 7, 7, 9, 9, 9, 3, 3, 11, 11, 11, 10, 10, 9, 9, 5, 5, 7, 7, 7}, + {12, 6, 6, 6, 4, 4, 9, 9, 8, 8, 7, 7, 11, 11, 9, 9, 7, 7, 8, 8, 5, 5, 11, 11, 11, 9, 9, 8, 8, 10, 10, 5, 5, 7, 7, 11, 11, 10, 10, 3, 3, 6, 6, 6, 11, 11, 9, 9, 9, 10, 10, 10, 4, 4, 4, 3, 3, 9, 9, 5, 5, 8, 8}, + } + + GatesOfOlympusReelBaseSpin3Weight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelBaseSpin7Range = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelBaseSpin7Reel = [][]int64{ + {11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6}, + {1, 9, 3, 8, 5, 1, 10, 7, 6, 11, 1, 3, 8, 5, 4, 1, 7, 6, 11, 9, 1, 8, 5, 4, 10, 1, 6, 11, 9, 3, 1, 5, 4, 10, 7, 1, 11, 9, 3, 8, 1, 4, 10, 7, 6}, + {1, 9, 3, 8, 5, 1, 10, 7, 6, 11, 1, 3, 8, 5, 4, 1, 7, 6, 11, 9, 1, 8, 5, 4, 10, 1, 6, 11, 9, 3, 1, 5, 4, 10, 7, 1, 11, 9, 3, 8, 1, 4, 10, 7, 6}, + {1, 9, 3, 8, 5, 1, 10, 7, 6, 11, 1, 3, 8, 5, 4, 1, 7, 6, 11, 9, 1, 8, 5, 4, 10, 1, 6, 11, 9, 3, 1, 5, 4, 10, 7, 1, 11, 9, 3, 8, 1, 4, 10, 7, 6}, + {1, 9, 3, 8, 5, 1, 10, 7, 6, 11, 1, 3, 8, 5, 4, 1, 7, 6, 11, 9, 1, 8, 5, 4, 10, 1, 6, 11, 9, 3, 1, 5, 4, 10, 7, 1, 11, 9, 3, 8, 1, 4, 10, 7, 6}, + {11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6, 11, 9, 3, 8, 5, 4, 10, 7, 6}, + } + + GatesOfOlympusReelBaseSpin7Weight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelBaseSpin8Range = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelBaseSpin8Reel = [][]int64{ + {1, 6, 6, 11, 8, 10, 11, 9, 7, 6, 6, 11, 8, 8, 9, 10, 7, 11, 11, 8, 6, 10, 9, 4, 11, 11, 4, 4, 9, 11, 8, 7, 11, 1, 9, 10, 5, 5, 8, 10, 11, 6, 11, 10, 7, 11, 9, 10, 10, 4, 4, 3, 3, 7, 6, 11, 5, 5, 7, 10, 9}, + {1, 9, 9, 6, 6, 8, 8, 10, 4, 11, 9, 9, 10, 10, 11, 4, 10, 8, 9, 9, 7, 11, 8, 7, 5, 5, 7, 9, 10, 3, 6, 7, 8, 6, 11, 9, 7, 4, 4, 1, 3, 11, 11, 9, 5, 5, 10, 6, 7, 7, 10, 9, 6, 6, 11, 10, 8, 8, 11, 7, 11}, + {1, 5, 11, 5, 8, 8, 11, 7, 5, 10, 9, 7, 10, 6, 7, 1, 10, 3, 5, 10, 5, 7, 11, 11, 11, 4, 4, 7, 10, 9, 11, 11, 10, 4, 4, 9, 3, 7, 10, 7, 4, 11, 9, 9, 10, 7, 8, 8, 11, 7, 8, 9, 8, 10, 7, 11, 11, 6, 6, 8, 7}, + {1, 4, 4, 11, 10, 5, 5, 11, 11, 9, 9, 6, 11, 10, 9, 4, 4, 9, 9, 4, 8, 8, 10, 10, 11, 11, 5, 5, 3, 11, 9, 9, 1, 8, 6, 10, 4, 4, 7, 9, 7, 11, 11, 6, 7, 6, 10, 9, 8, 7, 10, 3, 11, 3, 11, 3, 7, 7, 10, 10}, + {1, 9, 10, 10, 11, 7, 4, 6, 8, 8, 1, 5, 9, 11, 6, 6, 8, 8, 10, 10, 11, 10, 7, 4, 4, 11, 9, 7, 6, 8, 9, 4, 5, 5, 7, 9, 7, 8, 8, 9, 10, 7, 7, 11, 11, 9, 3, 3, 11, 11, 8, 10, 10, 9, 9, 5, 5, 10, 11, 7}, + {1, 6, 7, 6, 4, 11, 9, 9, 10, 8, 3, 7, 11, 6, 9, 9, 8, 7, 10, 8, 5, 6, 9, 9, 8, 8, 7, 10, 5, 5, 7, 7, 11, 9, 10, 11, 3, 7, 4, 10, 6, 11, 11, 9, 9, 9, 10, 8, 10, 4, 11, 4, 3, 3, 9, 9, 5, 5, 9, 8}, + } + + GatesOfOlympusReelBaseSpin8Weight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelChoose = []*structs.GatesOfOlympusReelChoose{ + { + ID: 1, + IsFreeSpin: false, + NodeType: "BaseSpin1", + Weights: []int64{40, 162, 0}, + }, + { + ID: 2, + IsFreeSpin: false, + NodeType: "BaseSpin2", + Weights: []int64{66, 0, 0}, + }, + { + ID: 3, + IsFreeSpin: false, + NodeType: "BaseSpin3", + Weights: []int64{20, 68, 0}, + }, + { + ID: 4, + IsFreeSpin: false, + NodeType: "BaseSpin7", + Weights: []int64{0, 0, 1}, + }, + { + ID: 5, + IsFreeSpin: false, + NodeType: "BaseSpin8", + Weights: []int64{1, 180, 0}, + }, + { + ID: 6, + IsFreeSpin: true, + NodeType: "FreeSpin4", + Weights: []int64{1, 1, 1}, + }, + { + ID: 7, + IsFreeSpin: true, + NodeType: "FreeSpin5", + Weights: []int64{2, 2, 2}, + }, + } + + GatesOfOlympusReelFreeSpinRange = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelFreeSpinReel = [][]int64{ + {12, 6, 6, 11, 11, 10, 10, 9, 9, 6, 6, 8, 8, 8, 10, 10, 10, 11, 11, 6, 6, 10, 10, 10, 8, 8, 1, 11, 11, 4, 4, 9, 9, 8, 8, 11, 11, 10, 10, 5, 5, 8, 8, 11, 11, 11, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 11, 11, 11, 5, 5, 7, 7, 9}, + {12, 9, 9, 6, 6, 8, 8, 10, 11, 11, 9, 9, 10, 10, 10, 4, 4, 9, 9, 9, 11, 11, 8, 8, 10, 10, 1, 5, 5, 8, 8, 3, 3, 6, 6, 10, 10, 10, 9, 9, 4, 4, 12, 3, 3, 11, 11, 5, 5, 10, 10, 7, 7, 9, 9, 6, 6, 10, 10, 8, 8, 11, 11, 11}, + {12, 5, 5, 5, 8, 8, 11, 11, 5, 5, 9, 9, 6, 6, 7, 7, 3, 3, 5, 5, 5, 7, 7, 8, 8, 1, 11, 11, 4, 4, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 7, 7, 7, 4, 4, 9, 9, 10, 10, 8, 8, 11, 11, 8, 8, 8, 10, 10, 11, 11, 6, 6, 7, 7}, + {12, 4, 4, 11, 11, 5, 5, 7, 7, 9, 9, 11, 11, 10, 10, 4, 4, 9, 9, 11, 11, 5, 5, 1, 8, 8, 10, 10, 11, 11, 5, 5, 3, 3, 9, 9, 6, 6, 10, 10, 4, 4, 7, 7, 7, 11, 11, 6, 6, 6, 9, 9, 10, 10, 10, 11, 11, 3, 3, 3, 7, 7, 10, 10}, + {12, 9, 10, 10, 11, 11, 6, 6, 8, 8, 5, 5, 11, 11, 6, 6, 8, 8, 10, 10, 11, 11, 6, 6, 1, 10, 10, 4, 4, 9, 9, 7, 7, 4, 4, 4, 5, 5, 9, 9, 8, 8, 8, 11, 11, 7, 7, 9, 9, 9, 3, 3, 11, 11, 11, 10, 10, 9, 9, 5, 5, 7, 7, 7}, + {12, 6, 6, 6, 4, 4, 9, 9, 8, 8, 7, 7, 11, 11, 9, 9, 7, 7, 8, 8, 5, 5, 11, 11, 11, 1, 9, 9, 8, 8, 10, 10, 5, 5, 7, 7, 11, 11, 10, 10, 3, 3, 6, 6, 6, 11, 11, 9, 9, 9, 10, 10, 10, 4, 4, 4, 3, 3, 9, 9, 5, 5, 8, 8}, + } + + GatesOfOlympusReelFreeSpinWeight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelFreeSpin4Range = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelFreeSpin4Reel = [][]int64{ + {12, 6, 6, 11, 11, 10, 10, 9, 9, 6, 6, 8, 8, 8, 10, 10, 10, 11, 11, 6, 6, 10, 10, 10, 8, 8, 1, 11, 11, 4, 4, 9, 9, 8, 8, 11, 11, 10, 10, 5, 5, 8, 8, 11, 11, 11, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 11, 11, 11, 5, 5, 7, 7, 9}, + {12, 9, 9, 6, 6, 8, 8, 10, 11, 11, 9, 9, 10, 10, 10, 4, 4, 9, 9, 9, 11, 11, 8, 8, 10, 10, 1, 5, 5, 8, 8, 3, 3, 6, 6, 10, 10, 10, 9, 9, 4, 4, 12, 3, 3, 11, 11, 5, 5, 10, 10, 7, 7, 9, 9, 6, 6, 10, 10, 8, 8, 11, 11, 11}, + {12, 5, 5, 5, 8, 8, 11, 11, 5, 5, 9, 9, 6, 6, 7, 7, 3, 3, 5, 5, 5, 7, 7, 8, 8, 1, 11, 11, 4, 4, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 7, 7, 7, 4, 4, 9, 9, 10, 10, 8, 8, 11, 11, 8, 8, 8, 10, 10, 11, 11, 6, 6, 7, 7}, + {12, 4, 4, 11, 11, 5, 5, 7, 7, 9, 9, 11, 11, 10, 10, 4, 4, 9, 9, 11, 11, 5, 5, 1, 8, 8, 10, 10, 11, 11, 5, 5, 3, 3, 9, 9, 6, 6, 10, 10, 4, 4, 7, 7, 7, 11, 11, 6, 6, 6, 9, 9, 10, 10, 10, 11, 11, 3, 3, 3, 7, 7, 10, 10}, + {12, 9, 10, 10, 11, 11, 6, 6, 8, 8, 5, 5, 11, 11, 6, 6, 8, 8, 10, 10, 11, 11, 6, 6, 1, 10, 10, 4, 4, 9, 9, 7, 7, 4, 4, 4, 5, 5, 9, 9, 8, 8, 8, 11, 11, 7, 7, 9, 9, 9, 3, 3, 11, 11, 11, 10, 10, 9, 9, 5, 5, 7, 7, 7}, + {12, 6, 6, 6, 4, 4, 9, 9, 8, 8, 7, 7, 11, 11, 9, 9, 7, 7, 8, 8, 5, 5, 11, 11, 11, 1, 9, 9, 8, 8, 10, 10, 5, 5, 7, 7, 11, 11, 10, 10, 3, 3, 6, 6, 6, 11, 11, 9, 9, 9, 10, 10, 10, 4, 4, 4, 3, 3, 9, 9, 5, 5, 8, 8}, + } + + GatesOfOlympusReelFreeSpin4Weight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusReelFreeSpin5Range = [][]int64{ + {5, 5, 5, 5, 5, 5}, + } + + GatesOfOlympusReelFreeSpin5Reel = [][]int64{ + {12, 6, 6, 11, 11, 10, 10, 9, 9, 6, 6, 8, 8, 8, 10, 10, 10, 11, 11, 6, 6, 10, 10, 10, 8, 8, 11, 11, 4, 4, 9, 9, 8, 8, 11, 11, 10, 10, 5, 5, 8, 8, 11, 11, 11, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 11, 11, 11, 5, 5, 7, 7, 9}, + {12, 9, 9, 6, 6, 8, 8, 10, 11, 11, 9, 9, 10, 10, 10, 4, 4, 9, 9, 9, 11, 11, 8, 8, 10, 10, 5, 5, 8, 8, 3, 3, 6, 6, 10, 10, 10, 9, 9, 4, 4, 12, 3, 3, 11, 11, 5, 5, 10, 10, 7, 7, 9, 9, 6, 6, 10, 10, 8, 8, 11, 11, 11}, + {12, 5, 5, 5, 8, 8, 11, 11, 5, 5, 9, 9, 6, 6, 7, 7, 3, 3, 5, 5, 5, 7, 7, 8, 8, 11, 11, 4, 4, 7, 7, 9, 9, 10, 10, 4, 4, 3, 3, 7, 7, 7, 4, 4, 9, 9, 10, 10, 8, 8, 11, 11, 8, 8, 8, 10, 10, 11, 11, 6, 6, 7, 7}, + {12, 4, 4, 11, 11, 5, 5, 7, 7, 9, 9, 11, 11, 10, 10, 4, 4, 9, 9, 11, 11, 5, 5, 8, 8, 10, 10, 11, 11, 5, 5, 3, 3, 9, 9, 6, 6, 10, 10, 4, 4, 7, 7, 7, 11, 11, 6, 6, 6, 9, 9, 10, 10, 10, 11, 11, 3, 3, 3, 7, 7, 10, 10}, + {12, 9, 10, 10, 11, 11, 6, 6, 8, 8, 5, 5, 11, 11, 6, 6, 8, 8, 10, 10, 11, 11, 6, 6, 10, 10, 4, 4, 9, 9, 7, 7, 4, 4, 4, 5, 5, 9, 9, 8, 8, 8, 11, 11, 7, 7, 9, 9, 9, 3, 3, 11, 11, 11, 10, 10, 9, 9, 5, 5, 7, 7, 7}, + {12, 6, 6, 6, 4, 4, 9, 9, 8, 8, 7, 7, 11, 11, 9, 9, 7, 7, 8, 8, 5, 5, 11, 11, 11, 9, 9, 8, 8, 10, 10, 5, 5, 7, 7, 11, 11, 10, 10, 3, 3, 6, 6, 6, 11, 11, 9, 9, 9, 10, 10, 10, 4, 4, 4, 3, 3, 9, 9, 5, 5, 8, 8}, + } + + GatesOfOlympusReelFreeSpin5Weight = [][]float64{ + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + } + + GatesOfOlympusScatter = map[int64]*structs.GatesOfOlympusScatter{ + 1: { + ScatterCount: 1, + FreeSpinBouts: 0, + FreeSpinExtraBouts: 0, + BasePayrate: 0, + FreePayrate: 0, + }, + 2: { + ScatterCount: 2, + FreeSpinBouts: 0, + FreeSpinExtraBouts: 0, + BasePayrate: 0, + FreePayrate: 0, + }, + 3: { + ScatterCount: 3, + FreeSpinBouts: 0, + FreeSpinExtraBouts: 5, + BasePayrate: 0, + FreePayrate: 0, + }, + 4: { + ScatterCount: 4, + FreeSpinBouts: 15, + FreeSpinExtraBouts: 5, + BasePayrate: 3, + FreePayrate: 3, + }, + 5: { + ScatterCount: 5, + FreeSpinBouts: 15, + FreeSpinExtraBouts: 5, + BasePayrate: 5, + FreePayrate: 5, + }, + 6: { + ScatterCount: 6, + FreeSpinBouts: 15, + FreeSpinExtraBouts: 5, + BasePayrate: 100, + FreePayrate: 100, + }, + } + + GatesOfOlympusSymbol = map[int64]*structs.GatesOfOlympusSymbol{ + 1: { + ID: 1, + Name: "Scatter", + IsWild: false, + Group: []int64{1}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 2: { + ID: 2, + Name: "无", + IsWild: false, + Group: []int64{2}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 3: { + ID: 3, + Name: "皇冠", + IsWild: false, + Group: []int64{3}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 200, 200, 500, 500, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}, + ClientOrder: 1, + ClientDsc: "", + }, + 4: { + ID: 4, + Name: "沙漏", + IsWild: false, + Group: []int64{4}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 50, 50, 200, 200, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500}, + ClientOrder: 2, + ClientDsc: "", + }, + 5: { + ID: 5, + Name: "戒指", + IsWild: false, + Group: []int64{5}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 40, 40, 100, 100, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300}, + ClientOrder: 3, + ClientDsc: "", + }, + 6: { + ID: 6, + Name: "酒杯", + IsWild: false, + Group: []int64{6}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 30, 30, 40, 40, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240}, + ClientOrder: 4, + ClientDsc: "", + }, + 7: { + ID: 7, + Name: "红宝石", + IsWild: false, + Group: []int64{7}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 20, 20, 30, 30, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200}, + ClientOrder: 5, + ClientDsc: "", + }, + 8: { + ID: 8, + Name: "紫宝石", + IsWild: false, + Group: []int64{8}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 16, 16, 24, 24, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160}, + ClientOrder: 6, + ClientDsc: "", + }, + 9: { + ID: 9, + Name: "黄宝石", + IsWild: false, + Group: []int64{9}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 10, 10, 20, 20, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}, + ClientOrder: 7, + ClientDsc: "", + }, + 10: { + ID: 10, + Name: "绿宝石", + IsWild: false, + Group: []int64{10}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 8, 8, 18, 18, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80}, + ClientOrder: 8, + ClientDsc: "", + }, + 11: { + ID: 11, + Name: "蓝宝石", + IsWild: false, + Group: []int64{11}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 5, 5, 15, 15, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, + ClientOrder: 9, + ClientDsc: "", + }, + 12: { + ID: 12, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 13: { + ID: 13, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 14: { + ID: 14, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 15: { + ID: 15, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 16: { + ID: 16, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 17: { + ID: 17, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 18: { + ID: 18, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 19: { + ID: 19, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 20: { + ID: 20, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 21: { + ID: 21, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 22: { + ID: 22, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 23: { + ID: 23, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 24: { + ID: 24, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 25: { + ID: 25, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 26: { + ID: 26, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + 27: { + ID: 27, + Name: "倍乘", + IsWild: false, + Group: []int64{12}, + PayRate: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + ClientOrder: 0, + ClientDsc: "", + }, + } + + GatesOfOlympusSymbolBetRatio = []*structs.GatesOfOlympusSymbolBetRatio{ + { + BetRatio: 1, + }, + } + +} diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/matrix.go b/gamesrv/slotspkg/internal/exported/excel2go/base/matrix.go index 7c5f3de..c80afb9 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/matrix.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/matrix.go @@ -9,8 +9,8 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { MatrixFeaturesForm15X1TypeA = []*structs.MatrixFeaturesForm15X1TypeA{ { - Type: "FeatureForm15X1TypeA", - LinkType: 2, + Type: "FeatureForm15X1TypeA", + LinkType: 2, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -22,8 +22,8 @@ func init() { MatrixFeaturesForm19X1TypeA = []*structs.MatrixFeaturesForm19X1TypeA{ { - Type: "FeatureForm19X1TypeA", - LinkType: 2, + Type: "FeatureForm19X1TypeA", + LinkType: 2, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -35,8 +35,8 @@ func init() { MatrixFeaturesForm20X1TypeA = []*structs.MatrixFeaturesForm20X1TypeA{ { - Type: "FeatureForm20X1TypeA", - LinkType: 2, + Type: "FeatureForm20X1TypeA", + LinkType: 2, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -48,8 +48,8 @@ func init() { MatrixFeaturesForm25X1TypeA = []*structs.MatrixFeaturesForm25X1TypeA{ { - Type: "FeatureForm25X1TypeA", - LinkType: 2, + Type: "FeatureForm25X1TypeA", + LinkType: 2, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -61,8 +61,8 @@ func init() { MatrixFeaturesForm30X1TypeA = []*structs.MatrixFeaturesForm30X1TypeA{ { - Type: "FeatureForm30X1TypeA", - LinkType: 2, + Type: "FeatureForm30X1TypeA", + LinkType: 2, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -74,8 +74,8 @@ func init() { MatrixFeaturesForm35X1TypeA = []*structs.MatrixFeaturesForm35X1TypeA{ { - Type: "FeatureForm35X1TypeA", - LinkType: 2, + Type: "FeatureForm35X1TypeA", + LinkType: 2, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -87,8 +87,8 @@ func init() { MatrixFeaturesForm40X1 = []*structs.MatrixFeaturesForm40X1{ { - Type: "FeatureForm40X1", - LinkType: 2, + Type: "FeatureForm40X1", + LinkType: 2, Direction: 0, LineCount: 0, Lines: [][]int64{ @@ -100,8 +100,8 @@ func init() { MatrixFeaturesForm40X1TypeA = []*structs.MatrixFeaturesForm40X1TypeA{ { - Type: "FeatureForm40X1", - LinkType: 2, + Type: "FeatureForm40X1", + LinkType: 2, Direction: 0, LineCount: 0, Lines: [][]int64{ @@ -113,8 +113,8 @@ func init() { MatrixFeaturesForm7X1TypeA = []*structs.MatrixFeaturesForm7X1TypeA{ { - Type: "FeatureForm15X1TypeA", - LinkType: 2, + Type: "FeatureForm15X1TypeA", + LinkType: 2, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -126,8 +126,8 @@ func init() { MatrixLine100Form12X5TypeA = []*structs.MatrixLine100Form12X5TypeA{ { - Type: "Line100Form12X5TypeA", - LinkType: 0, + Type: "Line100Form12X5TypeA", + LinkType: 0, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -238,8 +238,8 @@ func init() { MatrixLine100Form6X5TypeA = []*structs.MatrixLine100Form6X5TypeA{ { - Type: "Line100Form6X5TypeA", - LinkType: 0, + Type: "Line100Form6X5TypeA", + LinkType: 0, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -350,8 +350,8 @@ func init() { MatrixLine10Form343TypeA = []*structs.MatrixLine10Form343TypeA{ { - Type: "Line10Form343TypeA", - LinkType: 0, + Type: "Line10Form343TypeA", + LinkType: 0, Direction: 0, LineCount: 10, Lines: [][]int64{ @@ -372,8 +372,8 @@ func init() { MatrixLine10Form3X5TypeA = []*structs.MatrixLine10Form3X5TypeA{ { - Type: "Line10Form3X5TypeA", - LinkType: 0, + Type: "Line10Form3X5TypeA", + LinkType: 0, Direction: 0, LineCount: 10, Lines: [][]int64{ @@ -394,8 +394,8 @@ func init() { MatrixLine1Form3X3TypeA = []*structs.MatrixLine1Form3X3TypeA{ { - Type: "Line1Form3X3TypeA", - LinkType: 0, + Type: "Line1Form3X3TypeA", + LinkType: 0, Direction: 0, LineCount: 1, Lines: [][]int64{ @@ -407,8 +407,8 @@ func init() { MatrixLine1Form3X3TypeB = []*structs.MatrixLine1Form3X3TypeB{ { - Type: "Line1Form3X3TypeB", - LinkType: 0, + Type: "Line1Form3X3TypeB", + LinkType: 0, Direction: 0, LineCount: 1, Lines: [][]int64{ @@ -420,8 +420,8 @@ func init() { MatrixLine1Form5X5TypeA = []*structs.MatrixLine1Form5X5TypeA{ { - Type: "Line1Form5X5TypeA", - LinkType: 0, + Type: "Line1Form5X5TypeA", + LinkType: 0, Direction: 0, LineCount: 1, Lines: [][]int64{ @@ -433,8 +433,8 @@ func init() { MatrixLine20Form3X5TypeA = []*structs.MatrixLine20Form3X5TypeA{ { - Type: "Line20Form3X5TypeA", - LinkType: 0, + Type: "Line20Form3X5TypeA", + LinkType: 0, Direction: 0, LineCount: 20, Lines: [][]int64{ @@ -465,8 +465,8 @@ func init() { MatrixLine25Form36666TypeA = []*structs.MatrixLine25Form36666TypeA{ { - Type: "Line25Form36666TypeA", - LinkType: 0, + Type: "Line25Form36666TypeA", + LinkType: 0, Direction: 0, LineCount: 25, Lines: [][]int64{ @@ -502,8 +502,8 @@ func init() { MatrixLine25Form3X5TypeA = []*structs.MatrixLine25Form3X5TypeA{ { - Type: "Line25Form3X5TypeA", - LinkType: 0, + Type: "Line25Form3X5TypeA", + LinkType: 0, Direction: 0, LineCount: 25, Lines: [][]int64{ @@ -539,8 +539,8 @@ func init() { MatrixLine25Form3X5TypeB = []*structs.MatrixLine25Form3X5TypeB{ { - Type: "Line25Form3X5TypeB", - LinkType: 0, + Type: "Line25Form3X5TypeB", + LinkType: 0, Direction: 2, LineCount: 25, Lines: [][]int64{ @@ -576,8 +576,8 @@ func init() { MatrixLine25Form3X5TypeC = []*structs.MatrixLine25Form3X5TypeC{ { - Type: "Line25Form3X5TypeC", - LinkType: 0, + Type: "Line25Form3X5TypeC", + LinkType: 0, Direction: 0, LineCount: 25, Lines: [][]int64{ @@ -613,8 +613,8 @@ func init() { MatrixLine25Form3X5TypeD = []*structs.MatrixLine25Form3X5TypeD{ { - Type: "Line25Form3X5TypeD", - LinkType: 0, + Type: "Line25Form3X5TypeD", + LinkType: 0, Direction: 0, LineCount: 25, Lines: [][]int64{ @@ -650,8 +650,8 @@ func init() { MatrixLine25Form3X5TypeE = []*structs.MatrixLine25Form3X5TypeE{ { - Type: "Line25Form3X5TypeE", - LinkType: 0, + Type: "Line25Form3X5TypeE", + LinkType: 0, Direction: 0, LineCount: 25, Lines: [][]int64{ @@ -687,8 +687,8 @@ func init() { MatrixLine30Form3X5TypeA = []*structs.MatrixLine30Form3X5TypeA{ { - Type: "Line30Form3X5TypeA", - LinkType: 0, + Type: "Line30Form3X5TypeA", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -729,8 +729,8 @@ func init() { MatrixLine30Form3X5TypeB = []*structs.MatrixLine30Form3X5TypeB{ { - Type: "Line30Form3X5TypeB", - LinkType: 0, + Type: "Line30Form3X5TypeB", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -771,8 +771,8 @@ func init() { MatrixLine30Form3X5TypeC = []*structs.MatrixLine30Form3X5TypeC{ { - Type: "Line30Form3X5TypeC", - LinkType: 0, + Type: "Line30Form3X5TypeC", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -813,8 +813,8 @@ func init() { MatrixLine30Form3X5TypeD = []*structs.MatrixLine30Form3X5TypeD{ { - Type: "Line30Form3X5TypeD", - LinkType: 0, + Type: "Line30Form3X5TypeD", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -855,8 +855,8 @@ func init() { MatrixLine30Form3X5TypeE = []*structs.MatrixLine30Form3X5TypeE{ { - Type: "Line30Form3X5TypeE", - LinkType: 0, + Type: "Line30Form3X5TypeE", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -897,8 +897,8 @@ func init() { MatrixLine30Form3X6TypeA = []*structs.MatrixLine30Form3X6TypeA{ { - Type: "Line30Form3X6TypeA", - LinkType: 0, + Type: "Line30Form3X6TypeA", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -939,8 +939,8 @@ func init() { MatrixLine30Form4X5TypeA = []*structs.MatrixLine30Form4X5TypeA{ { - Type: "Line30Form4X5TypeA", - LinkType: 0, + Type: "Line30Form4X5TypeA", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -981,8 +981,8 @@ func init() { MatrixLine30Form4X5TypeB = []*structs.MatrixLine30Form4X5TypeB{ { - Type: "Line30Form4X5TypeB", - LinkType: 0, + Type: "Line30Form4X5TypeB", + LinkType: 0, Direction: 0, LineCount: 30, Lines: [][]int64{ @@ -1023,8 +1023,8 @@ func init() { MatrixLine3Form3X3TypeA = []*structs.MatrixLine3Form3X3TypeA{ { - Type: "Line3Form3X3TypeA", - LinkType: 0, + Type: "Line3Form3X3TypeA", + LinkType: 0, Direction: 0, LineCount: 3, Lines: [][]int64{ @@ -1038,8 +1038,8 @@ func init() { MatrixLine40Form34543TypeA = []*structs.MatrixLine40Form34543TypeA{ { - Type: "Line40Form34543TypeA", - LinkType: 0, + Type: "Line40Form34543TypeA", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1090,8 +1090,8 @@ func init() { MatrixLine40Form3X5TypeA = []*structs.MatrixLine40Form3X5TypeA{ { - Type: "Line40Form3X5TypeA", - LinkType: 0, + Type: "Line40Form3X5TypeA", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1142,8 +1142,8 @@ func init() { MatrixLine40Form3X5TypeB = []*structs.MatrixLine40Form3X5TypeB{ { - Type: "Line40Form3X5TypeB", - LinkType: 0, + Type: "Line40Form3X5TypeB", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1194,8 +1194,8 @@ func init() { MatrixLine40Form3X5TypeC = []*structs.MatrixLine40Form3X5TypeC{ { - Type: "Line40Form3X5TypeC", - LinkType: 0, + Type: "Line40Form3X5TypeC", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1246,8 +1246,8 @@ func init() { MatrixLine40Form3X5TypeD = []*structs.MatrixLine40Form3X5TypeD{ { - Type: "Line40Form3X5TypeD", - LinkType: 0, + Type: "Line40Form3X5TypeD", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1298,8 +1298,8 @@ func init() { MatrixLine40Form4X5TypeA = []*structs.MatrixLine40Form4X5TypeA{ { - Type: "Line40Form4X5TypeA", - LinkType: 0, + Type: "Line40Form4X5TypeA", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1350,8 +1350,8 @@ func init() { MatrixLine40Form4X5TypeB = []*structs.MatrixLine40Form4X5TypeB{ { - Type: "Line40Form4X5TypeA", - LinkType: 0, + Type: "Line40Form4X5TypeA", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1402,8 +1402,8 @@ func init() { MatrixLine40Form4X5TypeC = []*structs.MatrixLine40Form4X5TypeC{ { - Type: "Line40Form4X5TypeC", - LinkType: 0, + Type: "Line40Form4X5TypeC", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1454,8 +1454,8 @@ func init() { MatrixLine40Form4X6TypeA = []*structs.MatrixLine40Form4X6TypeA{ { - Type: "Line40Form4X6TypeA", - LinkType: 0, + Type: "Line40Form4X6TypeA", + LinkType: 0, Direction: 0, LineCount: 40, Lines: [][]int64{ @@ -1506,8 +1506,8 @@ func init() { MatrixLine50Form3X5TypeA = []*structs.MatrixLine50Form3X5TypeA{ { - Type: "Line50Form3X5TypeA", - LinkType: 0, + Type: "Line50Form3X5TypeA", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -1568,8 +1568,8 @@ func init() { MatrixLine50Form3X5TypeB = []*structs.MatrixLine50Form3X5TypeB{ { - Type: "Line50Form3X5TypeB", - LinkType: 0, + Type: "Line50Form3X5TypeB", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -1630,8 +1630,8 @@ func init() { MatrixLine50Form3X5TypeC = []*structs.MatrixLine50Form3X5TypeC{ { - Type: "Line50Form3X5TypeC", - LinkType: 0, + Type: "Line50Form3X5TypeC", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -1692,8 +1692,8 @@ func init() { MatrixLine50Form3X5TypeD = []*structs.MatrixLine50Form3X5TypeD{ { - Type: "Line50Form3X5TypeD", - LinkType: 0, + Type: "Line50Form3X5TypeD", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -1754,8 +1754,8 @@ func init() { MatrixLine50Form3X5TypeE = []*structs.MatrixLine50Form3X5TypeE{ { - Type: "Line50Form3X5TypeE", - LinkType: 0, + Type: "Line50Form3X5TypeE", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -1816,8 +1816,8 @@ func init() { MatrixLine50Form3X5TypeF = []*structs.MatrixLine50Form3X5TypeF{ { - Type: "Line50Form3X5TypeF", - LinkType: 0, + Type: "Line50Form3X5TypeF", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -1878,8 +1878,8 @@ func init() { MatrixLine50Form3X5TypeG = []*structs.MatrixLine50Form3X5TypeG{ { - Type: "Line50Form3X5TypeG", - LinkType: 0, + Type: "Line50Form3X5TypeG", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -1940,8 +1940,8 @@ func init() { MatrixLine50Form3X5TypeH = []*structs.MatrixLine50Form3X5TypeH{ { - Type: "Line50Form3X5TypeH", - LinkType: 0, + Type: "Line50Form3X5TypeH", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2002,8 +2002,8 @@ func init() { MatrixLine50Form45454TypeA = []*structs.MatrixLine50Form45454TypeA{ { - Type: "Line50Form45454TypeA", - LinkType: 0, + Type: "Line50Form45454TypeA", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2064,8 +2064,8 @@ func init() { MatrixLine50Form4X5TypeA = []*structs.MatrixLine50Form4X5TypeA{ { - Type: "Line50Form4X5TypeA", - LinkType: 0, + Type: "Line50Form4X5TypeA", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2126,8 +2126,8 @@ func init() { MatrixLine50Form4X5TypeB = []*structs.MatrixLine50Form4X5TypeB{ { - Type: "Line50Form4X5TypeB", - LinkType: 0, + Type: "Line50Form4X5TypeB", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2188,8 +2188,8 @@ func init() { MatrixLine50Form4X5TypeC = []*structs.MatrixLine50Form4X5TypeC{ { - Type: "Line50Form4X5TypeC", - LinkType: 0, + Type: "Line50Form4X5TypeC", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2250,8 +2250,8 @@ func init() { MatrixLine50Form4X5TypeD = []*structs.MatrixLine50Form4X5TypeD{ { - Type: "Line50Form4X5TypeD", - LinkType: 0, + Type: "Line50Form4X5TypeD", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2312,8 +2312,8 @@ func init() { MatrixLine50Form4X5TypeE = []*structs.MatrixLine50Form4X5TypeE{ { - Type: "Line50Form4X5TypeE", - LinkType: 0, + Type: "Line50Form4X5TypeE", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2374,8 +2374,8 @@ func init() { MatrixLine50Form4X5TypeF = []*structs.MatrixLine50Form4X5TypeF{ { - Type: "Line50Form4X5TypeF", - LinkType: 0, + Type: "Line50Form4X5TypeF", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2436,8 +2436,8 @@ func init() { MatrixLine50Form4X6TypeA = []*structs.MatrixLine50Form4X6TypeA{ { - Type: "Line50Form4X6TypeA", - LinkType: 0, + Type: "Line50Form4X6TypeA", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2498,8 +2498,8 @@ func init() { MatrixLine50Form5X5TypeA = []*structs.MatrixLine50Form5X5TypeA{ { - Type: "Line50Form5X5TypeA", - LinkType: 0, + Type: "Line50Form5X5TypeA", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2560,8 +2560,8 @@ func init() { MatrixLine50Form5X5TypeB = []*structs.MatrixLine50Form5X5TypeB{ { - Type: "Line50Form5X5TypeB", - LinkType: 0, + Type: "Line50Form5X5TypeB", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2622,8 +2622,8 @@ func init() { MatrixLine50Form5X5TypeC = []*structs.MatrixLine50Form5X5TypeC{ { - Type: "Line50Form5X5TypeC", - LinkType: 0, + Type: "Line50Form5X5TypeC", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2684,8 +2684,8 @@ func init() { MatrixLine50Form6X5TypeA = []*structs.MatrixLine50Form6X5TypeA{ { - Type: "Line50Form6X5TypeA", - LinkType: 0, + Type: "Line50Form6X5TypeA", + LinkType: 0, Direction: 0, LineCount: 50, Lines: [][]int64{ @@ -2746,8 +2746,8 @@ func init() { MatrixLine5Form3X3TypeA = []*structs.MatrixLine5Form3X3TypeA{ { - Type: "Line5Form3X3TypeA", - LinkType: 0, + Type: "Line5Form3X3TypeA", + LinkType: 0, Direction: 0, LineCount: 5, Lines: [][]int64{ @@ -2763,8 +2763,8 @@ func init() { MatrixLine5Form3X3TypeB = []*structs.MatrixLine5Form3X3TypeB{ { - Type: "Line5Form3X3TypeB", - LinkType: 0, + Type: "Line5Form3X3TypeB", + LinkType: 0, Direction: 0, LineCount: 5, Lines: [][]int64{ @@ -2780,8 +2780,8 @@ func init() { MatrixLine60Form33633TypeA = []*structs.MatrixLine60Form33633TypeA{ { - Type: "Line60Form33633TypeA", - LinkType: 0, + Type: "Line60Form33633TypeA", + LinkType: 0, Direction: 0, LineCount: 60, Lines: [][]int64{ @@ -2852,8 +2852,8 @@ func init() { MatrixLine60Form8X5TypeA = []*structs.MatrixLine60Form8X5TypeA{ { - Type: "Line60Form8X5TypeA", - LinkType: 0, + Type: "Line60Form8X5TypeA", + LinkType: 0, Direction: 0, LineCount: 60, Lines: [][]int64{ @@ -2924,8 +2924,8 @@ func init() { MatrixLine65Form6X5TypeA = []*structs.MatrixLine65Form6X5TypeA{ { - Type: "Line65Form6X5TypeA", - LinkType: 0, + Type: "Line65Form6X5TypeA", + LinkType: 0, Direction: 0, LineCount: 65, Lines: [][]int64{ @@ -3001,8 +3001,8 @@ func init() { MatrixLine70Form9X5TypeA = []*structs.MatrixLine70Form9X5TypeA{ { - Type: "Line70Form9X5TypeA", - LinkType: 0, + Type: "Line70Form9X5TypeA", + LinkType: 0, Direction: 0, LineCount: 70, Lines: [][]int64{ @@ -3083,8 +3083,8 @@ func init() { MatrixLine75Form5X6TypeA = []*structs.MatrixLine75Form5X6TypeA{ { - Type: "Line75Form5X6TypeA", - LinkType: 0, + Type: "Line75Form5X6TypeA", + LinkType: 0, Direction: 0, LineCount: 75, Lines: [][]int64{ @@ -3170,8 +3170,8 @@ func init() { MatrixLine75Form6X5TypeA = []*structs.MatrixLine75Form6X5TypeA{ { - Type: "Line75Form6X5TypeA", - LinkType: 0, + Type: "Line75Form6X5TypeA", + LinkType: 0, Direction: 0, LineCount: 75, Lines: [][]int64{ @@ -3257,8 +3257,8 @@ func init() { MatrixLine80Form10X5TypeA = []*structs.MatrixLine80Form10X5TypeA{ { - Type: "Line80Form10X5TypeA", - LinkType: 0, + Type: "Line80Form10X5TypeA", + LinkType: 0, Direction: 0, LineCount: 80, Lines: [][]int64{ @@ -3349,8 +3349,8 @@ func init() { MatrixLine80Form3X5TypeA = []*structs.MatrixLine80Form3X5TypeA{ { - Type: "Line80Form3X5TypeA", - LinkType: 0, + Type: "Line80Form3X5TypeA", + LinkType: 0, Direction: 0, LineCount: 80, Lines: [][]int64{ @@ -3441,8 +3441,8 @@ func init() { MatrixLine80Form4X6TypeA = []*structs.MatrixLine80Form4X6TypeA{ { - Type: "Line80Form4X6TypeA", - LinkType: 0, + Type: "Line80Form4X6TypeA", + LinkType: 0, Direction: 0, LineCount: 80, Lines: [][]int64{ @@ -3533,8 +3533,8 @@ func init() { MatrixLine80Form7X5TypeA = []*structs.MatrixLine80Form7X5TypeA{ { - Type: "Line80Form7X5TypeA", - LinkType: 0, + Type: "Line80Form7X5TypeA", + LinkType: 0, Direction: 0, LineCount: 80, Lines: [][]int64{ @@ -3625,8 +3625,8 @@ func init() { MatrixLine90Form11X5TypeA = []*structs.MatrixLine90Form11X5TypeA{ { - Type: "Line90Form11X5TypeA", - LinkType: 0, + Type: "Line90Form11X5TypeA", + LinkType: 0, Direction: 0, LineCount: 90, Lines: [][]int64{ @@ -3727,8 +3727,8 @@ func init() { MatrixLine95Form8X5TypeA = []*structs.MatrixLine95Form8X5TypeA{ { - Type: "Line95Form8X5TypeA", - LinkType: 0, + Type: "Line95Form8X5TypeA", + LinkType: 0, Direction: 0, LineCount: 95, Lines: [][]int64{ @@ -3834,8 +3834,8 @@ func init() { MatrixMatchForm7X7TypeA = []*structs.MatrixMatchForm7X7TypeA{ { - Type: "MatchForm7X7", - LinkType: 4, + Type: "MatchForm7X7", + LinkType: 4, Direction: 0, LineCount: 20, Lines: [][]int64{ @@ -3847,8 +3847,8 @@ func init() { MatrixSameForm5X6TypeA = []*structs.MatrixSameForm5X6TypeA{ { - Type: "SameForm5X6", - LinkType: 3, + Type: "SameForm5X6", + LinkType: 3, Direction: 0, LineCount: 20, Lines: [][]int64{ @@ -3860,8 +3860,8 @@ func init() { MatrixSameForm5X6TypeB = []*structs.MatrixSameForm5X6TypeB{ { - Type: "SameForm5X6TypeB", - LinkType: 3, + Type: "SameForm5X6TypeB", + LinkType: 3, Direction: 0, LineCount: 25, Lines: [][]int64{ @@ -3873,8 +3873,8 @@ func init() { MatrixWaysForm333331 = []*structs.MatrixWaysForm333331{ { - Type: "WaysForm333331", - LinkType: 1, + Type: "WaysForm333331", + LinkType: 1, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -3886,8 +3886,8 @@ func init() { MatrixWaysForm33555 = []*structs.MatrixWaysForm33555{ { - Type: "WaysForm33555", - LinkType: 1, + Type: "WaysForm33555", + LinkType: 1, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -3899,8 +3899,8 @@ func init() { MatrixWaysForm344444 = []*structs.MatrixWaysForm344444{ { - Type: "WaysForm344444", - LinkType: 1, + Type: "WaysForm344444", + LinkType: 1, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -3912,8 +3912,8 @@ func init() { MatrixWaysForm3X5TypeA = []*structs.MatrixWaysForm3X5TypeA{ { - Type: "WaysForm3X5TypeA", - LinkType: 1, + Type: "WaysForm3X5TypeA", + LinkType: 1, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -3925,8 +3925,8 @@ func init() { MatrixWaysForm44668 = []*structs.MatrixWaysForm44668{ { - Type: "WaysForm44668", - LinkType: 1, + Type: "WaysForm44668", + LinkType: 1, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -3938,8 +3938,8 @@ func init() { MatrixWaysForm4X5TypeA = []*structs.MatrixWaysForm4X5TypeA{ { - Type: "WaysForm4X5TypeA", - LinkType: 1, + Type: "WaysForm4X5TypeA", + LinkType: 1, Direction: 0, LineCount: 100, Lines: [][]int64{ @@ -3951,8 +3951,8 @@ func init() { MatrixWaysForm4X5TypeB = []*structs.MatrixWaysForm4X5TypeB{ { - Type: "WaysForm4X5TypeB", - LinkType: 1, + Type: "WaysForm4X5TypeB", + LinkType: 1, Direction: 0, LineCount: 60, Lines: [][]int64{ @@ -3962,4 +3962,4 @@ func init() { }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/opt_group.go b/gamesrv/slotspkg/internal/exported/excel2go/base/opt_group.go index 2fedcfe..35875e9 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/opt_group.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/opt_group.go @@ -9,14 +9,14 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { OptGroup = []*structs.OptGroup{ { - ID: 1, - Batch: 1, + ID: 1, + Batch: 1, IsNewPlayer: true, - StartTime: "2023-4-26", - EndTime: "2050-11-27", - Affect: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - Weight: []int64{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + StartTime: "2023-4-26", + EndTime: "2050-11-27", + Affect: []int64{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + Weight: []int64{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/prize_model.go b/gamesrv/slotspkg/internal/exported/excel2go/base/prize_model.go index b13f286..b6152cf 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/prize_model.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/prize_model.go @@ -9,20 +9,20 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { PrizeModelPrizeModelTypeA = map[int64]*structs.PrizeModelPrizeModelTypeA{ 1: { - ID: 1, - AniType: "big_win", + ID: 1, + AniType: "big_win", MinMultiple: 10, MaxMultiple: 25, }, 2: { - ID: 2, - AniType: "mega_win", + ID: 2, + AniType: "mega_win", MinMultiple: 25, MaxMultiple: 50, }, 3: { - ID: 3, - AniType: "epic_win", + ID: 3, + AniType: "epic_win", MinMultiple: 50, MaxMultiple: -1, }, @@ -30,29 +30,29 @@ func init() { PrizeModelPrizeModelTypeB = map[int64]*structs.PrizeModelPrizeModelTypeB{ 1: { - ID: 1, - AniType: "big_win", + ID: 1, + AniType: "big_win", MinMultiple: 15, MaxMultiple: 30, }, 2: { - ID: 2, - AniType: "mega_win", + ID: 2, + AniType: "mega_win", MinMultiple: 30, MaxMultiple: 45, }, 3: { - ID: 3, - AniType: "epic_win", + ID: 3, + AniType: "epic_win", MinMultiple: 45, MaxMultiple: 60, }, 4: { - ID: 4, - AniType: "epic_win", + ID: 4, + AniType: "epic_win", MinMultiple: 60, MaxMultiple: -1, }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/simulator.go b/gamesrv/slotspkg/internal/exported/excel2go/base/simulator.go index 49d75bc..6dd159b 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/simulator.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/simulator.go @@ -10,162 +10,162 @@ func init() { SimulatorFSMultiLevel = []*structs.SimulatorFSMultiLevel{ { Level: 1, - Min: 0, - Max: 3, + Min: 0, + Max: 3, }, { Level: 2, - Min: 3, - Max: 6, + Min: 3, + Max: 6, }, { Level: 3, - Min: 6, - Max: 9, + Min: 6, + Max: 9, }, { Level: 4, - Min: 9, - Max: 12, + Min: 9, + Max: 12, }, { Level: 5, - Min: 12, - Max: 18, + Min: 12, + Max: 18, }, { Level: 6, - Min: 18, - Max: 20, + Min: 18, + Max: 20, }, { Level: 7, - Min: 20, - Max: 30, + Min: 20, + Max: 30, }, { Level: 8, - Min: 30, - Max: 50, + Min: 30, + Max: 50, }, { Level: 9, - Min: 50, - Max: 100, + Min: 50, + Max: 100, }, { Level: 10, - Min: 100, - Max: 500, + Min: 100, + Max: 500, }, { Level: 11, - Min: 500, - Max: 1000, + Min: 500, + Max: 1000, }, { Level: 12, - Min: 1000, - Max: -1, + Min: 1000, + Max: -1, }, } SimulatorMultiLevel = []*structs.SimulatorMultiLevel{ { Level: 1, - Min: 0, - Max: 1, + Min: 0, + Max: 1, }, { Level: 2, - Min: 1, - Max: 2, + Min: 1, + Max: 2, }, { Level: 3, - Min: 2, - Max: 3, + Min: 2, + Max: 3, }, { Level: 4, - Min: 3, - Max: 4, + Min: 3, + Max: 4, }, { Level: 5, - Min: 4, - Max: 5, + Min: 4, + Max: 5, }, { Level: 6, - Min: 5, - Max: 6, + Min: 5, + Max: 6, }, { Level: 7, - Min: 6, - Max: 8, + Min: 6, + Max: 8, }, { Level: 8, - Min: 8, - Max: 10, + Min: 8, + Max: 10, }, { Level: 9, - Min: 10, - Max: 12, + Min: 10, + Max: 12, }, { Level: 10, - Min: 12, - Max: 15, + Min: 12, + Max: 15, }, { Level: 11, - Min: 15, - Max: 18, + Min: 15, + Max: 18, }, { Level: 12, - Min: 18, - Max: 20, + Min: 18, + Max: 20, }, { Level: 13, - Min: 20, - Max: 25, + Min: 20, + Max: 25, }, { Level: 14, - Min: 25, - Max: 30, + Min: 25, + Max: 30, }, { Level: 15, - Min: 30, - Max: 50, + Min: 30, + Max: 50, }, { Level: 16, - Min: 50, - Max: 100, + Min: 50, + Max: 100, }, { Level: 17, - Min: 100, - Max: 500, + Min: 100, + Max: 500, }, { Level: 18, - Min: 500, - Max: 1000, + Min: 500, + Max: 1000, }, { Level: 19, - Min: 1000, - Max: -1, + Min: 1000, + Max: -1, }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/test.go b/gamesrv/slotspkg/internal/exported/excel2go/base/test.go index 620b087..1964a45 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/test.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/test.go @@ -9,173 +9,173 @@ import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs func init() { TestBetBetChangeList = map[int64]*structs.TestBetBetChangeList{ 0: { - Index: 0, + Index: 0, BetChangeList: 0.3, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 0, }, 1: { - Index: 1, + Index: 1, BetChangeList: 0.6, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 1, }, 2: { - Index: 2, + Index: 2, BetChangeList: 0.9, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 2, }, 3: { - Index: 3, + Index: 3, BetChangeList: 1, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, 4: { - Index: 4, + Index: 4, BetChangeList: 1.5, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 4, }, 5: { - Index: 5, + Index: 5, BetChangeList: 3, - BetSizeIndex: 0, + BetSizeIndex: 0, BetLevelIndex: 9, }, 6: { - Index: 6, + Index: 6, BetChangeList: 5, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 4, }, 7: { - Index: 7, + Index: 7, BetChangeList: 9, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 0, }, 8: { - Index: 8, + Index: 8, BetChangeList: 10, - BetSizeIndex: 1, + BetSizeIndex: 1, BetLevelIndex: 9, }, 9: { - Index: 9, + Index: 9, BetChangeList: 15, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 4, }, 10: { - Index: 10, + Index: 10, BetChangeList: 30, - BetSizeIndex: 2, + BetSizeIndex: 2, BetLevelIndex: 9, }, 11: { - Index: 11, + Index: 11, BetChangeList: 45, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 4, }, 12: { - Index: 12, + Index: 12, BetChangeList: 90, - BetSizeIndex: 3, + BetSizeIndex: 3, BetLevelIndex: 9, }, } TestBetBetLevel = map[int64]*structs.TestBetBetLevel{ 0: { - Index: 0, + Index: 0, BetLevel: 1, }, 1: { - Index: 1, + Index: 1, BetLevel: 2, }, 2: { - Index: 2, + Index: 2, BetLevel: 3, }, 3: { - Index: 3, + Index: 3, BetLevel: 4, }, 4: { - Index: 4, + Index: 4, BetLevel: 5, }, 5: { - Index: 5, + Index: 5, BetLevel: 6, }, 6: { - Index: 6, + Index: 6, BetLevel: 7, }, 7: { - Index: 7, + Index: 7, BetLevel: 8, }, 8: { - Index: 8, + Index: 8, BetLevel: 9, }, 9: { - Index: 9, + Index: 9, BetLevel: 10, }, } TestBetBetLine = map[int64]*structs.TestBetBetLine{ 0: { - Index: 0, + Index: 0, BetLine: 10, }, } TestBetBetSize = map[int64]*structs.TestBetBetSize{ 0: { - Index: 0, + Index: 0, BetSize: 300, }, 1: { - Index: 1, + Index: 1, BetSize: 1000, }, 2: { - Index: 2, + Index: 2, BetSize: 3000, }, 3: { - Index: 3, + Index: 3, BetSize: 9000, }, } TestBetFirstBet = map[int64]*structs.TestBetFirstBet{ 1: { - Index: 1, - BetSizeIndex: 1, + Index: 1, + BetSizeIndex: 1, BetLevelIndex: 0, }, } TestFormation = []*structs.TestFormation{ { - SpinType: 1, - NodeType: "BaseSpin", - ID: 1, - SeqID: 1, - Reel: "BaseSpin", - Matrix: "Line1Form3X3TypeA", - Symbol: "Default", - FirstInitMethod: 2, - OtherInitMethod: 4, + SpinType: 1, + NodeType: "BaseSpin", + ID: 1, + SeqID: 1, + Reel: "BaseSpin", + Matrix: "Line1Form3X3TypeA", + Symbol: "Default", + FirstInitMethod: 2, + OtherInitMethod: 4, FirstInitSymbols: []int64{}, OtherInitSymbols: []int64{}, }, @@ -186,5041 +186,5041 @@ func init() { ID: 1, TypeWeight: map[int64]*structs.TestMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "96", - Rtp: 0.96, + Rtp: 0.96, }, 2: { ID: 2, TypeWeight: map[int64]*structs.TestMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "80", - Rtp: 0.8, + Rtp: 0.8, }, 3: { ID: 3, TypeWeight: map[int64]*structs.TestMapRTPModeTypeWeight{ 1: { - ID: 1, + ID: 1, Weight: 1, }, }, Desc: "120", - Rtp: 1.2, + Rtp: 1.2, }, } TestRandomWeight = []*structs.TestRandomWeight{ { - ID: 1, - Time: 0, + ID: 1, + Time: 0, Weight: 0.043017, }, { - ID: 2, - Time: 0.1, + ID: 2, + Time: 0.1, Weight: 0.00795, }, { - ID: 3, - Time: 0.2, + ID: 3, + Time: 0.2, Weight: 0.007884, }, { - ID: 4, - Time: 0.3, + ID: 4, + Time: 0.3, Weight: 0.007819, }, { - ID: 5, - Time: 0.4, + ID: 5, + Time: 0.4, Weight: 0.007754, }, { - ID: 6, - Time: 0.5, + ID: 6, + Time: 0.5, Weight: 0.007689, }, { - ID: 7, - Time: 0.6, + ID: 7, + Time: 0.6, Weight: 0.007625, }, { - ID: 8, - Time: 0.7, + ID: 8, + Time: 0.7, Weight: 0.007562, }, { - ID: 9, - Time: 0.8, + ID: 9, + Time: 0.8, Weight: 0.007499, }, { - ID: 10, - Time: 0.9, + ID: 10, + Time: 0.9, Weight: 0.007437, }, { - ID: 11, - Time: 1, + ID: 11, + Time: 1, Weight: 0.007375, }, { - ID: 12, - Time: 1.1, + ID: 12, + Time: 1.1, Weight: 0.007314, }, { - ID: 13, - Time: 1.2, + ID: 13, + Time: 1.2, Weight: 0.007253, }, { - ID: 14, - Time: 1.3, + ID: 14, + Time: 1.3, Weight: 0.007193, }, { - ID: 15, - Time: 1.4, + ID: 15, + Time: 1.4, Weight: 0.007133, }, { - ID: 16, - Time: 1.5, + ID: 16, + Time: 1.5, Weight: 0.007074, }, { - ID: 17, - Time: 1.6, + ID: 17, + Time: 1.6, Weight: 0.007015, }, { - ID: 18, - Time: 1.7, + ID: 18, + Time: 1.7, Weight: 0.006957, }, { - ID: 19, - Time: 1.8, + ID: 19, + Time: 1.8, Weight: 0.006899, }, { - ID: 20, - Time: 1.9, + ID: 20, + Time: 1.9, Weight: 0.006842, }, { - ID: 21, - Time: 2, + ID: 21, + Time: 2, Weight: 0.006785, }, { - ID: 22, - Time: 2.1, + ID: 22, + Time: 2.1, Weight: 0.006728, }, { - ID: 23, - Time: 2.2, + ID: 23, + Time: 2.2, Weight: 0.006673, }, { - ID: 24, - Time: 2.3, + ID: 24, + Time: 2.3, Weight: 0.006617, }, { - ID: 25, - Time: 2.4, + ID: 25, + Time: 2.4, Weight: 0.006562, }, { - ID: 26, - Time: 2.5, + ID: 26, + Time: 2.5, Weight: 0.006508, }, { - ID: 27, - Time: 2.6, + ID: 27, + Time: 2.6, Weight: 0.006454, }, { - ID: 28, - Time: 2.7, + ID: 28, + Time: 2.7, Weight: 0.0064, }, { - ID: 29, - Time: 2.8, + ID: 29, + Time: 2.8, Weight: 0.006347, }, { - ID: 30, - Time: 2.9, + ID: 30, + Time: 2.9, Weight: 0.006294, }, { - ID: 31, - Time: 3, + ID: 31, + Time: 3, Weight: 0.006242, }, { - ID: 32, - Time: 3.1, + ID: 32, + Time: 3.1, Weight: 0.00619, }, { - ID: 33, - Time: 3.2, + ID: 33, + Time: 3.2, Weight: 0.006138, }, { - ID: 34, - Time: 3.3, + ID: 34, + Time: 3.3, Weight: 0.006087, }, { - ID: 35, - Time: 3.4, + ID: 35, + Time: 3.4, Weight: 0.006037, }, { - ID: 36, - Time: 3.5, + ID: 36, + Time: 3.5, Weight: 0.005987, }, { - ID: 37, - Time: 3.6, + ID: 37, + Time: 3.6, Weight: 0.005937, }, { - ID: 38, - Time: 3.7, + ID: 38, + Time: 3.7, Weight: 0.005888, }, { - ID: 39, - Time: 3.8, + ID: 39, + Time: 3.8, Weight: 0.005839, }, { - ID: 40, - Time: 3.9, + ID: 40, + Time: 3.9, Weight: 0.00579, }, { - ID: 41, - Time: 4, + ID: 41, + Time: 4, Weight: 0.005742, }, { - ID: 42, - Time: 4.1, + ID: 42, + Time: 4.1, Weight: 0.005694, }, { - ID: 43, - Time: 4.2, + ID: 43, + Time: 4.2, Weight: 0.005647, }, { - ID: 44, - Time: 4.3, + ID: 44, + Time: 4.3, Weight: 0.0056, }, { - ID: 45, - Time: 4.4, + ID: 45, + Time: 4.4, Weight: 0.005554, }, { - ID: 46, - Time: 4.5, + ID: 46, + Time: 4.5, Weight: 0.005508, }, { - ID: 47, - Time: 4.6, + ID: 47, + Time: 4.6, Weight: 0.005462, }, { - ID: 48, - Time: 4.7, + ID: 48, + Time: 4.7, Weight: 0.005416, }, { - ID: 49, - Time: 4.8, + ID: 49, + Time: 4.8, Weight: 0.005371, }, { - ID: 50, - Time: 4.9, + ID: 50, + Time: 4.9, Weight: 0.005327, }, { - ID: 51, - Time: 5, + ID: 51, + Time: 5, Weight: 0.005283, }, { - ID: 52, - Time: 5.1, + ID: 52, + Time: 5.1, Weight: 0.005239, }, { - ID: 53, - Time: 5.2, + ID: 53, + Time: 5.2, Weight: 0.005195, }, { - ID: 54, - Time: 5.3, + ID: 54, + Time: 5.3, Weight: 0.005152, }, { - ID: 55, - Time: 5.4, + ID: 55, + Time: 5.4, Weight: 0.005109, }, { - ID: 56, - Time: 5.5, + ID: 56, + Time: 5.5, Weight: 0.005067, }, { - ID: 57, - Time: 5.6, + ID: 57, + Time: 5.6, Weight: 0.005025, }, { - ID: 58, - Time: 5.7, + ID: 58, + Time: 5.7, Weight: 0.004983, }, { - ID: 59, - Time: 5.8, + ID: 59, + Time: 5.8, Weight: 0.004942, }, { - ID: 60, - Time: 5.9, + ID: 60, + Time: 5.9, Weight: 0.004901, }, { - ID: 61, - Time: 6, + ID: 61, + Time: 6, Weight: 0.00486, }, { - ID: 62, - Time: 6.1, + ID: 62, + Time: 6.1, Weight: 0.004819, }, { - ID: 63, - Time: 6.2, + ID: 63, + Time: 6.2, Weight: 0.004779, }, { - ID: 64, - Time: 6.3, + ID: 64, + Time: 6.3, Weight: 0.00474, }, { - ID: 65, - Time: 6.4, + ID: 65, + Time: 6.4, Weight: 0.0047, }, { - ID: 66, - Time: 6.5, + ID: 66, + Time: 6.5, Weight: 0.004661, }, { - ID: 67, - Time: 6.6, + ID: 67, + Time: 6.6, Weight: 0.004623, }, { - ID: 68, - Time: 6.7, + ID: 68, + Time: 6.7, Weight: 0.004584, }, { - ID: 69, - Time: 6.8, + ID: 69, + Time: 6.8, Weight: 0.004546, }, { - ID: 70, - Time: 6.9, + ID: 70, + Time: 6.9, Weight: 0.004508, }, { - ID: 71, - Time: 7, + ID: 71, + Time: 7, Weight: 0.004471, }, { - ID: 72, - Time: 7.1, + ID: 72, + Time: 7.1, Weight: 0.004434, }, { - ID: 73, - Time: 7.2, + ID: 73, + Time: 7.2, Weight: 0.004397, }, { - ID: 74, - Time: 7.3, + ID: 74, + Time: 7.3, Weight: 0.00436, }, { - ID: 75, - Time: 7.4, + ID: 75, + Time: 7.4, Weight: 0.004324, }, { - ID: 76, - Time: 7.5, + ID: 76, + Time: 7.5, Weight: 0.004288, }, { - ID: 77, - Time: 7.6, + ID: 77, + Time: 7.6, Weight: 0.004253, }, { - ID: 78, - Time: 7.7, + ID: 78, + Time: 7.7, Weight: 0.004217, }, { - ID: 79, - Time: 7.8, + ID: 79, + Time: 7.8, Weight: 0.004182, }, { - ID: 80, - Time: 7.9, + ID: 80, + Time: 7.9, Weight: 0.004147, }, { - ID: 81, - Time: 8, + ID: 81, + Time: 8, Weight: 0.004113, }, { - ID: 82, - Time: 8.1, + ID: 82, + Time: 8.1, Weight: 0.004079, }, { - ID: 83, - Time: 8.2, + ID: 83, + Time: 8.2, Weight: 0.004045, }, { - ID: 84, - Time: 8.3, + ID: 84, + Time: 8.3, Weight: 0.004011, }, { - ID: 85, - Time: 8.4, + ID: 85, + Time: 8.4, Weight: 0.003978, }, { - ID: 86, - Time: 8.5, + ID: 86, + Time: 8.5, Weight: 0.003945, }, { - ID: 87, - Time: 8.6, + ID: 87, + Time: 8.6, Weight: 0.003912, }, { - ID: 88, - Time: 8.7, + ID: 88, + Time: 8.7, Weight: 0.00388, }, { - ID: 89, - Time: 8.8, + ID: 89, + Time: 8.8, Weight: 0.003847, }, { - ID: 90, - Time: 8.9, + ID: 90, + Time: 8.9, Weight: 0.003816, }, { - ID: 91, - Time: 9, + ID: 91, + Time: 9, Weight: 0.003784, }, { - ID: 92, - Time: 9.1, + ID: 92, + Time: 9.1, Weight: 0.003752, }, { - ID: 93, - Time: 9.2, + ID: 93, + Time: 9.2, Weight: 0.003721, }, { - ID: 94, - Time: 9.3, + ID: 94, + Time: 9.3, Weight: 0.00369, }, { - ID: 95, - Time: 9.4, + ID: 95, + Time: 9.4, Weight: 0.00366, }, { - ID: 96, - Time: 9.5, + ID: 96, + Time: 9.5, Weight: 0.003629, }, { - ID: 97, - Time: 9.6, + ID: 97, + Time: 9.6, Weight: 0.003599, }, { - ID: 98, - Time: 9.7, + ID: 98, + Time: 9.7, Weight: 0.003569, }, { - ID: 99, - Time: 9.8, + ID: 99, + Time: 9.8, Weight: 0.00354, }, { - ID: 100, - Time: 9.9, + ID: 100, + Time: 9.9, Weight: 0.00351, }, { - ID: 101, - Time: 10, + ID: 101, + Time: 10, Weight: 0.003481, }, { - ID: 102, - Time: 10.1, + ID: 102, + Time: 10.1, Weight: 0.003452, }, { - ID: 103, - Time: 10.2, + ID: 103, + Time: 10.2, Weight: 0.003423, }, { - ID: 104, - Time: 10.3, + ID: 104, + Time: 10.3, Weight: 0.003395, }, { - ID: 105, - Time: 10.4, + ID: 105, + Time: 10.4, Weight: 0.003367, }, { - ID: 106, - Time: 10.5, + ID: 106, + Time: 10.5, Weight: 0.003339, }, { - ID: 107, - Time: 10.6, + ID: 107, + Time: 10.6, Weight: 0.003311, }, { - ID: 108, - Time: 10.7, + ID: 108, + Time: 10.7, Weight: 0.003284, }, { - ID: 109, - Time: 10.8, + ID: 109, + Time: 10.8, Weight: 0.003256, }, { - ID: 110, - Time: 10.9, + ID: 110, + Time: 10.9, Weight: 0.003229, }, { - ID: 111, - Time: 11, + ID: 111, + Time: 11, Weight: 0.003202, }, { - ID: 112, - Time: 11.1, + ID: 112, + Time: 11.1, Weight: 0.003176, }, { - ID: 113, - Time: 11.2, + ID: 113, + Time: 11.2, Weight: 0.003149, }, { - ID: 114, - Time: 11.3, + ID: 114, + Time: 11.3, Weight: 0.003123, }, { - ID: 115, - Time: 11.4, + ID: 115, + Time: 11.4, Weight: 0.003097, }, { - ID: 116, - Time: 11.5, + ID: 116, + Time: 11.5, Weight: 0.003072, }, { - ID: 117, - Time: 11.6, + ID: 117, + Time: 11.6, Weight: 0.003046, }, { - ID: 118, - Time: 11.7, + ID: 118, + Time: 11.7, Weight: 0.003021, }, { - ID: 119, - Time: 11.8, + ID: 119, + Time: 11.8, Weight: 0.002996, }, { - ID: 120, - Time: 11.9, + ID: 120, + Time: 11.9, Weight: 0.002971, }, { - ID: 121, - Time: 12, + ID: 121, + Time: 12, Weight: 0.002946, }, { - ID: 122, - Time: 12.1, + ID: 122, + Time: 12.1, Weight: 0.002922, }, { - ID: 123, - Time: 12.2, + ID: 123, + Time: 12.2, Weight: 0.002897, }, { - ID: 124, - Time: 12.3, + ID: 124, + Time: 12.3, Weight: 0.002873, }, { - ID: 125, - Time: 12.4, + ID: 125, + Time: 12.4, Weight: 0.002849, }, { - ID: 126, - Time: 12.5, + ID: 126, + Time: 12.5, Weight: 0.002826, }, { - ID: 127, - Time: 12.6, + ID: 127, + Time: 12.6, Weight: 0.002802, }, { - ID: 128, - Time: 12.7, + ID: 128, + Time: 12.7, Weight: 0.002779, }, { - ID: 129, - Time: 12.8, + ID: 129, + Time: 12.8, Weight: 0.002756, }, { - ID: 130, - Time: 12.9, + ID: 130, + Time: 12.9, Weight: 0.002733, }, { - ID: 131, - Time: 13, + ID: 131, + Time: 13, Weight: 0.00271, }, { - ID: 132, - Time: 13.1, + ID: 132, + Time: 13.1, Weight: 0.002688, }, { - ID: 133, - Time: 13.2, + ID: 133, + Time: 13.2, Weight: 0.002665, }, { - ID: 134, - Time: 13.3, + ID: 134, + Time: 13.3, Weight: 0.002643, }, { - ID: 135, - Time: 13.4, + ID: 135, + Time: 13.4, Weight: 0.002621, }, { - ID: 136, - Time: 13.5, + ID: 136, + Time: 13.5, Weight: 0.0026, }, { - ID: 137, - Time: 13.6, + ID: 137, + Time: 13.6, Weight: 0.002578, }, { - ID: 138, - Time: 13.7, + ID: 138, + Time: 13.7, Weight: 0.002557, }, { - ID: 139, - Time: 13.8, + ID: 139, + Time: 13.8, Weight: 0.002535, }, { - ID: 140, - Time: 13.9, + ID: 140, + Time: 13.9, Weight: 0.002514, }, { - ID: 141, - Time: 14, + ID: 141, + Time: 14, Weight: 0.002493, }, { - ID: 142, - Time: 14.1, + ID: 142, + Time: 14.1, Weight: 0.002473, }, { - ID: 143, - Time: 14.2, + ID: 143, + Time: 14.2, Weight: 0.002452, }, { - ID: 144, - Time: 14.3, + ID: 144, + Time: 14.3, Weight: 0.002432, }, { - ID: 145, - Time: 14.4, + ID: 145, + Time: 14.4, Weight: 0.002412, }, { - ID: 146, - Time: 14.5, + ID: 146, + Time: 14.5, Weight: 0.002391, }, { - ID: 147, - Time: 14.6, + ID: 147, + Time: 14.6, Weight: 0.002372, }, { - ID: 148, - Time: 14.7, + ID: 148, + Time: 14.7, Weight: 0.002352, }, { - ID: 149, - Time: 14.8, + ID: 149, + Time: 14.8, Weight: 0.002332, }, { - ID: 150, - Time: 14.9, + ID: 150, + Time: 14.9, Weight: 0.002313, }, { - ID: 151, - Time: 15, + ID: 151, + Time: 15, Weight: 0.002294, }, { - ID: 152, - Time: 15.1, + ID: 152, + Time: 15.1, Weight: 0.002275, }, { - ID: 153, - Time: 15.2, + ID: 153, + Time: 15.2, Weight: 0.002256, }, { - ID: 154, - Time: 15.3, + ID: 154, + Time: 15.3, Weight: 0.002237, }, { - ID: 155, - Time: 15.4, + ID: 155, + Time: 15.4, Weight: 0.002219, }, { - ID: 156, - Time: 15.5, + ID: 156, + Time: 15.5, Weight: 0.0022, }, { - ID: 157, - Time: 15.6, + ID: 157, + Time: 15.6, Weight: 0.002182, }, { - ID: 158, - Time: 15.7, + ID: 158, + Time: 15.7, Weight: 0.002164, }, { - ID: 159, - Time: 15.8, + ID: 159, + Time: 15.8, Weight: 0.002146, }, { - ID: 160, - Time: 15.9, + ID: 160, + Time: 15.9, Weight: 0.002128, }, { - ID: 161, - Time: 16, + ID: 161, + Time: 16, Weight: 0.00211, }, { - ID: 162, - Time: 16.1, + ID: 162, + Time: 16.1, Weight: 0.002093, }, { - ID: 163, - Time: 16.2, + ID: 163, + Time: 16.2, Weight: 0.002075, }, { - ID: 164, - Time: 16.3, + ID: 164, + Time: 16.3, Weight: 0.002058, }, { - ID: 165, - Time: 16.4, + ID: 165, + Time: 16.4, Weight: 0.002041, }, { - ID: 166, - Time: 16.5, + ID: 166, + Time: 16.5, Weight: 0.002024, }, { - ID: 167, - Time: 16.6, + ID: 167, + Time: 16.6, Weight: 0.002007, }, { - ID: 168, - Time: 16.7, + ID: 168, + Time: 16.7, Weight: 0.001991, }, { - ID: 169, - Time: 16.8, + ID: 169, + Time: 16.8, Weight: 0.001974, }, { - ID: 170, - Time: 16.9, + ID: 170, + Time: 16.9, Weight: 0.001958, }, { - ID: 171, - Time: 17, + ID: 171, + Time: 17, Weight: 0.001941, }, { - ID: 172, - Time: 17.1, + ID: 172, + Time: 17.1, Weight: 0.001925, }, { - ID: 173, - Time: 17.2, + ID: 173, + Time: 17.2, Weight: 0.001909, }, { - ID: 174, - Time: 17.3, + ID: 174, + Time: 17.3, Weight: 0.001893, }, { - ID: 175, - Time: 17.4, + ID: 175, + Time: 17.4, Weight: 0.001878, }, { - ID: 176, - Time: 17.5, + ID: 176, + Time: 17.5, Weight: 0.001862, }, { - ID: 177, - Time: 17.6, + ID: 177, + Time: 17.6, Weight: 0.001847, }, { - ID: 178, - Time: 17.7, + ID: 178, + Time: 17.7, Weight: 0.001831, }, { - ID: 179, - Time: 17.8, + ID: 179, + Time: 17.8, Weight: 0.001816, }, { - ID: 180, - Time: 17.9, + ID: 180, + Time: 17.9, Weight: 0.001801, }, { - ID: 181, - Time: 18, + ID: 181, + Time: 18, Weight: 0.001786, }, { - ID: 182, - Time: 18.1, + ID: 182, + Time: 18.1, Weight: 0.001771, }, { - ID: 183, - Time: 18.2, + ID: 183, + Time: 18.2, Weight: 0.001756, }, { - ID: 184, - Time: 18.3, + ID: 184, + Time: 18.3, Weight: 0.001742, }, { - ID: 185, - Time: 18.4, + ID: 185, + Time: 18.4, Weight: 0.001727, }, { - ID: 186, - Time: 18.5, + ID: 186, + Time: 18.5, Weight: 0.001713, }, { - ID: 187, - Time: 18.6, + ID: 187, + Time: 18.6, Weight: 0.001699, }, { - ID: 188, - Time: 18.7, + ID: 188, + Time: 18.7, Weight: 0.001685, }, { - ID: 189, - Time: 18.8, + ID: 189, + Time: 18.8, Weight: 0.001671, }, { - ID: 190, - Time: 18.9, + ID: 190, + Time: 18.9, Weight: 0.001657, }, { - ID: 191, - Time: 19, + ID: 191, + Time: 19, Weight: 0.001643, }, { - ID: 192, - Time: 19.1, + ID: 192, + Time: 19.1, Weight: 0.001629, }, { - ID: 193, - Time: 19.2, + ID: 193, + Time: 19.2, Weight: 0.001616, }, { - ID: 194, - Time: 19.3, + ID: 194, + Time: 19.3, Weight: 0.001602, }, { - ID: 195, - Time: 19.4, + ID: 195, + Time: 19.4, Weight: 0.001589, }, { - ID: 196, - Time: 19.5, + ID: 196, + Time: 19.5, Weight: 0.001576, }, { - ID: 197, - Time: 19.6, + ID: 197, + Time: 19.6, Weight: 0.001563, }, { - ID: 198, - Time: 19.7, + ID: 198, + Time: 19.7, Weight: 0.00155, }, { - ID: 199, - Time: 19.8, + ID: 199, + Time: 19.8, Weight: 0.001537, }, { - ID: 200, - Time: 19.9, + ID: 200, + Time: 19.9, Weight: 0.001524, }, { - ID: 201, - Time: 20, + ID: 201, + Time: 20, Weight: 0.001511, }, { - ID: 202, - Time: 20.1, + ID: 202, + Time: 20.1, Weight: 0.001499, }, { - ID: 203, - Time: 20.2, + ID: 203, + Time: 20.2, Weight: 0.001486, }, { - ID: 204, - Time: 20.3, + ID: 204, + Time: 20.3, Weight: 0.001474, }, { - ID: 205, - Time: 20.4, + ID: 205, + Time: 20.4, Weight: 0.001462, }, { - ID: 206, - Time: 20.5, + ID: 206, + Time: 20.5, Weight: 0.00145, }, { - ID: 207, - Time: 20.6, + ID: 207, + Time: 20.6, Weight: 0.001438, }, { - ID: 208, - Time: 20.7, + ID: 208, + Time: 20.7, Weight: 0.001426, }, { - ID: 209, - Time: 20.8, + ID: 209, + Time: 20.8, Weight: 0.001414, }, { - ID: 210, - Time: 20.9, + ID: 210, + Time: 20.9, Weight: 0.001402, }, { - ID: 211, - Time: 21, + ID: 211, + Time: 21, Weight: 0.001391, }, { - ID: 212, - Time: 21.1, + ID: 212, + Time: 21.1, Weight: 0.001379, }, { - ID: 213, - Time: 21.2, + ID: 213, + Time: 21.2, Weight: 0.001368, }, { - ID: 214, - Time: 21.3, + ID: 214, + Time: 21.3, Weight: 0.001356, }, { - ID: 215, - Time: 21.4, + ID: 215, + Time: 21.4, Weight: 0.001345, }, { - ID: 216, - Time: 21.5, + ID: 216, + Time: 21.5, Weight: 0.001334, }, { - ID: 217, - Time: 21.6, + ID: 217, + Time: 21.6, Weight: 0.001323, }, { - ID: 218, - Time: 21.7, + ID: 218, + Time: 21.7, Weight: 0.001312, }, { - ID: 219, - Time: 21.8, + ID: 219, + Time: 21.8, Weight: 0.001301, }, { - ID: 220, - Time: 21.9, + ID: 220, + Time: 21.9, Weight: 0.00129, }, { - ID: 221, - Time: 22, + ID: 221, + Time: 22, Weight: 0.001279, }, { - ID: 222, - Time: 22.1, + ID: 222, + Time: 22.1, Weight: 0.001269, }, { - ID: 223, - Time: 22.2, + ID: 223, + Time: 22.2, Weight: 0.001258, }, { - ID: 224, - Time: 22.3, + ID: 224, + Time: 22.3, Weight: 0.001248, }, { - ID: 225, - Time: 22.4, + ID: 225, + Time: 22.4, Weight: 0.001237, }, { - ID: 226, - Time: 22.5, + ID: 226, + Time: 22.5, Weight: 0.001227, }, { - ID: 227, - Time: 22.6, + ID: 227, + Time: 22.6, Weight: 0.001217, }, { - ID: 228, - Time: 22.7, + ID: 228, + Time: 22.7, Weight: 0.001207, }, { - ID: 229, - Time: 22.8, + ID: 229, + Time: 22.8, Weight: 0.001197, }, { - ID: 230, - Time: 22.9, + ID: 230, + Time: 22.9, Weight: 0.001187, }, { - ID: 231, - Time: 23, + ID: 231, + Time: 23, Weight: 0.001177, }, { - ID: 232, - Time: 23.1, + ID: 232, + Time: 23.1, Weight: 0.001167, }, { - ID: 233, - Time: 23.2, + ID: 233, + Time: 23.2, Weight: 0.001157, }, { - ID: 234, - Time: 23.3, + ID: 234, + Time: 23.3, Weight: 0.001148, }, { - ID: 235, - Time: 23.4, + ID: 235, + Time: 23.4, Weight: 0.001138, }, { - ID: 236, - Time: 23.5, + ID: 236, + Time: 23.5, Weight: 0.001129, }, { - ID: 237, - Time: 23.6, + ID: 237, + Time: 23.6, Weight: 0.001119, }, { - ID: 238, - Time: 23.7, + ID: 238, + Time: 23.7, Weight: 0.00111, }, { - ID: 239, - Time: 23.8, + ID: 239, + Time: 23.8, Weight: 0.001101, }, { - ID: 240, - Time: 23.9, + ID: 240, + Time: 23.9, Weight: 0.001092, }, { - ID: 241, - Time: 24, + ID: 241, + Time: 24, Weight: 0.001083, }, { - ID: 242, - Time: 24.1, + ID: 242, + Time: 24.1, Weight: 0.001074, }, { - ID: 243, - Time: 24.2, + ID: 243, + Time: 24.2, Weight: 0.001065, }, { - ID: 244, - Time: 24.3, + ID: 244, + Time: 24.3, Weight: 0.001056, }, { - ID: 245, - Time: 24.4, + ID: 245, + Time: 24.4, Weight: 0.001047, }, { - ID: 246, - Time: 24.5, + ID: 246, + Time: 24.5, Weight: 0.001038, }, { - ID: 247, - Time: 24.6, + ID: 247, + Time: 24.6, Weight: 0.00103, }, { - ID: 248, - Time: 24.7, + ID: 248, + Time: 24.7, Weight: 0.001021, }, { - ID: 249, - Time: 24.8, + ID: 249, + Time: 24.8, Weight: 0.001013, }, { - ID: 250, - Time: 24.9, + ID: 250, + Time: 24.9, Weight: 0.001004, }, { - ID: 251, - Time: 25, + ID: 251, + Time: 25, Weight: 0.000996, }, { - ID: 252, - Time: 25.1, + ID: 252, + Time: 25.1, Weight: 0.000988, }, { - ID: 253, - Time: 25.2, + ID: 253, + Time: 25.2, Weight: 0.00098, }, { - ID: 254, - Time: 25.3, + ID: 254, + Time: 25.3, Weight: 0.000971, }, { - ID: 255, - Time: 25.4, + ID: 255, + Time: 25.4, Weight: 0.000963, }, { - ID: 256, - Time: 25.5, + ID: 256, + Time: 25.5, Weight: 0.000955, }, { - ID: 257, - Time: 25.6, + ID: 257, + Time: 25.6, Weight: 0.000947, }, { - ID: 258, - Time: 25.7, + ID: 258, + Time: 25.7, Weight: 0.000939, }, { - ID: 259, - Time: 25.8, + ID: 259, + Time: 25.8, Weight: 0.000932, }, { - ID: 260, - Time: 25.9, + ID: 260, + Time: 25.9, Weight: 0.000924, }, { - ID: 261, - Time: 26, + ID: 261, + Time: 26, Weight: 0.000916, }, { - ID: 262, - Time: 26.1, + ID: 262, + Time: 26.1, Weight: 0.000909, }, { - ID: 263, - Time: 26.2, + ID: 263, + Time: 26.2, Weight: 0.000901, }, { - ID: 264, - Time: 26.3, + ID: 264, + Time: 26.3, Weight: 0.000894, }, { - ID: 265, - Time: 26.4, + ID: 265, + Time: 26.4, Weight: 0.000886, }, { - ID: 266, - Time: 26.5, + ID: 266, + Time: 26.5, Weight: 0.000879, }, { - ID: 267, - Time: 26.6, + ID: 267, + Time: 26.6, Weight: 0.000872, }, { - ID: 268, - Time: 26.7, + ID: 268, + Time: 26.7, Weight: 0.000864, }, { - ID: 269, - Time: 26.8, + ID: 269, + Time: 26.8, Weight: 0.000857, }, { - ID: 270, - Time: 26.9, + ID: 270, + Time: 26.9, Weight: 0.00085, }, { - ID: 271, - Time: 27, + ID: 271, + Time: 27, Weight: 0.000843, }, { - ID: 272, - Time: 27.1, + ID: 272, + Time: 27.1, Weight: 0.000836, }, { - ID: 273, - Time: 27.2, + ID: 273, + Time: 27.2, Weight: 0.000829, }, { - ID: 274, - Time: 27.3, + ID: 274, + Time: 27.3, Weight: 0.000822, }, { - ID: 275, - Time: 27.4, + ID: 275, + Time: 27.4, Weight: 0.000815, }, { - ID: 276, - Time: 27.5, + ID: 276, + Time: 27.5, Weight: 0.000809, }, { - ID: 277, - Time: 27.6, + ID: 277, + Time: 27.6, Weight: 0.000802, }, { - ID: 278, - Time: 27.7, + ID: 278, + Time: 27.7, Weight: 0.000795, }, { - ID: 279, - Time: 27.8, + ID: 279, + Time: 27.8, Weight: 0.000789, }, { - ID: 280, - Time: 27.9, + ID: 280, + Time: 27.9, Weight: 0.000782, }, { - ID: 281, - Time: 28, + ID: 281, + Time: 28, Weight: 0.000775, }, { - ID: 282, - Time: 28.1, + ID: 282, + Time: 28.1, Weight: 0.000769, }, { - ID: 283, - Time: 28.2, + ID: 283, + Time: 28.2, Weight: 0.000763, }, { - ID: 284, - Time: 28.3, + ID: 284, + Time: 28.3, Weight: 0.000756, }, { - ID: 285, - Time: 28.4, + ID: 285, + Time: 28.4, Weight: 0.00075, }, { - ID: 286, - Time: 28.5, + ID: 286, + Time: 28.5, Weight: 0.000744, }, { - ID: 287, - Time: 28.6, + ID: 287, + Time: 28.6, Weight: 0.000738, }, { - ID: 288, - Time: 28.7, + ID: 288, + Time: 28.7, Weight: 0.000731, }, { - ID: 289, - Time: 28.8, + ID: 289, + Time: 28.8, Weight: 0.000725, }, { - ID: 290, - Time: 28.9, + ID: 290, + Time: 28.9, Weight: 0.000719, }, { - ID: 291, - Time: 29, + ID: 291, + Time: 29, Weight: 0.000713, }, { - ID: 292, - Time: 29.1, + ID: 292, + Time: 29.1, Weight: 0.000707, }, { - ID: 293, - Time: 29.2, + ID: 293, + Time: 29.2, Weight: 0.000702, }, { - ID: 294, - Time: 29.3, + ID: 294, + Time: 29.3, Weight: 0.000696, }, { - ID: 295, - Time: 29.4, + ID: 295, + Time: 29.4, Weight: 0.00069, }, { - ID: 296, - Time: 29.5, + ID: 296, + Time: 29.5, Weight: 0.000684, }, { - ID: 297, - Time: 29.6, + ID: 297, + Time: 29.6, Weight: 0.000679, }, { - ID: 298, - Time: 29.7, + ID: 298, + Time: 29.7, Weight: 0.000673, }, { - ID: 299, - Time: 29.8, + ID: 299, + Time: 29.8, Weight: 0.000667, }, { - ID: 300, - Time: 29.9, + ID: 300, + Time: 29.9, Weight: 0.000662, }, { - ID: 301, - Time: 30, + ID: 301, + Time: 30, Weight: 0.000656, }, { - ID: 302, - Time: 30.1, + ID: 302, + Time: 30.1, Weight: 0.000651, }, { - ID: 303, - Time: 30.2, + ID: 303, + Time: 30.2, Weight: 0.000645, }, { - ID: 304, - Time: 30.3, + ID: 304, + Time: 30.3, Weight: 0.00064, }, { - ID: 305, - Time: 30.4, + ID: 305, + Time: 30.4, Weight: 0.000635, }, { - ID: 306, - Time: 30.5, + ID: 306, + Time: 30.5, Weight: 0.000629, }, { - ID: 307, - Time: 30.6, + ID: 307, + Time: 30.6, Weight: 0.000624, }, { - ID: 308, - Time: 30.7, + ID: 308, + Time: 30.7, Weight: 0.000619, }, { - ID: 309, - Time: 30.8, + ID: 309, + Time: 30.8, Weight: 0.000614, }, { - ID: 310, - Time: 30.9, + ID: 310, + Time: 30.9, Weight: 0.000609, }, { - ID: 311, - Time: 31, + ID: 311, + Time: 31, Weight: 0.000604, }, { - ID: 312, - Time: 31.1, + ID: 312, + Time: 31.1, Weight: 0.000599, }, { - ID: 313, - Time: 31.2, + ID: 313, + Time: 31.2, Weight: 0.000594, }, { - ID: 314, - Time: 31.3, + ID: 314, + Time: 31.3, Weight: 0.000589, }, { - ID: 315, - Time: 31.4, + ID: 315, + Time: 31.4, Weight: 0.000584, }, { - ID: 316, - Time: 31.5, + ID: 316, + Time: 31.5, Weight: 0.000579, }, { - ID: 317, - Time: 31.6, + ID: 317, + Time: 31.6, Weight: 0.000574, }, { - ID: 318, - Time: 31.7, + ID: 318, + Time: 31.7, Weight: 0.00057, }, { - ID: 319, - Time: 31.8, + ID: 319, + Time: 31.8, Weight: 0.000565, }, { - ID: 320, - Time: 31.9, + ID: 320, + Time: 31.9, Weight: 0.00056, }, { - ID: 321, - Time: 32, + ID: 321, + Time: 32, Weight: 0.000555, }, { - ID: 322, - Time: 32.1, + ID: 322, + Time: 32.1, Weight: 0.000551, }, { - ID: 323, - Time: 32.2, + ID: 323, + Time: 32.2, Weight: 0.000546, }, { - ID: 324, - Time: 32.3, + ID: 324, + Time: 32.3, Weight: 0.000542, }, { - ID: 325, - Time: 32.4, + ID: 325, + Time: 32.4, Weight: 0.000537, }, { - ID: 326, - Time: 32.5, + ID: 326, + Time: 32.5, Weight: 0.000533, }, { - ID: 327, - Time: 32.6, + ID: 327, + Time: 32.6, Weight: 0.000528, }, { - ID: 328, - Time: 32.7, + ID: 328, + Time: 32.7, Weight: 0.000524, }, { - ID: 329, - Time: 32.8, + ID: 329, + Time: 32.8, Weight: 0.00052, }, { - ID: 330, - Time: 32.9, + ID: 330, + Time: 32.9, Weight: 0.000515, }, { - ID: 331, - Time: 33, + ID: 331, + Time: 33, Weight: 0.000511, }, { - ID: 332, - Time: 33.1, + ID: 332, + Time: 33.1, Weight: 0.000507, }, { - ID: 333, - Time: 33.2, + ID: 333, + Time: 33.2, Weight: 0.000503, }, { - ID: 334, - Time: 33.3, + ID: 334, + Time: 33.3, Weight: 0.000498, }, { - ID: 335, - Time: 33.4, + ID: 335, + Time: 33.4, Weight: 0.000494, }, { - ID: 336, - Time: 33.5, + ID: 336, + Time: 33.5, Weight: 0.00049, }, { - ID: 337, - Time: 33.6, + ID: 337, + Time: 33.6, Weight: 0.000486, }, { - ID: 338, - Time: 33.7, + ID: 338, + Time: 33.7, Weight: 0.000482, }, { - ID: 339, - Time: 33.8, + ID: 339, + Time: 33.8, Weight: 0.000478, }, { - ID: 340, - Time: 33.9, + ID: 340, + Time: 33.9, Weight: 0.000474, }, { - ID: 341, - Time: 34, + ID: 341, + Time: 34, Weight: 0.00047, }, { - ID: 342, - Time: 34.1, + ID: 342, + Time: 34.1, Weight: 0.000466, }, { - ID: 343, - Time: 34.2, + ID: 343, + Time: 34.2, Weight: 0.000462, }, { - ID: 344, - Time: 34.3, + ID: 344, + Time: 34.3, Weight: 0.000458, }, { - ID: 345, - Time: 34.4, + ID: 345, + Time: 34.4, Weight: 0.000455, }, { - ID: 346, - Time: 34.5, + ID: 346, + Time: 34.5, Weight: 0.000451, }, { - ID: 347, - Time: 34.6, + ID: 347, + Time: 34.6, Weight: 0.000447, }, { - ID: 348, - Time: 34.7, + ID: 348, + Time: 34.7, Weight: 0.000443, }, { - ID: 349, - Time: 34.8, + ID: 349, + Time: 34.8, Weight: 0.00044, }, { - ID: 350, - Time: 34.9, + ID: 350, + Time: 34.9, Weight: 0.000436, }, { - ID: 351, - Time: 35, + ID: 351, + Time: 35, Weight: 0.000432, }, { - ID: 352, - Time: 35.1, + ID: 352, + Time: 35.1, Weight: 0.000429, }, { - ID: 353, - Time: 35.2, + ID: 353, + Time: 35.2, Weight: 0.000425, }, { - ID: 354, - Time: 35.3, + ID: 354, + Time: 35.3, Weight: 0.000422, }, { - ID: 355, - Time: 35.4, + ID: 355, + Time: 35.4, Weight: 0.000418, }, { - ID: 356, - Time: 35.5, + ID: 356, + Time: 35.5, Weight: 0.000415, }, { - ID: 357, - Time: 35.6, + ID: 357, + Time: 35.6, Weight: 0.000411, }, { - ID: 358, - Time: 35.7, + ID: 358, + Time: 35.7, Weight: 0.000408, }, { - ID: 359, - Time: 35.8, + ID: 359, + Time: 35.8, Weight: 0.000405, }, { - ID: 360, - Time: 35.9, + ID: 360, + Time: 35.9, Weight: 0.000401, }, { - ID: 361, - Time: 36, + ID: 361, + Time: 36, Weight: 0.000398, }, { - ID: 362, - Time: 36.1, + ID: 362, + Time: 36.1, Weight: 0.000395, }, { - ID: 363, - Time: 36.2, + ID: 363, + Time: 36.2, Weight: 0.000391, }, { - ID: 364, - Time: 36.3, + ID: 364, + Time: 36.3, Weight: 0.000388, }, { - ID: 365, - Time: 36.4, + ID: 365, + Time: 36.4, Weight: 0.000385, }, { - ID: 366, - Time: 36.5, + ID: 366, + Time: 36.5, Weight: 0.000382, }, { - ID: 367, - Time: 36.6, + ID: 367, + Time: 36.6, Weight: 0.000378, }, { - ID: 368, - Time: 36.7, + ID: 368, + Time: 36.7, Weight: 0.000375, }, { - ID: 369, - Time: 36.8, + ID: 369, + Time: 36.8, Weight: 0.000372, }, { - ID: 370, - Time: 36.9, + ID: 370, + Time: 36.9, Weight: 0.000369, }, { - ID: 371, - Time: 37, + ID: 371, + Time: 37, Weight: 0.000366, }, { - ID: 372, - Time: 37.1, + ID: 372, + Time: 37.1, Weight: 0.000363, }, { - ID: 373, - Time: 37.2, + ID: 373, + Time: 37.2, Weight: 0.00036, }, { - ID: 374, - Time: 37.3, + ID: 374, + Time: 37.3, Weight: 0.000357, }, { - ID: 375, - Time: 37.4, + ID: 375, + Time: 37.4, Weight: 0.000354, }, { - ID: 376, - Time: 37.5, + ID: 376, + Time: 37.5, Weight: 0.000351, }, { - ID: 377, - Time: 37.6, + ID: 377, + Time: 37.6, Weight: 0.000348, }, { - ID: 378, - Time: 37.7, + ID: 378, + Time: 37.7, Weight: 0.000345, }, { - ID: 379, - Time: 37.8, + ID: 379, + Time: 37.8, Weight: 0.000342, }, { - ID: 380, - Time: 37.9, + ID: 380, + Time: 37.9, Weight: 0.00034, }, { - ID: 381, - Time: 38, + ID: 381, + Time: 38, Weight: 0.000337, }, { - ID: 382, - Time: 38.1, + ID: 382, + Time: 38.1, Weight: 0.000334, }, { - ID: 383, - Time: 38.2, + ID: 383, + Time: 38.2, Weight: 0.000331, }, { - ID: 384, - Time: 38.3, + ID: 384, + Time: 38.3, Weight: 0.000328, }, { - ID: 385, - Time: 38.4, + ID: 385, + Time: 38.4, Weight: 0.000326, }, { - ID: 386, - Time: 38.5, + ID: 386, + Time: 38.5, Weight: 0.000323, }, { - ID: 387, - Time: 38.6, + ID: 387, + Time: 38.6, Weight: 0.00032, }, { - ID: 388, - Time: 38.7, + ID: 388, + Time: 38.7, Weight: 0.000318, }, { - ID: 389, - Time: 38.8, + ID: 389, + Time: 38.8, Weight: 0.000315, }, { - ID: 390, - Time: 38.9, + ID: 390, + Time: 38.9, Weight: 0.000312, }, { - ID: 391, - Time: 39, + ID: 391, + Time: 39, Weight: 0.00031, }, { - ID: 392, - Time: 39.1, + ID: 392, + Time: 39.1, Weight: 0.000307, }, { - ID: 393, - Time: 39.2, + ID: 393, + Time: 39.2, Weight: 0.000305, }, { - ID: 394, - Time: 39.3, + ID: 394, + Time: 39.3, Weight: 0.000302, }, { - ID: 395, - Time: 39.4, + ID: 395, + Time: 39.4, Weight: 0.0003, }, { - ID: 396, - Time: 39.5, + ID: 396, + Time: 39.5, Weight: 0.000297, }, { - ID: 397, - Time: 39.6, + ID: 397, + Time: 39.6, Weight: 0.000295, }, { - ID: 398, - Time: 39.7, + ID: 398, + Time: 39.7, Weight: 0.000292, }, { - ID: 399, - Time: 39.8, + ID: 399, + Time: 39.8, Weight: 0.00029, }, { - ID: 400, - Time: 39.9, + ID: 400, + Time: 39.9, Weight: 0.000287, }, { - ID: 401, - Time: 40, + ID: 401, + Time: 40, Weight: 0.000285, }, { - ID: 402, - Time: 40.1, + ID: 402, + Time: 40.1, Weight: 0.000283, }, { - ID: 403, - Time: 40.2, + ID: 403, + Time: 40.2, Weight: 0.00028, }, { - ID: 404, - Time: 40.3, + ID: 404, + Time: 40.3, Weight: 0.000278, }, { - ID: 405, - Time: 40.4, + ID: 405, + Time: 40.4, Weight: 0.000276, }, { - ID: 406, - Time: 40.5, + ID: 406, + Time: 40.5, Weight: 0.000273, }, { - ID: 407, - Time: 40.6, + ID: 407, + Time: 40.6, Weight: 0.000271, }, { - ID: 408, - Time: 40.7, + ID: 408, + Time: 40.7, Weight: 0.000269, }, { - ID: 409, - Time: 40.8, + ID: 409, + Time: 40.8, Weight: 0.000267, }, { - ID: 410, - Time: 40.9, + ID: 410, + Time: 40.9, Weight: 0.000264, }, { - ID: 411, - Time: 41, + ID: 411, + Time: 41, Weight: 0.000262, }, { - ID: 412, - Time: 41.1, + ID: 412, + Time: 41.1, Weight: 0.00026, }, { - ID: 413, - Time: 41.2, + ID: 413, + Time: 41.2, Weight: 0.000258, }, { - ID: 414, - Time: 41.3, + ID: 414, + Time: 41.3, Weight: 0.000256, }, { - ID: 415, - Time: 41.4, + ID: 415, + Time: 41.4, Weight: 0.000254, }, { - ID: 416, - Time: 41.5, + ID: 416, + Time: 41.5, Weight: 0.000251, }, { - ID: 417, - Time: 41.6, + ID: 417, + Time: 41.6, Weight: 0.000249, }, { - ID: 418, - Time: 41.7, + ID: 418, + Time: 41.7, Weight: 0.000247, }, { - ID: 419, - Time: 41.8, + ID: 419, + Time: 41.8, Weight: 0.000245, }, { - ID: 420, - Time: 41.9, + ID: 420, + Time: 41.9, Weight: 0.000243, }, { - ID: 421, - Time: 42, + ID: 421, + Time: 42, Weight: 0.000241, }, { - ID: 422, - Time: 42.1, + ID: 422, + Time: 42.1, Weight: 0.000239, }, { - ID: 423, - Time: 42.2, + ID: 423, + Time: 42.2, Weight: 0.000237, }, { - ID: 424, - Time: 42.3, + ID: 424, + Time: 42.3, Weight: 0.000235, }, { - ID: 425, - Time: 42.4, + ID: 425, + Time: 42.4, Weight: 0.000233, }, { - ID: 426, - Time: 42.5, + ID: 426, + Time: 42.5, Weight: 0.000231, }, { - ID: 427, - Time: 42.6, + ID: 427, + Time: 42.6, Weight: 0.000229, }, { - ID: 428, - Time: 42.7, + ID: 428, + Time: 42.7, Weight: 0.000228, }, { - ID: 429, - Time: 42.8, + ID: 429, + Time: 42.8, Weight: 0.000226, }, { - ID: 430, - Time: 42.9, + ID: 430, + Time: 42.9, Weight: 0.000224, }, { - ID: 431, - Time: 43, + ID: 431, + Time: 43, Weight: 0.000222, }, { - ID: 432, - Time: 43.1, + ID: 432, + Time: 43.1, Weight: 0.00022, }, { - ID: 433, - Time: 43.2, + ID: 433, + Time: 43.2, Weight: 0.000218, }, { - ID: 434, - Time: 43.3, + ID: 434, + Time: 43.3, Weight: 0.000216, }, { - ID: 435, - Time: 43.4, + ID: 435, + Time: 43.4, Weight: 0.000215, }, { - ID: 436, - Time: 43.5, + ID: 436, + Time: 43.5, Weight: 0.000213, }, { - ID: 437, - Time: 43.6, + ID: 437, + Time: 43.6, Weight: 0.000211, }, { - ID: 438, - Time: 43.7, + ID: 438, + Time: 43.7, Weight: 0.000209, }, { - ID: 439, - Time: 43.8, + ID: 439, + Time: 43.8, Weight: 0.000208, }, { - ID: 440, - Time: 43.9, + ID: 440, + Time: 43.9, Weight: 0.000206, }, { - ID: 441, - Time: 44, + ID: 441, + Time: 44, Weight: 0.000204, }, { - ID: 442, - Time: 44.1, + ID: 442, + Time: 44.1, Weight: 0.000202, }, { - ID: 443, - Time: 44.2, + ID: 443, + Time: 44.2, Weight: 0.000201, }, { - ID: 444, - Time: 44.3, + ID: 444, + Time: 44.3, Weight: 0.000199, }, { - ID: 445, - Time: 44.4, + ID: 445, + Time: 44.4, Weight: 0.000197, }, { - ID: 446, - Time: 44.5, + ID: 446, + Time: 44.5, Weight: 0.000196, }, { - ID: 447, - Time: 44.6, + ID: 447, + Time: 44.6, Weight: 0.000194, }, { - ID: 448, - Time: 44.7, + ID: 448, + Time: 44.7, Weight: 0.000193, }, { - ID: 449, - Time: 44.8, + ID: 449, + Time: 44.8, Weight: 0.000191, }, { - ID: 450, - Time: 44.9, + ID: 450, + Time: 44.9, Weight: 0.000189, }, { - ID: 451, - Time: 45, + ID: 451, + Time: 45, Weight: 0.000188, }, { - ID: 452, - Time: 45.1, + ID: 452, + Time: 45.1, Weight: 0.000186, }, { - ID: 453, - Time: 45.2, + ID: 453, + Time: 45.2, Weight: 0.000185, }, { - ID: 454, - Time: 45.3, + ID: 454, + Time: 45.3, Weight: 0.000183, }, { - ID: 455, - Time: 45.4, + ID: 455, + Time: 45.4, Weight: 0.000182, }, { - ID: 456, - Time: 45.5, + ID: 456, + Time: 45.5, Weight: 0.00018, }, { - ID: 457, - Time: 45.6, + ID: 457, + Time: 45.6, Weight: 0.000179, }, { - ID: 458, - Time: 45.7, + ID: 458, + Time: 45.7, Weight: 0.000177, }, { - ID: 459, - Time: 45.8, + ID: 459, + Time: 45.8, Weight: 0.000176, }, { - ID: 460, - Time: 45.9, + ID: 460, + Time: 45.9, Weight: 0.000174, }, { - ID: 461, - Time: 46, + ID: 461, + Time: 46, Weight: 0.000173, }, { - ID: 462, - Time: 46.1, + ID: 462, + Time: 46.1, Weight: 0.000171, }, { - ID: 463, - Time: 46.2, + ID: 463, + Time: 46.2, Weight: 0.00017, }, { - ID: 464, - Time: 46.3, + ID: 464, + Time: 46.3, Weight: 0.000168, }, { - ID: 465, - Time: 46.4, + ID: 465, + Time: 46.4, Weight: 0.000167, }, { - ID: 466, - Time: 46.5, + ID: 466, + Time: 46.5, Weight: 0.000166, }, { - ID: 467, - Time: 46.6, + ID: 467, + Time: 46.6, Weight: 0.000164, }, { - ID: 468, - Time: 46.7, + ID: 468, + Time: 46.7, Weight: 0.000163, }, { - ID: 469, - Time: 46.8, + ID: 469, + Time: 46.8, Weight: 0.000162, }, { - ID: 470, - Time: 46.9, + ID: 470, + Time: 46.9, Weight: 0.00016, }, { - ID: 471, - Time: 47, + ID: 471, + Time: 47, Weight: 0.000159, }, { - ID: 472, - Time: 47.1, + ID: 472, + Time: 47.1, Weight: 0.000158, }, { - ID: 473, - Time: 47.2, + ID: 473, + Time: 47.2, Weight: 0.000156, }, { - ID: 474, - Time: 47.3, + ID: 474, + Time: 47.3, Weight: 0.000155, }, { - ID: 475, - Time: 47.4, + ID: 475, + Time: 47.4, Weight: 0.000154, }, { - ID: 476, - Time: 47.5, + ID: 476, + Time: 47.5, Weight: 0.000152, }, { - ID: 477, - Time: 47.6, + ID: 477, + Time: 47.6, Weight: 0.000151, }, { - ID: 478, - Time: 47.7, + ID: 478, + Time: 47.7, Weight: 0.00015, }, { - ID: 479, - Time: 47.8, + ID: 479, + Time: 47.8, Weight: 0.000149, }, { - ID: 480, - Time: 47.9, + ID: 480, + Time: 47.9, Weight: 0.000147, }, { - ID: 481, - Time: 48, + ID: 481, + Time: 48, Weight: 0.000146, }, { - ID: 482, - Time: 48.1, + ID: 482, + Time: 48.1, Weight: 0.000145, }, { - ID: 483, - Time: 48.2, + ID: 483, + Time: 48.2, Weight: 0.000144, }, { - ID: 484, - Time: 48.3, + ID: 484, + Time: 48.3, Weight: 0.000143, }, { - ID: 485, - Time: 48.4, + ID: 485, + Time: 48.4, Weight: 0.000141, }, { - ID: 486, - Time: 48.5, + ID: 486, + Time: 48.5, Weight: 0.00014, }, { - ID: 487, - Time: 48.6, + ID: 487, + Time: 48.6, Weight: 0.000139, }, { - ID: 488, - Time: 48.7, + ID: 488, + Time: 48.7, Weight: 0.000138, }, { - ID: 489, - Time: 48.8, + ID: 489, + Time: 48.8, Weight: 0.000137, }, { - ID: 490, - Time: 48.9, + ID: 490, + Time: 48.9, Weight: 0.000136, }, { - ID: 491, - Time: 49, + ID: 491, + Time: 49, Weight: 0.000135, }, { - ID: 492, - Time: 49.1, + ID: 492, + Time: 49.1, Weight: 0.000133, }, { - ID: 493, - Time: 49.2, + ID: 493, + Time: 49.2, Weight: 0.000132, }, { - ID: 494, - Time: 49.3, + ID: 494, + Time: 49.3, Weight: 0.000131, }, { - ID: 495, - Time: 49.4, + ID: 495, + Time: 49.4, Weight: 0.00013, }, { - ID: 496, - Time: 49.5, + ID: 496, + Time: 49.5, Weight: 0.000129, }, { - ID: 497, - Time: 49.6, + ID: 497, + Time: 49.6, Weight: 0.000128, }, { - ID: 498, - Time: 49.7, + ID: 498, + Time: 49.7, Weight: 0.000127, }, { - ID: 499, - Time: 49.8, + ID: 499, + Time: 49.8, Weight: 0.000126, }, { - ID: 500, - Time: 49.9, + ID: 500, + Time: 49.9, Weight: 0.000125, }, { - ID: 501, - Time: 50, + ID: 501, + Time: 50, Weight: 0.000124, }, { - ID: 502, - Time: 50.1, + ID: 502, + Time: 50.1, Weight: 0.000123, }, { - ID: 503, - Time: 50.2, + ID: 503, + Time: 50.2, Weight: 0.000122, }, { - ID: 504, - Time: 50.3, + ID: 504, + Time: 50.3, Weight: 0.000121, }, { - ID: 505, - Time: 50.4, + ID: 505, + Time: 50.4, Weight: 0.00012, }, { - ID: 506, - Time: 50.5, + ID: 506, + Time: 50.5, Weight: 0.000119, }, { - ID: 507, - Time: 50.6, + ID: 507, + Time: 50.6, Weight: 0.000118, }, { - ID: 508, - Time: 50.7, + ID: 508, + Time: 50.7, Weight: 0.000117, }, { - ID: 509, - Time: 50.8, + ID: 509, + Time: 50.8, Weight: 0.000116, }, { - ID: 510, - Time: 50.9, + ID: 510, + Time: 50.9, Weight: 0.000115, }, { - ID: 511, - Time: 51, + ID: 511, + Time: 51, Weight: 0.000114, }, { - ID: 512, - Time: 51.1, + ID: 512, + Time: 51.1, Weight: 0.000113, }, { - ID: 513, - Time: 51.2, + ID: 513, + Time: 51.2, Weight: 0.000112, }, { - ID: 514, - Time: 51.3, + ID: 514, + Time: 51.3, Weight: 0.000111, }, { - ID: 515, - Time: 51.4, + ID: 515, + Time: 51.4, Weight: 0.00011, }, { - ID: 516, - Time: 51.5, + ID: 516, + Time: 51.5, Weight: 0.000109, }, { - ID: 517, - Time: 51.6, + ID: 517, + Time: 51.6, Weight: 0.000108, }, { - ID: 518, - Time: 51.7, + ID: 518, + Time: 51.7, Weight: 0.000107, }, { - ID: 519, - Time: 51.8, + ID: 519, + Time: 51.8, Weight: 0.000106, }, { - ID: 520, - Time: 51.9, + ID: 520, + Time: 51.9, Weight: 0.000106, }, { - ID: 521, - Time: 52, + ID: 521, + Time: 52, Weight: 0.000105, }, { - ID: 522, - Time: 52.1, + ID: 522, + Time: 52.1, Weight: 0.000104, }, { - ID: 523, - Time: 52.2, + ID: 523, + Time: 52.2, Weight: 0.000103, }, { - ID: 524, - Time: 52.3, + ID: 524, + Time: 52.3, Weight: 0.000102, }, { - ID: 525, - Time: 52.4, + ID: 525, + Time: 52.4, Weight: 0.000101, }, { - ID: 526, - Time: 52.5, + ID: 526, + Time: 52.5, Weight: 0.0001, }, { - ID: 527, - Time: 52.6, + ID: 527, + Time: 52.6, Weight: 0.0001, }, { - ID: 528, - Time: 52.7, + ID: 528, + Time: 52.7, Weight: 0.000099, }, { - ID: 529, - Time: 52.8, + ID: 529, + Time: 52.8, Weight: 0.000098, }, { - ID: 530, - Time: 52.9, + ID: 530, + Time: 52.9, Weight: 0.000097, }, { - ID: 531, - Time: 53, + ID: 531, + Time: 53, Weight: 0.000096, }, { - ID: 532, - Time: 53.1, + ID: 532, + Time: 53.1, Weight: 0.000096, }, { - ID: 533, - Time: 53.2, + ID: 533, + Time: 53.2, Weight: 0.000095, }, { - ID: 534, - Time: 53.3, + ID: 534, + Time: 53.3, Weight: 0.000094, }, { - ID: 535, - Time: 53.4, + ID: 535, + Time: 53.4, Weight: 0.000093, }, { - ID: 536, - Time: 53.5, + ID: 536, + Time: 53.5, Weight: 0.000092, }, { - ID: 537, - Time: 53.6, + ID: 537, + Time: 53.6, Weight: 0.000092, }, { - ID: 538, - Time: 53.7, + ID: 538, + Time: 53.7, Weight: 0.000091, }, { - ID: 539, - Time: 53.8, + ID: 539, + Time: 53.8, Weight: 0.00009, }, { - ID: 540, - Time: 53.9, + ID: 540, + Time: 53.9, Weight: 0.000089, }, { - ID: 541, - Time: 54, + ID: 541, + Time: 54, Weight: 0.000089, }, { - ID: 542, - Time: 54.1, + ID: 542, + Time: 54.1, Weight: 0.000088, }, { - ID: 543, - Time: 54.2, + ID: 543, + Time: 54.2, Weight: 0.000087, }, { - ID: 544, - Time: 54.3, + ID: 544, + Time: 54.3, Weight: 0.000086, }, { - ID: 545, - Time: 54.4, + ID: 545, + Time: 54.4, Weight: 0.000086, }, { - ID: 546, - Time: 54.5, + ID: 546, + Time: 54.5, Weight: 0.000085, }, { - ID: 547, - Time: 54.6, + ID: 547, + Time: 54.6, Weight: 0.000084, }, { - ID: 548, - Time: 54.7, + ID: 548, + Time: 54.7, Weight: 0.000084, }, { - ID: 549, - Time: 54.8, + ID: 549, + Time: 54.8, Weight: 0.000083, }, { - ID: 550, - Time: 54.9, + ID: 550, + Time: 54.9, Weight: 0.000082, }, { - ID: 551, - Time: 55, + ID: 551, + Time: 55, Weight: 0.000082, }, { - ID: 552, - Time: 55.1, + ID: 552, + Time: 55.1, Weight: 0.000081, }, { - ID: 553, - Time: 55.2, + ID: 553, + Time: 55.2, Weight: 0.00008, }, { - ID: 554, - Time: 55.3, + ID: 554, + Time: 55.3, Weight: 0.00008, }, { - ID: 555, - Time: 55.4, + ID: 555, + Time: 55.4, Weight: 0.000079, }, { - ID: 556, - Time: 55.5, + ID: 556, + Time: 55.5, Weight: 0.000078, }, { - ID: 557, - Time: 55.6, + ID: 557, + Time: 55.6, Weight: 0.000078, }, { - ID: 558, - Time: 55.7, + ID: 558, + Time: 55.7, Weight: 0.000077, }, { - ID: 559, - Time: 55.8, + ID: 559, + Time: 55.8, Weight: 0.000076, }, { - ID: 560, - Time: 55.9, + ID: 560, + Time: 55.9, Weight: 0.000076, }, { - ID: 561, - Time: 56, + ID: 561, + Time: 56, Weight: 0.000075, }, { - ID: 562, - Time: 56.1, + ID: 562, + Time: 56.1, Weight: 0.000074, }, { - ID: 563, - Time: 56.2, + ID: 563, + Time: 56.2, Weight: 0.000074, }, { - ID: 564, - Time: 56.3, + ID: 564, + Time: 56.3, Weight: 0.000073, }, { - ID: 565, - Time: 56.4, + ID: 565, + Time: 56.4, Weight: 0.000073, }, { - ID: 566, - Time: 56.5, + ID: 566, + Time: 56.5, Weight: 0.000072, }, { - ID: 567, - Time: 56.6, + ID: 567, + Time: 56.6, Weight: 0.000071, }, { - ID: 568, - Time: 56.7, + ID: 568, + Time: 56.7, Weight: 0.000071, }, { - ID: 569, - Time: 56.8, + ID: 569, + Time: 56.8, Weight: 0.00007, }, { - ID: 570, - Time: 56.9, + ID: 570, + Time: 56.9, Weight: 0.00007, }, { - ID: 571, - Time: 57, + ID: 571, + Time: 57, Weight: 0.000069, }, { - ID: 572, - Time: 57.1, + ID: 572, + Time: 57.1, Weight: 0.000068, }, { - ID: 573, - Time: 57.2, + ID: 573, + Time: 57.2, Weight: 0.000068, }, { - ID: 574, - Time: 57.3, + ID: 574, + Time: 57.3, Weight: 0.000067, }, { - ID: 575, - Time: 57.4, + ID: 575, + Time: 57.4, Weight: 0.000067, }, { - ID: 576, - Time: 57.5, + ID: 576, + Time: 57.5, Weight: 0.000066, }, { - ID: 577, - Time: 57.6, + ID: 577, + Time: 57.6, Weight: 0.000066, }, { - ID: 578, - Time: 57.7, + ID: 578, + Time: 57.7, Weight: 0.000065, }, { - ID: 579, - Time: 57.8, + ID: 579, + Time: 57.8, Weight: 0.000065, }, { - ID: 580, - Time: 57.9, + ID: 580, + Time: 57.9, Weight: 0.000064, }, { - ID: 581, - Time: 58, + ID: 581, + Time: 58, Weight: 0.000063, }, { - ID: 582, - Time: 58.1, + ID: 582, + Time: 58.1, Weight: 0.000063, }, { - ID: 583, - Time: 58.2, + ID: 583, + Time: 58.2, Weight: 0.000062, }, { - ID: 584, - Time: 58.3, + ID: 584, + Time: 58.3, Weight: 0.000062, }, { - ID: 585, - Time: 58.4, + ID: 585, + Time: 58.4, Weight: 0.000061, }, { - ID: 586, - Time: 58.5, + ID: 586, + Time: 58.5, Weight: 0.000061, }, { - ID: 587, - Time: 58.6, + ID: 587, + Time: 58.6, Weight: 0.00006, }, { - ID: 588, - Time: 58.7, + ID: 588, + Time: 58.7, Weight: 0.00006, }, { - ID: 589, - Time: 58.8, + ID: 589, + Time: 58.8, Weight: 0.000059, }, { - ID: 590, - Time: 58.9, + ID: 590, + Time: 58.9, Weight: 0.000059, }, { - ID: 591, - Time: 59, + ID: 591, + Time: 59, Weight: 0.000058, }, { - ID: 592, - Time: 59.1, + ID: 592, + Time: 59.1, Weight: 0.000058, }, { - ID: 593, - Time: 59.2, + ID: 593, + Time: 59.2, Weight: 0.000057, }, { - ID: 594, - Time: 59.3, + ID: 594, + Time: 59.3, Weight: 0.000057, }, { - ID: 595, - Time: 59.4, + ID: 595, + Time: 59.4, Weight: 0.000056, }, { - ID: 596, - Time: 59.5, + ID: 596, + Time: 59.5, Weight: 0.000056, }, { - ID: 597, - Time: 59.6, + ID: 597, + Time: 59.6, Weight: 0.000056, }, { - ID: 598, - Time: 59.7, + ID: 598, + Time: 59.7, Weight: 0.000055, }, { - ID: 599, - Time: 59.8, + ID: 599, + Time: 59.8, Weight: 0.000055, }, { - ID: 600, - Time: 59.9, + ID: 600, + Time: 59.9, Weight: 0.000054, }, { - ID: 601, - Time: 60, + ID: 601, + Time: 60, Weight: 0.000054, }, { - ID: 602, - Time: 60.1, + ID: 602, + Time: 60.1, Weight: 0.000053, }, { - ID: 603, - Time: 60.2, + ID: 603, + Time: 60.2, Weight: 0.000053, }, { - ID: 604, - Time: 60.3, + ID: 604, + Time: 60.3, Weight: 0.000052, }, { - ID: 605, - Time: 60.4, + ID: 605, + Time: 60.4, Weight: 0.000052, }, { - ID: 606, - Time: 60.5, + ID: 606, + Time: 60.5, Weight: 0.000052, }, { - ID: 607, - Time: 60.6, + ID: 607, + Time: 60.6, Weight: 0.000051, }, { - ID: 608, - Time: 60.7, + ID: 608, + Time: 60.7, Weight: 0.000051, }, { - ID: 609, - Time: 60.8, + ID: 609, + Time: 60.8, Weight: 0.00005, }, { - ID: 610, - Time: 60.9, + ID: 610, + Time: 60.9, Weight: 0.00005, }, { - ID: 611, - Time: 61, + ID: 611, + Time: 61, Weight: 0.000049, }, { - ID: 612, - Time: 61.1, + ID: 612, + Time: 61.1, Weight: 0.000049, }, { - ID: 613, - Time: 61.2, + ID: 613, + Time: 61.2, Weight: 0.000049, }, { - ID: 614, - Time: 61.3, + ID: 614, + Time: 61.3, Weight: 0.000048, }, { - ID: 615, - Time: 61.4, + ID: 615, + Time: 61.4, Weight: 0.000048, }, { - ID: 616, - Time: 61.5, + ID: 616, + Time: 61.5, Weight: 0.000047, }, { - ID: 617, - Time: 61.6, + ID: 617, + Time: 61.6, Weight: 0.000047, }, { - ID: 618, - Time: 61.7, + ID: 618, + Time: 61.7, Weight: 0.000047, }, { - ID: 619, - Time: 61.8, + ID: 619, + Time: 61.8, Weight: 0.000046, }, { - ID: 620, - Time: 61.9, + ID: 620, + Time: 61.9, Weight: 0.000046, }, { - ID: 621, - Time: 62, + ID: 621, + Time: 62, Weight: 0.000045, }, { - ID: 622, - Time: 62.1, + ID: 622, + Time: 62.1, Weight: 0.000045, }, { - ID: 623, - Time: 62.2, + ID: 623, + Time: 62.2, Weight: 0.000045, }, { - ID: 624, - Time: 62.3, + ID: 624, + Time: 62.3, Weight: 0.000044, }, { - ID: 625, - Time: 62.4, + ID: 625, + Time: 62.4, Weight: 0.000044, }, { - ID: 626, - Time: 62.5, + ID: 626, + Time: 62.5, Weight: 0.000044, }, { - ID: 627, - Time: 62.6, + ID: 627, + Time: 62.6, Weight: 0.000043, }, { - ID: 628, - Time: 62.7, + ID: 628, + Time: 62.7, Weight: 0.000043, }, { - ID: 629, - Time: 62.8, + ID: 629, + Time: 62.8, Weight: 0.000043, }, { - ID: 630, - Time: 62.9, + ID: 630, + Time: 62.9, Weight: 0.000042, }, { - ID: 631, - Time: 63, + ID: 631, + Time: 63, Weight: 0.000042, }, { - ID: 632, - Time: 63.1, + ID: 632, + Time: 63.1, Weight: 0.000041, }, { - ID: 633, - Time: 63.2, + ID: 633, + Time: 63.2, Weight: 0.000041, }, { - ID: 634, - Time: 63.3, + ID: 634, + Time: 63.3, Weight: 0.000041, }, { - ID: 635, - Time: 63.4, + ID: 635, + Time: 63.4, Weight: 0.00004, }, { - ID: 636, - Time: 63.5, + ID: 636, + Time: 63.5, Weight: 0.00004, }, { - ID: 637, - Time: 63.6, + ID: 637, + Time: 63.6, Weight: 0.00004, }, { - ID: 638, - Time: 63.7, + ID: 638, + Time: 63.7, Weight: 0.000039, }, { - ID: 639, - Time: 63.8, + ID: 639, + Time: 63.8, Weight: 0.000039, }, { - ID: 640, - Time: 63.9, + ID: 640, + Time: 63.9, Weight: 0.000039, }, { - ID: 641, - Time: 64, + ID: 641, + Time: 64, Weight: 0.000038, }, { - ID: 642, - Time: 64.1, + ID: 642, + Time: 64.1, Weight: 0.000038, }, { - ID: 643, - Time: 64.2, + ID: 643, + Time: 64.2, Weight: 0.000038, }, { - ID: 644, - Time: 64.3, + ID: 644, + Time: 64.3, Weight: 0.000038, }, { - ID: 645, - Time: 64.4, + ID: 645, + Time: 64.4, Weight: 0.000037, }, { - ID: 646, - Time: 64.5, + ID: 646, + Time: 64.5, Weight: 0.000037, }, { - ID: 647, - Time: 64.6, + ID: 647, + Time: 64.6, Weight: 0.000037, }, { - ID: 648, - Time: 64.7, + ID: 648, + Time: 64.7, Weight: 0.000036, }, { - ID: 649, - Time: 64.8, + ID: 649, + Time: 64.8, Weight: 0.000036, }, { - ID: 650, - Time: 64.9, + ID: 650, + Time: 64.9, Weight: 0.000036, }, { - ID: 651, - Time: 65, + ID: 651, + Time: 65, Weight: 0.000035, }, { - ID: 652, - Time: 65.1, + ID: 652, + Time: 65.1, Weight: 0.000035, }, { - ID: 653, - Time: 65.2, + ID: 653, + Time: 65.2, Weight: 0.000035, }, { - ID: 654, - Time: 65.3, + ID: 654, + Time: 65.3, Weight: 0.000035, }, { - ID: 655, - Time: 65.4, + ID: 655, + Time: 65.4, Weight: 0.000034, }, { - ID: 656, - Time: 65.5, + ID: 656, + Time: 65.5, Weight: 0.000034, }, { - ID: 657, - Time: 65.6, + ID: 657, + Time: 65.6, Weight: 0.000034, }, { - ID: 658, - Time: 65.7, + ID: 658, + Time: 65.7, Weight: 0.000033, }, { - ID: 659, - Time: 65.8, + ID: 659, + Time: 65.8, Weight: 0.000033, }, { - ID: 660, - Time: 65.9, + ID: 660, + Time: 65.9, Weight: 0.000033, }, { - ID: 661, - Time: 66, + ID: 661, + Time: 66, Weight: 0.000033, }, { - ID: 662, - Time: 66.1, + ID: 662, + Time: 66.1, Weight: 0.000032, }, { - ID: 663, - Time: 66.2, + ID: 663, + Time: 66.2, Weight: 0.000032, }, { - ID: 664, - Time: 66.3, + ID: 664, + Time: 66.3, Weight: 0.000032, }, { - ID: 665, - Time: 66.4, + ID: 665, + Time: 66.4, Weight: 0.000032, }, { - ID: 666, - Time: 66.5, + ID: 666, + Time: 66.5, Weight: 0.000031, }, { - ID: 667, - Time: 66.6, + ID: 667, + Time: 66.6, Weight: 0.000031, }, { - ID: 668, - Time: 66.7, + ID: 668, + Time: 66.7, Weight: 0.000031, }, { - ID: 669, - Time: 66.8, + ID: 669, + Time: 66.8, Weight: 0.00003, }, { - ID: 670, - Time: 66.9, + ID: 670, + Time: 66.9, Weight: 0.00003, }, { - ID: 671, - Time: 67, + ID: 671, + Time: 67, Weight: 0.00003, }, { - ID: 672, - Time: 67.1, + ID: 672, + Time: 67.1, Weight: 0.00003, }, { - ID: 673, - Time: 67.2, + ID: 673, + Time: 67.2, Weight: 0.000029, }, { - ID: 674, - Time: 67.3, + ID: 674, + Time: 67.3, Weight: 0.000029, }, { - ID: 675, - Time: 67.4, + ID: 675, + Time: 67.4, Weight: 0.000029, }, { - ID: 676, - Time: 67.5, + ID: 676, + Time: 67.5, Weight: 0.000029, }, { - ID: 677, - Time: 67.6, + ID: 677, + Time: 67.6, Weight: 0.000029, }, { - ID: 678, - Time: 67.7, + ID: 678, + Time: 67.7, Weight: 0.000028, }, { - ID: 679, - Time: 67.8, + ID: 679, + Time: 67.8, Weight: 0.000028, }, { - ID: 680, - Time: 67.9, + ID: 680, + Time: 67.9, Weight: 0.000028, }, { - ID: 681, - Time: 68, + ID: 681, + Time: 68, Weight: 0.000028, }, { - ID: 682, - Time: 68.1, + ID: 682, + Time: 68.1, Weight: 0.000027, }, { - ID: 683, - Time: 68.2, + ID: 683, + Time: 68.2, Weight: 0.000027, }, { - ID: 684, - Time: 68.3, + ID: 684, + Time: 68.3, Weight: 0.000027, }, { - ID: 685, - Time: 68.4, + ID: 685, + Time: 68.4, Weight: 0.000027, }, { - ID: 686, - Time: 68.5, + ID: 686, + Time: 68.5, Weight: 0.000026, }, { - ID: 687, - Time: 68.6, + ID: 687, + Time: 68.6, Weight: 0.000026, }, { - ID: 688, - Time: 68.7, + ID: 688, + Time: 68.7, Weight: 0.000026, }, { - ID: 689, - Time: 68.8, + ID: 689, + Time: 68.8, Weight: 0.000026, }, { - ID: 690, - Time: 68.9, + ID: 690, + Time: 68.9, Weight: 0.000026, }, { - ID: 691, - Time: 69, + ID: 691, + Time: 69, Weight: 0.000025, }, { - ID: 692, - Time: 69.1, + ID: 692, + Time: 69.1, Weight: 0.000025, }, { - ID: 693, - Time: 69.2, + ID: 693, + Time: 69.2, Weight: 0.000025, }, { - ID: 694, - Time: 69.3, + ID: 694, + Time: 69.3, Weight: 0.000025, }, { - ID: 695, - Time: 69.4, + ID: 695, + Time: 69.4, Weight: 0.000025, }, { - ID: 696, - Time: 69.5, + ID: 696, + Time: 69.5, Weight: 0.000024, }, { - ID: 697, - Time: 69.6, + ID: 697, + Time: 69.6, Weight: 0.000024, }, { - ID: 698, - Time: 69.7, + ID: 698, + Time: 69.7, Weight: 0.000024, }, { - ID: 699, - Time: 69.8, + ID: 699, + Time: 69.8, Weight: 0.000024, }, { - ID: 700, - Time: 69.9, + ID: 700, + Time: 69.9, Weight: 0.000024, }, { - ID: 701, - Time: 70, + ID: 701, + Time: 70, Weight: 0.000023, }, { - ID: 702, - Time: 70.1, + ID: 702, + Time: 70.1, Weight: 0.000023, }, { - ID: 703, - Time: 70.2, + ID: 703, + Time: 70.2, Weight: 0.000023, }, { - ID: 704, - Time: 70.3, + ID: 704, + Time: 70.3, Weight: 0.000023, }, { - ID: 705, - Time: 70.4, + ID: 705, + Time: 70.4, Weight: 0.000023, }, { - ID: 706, - Time: 70.5, + ID: 706, + Time: 70.5, Weight: 0.000022, }, { - ID: 707, - Time: 70.6, + ID: 707, + Time: 70.6, Weight: 0.000022, }, { - ID: 708, - Time: 70.7, + ID: 708, + Time: 70.7, Weight: 0.000022, }, { - ID: 709, - Time: 70.8, + ID: 709, + Time: 70.8, Weight: 0.000022, }, { - ID: 710, - Time: 70.9, + ID: 710, + Time: 70.9, Weight: 0.000022, }, { - ID: 711, - Time: 71, + ID: 711, + Time: 71, Weight: 0.000021, }, { - ID: 712, - Time: 71.1, + ID: 712, + Time: 71.1, Weight: 0.000021, }, { - ID: 713, - Time: 71.2, + ID: 713, + Time: 71.2, Weight: 0.000021, }, { - ID: 714, - Time: 71.3, + ID: 714, + Time: 71.3, Weight: 0.000021, }, { - ID: 715, - Time: 71.4, + ID: 715, + Time: 71.4, Weight: 0.000021, }, { - ID: 716, - Time: 71.5, + ID: 716, + Time: 71.5, Weight: 0.000021, }, { - ID: 717, - Time: 71.6, + ID: 717, + Time: 71.6, Weight: 0.00002, }, { - ID: 718, - Time: 71.7, + ID: 718, + Time: 71.7, Weight: 0.00002, }, { - ID: 719, - Time: 71.8, + ID: 719, + Time: 71.8, Weight: 0.00002, }, { - ID: 720, - Time: 71.9, + ID: 720, + Time: 71.9, Weight: 0.00002, }, { - ID: 721, - Time: 72, + ID: 721, + Time: 72, Weight: 0.00002, }, { - ID: 722, - Time: 72.1, + ID: 722, + Time: 72.1, Weight: 0.00002, }, { - ID: 723, - Time: 72.2, + ID: 723, + Time: 72.2, Weight: 0.000019, }, { - ID: 724, - Time: 72.3, + ID: 724, + Time: 72.3, Weight: 0.000019, }, { - ID: 725, - Time: 72.4, + ID: 725, + Time: 72.4, Weight: 0.000019, }, { - ID: 726, - Time: 72.5, + ID: 726, + Time: 72.5, Weight: 0.000019, }, { - ID: 727, - Time: 72.6, + ID: 727, + Time: 72.6, Weight: 0.000019, }, { - ID: 728, - Time: 72.7, + ID: 728, + Time: 72.7, Weight: 0.000019, }, { - ID: 729, - Time: 72.8, + ID: 729, + Time: 72.8, Weight: 0.000018, }, { - ID: 730, - Time: 72.9, + ID: 730, + Time: 72.9, Weight: 0.000018, }, { - ID: 731, - Time: 73, + ID: 731, + Time: 73, Weight: 0.000018, }, { - ID: 732, - Time: 73.1, + ID: 732, + Time: 73.1, Weight: 0.000018, }, { - ID: 733, - Time: 73.2, + ID: 733, + Time: 73.2, Weight: 0.000018, }, { - ID: 734, - Time: 73.3, + ID: 734, + Time: 73.3, Weight: 0.000018, }, { - ID: 735, - Time: 73.4, + ID: 735, + Time: 73.4, Weight: 0.000018, }, { - ID: 736, - Time: 73.5, + ID: 736, + Time: 73.5, Weight: 0.000017, }, { - ID: 737, - Time: 73.6, + ID: 737, + Time: 73.6, Weight: 0.000017, }, { - ID: 738, - Time: 73.7, + ID: 738, + Time: 73.7, Weight: 0.000017, }, { - ID: 739, - Time: 73.8, + ID: 739, + Time: 73.8, Weight: 0.000017, }, { - ID: 740, - Time: 73.9, + ID: 740, + Time: 73.9, Weight: 0.000017, }, { - ID: 741, - Time: 74, + ID: 741, + Time: 74, Weight: 0.000017, }, { - ID: 742, - Time: 74.1, + ID: 742, + Time: 74.1, Weight: 0.000017, }, { - ID: 743, - Time: 74.2, + ID: 743, + Time: 74.2, Weight: 0.000016, }, { - ID: 744, - Time: 74.3, + ID: 744, + Time: 74.3, Weight: 0.000016, }, { - ID: 745, - Time: 74.4, + ID: 745, + Time: 74.4, Weight: 0.000016, }, { - ID: 746, - Time: 74.5, + ID: 746, + Time: 74.5, Weight: 0.000016, }, { - ID: 747, - Time: 74.6, + ID: 747, + Time: 74.6, Weight: 0.000016, }, { - ID: 748, - Time: 74.7, + ID: 748, + Time: 74.7, Weight: 0.000016, }, { - ID: 749, - Time: 74.8, + ID: 749, + Time: 74.8, Weight: 0.000016, }, { - ID: 750, - Time: 74.9, + ID: 750, + Time: 74.9, Weight: 0.000016, }, { - ID: 751, - Time: 75, + ID: 751, + Time: 75, Weight: 0.000015, }, { - ID: 752, - Time: 75.1, + ID: 752, + Time: 75.1, Weight: 0.000015, }, { - ID: 753, - Time: 75.2, + ID: 753, + Time: 75.2, Weight: 0.000015, }, { - ID: 754, - Time: 75.3, + ID: 754, + Time: 75.3, Weight: 0.000015, }, { - ID: 755, - Time: 75.4, + ID: 755, + Time: 75.4, Weight: 0.000015, }, { - ID: 756, - Time: 75.5, + ID: 756, + Time: 75.5, Weight: 0.000015, }, { - ID: 757, - Time: 75.6, + ID: 757, + Time: 75.6, Weight: 0.000015, }, { - ID: 758, - Time: 75.7, + ID: 758, + Time: 75.7, Weight: 0.000015, }, { - ID: 759, - Time: 75.8, + ID: 759, + Time: 75.8, Weight: 0.000014, }, { - ID: 760, - Time: 75.9, + ID: 760, + Time: 75.9, Weight: 0.000014, }, { - ID: 761, - Time: 76, + ID: 761, + Time: 76, Weight: 0.000014, }, { - ID: 762, - Time: 76.1, + ID: 762, + Time: 76.1, Weight: 0.000014, }, { - ID: 763, - Time: 76.2, + ID: 763, + Time: 76.2, Weight: 0.000014, }, { - ID: 764, - Time: 76.3, + ID: 764, + Time: 76.3, Weight: 0.000014, }, { - ID: 765, - Time: 76.4, + ID: 765, + Time: 76.4, Weight: 0.000014, }, { - ID: 766, - Time: 76.5, + ID: 766, + Time: 76.5, Weight: 0.000014, }, { - ID: 767, - Time: 76.6, + ID: 767, + Time: 76.6, Weight: 0.000013, }, { - ID: 768, - Time: 76.7, + ID: 768, + Time: 76.7, Weight: 0.000013, }, { - ID: 769, - Time: 76.8, + ID: 769, + Time: 76.8, Weight: 0.000013, }, { - ID: 770, - Time: 76.9, + ID: 770, + Time: 76.9, Weight: 0.000013, }, { - ID: 771, - Time: 77, + ID: 771, + Time: 77, Weight: 0.000013, }, { - ID: 772, - Time: 77.1, + ID: 772, + Time: 77.1, Weight: 0.000013, }, { - ID: 773, - Time: 77.2, + ID: 773, + Time: 77.2, Weight: 0.000013, }, { - ID: 774, - Time: 77.3, + ID: 774, + Time: 77.3, Weight: 0.000013, }, { - ID: 775, - Time: 77.4, + ID: 775, + Time: 77.4, Weight: 0.000013, }, { - ID: 776, - Time: 77.5, + ID: 776, + Time: 77.5, Weight: 0.000012, }, { - ID: 777, - Time: 77.6, + ID: 777, + Time: 77.6, Weight: 0.000012, }, { - ID: 778, - Time: 77.7, + ID: 778, + Time: 77.7, Weight: 0.000012, }, { - ID: 779, - Time: 77.8, + ID: 779, + Time: 77.8, Weight: 0.000012, }, { - ID: 780, - Time: 77.9, + ID: 780, + Time: 77.9, Weight: 0.000012, }, { - ID: 781, - Time: 78, + ID: 781, + Time: 78, Weight: 0.000012, }, { - ID: 782, - Time: 78.1, + ID: 782, + Time: 78.1, Weight: 0.000012, }, { - ID: 783, - Time: 78.2, + ID: 783, + Time: 78.2, Weight: 0.000012, }, { - ID: 784, - Time: 78.3, + ID: 784, + Time: 78.3, Weight: 0.000012, }, { - ID: 785, - Time: 78.4, + ID: 785, + Time: 78.4, Weight: 0.000012, }, { - ID: 786, - Time: 78.5, + ID: 786, + Time: 78.5, Weight: 0.000011, }, { - ID: 787, - Time: 78.6, + ID: 787, + Time: 78.6, Weight: 0.000011, }, { - ID: 788, - Time: 78.7, + ID: 788, + Time: 78.7, Weight: 0.000011, }, { - ID: 789, - Time: 78.8, + ID: 789, + Time: 78.8, Weight: 0.000011, }, { - ID: 790, - Time: 78.9, + ID: 790, + Time: 78.9, Weight: 0.000011, }, { - ID: 791, - Time: 79, + ID: 791, + Time: 79, Weight: 0.000011, }, { - ID: 792, - Time: 79.1, + ID: 792, + Time: 79.1, Weight: 0.000011, }, { - ID: 793, - Time: 79.2, + ID: 793, + Time: 79.2, Weight: 0.000011, }, { - ID: 794, - Time: 79.3, + ID: 794, + Time: 79.3, Weight: 0.000011, }, { - ID: 795, - Time: 79.4, + ID: 795, + Time: 79.4, Weight: 0.000011, }, { - ID: 796, - Time: 79.5, + ID: 796, + Time: 79.5, Weight: 0.000011, }, { - ID: 797, - Time: 79.6, + ID: 797, + Time: 79.6, Weight: 0.00001, }, { - ID: 798, - Time: 79.7, + ID: 798, + Time: 79.7, Weight: 0.00001, }, { - ID: 799, - Time: 79.8, + ID: 799, + Time: 79.8, Weight: 0.00001, }, { - ID: 800, - Time: 79.9, + ID: 800, + Time: 79.9, Weight: 0.00001, }, { - ID: 801, - Time: 80, + ID: 801, + Time: 80, Weight: 0.00001, }, { - ID: 802, - Time: 80.1, + ID: 802, + Time: 80.1, Weight: 0.00001, }, { - ID: 803, - Time: 80.2, + ID: 803, + Time: 80.2, Weight: 0.00001, }, { - ID: 804, - Time: 80.3, + ID: 804, + Time: 80.3, Weight: 0.00001, }, { - ID: 805, - Time: 80.4, + ID: 805, + Time: 80.4, Weight: 0.00001, }, { - ID: 806, - Time: 80.5, + ID: 806, + Time: 80.5, Weight: 0.00001, }, { - ID: 807, - Time: 80.6, + ID: 807, + Time: 80.6, Weight: 0.00001, }, { - ID: 808, - Time: 80.7, + ID: 808, + Time: 80.7, Weight: 0.00001, }, { - ID: 809, - Time: 80.8, + ID: 809, + Time: 80.8, Weight: 0.000009, }, { - ID: 810, - Time: 80.9, + ID: 810, + Time: 80.9, Weight: 0.000009, }, { - ID: 811, - Time: 81, + ID: 811, + Time: 81, Weight: 0.000009, }, { - ID: 812, - Time: 81.1, + ID: 812, + Time: 81.1, Weight: 0.000009, }, { - ID: 813, - Time: 81.2, + ID: 813, + Time: 81.2, Weight: 0.000009, }, { - ID: 814, - Time: 81.3, + ID: 814, + Time: 81.3, Weight: 0.000009, }, { - ID: 815, - Time: 81.4, + ID: 815, + Time: 81.4, Weight: 0.000009, }, { - ID: 816, - Time: 81.5, + ID: 816, + Time: 81.5, Weight: 0.000009, }, { - ID: 817, - Time: 81.6, + ID: 817, + Time: 81.6, Weight: 0.000009, }, { - ID: 818, - Time: 81.7, + ID: 818, + Time: 81.7, Weight: 0.000009, }, { - ID: 819, - Time: 81.8, + ID: 819, + Time: 81.8, Weight: 0.000009, }, { - ID: 820, - Time: 81.9, + ID: 820, + Time: 81.9, Weight: 0.000009, }, { - ID: 821, - Time: 82, + ID: 821, + Time: 82, Weight: 0.000009, }, { - ID: 822, - Time: 82.1, + ID: 822, + Time: 82.1, Weight: 0.000009, }, { - ID: 823, - Time: 82.2, + ID: 823, + Time: 82.2, Weight: 0.000008, }, { - ID: 824, - Time: 82.3, + ID: 824, + Time: 82.3, Weight: 0.000008, }, { - ID: 825, - Time: 82.4, + ID: 825, + Time: 82.4, Weight: 0.000008, }, { - ID: 826, - Time: 82.5, + ID: 826, + Time: 82.5, Weight: 0.000008, }, { - ID: 827, - Time: 82.6, + ID: 827, + Time: 82.6, Weight: 0.000008, }, { - ID: 828, - Time: 82.7, + ID: 828, + Time: 82.7, Weight: 0.000008, }, { - ID: 829, - Time: 82.8, + ID: 829, + Time: 82.8, Weight: 0.000008, }, { - ID: 830, - Time: 82.9, + ID: 830, + Time: 82.9, Weight: 0.000008, }, { - ID: 831, - Time: 83, + ID: 831, + Time: 83, Weight: 0.000008, }, { - ID: 832, - Time: 83.1, + ID: 832, + Time: 83.1, Weight: 0.000008, }, { - ID: 833, - Time: 83.2, + ID: 833, + Time: 83.2, Weight: 0.000008, }, { - ID: 834, - Time: 83.3, + ID: 834, + Time: 83.3, Weight: 0.000008, }, { - ID: 835, - Time: 83.4, + ID: 835, + Time: 83.4, Weight: 0.000008, }, { - ID: 836, - Time: 83.5, + ID: 836, + Time: 83.5, Weight: 0.000008, }, { - ID: 837, - Time: 83.6, + ID: 837, + Time: 83.6, Weight: 0.000008, }, { - ID: 838, - Time: 83.7, + ID: 838, + Time: 83.7, Weight: 0.000007, }, { - ID: 839, - Time: 83.8, + ID: 839, + Time: 83.8, Weight: 0.000007, }, { - ID: 840, - Time: 83.9, + ID: 840, + Time: 83.9, Weight: 0.000007, }, { - ID: 841, - Time: 84, + ID: 841, + Time: 84, Weight: 0.000007, }, { - ID: 842, - Time: 84.1, + ID: 842, + Time: 84.1, Weight: 0.000007, }, { - ID: 843, - Time: 84.2, + ID: 843, + Time: 84.2, Weight: 0.000007, }, { - ID: 844, - Time: 84.3, + ID: 844, + Time: 84.3, Weight: 0.000007, }, { - ID: 845, - Time: 84.4, + ID: 845, + Time: 84.4, Weight: 0.000007, }, { - ID: 846, - Time: 84.5, + ID: 846, + Time: 84.5, Weight: 0.000007, }, { - ID: 847, - Time: 84.6, + ID: 847, + Time: 84.6, Weight: 0.000007, }, { - ID: 848, - Time: 84.7, + ID: 848, + Time: 84.7, Weight: 0.000007, }, { - ID: 849, - Time: 84.8, + ID: 849, + Time: 84.8, Weight: 0.000007, }, { - ID: 850, - Time: 84.9, + ID: 850, + Time: 84.9, Weight: 0.000007, }, { - ID: 851, - Time: 85, + ID: 851, + Time: 85, Weight: 0.000007, }, { - ID: 852, - Time: 85.1, + ID: 852, + Time: 85.1, Weight: 0.000007, }, { - ID: 853, - Time: 85.2, + ID: 853, + Time: 85.2, Weight: 0.000007, }, { - ID: 854, - Time: 85.3, + ID: 854, + Time: 85.3, Weight: 0.000007, }, { - ID: 855, - Time: 85.4, + ID: 855, + Time: 85.4, Weight: 0.000006, }, { - ID: 856, - Time: 85.5, + ID: 856, + Time: 85.5, Weight: 0.000006, }, { - ID: 857, - Time: 85.6, + ID: 857, + Time: 85.6, Weight: 0.000006, }, { - ID: 858, - Time: 85.7, + ID: 858, + Time: 85.7, Weight: 0.000006, }, { - ID: 859, - Time: 85.8, + ID: 859, + Time: 85.8, Weight: 0.000006, }, { - ID: 860, - Time: 85.9, + ID: 860, + Time: 85.9, Weight: 0.000006, }, { - ID: 861, - Time: 86, + ID: 861, + Time: 86, Weight: 0.000006, }, { - ID: 862, - Time: 86.1, + ID: 862, + Time: 86.1, Weight: 0.000006, }, { - ID: 863, - Time: 86.2, + ID: 863, + Time: 86.2, Weight: 0.000006, }, { - ID: 864, - Time: 86.3, + ID: 864, + Time: 86.3, Weight: 0.000006, }, { - ID: 865, - Time: 86.4, + ID: 865, + Time: 86.4, Weight: 0.000006, }, { - ID: 866, - Time: 86.5, + ID: 866, + Time: 86.5, Weight: 0.000006, }, { - ID: 867, - Time: 86.6, + ID: 867, + Time: 86.6, Weight: 0.000006, }, { - ID: 868, - Time: 86.7, + ID: 868, + Time: 86.7, Weight: 0.000006, }, { - ID: 869, - Time: 86.8, + ID: 869, + Time: 86.8, Weight: 0.000006, }, { - ID: 870, - Time: 86.9, + ID: 870, + Time: 86.9, Weight: 0.000006, }, { - ID: 871, - Time: 87, + ID: 871, + Time: 87, Weight: 0.000006, }, { - ID: 872, - Time: 87.1, + ID: 872, + Time: 87.1, Weight: 0.000006, }, { - ID: 873, - Time: 87.2, + ID: 873, + Time: 87.2, Weight: 0.000006, }, { - ID: 874, - Time: 87.3, + ID: 874, + Time: 87.3, Weight: 0.000006, }, { - ID: 875, - Time: 87.4, + ID: 875, + Time: 87.4, Weight: 0.000005, }, { - ID: 876, - Time: 87.5, + ID: 876, + Time: 87.5, Weight: 0.000005, }, { - ID: 877, - Time: 87.6, + ID: 877, + Time: 87.6, Weight: 0.000005, }, { - ID: 878, - Time: 87.7, + ID: 878, + Time: 87.7, Weight: 0.000005, }, { - ID: 879, - Time: 87.8, + ID: 879, + Time: 87.8, Weight: 0.000005, }, { - ID: 880, - Time: 87.9, + ID: 880, + Time: 87.9, Weight: 0.000005, }, { - ID: 881, - Time: 88, + ID: 881, + Time: 88, Weight: 0.000005, }, { - ID: 882, - Time: 88.1, + ID: 882, + Time: 88.1, Weight: 0.000005, }, { - ID: 883, - Time: 88.2, + ID: 883, + Time: 88.2, Weight: 0.000005, }, { - ID: 884, - Time: 88.3, + ID: 884, + Time: 88.3, Weight: 0.000005, }, { - ID: 885, - Time: 88.4, + ID: 885, + Time: 88.4, Weight: 0.000005, }, { - ID: 886, - Time: 88.5, + ID: 886, + Time: 88.5, Weight: 0.000005, }, { - ID: 887, - Time: 88.6, + ID: 887, + Time: 88.6, Weight: 0.000005, }, { - ID: 888, - Time: 88.7, + ID: 888, + Time: 88.7, Weight: 0.000005, }, { - ID: 889, - Time: 88.8, + ID: 889, + Time: 88.8, Weight: 0.000005, }, { - ID: 890, - Time: 88.9, + ID: 890, + Time: 88.9, Weight: 0.000005, }, { - ID: 891, - Time: 89, + ID: 891, + Time: 89, Weight: 0.000005, }, { - ID: 892, - Time: 89.1, + ID: 892, + Time: 89.1, Weight: 0.000005, }, { - ID: 893, - Time: 89.2, + ID: 893, + Time: 89.2, Weight: 0.000005, }, { - ID: 894, - Time: 89.3, + ID: 894, + Time: 89.3, Weight: 0.000005, }, { - ID: 895, - Time: 89.4, + ID: 895, + Time: 89.4, Weight: 0.000005, }, { - ID: 896, - Time: 89.5, + ID: 896, + Time: 89.5, Weight: 0.000005, }, { - ID: 897, - Time: 89.6, + ID: 897, + Time: 89.6, Weight: 0.000005, }, { - ID: 898, - Time: 89.7, + ID: 898, + Time: 89.7, Weight: 0.000005, }, { - ID: 899, - Time: 89.8, + ID: 899, + Time: 89.8, Weight: 0.000004, }, { - ID: 900, - Time: 89.9, + ID: 900, + Time: 89.9, Weight: 0.000004, }, { - ID: 901, - Time: 90, + ID: 901, + Time: 90, Weight: 0.000004, }, { - ID: 902, - Time: 90.1, + ID: 902, + Time: 90.1, Weight: 0.000004, }, { - ID: 903, - Time: 90.2, + ID: 903, + Time: 90.2, Weight: 0.000004, }, { - ID: 904, - Time: 90.3, + ID: 904, + Time: 90.3, Weight: 0.000004, }, { - ID: 905, - Time: 90.4, + ID: 905, + Time: 90.4, Weight: 0.000004, }, { - ID: 906, - Time: 90.5, + ID: 906, + Time: 90.5, Weight: 0.000004, }, { - ID: 907, - Time: 90.6, + ID: 907, + Time: 90.6, Weight: 0.000004, }, { - ID: 908, - Time: 90.7, + ID: 908, + Time: 90.7, Weight: 0.000004, }, { - ID: 909, - Time: 90.8, + ID: 909, + Time: 90.8, Weight: 0.000004, }, { - ID: 910, - Time: 90.9, + ID: 910, + Time: 90.9, Weight: 0.000004, }, { - ID: 911, - Time: 91, + ID: 911, + Time: 91, Weight: 0.000004, }, { - ID: 912, - Time: 91.1, + ID: 912, + Time: 91.1, Weight: 0.000004, }, { - ID: 913, - Time: 91.2, + ID: 913, + Time: 91.2, Weight: 0.000004, }, { - ID: 914, - Time: 91.3, + ID: 914, + Time: 91.3, Weight: 0.000004, }, { - ID: 915, - Time: 91.4, + ID: 915, + Time: 91.4, Weight: 0.000004, }, { - ID: 916, - Time: 91.5, + ID: 916, + Time: 91.5, Weight: 0.000004, }, { - ID: 917, - Time: 91.6, + ID: 917, + Time: 91.6, Weight: 0.000004, }, { - ID: 918, - Time: 91.7, + ID: 918, + Time: 91.7, Weight: 0.000004, }, { - ID: 919, - Time: 91.8, + ID: 919, + Time: 91.8, Weight: 0.000004, }, { - ID: 920, - Time: 91.9, + ID: 920, + Time: 91.9, Weight: 0.000004, }, { - ID: 921, - Time: 92, + ID: 921, + Time: 92, Weight: 0.000004, }, { - ID: 922, - Time: 92.1, + ID: 922, + Time: 92.1, Weight: 0.000004, }, { - ID: 923, - Time: 92.2, + ID: 923, + Time: 92.2, Weight: 0.000004, }, { - ID: 924, - Time: 92.3, + ID: 924, + Time: 92.3, Weight: 0.000004, }, { - ID: 925, - Time: 92.4, + ID: 925, + Time: 92.4, Weight: 0.000004, }, { - ID: 926, - Time: 92.5, + ID: 926, + Time: 92.5, Weight: 0.000004, }, { - ID: 927, - Time: 92.6, + ID: 927, + Time: 92.6, Weight: 0.000004, }, { - ID: 928, - Time: 92.7, + ID: 928, + Time: 92.7, Weight: 0.000004, }, { - ID: 929, - Time: 92.8, + ID: 929, + Time: 92.8, Weight: 0.000003, }, { - ID: 930, - Time: 92.9, + ID: 930, + Time: 92.9, Weight: 0.000003, }, { - ID: 931, - Time: 93, + ID: 931, + Time: 93, Weight: 0.000003, }, { - ID: 932, - Time: 93.1, + ID: 932, + Time: 93.1, Weight: 0.000003, }, { - ID: 933, - Time: 93.2, + ID: 933, + Time: 93.2, Weight: 0.000003, }, { - ID: 934, - Time: 93.3, + ID: 934, + Time: 93.3, Weight: 0.000003, }, { - ID: 935, - Time: 93.4, + ID: 935, + Time: 93.4, Weight: 0.000003, }, { - ID: 936, - Time: 93.5, + ID: 936, + Time: 93.5, Weight: 0.000003, }, { - ID: 937, - Time: 93.6, + ID: 937, + Time: 93.6, Weight: 0.000003, }, { - ID: 938, - Time: 93.7, + ID: 938, + Time: 93.7, Weight: 0.000003, }, { - ID: 939, - Time: 93.8, + ID: 939, + Time: 93.8, Weight: 0.000003, }, { - ID: 940, - Time: 93.9, + ID: 940, + Time: 93.9, Weight: 0.000003, }, { - ID: 941, - Time: 94, + ID: 941, + Time: 94, Weight: 0.000003, }, { - ID: 942, - Time: 94.1, + ID: 942, + Time: 94.1, Weight: 0.000003, }, { - ID: 943, - Time: 94.2, + ID: 943, + Time: 94.2, Weight: 0.000003, }, { - ID: 944, - Time: 94.3, + ID: 944, + Time: 94.3, Weight: 0.000003, }, { - ID: 945, - Time: 94.4, + ID: 945, + Time: 94.4, Weight: 0.000003, }, { - ID: 946, - Time: 94.5, + ID: 946, + Time: 94.5, Weight: 0.000003, }, { - ID: 947, - Time: 94.6, + ID: 947, + Time: 94.6, Weight: 0.000003, }, { - ID: 948, - Time: 94.7, + ID: 948, + Time: 94.7, Weight: 0.000003, }, { - ID: 949, - Time: 94.8, + ID: 949, + Time: 94.8, Weight: 0.000003, }, { - ID: 950, - Time: 94.9, + ID: 950, + Time: 94.9, Weight: 0.000003, }, { - ID: 951, - Time: 95, + ID: 951, + Time: 95, Weight: 0.000003, }, { - ID: 952, - Time: 95.1, + ID: 952, + Time: 95.1, Weight: 0.000003, }, { - ID: 953, - Time: 95.2, + ID: 953, + Time: 95.2, Weight: 0.000003, }, { - ID: 954, - Time: 95.3, + ID: 954, + Time: 95.3, Weight: 0.000003, }, { - ID: 955, - Time: 95.4, + ID: 955, + Time: 95.4, Weight: 0.000003, }, { - ID: 956, - Time: 95.5, + ID: 956, + Time: 95.5, Weight: 0.000003, }, { - ID: 957, - Time: 95.6, + ID: 957, + Time: 95.6, Weight: 0.000003, }, { - ID: 958, - Time: 95.7, + ID: 958, + Time: 95.7, Weight: 0.000003, }, { - ID: 959, - Time: 95.8, + ID: 959, + Time: 95.8, Weight: 0.000003, }, { - ID: 960, - Time: 95.9, + ID: 960, + Time: 95.9, Weight: 0.000003, }, { - ID: 961, - Time: 96, + ID: 961, + Time: 96, Weight: 0.000003, }, { - ID: 962, - Time: 96.1, + ID: 962, + Time: 96.1, Weight: 0.000003, }, { - ID: 963, - Time: 96.2, + ID: 963, + Time: 96.2, Weight: 0.000003, }, { - ID: 964, - Time: 96.3, + ID: 964, + Time: 96.3, Weight: 0.000003, }, { - ID: 965, - Time: 96.4, + ID: 965, + Time: 96.4, Weight: 0.000003, }, { - ID: 966, - Time: 96.5, + ID: 966, + Time: 96.5, Weight: 0.000003, }, { - ID: 967, - Time: 96.6, + ID: 967, + Time: 96.6, Weight: 0.000003, }, { - ID: 968, - Time: 96.7, + ID: 968, + Time: 96.7, Weight: 0.000003, }, { - ID: 969, - Time: 96.8, + ID: 969, + Time: 96.8, Weight: 0.000002, }, { - ID: 970, - Time: 96.9, + ID: 970, + Time: 96.9, Weight: 0.000002, }, { - ID: 971, - Time: 97, + ID: 971, + Time: 97, Weight: 0.000002, }, { - ID: 972, - Time: 97.1, + ID: 972, + Time: 97.1, Weight: 0.000002, }, { - ID: 973, - Time: 97.2, + ID: 973, + Time: 97.2, Weight: 0.000002, }, { - ID: 974, - Time: 97.3, + ID: 974, + Time: 97.3, Weight: 0.000002, }, { - ID: 975, - Time: 97.4, + ID: 975, + Time: 97.4, Weight: 0.000002, }, { - ID: 976, - Time: 97.5, + ID: 976, + Time: 97.5, Weight: 0.000002, }, { - ID: 977, - Time: 97.6, + ID: 977, + Time: 97.6, Weight: 0.000002, }, { - ID: 978, - Time: 97.7, + ID: 978, + Time: 97.7, Weight: 0.000002, }, { - ID: 979, - Time: 97.8, + ID: 979, + Time: 97.8, Weight: 0.000002, }, { - ID: 980, - Time: 97.9, + ID: 980, + Time: 97.9, Weight: 0.000002, }, { - ID: 981, - Time: 98, + ID: 981, + Time: 98, Weight: 0.000002, }, { - ID: 982, - Time: 98.1, + ID: 982, + Time: 98.1, Weight: 0.000002, }, { - ID: 983, - Time: 98.2, + ID: 983, + Time: 98.2, Weight: 0.000002, }, { - ID: 984, - Time: 98.3, + ID: 984, + Time: 98.3, Weight: 0.000002, }, { - ID: 985, - Time: 98.4, + ID: 985, + Time: 98.4, Weight: 0.000002, }, { - ID: 986, - Time: 98.5, + ID: 986, + Time: 98.5, Weight: 0.000002, }, { - ID: 987, - Time: 98.6, + ID: 987, + Time: 98.6, Weight: 0.000002, }, { - ID: 988, - Time: 98.7, + ID: 988, + Time: 98.7, Weight: 0.000002, }, { - ID: 989, - Time: 98.8, + ID: 989, + Time: 98.8, Weight: 0.000002, }, { - ID: 990, - Time: 98.9, + ID: 990, + Time: 98.9, Weight: 0.000002, }, { - ID: 991, - Time: 99, + ID: 991, + Time: 99, Weight: 0.000002, }, { - ID: 992, - Time: 99.1, + ID: 992, + Time: 99.1, Weight: 0.000002, }, { - ID: 993, - Time: 99.2, + ID: 993, + Time: 99.2, Weight: 0.000002, }, { - ID: 994, - Time: 99.3, + ID: 994, + Time: 99.3, Weight: 0.000002, }, { - ID: 995, - Time: 99.4, + ID: 995, + Time: 99.4, Weight: 0.000002, }, { - ID: 996, - Time: 99.5, + ID: 996, + Time: 99.5, Weight: 0.000002, }, { - ID: 997, - Time: 99.6, + ID: 997, + Time: 99.6, Weight: 0.000002, }, { - ID: 998, - Time: 99.7, + ID: 998, + Time: 99.7, Weight: 0.000002, }, { - ID: 999, - Time: 99.8, + ID: 999, + Time: 99.8, Weight: 0.000002, }, { - ID: 1000, - Time: 99.9, + ID: 1000, + Time: 99.9, Weight: 0.000002, }, { - ID: 1001, - Time: 100, + ID: 1001, + Time: 100, Weight: 0.00023, }, } @@ -5243,13 +5243,13 @@ func init() { TestSymbol = map[int64]*structs.TestSymbol{ 1: { - ID: 1, - Name: "xx", - IsWild: false, - Group: []int64{1}, - PayRate: []int64{0, 0, 0}, + ID: 1, + Name: "xx", + IsWild: false, + Group: []int64{1}, + PayRate: []int64{0, 0, 0}, ClientOrder: 1, - ClientDsc: "", + ClientDsc: "", }, } @@ -5259,4 +5259,4 @@ func init() { }, } -} +} \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/base/var.go b/gamesrv/slotspkg/internal/exported/excel2go/base/var.go index a846c37..9e1fb21 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/base/var.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/base/var.go @@ -4,223 +4,263 @@ package base import "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs" var ( - CashManiaBetBetChangeList = map[int64]*structs.CashManiaBetBetChangeList{} - CashManiaBetBetLevel = map[int64]*structs.CashManiaBetBetLevel{} - CashManiaBetBetLine = map[int64]*structs.CashManiaBetBetLine{} - CashManiaBetBetSize = map[int64]*structs.CashManiaBetBetSize{} - CashManiaBetFirstBet = map[int64]*structs.CashManiaBetFirstBet{} - CashManiaFormation = []*structs.CashManiaFormation{} - CashManiaItemInfo = map[int64]*structs.CashManiaItemInfo{} - CashManiaMapRTPMode = map[int64]*structs.CashManiaMapRTPMode{} - CashManiaMidItemInfo = map[int64]*structs.CashManiaMidItemInfo{} - CashManiaOthers = []*structs.CashManiaOthers{} - CashManiaRandomItemWeight = []*structs.CashManiaRandomItemWeight{} - CashManiaRandomMidWeight = []*structs.CashManiaRandomMidWeight{} - CashManiaReelBaseSpinRange = [][]int64{} - CashManiaReelBaseSpinReel = [][]int64{} - CashManiaReelBaseSpinWeight = [][]float64{} - CashManiaSymbolBetRatio = []*structs.CashManiaSymbolBetRatio{} - CashManiaSymbol = map[int64]*structs.CashManiaSymbol{} - CashManiaWinItemWeight = []*structs.CashManiaWinItemWeight{} - CashManiaWinMidWeight = []*structs.CashManiaWinMidWeight{} - FortuneDragonBaseMultiplier = []*structs.FortuneDragonBaseMultiplier{} - FortuneDragonBetBetChangeList = map[int64]*structs.FortuneDragonBetBetChangeList{} - FortuneDragonBetBetLevel = map[int64]*structs.FortuneDragonBetBetLevel{} - FortuneDragonBetBetLine = map[int64]*structs.FortuneDragonBetBetLine{} - FortuneDragonBetBetSize = map[int64]*structs.FortuneDragonBetBetSize{} - FortuneDragonBetFirstBet = map[int64]*structs.FortuneDragonBetFirstBet{} - FortuneDragonFormation = []*structs.FortuneDragonFormation{} - FortuneDragonFreeMultiplier = []*structs.FortuneDragonFreeMultiplier{} - FortuneDragonFreeMultiplierCount = []*structs.FortuneDragonFreeMultiplierCount{} - FortuneDragonMapRTPMode = map[int64]*structs.FortuneDragonMapRTPMode{} - FortuneDragonOthers = []*structs.FortuneDragonOthers{} - FortuneDragonReelBaseSpinRange = [][]int64{} - FortuneDragonReelBaseSpinReel = [][]int64{} - FortuneDragonReelBaseSpinWeight = [][]float64{} - FortuneDragonReelFreeSpinRange = [][]int64{} - FortuneDragonReelFreeSpinReel = [][]int64{} - FortuneDragonReelFreeSpinWeight = [][]float64{} - FortuneDragonReelSureWinBaseSpinRange = [][]int64{} - FortuneDragonReelSureWinBaseSpinReel = [][]int64{} + CashManiaBetBetChangeList = map[int64]*structs.CashManiaBetBetChangeList{} + CashManiaBetBetLevel = map[int64]*structs.CashManiaBetBetLevel{} + CashManiaBetBetLine = map[int64]*structs.CashManiaBetBetLine{} + CashManiaBetBetSize = map[int64]*structs.CashManiaBetBetSize{} + CashManiaBetFirstBet = map[int64]*structs.CashManiaBetFirstBet{} + CashManiaFormation = []*structs.CashManiaFormation{} + CashManiaItemInfo = map[int64]*structs.CashManiaItemInfo{} + CashManiaMapRTPMode = map[int64]*structs.CashManiaMapRTPMode{} + CashManiaMidItemInfo = map[int64]*structs.CashManiaMidItemInfo{} + CashManiaOthers = []*structs.CashManiaOthers{} + CashManiaRandomItemWeight = []*structs.CashManiaRandomItemWeight{} + CashManiaRandomMidWeight = []*structs.CashManiaRandomMidWeight{} + CashManiaReelBaseSpinRange = [][]int64{} + CashManiaReelBaseSpinReel = [][]int64{} + CashManiaReelBaseSpinWeight = [][]float64{} + CashManiaSymbolBetRatio = []*structs.CashManiaSymbolBetRatio{} + CashManiaSymbol = map[int64]*structs.CashManiaSymbol{} + CashManiaWinItemWeight = []*structs.CashManiaWinItemWeight{} + CashManiaWinMidWeight = []*structs.CashManiaWinMidWeight{} + FortuneDragonBaseMultiplier = []*structs.FortuneDragonBaseMultiplier{} + FortuneDragonBetBetChangeList = map[int64]*structs.FortuneDragonBetBetChangeList{} + FortuneDragonBetBetLevel = map[int64]*structs.FortuneDragonBetBetLevel{} + FortuneDragonBetBetLine = map[int64]*structs.FortuneDragonBetBetLine{} + FortuneDragonBetBetSize = map[int64]*structs.FortuneDragonBetBetSize{} + FortuneDragonBetFirstBet = map[int64]*structs.FortuneDragonBetFirstBet{} + FortuneDragonFormation = []*structs.FortuneDragonFormation{} + FortuneDragonFreeMultiplier = []*structs.FortuneDragonFreeMultiplier{} + FortuneDragonFreeMultiplierCount = []*structs.FortuneDragonFreeMultiplierCount{} + FortuneDragonMapRTPMode = map[int64]*structs.FortuneDragonMapRTPMode{} + FortuneDragonOthers = []*structs.FortuneDragonOthers{} + FortuneDragonReelBaseSpinRange = [][]int64{} + FortuneDragonReelBaseSpinReel = [][]int64{} + FortuneDragonReelBaseSpinWeight = [][]float64{} + FortuneDragonReelFreeSpinRange = [][]int64{} + FortuneDragonReelFreeSpinReel = [][]int64{} + FortuneDragonReelFreeSpinWeight = [][]float64{} + FortuneDragonReelSureWinBaseSpinRange = [][]int64{} + FortuneDragonReelSureWinBaseSpinReel = [][]int64{} FortuneDragonReelSureWinBaseSpinWeight = [][]float64{} - FortuneDragonReelSureWinFreeSpinRange = [][]int64{} - FortuneDragonReelSureWinFreeSpinReel = [][]int64{} + FortuneDragonReelSureWinFreeSpinRange = [][]int64{} + FortuneDragonReelSureWinFreeSpinReel = [][]int64{} FortuneDragonReelSureWinFreeSpinWeight = [][]float64{} - FortuneDragonSymbolBetRatio = []*structs.FortuneDragonSymbolBetRatio{} - FortuneDragonSymbol = map[int64]*structs.FortuneDragonSymbol{} - FortuneMouseBetBetChangeList = map[int64]*structs.FortuneMouseBetBetChangeList{} - FortuneMouseBetBetLevel = map[int64]*structs.FortuneMouseBetBetLevel{} - FortuneMouseBetBetLine = map[int64]*structs.FortuneMouseBetBetLine{} - FortuneMouseBetBetSize = map[int64]*structs.FortuneMouseBetBetSize{} - FortuneMouseBetFirstBet = map[int64]*structs.FortuneMouseBetFirstBet{} - FortuneMouseFormation = []*structs.FortuneMouseFormation{} - FortuneMouseMapRTPMode = map[int64]*structs.FortuneMouseMapRTPMode{} - FortuneMouseOthers = []*structs.FortuneMouseOthers{} - FortuneMouseReelBaseSpinRange = [][]int64{} - FortuneMouseReelBaseSpinReel = [][]int64{} - FortuneMouseReelBaseSpinWeight = [][]float64{} - FortuneMouseReelReSpinRange = [][]int64{} - FortuneMouseReelReSpinReel = [][]int64{} - FortuneMouseReelReSpinWeight = [][]float64{} - FortuneMouseSuperStackWeight = []*structs.FortuneMouseSuperStackWeight{} - FortuneMouseSymbolBetRatio = []*structs.FortuneMouseSymbolBetRatio{} - FortuneMouseSymbol = map[int64]*structs.FortuneMouseSymbol{} - FortuneOxBetBetChangeList = map[int64]*structs.FortuneOxBetBetChangeList{} - FortuneOxBetBetLevel = map[int64]*structs.FortuneOxBetBetLevel{} - FortuneOxBetBetLine = map[int64]*structs.FortuneOxBetBetLine{} - FortuneOxBetBetSize = map[int64]*structs.FortuneOxBetBetSize{} - FortuneOxBetFirstBet = map[int64]*structs.FortuneOxBetFirstBet{} - FortuneOxFormation = []*structs.FortuneOxFormation{} - FortuneOxMapRTPMode = map[int64]*structs.FortuneOxMapRTPMode{} - FortuneOxOthers = []*structs.FortuneOxOthers{} - FortuneOxReelBaseSpinRange = [][]int64{} - FortuneOxReelBaseSpinReel = [][]int64{} - FortuneOxReelBaseSpinWeight = [][]float64{} - FortuneOxReelReSpinRange = [][]int64{} - FortuneOxReelReSpinReel = [][]int64{} - FortuneOxReelReSpinWeight = [][]float64{} - FortuneOxSuperStack1Weight = []*structs.FortuneOxSuperStack1Weight{} - FortuneOxSuperStack2Weight = []*structs.FortuneOxSuperStack2Weight{} - FortuneOxSymbolBetRatio = []*structs.FortuneOxSymbolBetRatio{} - FortuneOxSymbol = map[int64]*structs.FortuneOxSymbol{} - FortuneRabbitBetBetChangeList = map[int64]*structs.FortuneRabbitBetBetChangeList{} - FortuneRabbitBetBetLevel = map[int64]*structs.FortuneRabbitBetBetLevel{} - FortuneRabbitBetBetLine = map[int64]*structs.FortuneRabbitBetBetLine{} - FortuneRabbitBetBetSize = map[int64]*structs.FortuneRabbitBetBetSize{} - FortuneRabbitBetFirstBet = map[int64]*structs.FortuneRabbitBetFirstBet{} - FortuneRabbitCashPrizeWeight = []*structs.FortuneRabbitCashPrizeWeight{} - FortuneRabbitForceCashCountWeight = []*structs.FortuneRabbitForceCashCountWeight{} - FortuneRabbitFormation = []*structs.FortuneRabbitFormation{} - FortuneRabbitMapRTPMode = map[int64]*structs.FortuneRabbitMapRTPMode{} - FortuneRabbitOthers = []*structs.FortuneRabbitOthers{} - FortuneRabbitOthersRTP120 = []*structs.FortuneRabbitOthersRTP120{} - FortuneRabbitOthersRTP80 = []*structs.FortuneRabbitOthersRTP80{} - FortuneRabbitReelBaseSpinRange = [][]int64{} - FortuneRabbitReelBaseSpinReel = [][]int64{} - FortuneRabbitReelBaseSpinWeight = [][]float64{} - FortuneRabbitReelFreeSpinRange = [][]int64{} - FortuneRabbitReelFreeSpinReel = [][]int64{} - FortuneRabbitReelFreeSpinWeight = [][]float64{} - FortuneRabbitSymbolBetRatio = []*structs.FortuneRabbitSymbolBetRatio{} - FortuneRabbitSymbol = map[int64]*structs.FortuneRabbitSymbol{} - FortuneTigerBetBetChangeList = map[int64]*structs.FortuneTigerBetBetChangeList{} - FortuneTigerBetBetLevel = map[int64]*structs.FortuneTigerBetBetLevel{} - FortuneTigerBetBetLine = map[int64]*structs.FortuneTigerBetBetLine{} - FortuneTigerBetBetSize = map[int64]*structs.FortuneTigerBetBetSize{} - FortuneTigerBetFirstBet = map[int64]*structs.FortuneTigerBetFirstBet{} - FortuneTigerFormation = []*structs.FortuneTigerFormation{} - FortuneTigerMapRTPMode = map[int64]*structs.FortuneTigerMapRTPMode{} - FortuneTigerOthers = []*structs.FortuneTigerOthers{} - FortuneTigerReelBaseSpinRange = [][]int64{} - FortuneTigerReelBaseSpinReel = [][]int64{} - FortuneTigerReelBaseSpinWeight = [][]float64{} - FortuneTigerReelReSpinRange = [][]int64{} - FortuneTigerReelReSpinReel = [][]int64{} - FortuneTigerReelReSpinWeight = [][]float64{} - FortuneTigerSuperStackWeight = []*structs.FortuneTigerSuperStackWeight{} - FortuneTigerSymbolBetRatio = []*structs.FortuneTigerSymbolBetRatio{} - FortuneTigerSymbol = map[int64]*structs.FortuneTigerSymbol{} - MatrixFeaturesForm15X1TypeA = []*structs.MatrixFeaturesForm15X1TypeA{} - MatrixFeaturesForm19X1TypeA = []*structs.MatrixFeaturesForm19X1TypeA{} - MatrixFeaturesForm20X1TypeA = []*structs.MatrixFeaturesForm20X1TypeA{} - MatrixFeaturesForm25X1TypeA = []*structs.MatrixFeaturesForm25X1TypeA{} - MatrixFeaturesForm30X1TypeA = []*structs.MatrixFeaturesForm30X1TypeA{} - MatrixFeaturesForm35X1TypeA = []*structs.MatrixFeaturesForm35X1TypeA{} - MatrixFeaturesForm40X1 = []*structs.MatrixFeaturesForm40X1{} - MatrixFeaturesForm40X1TypeA = []*structs.MatrixFeaturesForm40X1TypeA{} - MatrixFeaturesForm7X1TypeA = []*structs.MatrixFeaturesForm7X1TypeA{} - MatrixLine100Form12X5TypeA = []*structs.MatrixLine100Form12X5TypeA{} - MatrixLine100Form6X5TypeA = []*structs.MatrixLine100Form6X5TypeA{} - MatrixLine10Form343TypeA = []*structs.MatrixLine10Form343TypeA{} - MatrixLine10Form3X5TypeA = []*structs.MatrixLine10Form3X5TypeA{} - MatrixLine1Form3X3TypeA = []*structs.MatrixLine1Form3X3TypeA{} - MatrixLine1Form3X3TypeB = []*structs.MatrixLine1Form3X3TypeB{} - MatrixLine1Form5X5TypeA = []*structs.MatrixLine1Form5X5TypeA{} - MatrixLine20Form3X5TypeA = []*structs.MatrixLine20Form3X5TypeA{} - MatrixLine25Form36666TypeA = []*structs.MatrixLine25Form36666TypeA{} - MatrixLine25Form3X5TypeA = []*structs.MatrixLine25Form3X5TypeA{} - MatrixLine25Form3X5TypeB = []*structs.MatrixLine25Form3X5TypeB{} - MatrixLine25Form3X5TypeC = []*structs.MatrixLine25Form3X5TypeC{} - MatrixLine25Form3X5TypeD = []*structs.MatrixLine25Form3X5TypeD{} - MatrixLine25Form3X5TypeE = []*structs.MatrixLine25Form3X5TypeE{} - MatrixLine30Form3X5TypeA = []*structs.MatrixLine30Form3X5TypeA{} - MatrixLine30Form3X5TypeB = []*structs.MatrixLine30Form3X5TypeB{} - MatrixLine30Form3X5TypeC = []*structs.MatrixLine30Form3X5TypeC{} - MatrixLine30Form3X5TypeD = []*structs.MatrixLine30Form3X5TypeD{} - MatrixLine30Form3X5TypeE = []*structs.MatrixLine30Form3X5TypeE{} - MatrixLine30Form3X6TypeA = []*structs.MatrixLine30Form3X6TypeA{} - MatrixLine30Form4X5TypeA = []*structs.MatrixLine30Form4X5TypeA{} - MatrixLine30Form4X5TypeB = []*structs.MatrixLine30Form4X5TypeB{} - MatrixLine3Form3X3TypeA = []*structs.MatrixLine3Form3X3TypeA{} - MatrixLine40Form34543TypeA = []*structs.MatrixLine40Form34543TypeA{} - MatrixLine40Form3X5TypeA = []*structs.MatrixLine40Form3X5TypeA{} - MatrixLine40Form3X5TypeB = []*structs.MatrixLine40Form3X5TypeB{} - MatrixLine40Form3X5TypeC = []*structs.MatrixLine40Form3X5TypeC{} - MatrixLine40Form3X5TypeD = []*structs.MatrixLine40Form3X5TypeD{} - MatrixLine40Form4X5TypeA = []*structs.MatrixLine40Form4X5TypeA{} - MatrixLine40Form4X5TypeB = []*structs.MatrixLine40Form4X5TypeB{} - MatrixLine40Form4X5TypeC = []*structs.MatrixLine40Form4X5TypeC{} - MatrixLine40Form4X6TypeA = []*structs.MatrixLine40Form4X6TypeA{} - MatrixLine50Form3X5TypeA = []*structs.MatrixLine50Form3X5TypeA{} - MatrixLine50Form3X5TypeB = []*structs.MatrixLine50Form3X5TypeB{} - MatrixLine50Form3X5TypeC = []*structs.MatrixLine50Form3X5TypeC{} - MatrixLine50Form3X5TypeD = []*structs.MatrixLine50Form3X5TypeD{} - MatrixLine50Form3X5TypeE = []*structs.MatrixLine50Form3X5TypeE{} - MatrixLine50Form3X5TypeF = []*structs.MatrixLine50Form3X5TypeF{} - MatrixLine50Form3X5TypeG = []*structs.MatrixLine50Form3X5TypeG{} - MatrixLine50Form3X5TypeH = []*structs.MatrixLine50Form3X5TypeH{} - MatrixLine50Form45454TypeA = []*structs.MatrixLine50Form45454TypeA{} - MatrixLine50Form4X5TypeA = []*structs.MatrixLine50Form4X5TypeA{} - MatrixLine50Form4X5TypeB = []*structs.MatrixLine50Form4X5TypeB{} - MatrixLine50Form4X5TypeC = []*structs.MatrixLine50Form4X5TypeC{} - MatrixLine50Form4X5TypeD = []*structs.MatrixLine50Form4X5TypeD{} - MatrixLine50Form4X5TypeE = []*structs.MatrixLine50Form4X5TypeE{} - MatrixLine50Form4X5TypeF = []*structs.MatrixLine50Form4X5TypeF{} - MatrixLine50Form4X6TypeA = []*structs.MatrixLine50Form4X6TypeA{} - MatrixLine50Form5X5TypeA = []*structs.MatrixLine50Form5X5TypeA{} - MatrixLine50Form5X5TypeB = []*structs.MatrixLine50Form5X5TypeB{} - MatrixLine50Form5X5TypeC = []*structs.MatrixLine50Form5X5TypeC{} - MatrixLine50Form6X5TypeA = []*structs.MatrixLine50Form6X5TypeA{} - MatrixLine5Form3X3TypeA = []*structs.MatrixLine5Form3X3TypeA{} - MatrixLine5Form3X3TypeB = []*structs.MatrixLine5Form3X3TypeB{} - MatrixLine60Form33633TypeA = []*structs.MatrixLine60Form33633TypeA{} - MatrixLine60Form8X5TypeA = []*structs.MatrixLine60Form8X5TypeA{} - MatrixLine65Form6X5TypeA = []*structs.MatrixLine65Form6X5TypeA{} - MatrixLine70Form9X5TypeA = []*structs.MatrixLine70Form9X5TypeA{} - MatrixLine75Form5X6TypeA = []*structs.MatrixLine75Form5X6TypeA{} - MatrixLine75Form6X5TypeA = []*structs.MatrixLine75Form6X5TypeA{} - MatrixLine80Form10X5TypeA = []*structs.MatrixLine80Form10X5TypeA{} - MatrixLine80Form3X5TypeA = []*structs.MatrixLine80Form3X5TypeA{} - MatrixLine80Form4X6TypeA = []*structs.MatrixLine80Form4X6TypeA{} - MatrixLine80Form7X5TypeA = []*structs.MatrixLine80Form7X5TypeA{} - MatrixLine90Form11X5TypeA = []*structs.MatrixLine90Form11X5TypeA{} - MatrixLine95Form8X5TypeA = []*structs.MatrixLine95Form8X5TypeA{} - MatrixMatchForm7X7TypeA = []*structs.MatrixMatchForm7X7TypeA{} - MatrixSameForm5X6TypeA = []*structs.MatrixSameForm5X6TypeA{} - MatrixSameForm5X6TypeB = []*structs.MatrixSameForm5X6TypeB{} - MatrixWaysForm333331 = []*structs.MatrixWaysForm333331{} - MatrixWaysForm33555 = []*structs.MatrixWaysForm33555{} - MatrixWaysForm344444 = []*structs.MatrixWaysForm344444{} - MatrixWaysForm3X5TypeA = []*structs.MatrixWaysForm3X5TypeA{} - MatrixWaysForm44668 = []*structs.MatrixWaysForm44668{} - MatrixWaysForm4X5TypeA = []*structs.MatrixWaysForm4X5TypeA{} - MatrixWaysForm4X5TypeB = []*structs.MatrixWaysForm4X5TypeB{} - OptGroup = []*structs.OptGroup{} - PrizeModelPrizeModelTypeA = map[int64]*structs.PrizeModelPrizeModelTypeA{} - PrizeModelPrizeModelTypeB = map[int64]*structs.PrizeModelPrizeModelTypeB{} - SimulatorFSMultiLevel = []*structs.SimulatorFSMultiLevel{} - SimulatorMultiLevel = []*structs.SimulatorMultiLevel{} - TestBetBetChangeList = map[int64]*structs.TestBetBetChangeList{} - TestBetBetLevel = map[int64]*structs.TestBetBetLevel{} - TestBetBetLine = map[int64]*structs.TestBetBetLine{} - TestBetBetSize = map[int64]*structs.TestBetBetSize{} - TestBetFirstBet = map[int64]*structs.TestBetFirstBet{} - TestFormation = []*structs.TestFormation{} - TestMapRTPMode = map[int64]*structs.TestMapRTPMode{} - TestRandomWeight = []*structs.TestRandomWeight{} - TestReelBaseSpinRange = [][]int64{} - TestReelBaseSpinReel = [][]int64{} - TestReelBaseSpinWeight = [][]float64{} - TestSymbolBetRatio = []*structs.TestSymbolBetRatio{} - TestSymbol = map[int64]*structs.TestSymbol{} -) + FortuneDragonSymbolBetRatio = []*structs.FortuneDragonSymbolBetRatio{} + FortuneDragonSymbol = map[int64]*structs.FortuneDragonSymbol{} + FortuneMouseBetBetChangeList = map[int64]*structs.FortuneMouseBetBetChangeList{} + FortuneMouseBetBetLevel = map[int64]*structs.FortuneMouseBetBetLevel{} + FortuneMouseBetBetLine = map[int64]*structs.FortuneMouseBetBetLine{} + FortuneMouseBetBetSize = map[int64]*structs.FortuneMouseBetBetSize{} + FortuneMouseBetFirstBet = map[int64]*structs.FortuneMouseBetFirstBet{} + FortuneMouseFormation = []*structs.FortuneMouseFormation{} + FortuneMouseMapRTPMode = map[int64]*structs.FortuneMouseMapRTPMode{} + FortuneMouseOthers = []*structs.FortuneMouseOthers{} + FortuneMouseReelBaseSpinRange = [][]int64{} + FortuneMouseReelBaseSpinReel = [][]int64{} + FortuneMouseReelBaseSpinWeight = [][]float64{} + FortuneMouseReelReSpinRange = [][]int64{} + FortuneMouseReelReSpinReel = [][]int64{} + FortuneMouseReelReSpinWeight = [][]float64{} + FortuneMouseSuperStackWeight = []*structs.FortuneMouseSuperStackWeight{} + FortuneMouseSymbolBetRatio = []*structs.FortuneMouseSymbolBetRatio{} + FortuneMouseSymbol = map[int64]*structs.FortuneMouseSymbol{} + FortuneOxBetBetChangeList = map[int64]*structs.FortuneOxBetBetChangeList{} + FortuneOxBetBetLevel = map[int64]*structs.FortuneOxBetBetLevel{} + FortuneOxBetBetLine = map[int64]*structs.FortuneOxBetBetLine{} + FortuneOxBetBetSize = map[int64]*structs.FortuneOxBetBetSize{} + FortuneOxBetFirstBet = map[int64]*structs.FortuneOxBetFirstBet{} + FortuneOxFormation = []*structs.FortuneOxFormation{} + FortuneOxMapRTPMode = map[int64]*structs.FortuneOxMapRTPMode{} + FortuneOxOthers = []*structs.FortuneOxOthers{} + FortuneOxReelBaseSpinRange = [][]int64{} + FortuneOxReelBaseSpinReel = [][]int64{} + FortuneOxReelBaseSpinWeight = [][]float64{} + FortuneOxReelReSpinRange = [][]int64{} + FortuneOxReelReSpinReel = [][]int64{} + FortuneOxReelReSpinWeight = [][]float64{} + FortuneOxSuperStack1Weight = []*structs.FortuneOxSuperStack1Weight{} + FortuneOxSuperStack2Weight = []*structs.FortuneOxSuperStack2Weight{} + FortuneOxSymbolBetRatio = []*structs.FortuneOxSymbolBetRatio{} + FortuneOxSymbol = map[int64]*structs.FortuneOxSymbol{} + FortuneRabbitBetBetChangeList = map[int64]*structs.FortuneRabbitBetBetChangeList{} + FortuneRabbitBetBetLevel = map[int64]*structs.FortuneRabbitBetBetLevel{} + FortuneRabbitBetBetLine = map[int64]*structs.FortuneRabbitBetBetLine{} + FortuneRabbitBetBetSize = map[int64]*structs.FortuneRabbitBetBetSize{} + FortuneRabbitBetFirstBet = map[int64]*structs.FortuneRabbitBetFirstBet{} + FortuneRabbitCashPrizeWeight = []*structs.FortuneRabbitCashPrizeWeight{} + FortuneRabbitForceCashCountWeight = []*structs.FortuneRabbitForceCashCountWeight{} + FortuneRabbitFormation = []*structs.FortuneRabbitFormation{} + FortuneRabbitMapRTPMode = map[int64]*structs.FortuneRabbitMapRTPMode{} + FortuneRabbitOthers = []*structs.FortuneRabbitOthers{} + FortuneRabbitOthersRTP120 = []*structs.FortuneRabbitOthersRTP120{} + FortuneRabbitOthersRTP80 = []*structs.FortuneRabbitOthersRTP80{} + FortuneRabbitReelBaseSpinRange = [][]int64{} + FortuneRabbitReelBaseSpinReel = [][]int64{} + FortuneRabbitReelBaseSpinWeight = [][]float64{} + FortuneRabbitReelFreeSpinRange = [][]int64{} + FortuneRabbitReelFreeSpinReel = [][]int64{} + FortuneRabbitReelFreeSpinWeight = [][]float64{} + FortuneRabbitSymbolBetRatio = []*structs.FortuneRabbitSymbolBetRatio{} + FortuneRabbitSymbol = map[int64]*structs.FortuneRabbitSymbol{} + FortuneTigerBetBetChangeList = map[int64]*structs.FortuneTigerBetBetChangeList{} + FortuneTigerBetBetLevel = map[int64]*structs.FortuneTigerBetBetLevel{} + FortuneTigerBetBetLine = map[int64]*structs.FortuneTigerBetBetLine{} + FortuneTigerBetBetSize = map[int64]*structs.FortuneTigerBetBetSize{} + FortuneTigerBetFirstBet = map[int64]*structs.FortuneTigerBetFirstBet{} + FortuneTigerFormation = []*structs.FortuneTigerFormation{} + FortuneTigerMapRTPMode = map[int64]*structs.FortuneTigerMapRTPMode{} + FortuneTigerOthers = []*structs.FortuneTigerOthers{} + FortuneTigerReelBaseSpinRange = [][]int64{} + FortuneTigerReelBaseSpinReel = [][]int64{} + FortuneTigerReelBaseSpinWeight = [][]float64{} + FortuneTigerReelReSpinRange = [][]int64{} + FortuneTigerReelReSpinReel = [][]int64{} + FortuneTigerReelReSpinWeight = [][]float64{} + FortuneTigerSuperStackWeight = []*structs.FortuneTigerSuperStackWeight{} + FortuneTigerSymbolBetRatio = []*structs.FortuneTigerSymbolBetRatio{} + FortuneTigerSymbol = map[int64]*structs.FortuneTigerSymbol{} + GatesOfOlympusBetBetChangeList = map[int64]*structs.GatesOfOlympusBetBetChangeList{} + GatesOfOlympusBetBetLevel = map[int64]*structs.GatesOfOlympusBetBetLevel{} + GatesOfOlympusBetBetLine = map[int64]*structs.GatesOfOlympusBetBetLine{} + GatesOfOlympusBetBetSize = map[int64]*structs.GatesOfOlympusBetBetSize{} + GatesOfOlympusBetFirstBet = map[int64]*structs.GatesOfOlympusBetFirstBet{} + GatesOfOlympusFormation = []*structs.GatesOfOlympusFormation{} + GatesOfOlympusMapRTPMode = map[int64]*structs.GatesOfOlympusMapRTPMode{} + GatesOfOlympusMultiplier = []*structs.GatesOfOlympusMultiplier{} + GatesOfOlympusMultiplierKeyID = map[int64]*structs.GatesOfOlympusMultiplierKeyID{} + GatesOfOlympusReelBaseSpin1Range = [][]int64{} + GatesOfOlympusReelBaseSpin1Reel = [][]int64{} + GatesOfOlympusReelBaseSpin1Weight = [][]float64{} + GatesOfOlympusReelBaseSpin2Range = [][]int64{} + GatesOfOlympusReelBaseSpin2Reel = [][]int64{} + GatesOfOlympusReelBaseSpin2Weight = [][]float64{} + GatesOfOlympusReelBaseSpin3Range = [][]int64{} + GatesOfOlympusReelBaseSpin3Reel = [][]int64{} + GatesOfOlympusReelBaseSpin3Weight = [][]float64{} + GatesOfOlympusReelBaseSpin7Range = [][]int64{} + GatesOfOlympusReelBaseSpin7Reel = [][]int64{} + GatesOfOlympusReelBaseSpin7Weight = [][]float64{} + GatesOfOlympusReelBaseSpin8Range = [][]int64{} + GatesOfOlympusReelBaseSpin8Reel = [][]int64{} + GatesOfOlympusReelBaseSpin8Weight = [][]float64{} + GatesOfOlympusReelBaseSpinRange = [][]int64{} + GatesOfOlympusReelBaseSpinReel = [][]int64{} + GatesOfOlympusReelBaseSpinWeight = [][]float64{} + GatesOfOlympusReelChoose = []*structs.GatesOfOlympusReelChoose{} + GatesOfOlympusReelFreeSpin4Range = [][]int64{} + GatesOfOlympusReelFreeSpin4Reel = [][]int64{} + GatesOfOlympusReelFreeSpin4Weight = [][]float64{} + GatesOfOlympusReelFreeSpin5Range = [][]int64{} + GatesOfOlympusReelFreeSpin5Reel = [][]int64{} + GatesOfOlympusReelFreeSpin5Weight = [][]float64{} + GatesOfOlympusReelFreeSpinRange = [][]int64{} + GatesOfOlympusReelFreeSpinReel = [][]int64{} + GatesOfOlympusReelFreeSpinWeight = [][]float64{} + GatesOfOlympusScatter = map[int64]*structs.GatesOfOlympusScatter{} + GatesOfOlympusSymbolBetRatio = []*structs.GatesOfOlympusSymbolBetRatio{} + GatesOfOlympusSymbol = map[int64]*structs.GatesOfOlympusSymbol{} + MatrixFeaturesForm15X1TypeA = []*structs.MatrixFeaturesForm15X1TypeA{} + MatrixFeaturesForm19X1TypeA = []*structs.MatrixFeaturesForm19X1TypeA{} + MatrixFeaturesForm20X1TypeA = []*structs.MatrixFeaturesForm20X1TypeA{} + MatrixFeaturesForm25X1TypeA = []*structs.MatrixFeaturesForm25X1TypeA{} + MatrixFeaturesForm30X1TypeA = []*structs.MatrixFeaturesForm30X1TypeA{} + MatrixFeaturesForm35X1TypeA = []*structs.MatrixFeaturesForm35X1TypeA{} + MatrixFeaturesForm40X1 = []*structs.MatrixFeaturesForm40X1{} + MatrixFeaturesForm40X1TypeA = []*structs.MatrixFeaturesForm40X1TypeA{} + MatrixFeaturesForm7X1TypeA = []*structs.MatrixFeaturesForm7X1TypeA{} + MatrixLine100Form12X5TypeA = []*structs.MatrixLine100Form12X5TypeA{} + MatrixLine100Form6X5TypeA = []*structs.MatrixLine100Form6X5TypeA{} + MatrixLine10Form343TypeA = []*structs.MatrixLine10Form343TypeA{} + MatrixLine10Form3X5TypeA = []*structs.MatrixLine10Form3X5TypeA{} + MatrixLine1Form3X3TypeA = []*structs.MatrixLine1Form3X3TypeA{} + MatrixLine1Form3X3TypeB = []*structs.MatrixLine1Form3X3TypeB{} + MatrixLine1Form5X5TypeA = []*structs.MatrixLine1Form5X5TypeA{} + MatrixLine20Form3X5TypeA = []*structs.MatrixLine20Form3X5TypeA{} + MatrixLine25Form36666TypeA = []*structs.MatrixLine25Form36666TypeA{} + MatrixLine25Form3X5TypeA = []*structs.MatrixLine25Form3X5TypeA{} + MatrixLine25Form3X5TypeB = []*structs.MatrixLine25Form3X5TypeB{} + MatrixLine25Form3X5TypeC = []*structs.MatrixLine25Form3X5TypeC{} + MatrixLine25Form3X5TypeD = []*structs.MatrixLine25Form3X5TypeD{} + MatrixLine25Form3X5TypeE = []*structs.MatrixLine25Form3X5TypeE{} + MatrixLine30Form3X5TypeA = []*structs.MatrixLine30Form3X5TypeA{} + MatrixLine30Form3X5TypeB = []*structs.MatrixLine30Form3X5TypeB{} + MatrixLine30Form3X5TypeC = []*structs.MatrixLine30Form3X5TypeC{} + MatrixLine30Form3X5TypeD = []*structs.MatrixLine30Form3X5TypeD{} + MatrixLine30Form3X5TypeE = []*structs.MatrixLine30Form3X5TypeE{} + MatrixLine30Form3X6TypeA = []*structs.MatrixLine30Form3X6TypeA{} + MatrixLine30Form4X5TypeA = []*structs.MatrixLine30Form4X5TypeA{} + MatrixLine30Form4X5TypeB = []*structs.MatrixLine30Form4X5TypeB{} + MatrixLine3Form3X3TypeA = []*structs.MatrixLine3Form3X3TypeA{} + MatrixLine40Form34543TypeA = []*structs.MatrixLine40Form34543TypeA{} + MatrixLine40Form3X5TypeA = []*structs.MatrixLine40Form3X5TypeA{} + MatrixLine40Form3X5TypeB = []*structs.MatrixLine40Form3X5TypeB{} + MatrixLine40Form3X5TypeC = []*structs.MatrixLine40Form3X5TypeC{} + MatrixLine40Form3X5TypeD = []*structs.MatrixLine40Form3X5TypeD{} + MatrixLine40Form4X5TypeA = []*structs.MatrixLine40Form4X5TypeA{} + MatrixLine40Form4X5TypeB = []*structs.MatrixLine40Form4X5TypeB{} + MatrixLine40Form4X5TypeC = []*structs.MatrixLine40Form4X5TypeC{} + MatrixLine40Form4X6TypeA = []*structs.MatrixLine40Form4X6TypeA{} + MatrixLine50Form3X5TypeA = []*structs.MatrixLine50Form3X5TypeA{} + MatrixLine50Form3X5TypeB = []*structs.MatrixLine50Form3X5TypeB{} + MatrixLine50Form3X5TypeC = []*structs.MatrixLine50Form3X5TypeC{} + MatrixLine50Form3X5TypeD = []*structs.MatrixLine50Form3X5TypeD{} + MatrixLine50Form3X5TypeE = []*structs.MatrixLine50Form3X5TypeE{} + MatrixLine50Form3X5TypeF = []*structs.MatrixLine50Form3X5TypeF{} + MatrixLine50Form3X5TypeG = []*structs.MatrixLine50Form3X5TypeG{} + MatrixLine50Form3X5TypeH = []*structs.MatrixLine50Form3X5TypeH{} + MatrixLine50Form45454TypeA = []*structs.MatrixLine50Form45454TypeA{} + MatrixLine50Form4X5TypeA = []*structs.MatrixLine50Form4X5TypeA{} + MatrixLine50Form4X5TypeB = []*structs.MatrixLine50Form4X5TypeB{} + MatrixLine50Form4X5TypeC = []*structs.MatrixLine50Form4X5TypeC{} + MatrixLine50Form4X5TypeD = []*structs.MatrixLine50Form4X5TypeD{} + MatrixLine50Form4X5TypeE = []*structs.MatrixLine50Form4X5TypeE{} + MatrixLine50Form4X5TypeF = []*structs.MatrixLine50Form4X5TypeF{} + MatrixLine50Form4X6TypeA = []*structs.MatrixLine50Form4X6TypeA{} + MatrixLine50Form5X5TypeA = []*structs.MatrixLine50Form5X5TypeA{} + MatrixLine50Form5X5TypeB = []*structs.MatrixLine50Form5X5TypeB{} + MatrixLine50Form5X5TypeC = []*structs.MatrixLine50Form5X5TypeC{} + MatrixLine50Form6X5TypeA = []*structs.MatrixLine50Form6X5TypeA{} + MatrixLine5Form3X3TypeA = []*structs.MatrixLine5Form3X3TypeA{} + MatrixLine5Form3X3TypeB = []*structs.MatrixLine5Form3X3TypeB{} + MatrixLine60Form33633TypeA = []*structs.MatrixLine60Form33633TypeA{} + MatrixLine60Form8X5TypeA = []*structs.MatrixLine60Form8X5TypeA{} + MatrixLine65Form6X5TypeA = []*structs.MatrixLine65Form6X5TypeA{} + MatrixLine70Form9X5TypeA = []*structs.MatrixLine70Form9X5TypeA{} + MatrixLine75Form5X6TypeA = []*structs.MatrixLine75Form5X6TypeA{} + MatrixLine75Form6X5TypeA = []*structs.MatrixLine75Form6X5TypeA{} + MatrixLine80Form10X5TypeA = []*structs.MatrixLine80Form10X5TypeA{} + MatrixLine80Form3X5TypeA = []*structs.MatrixLine80Form3X5TypeA{} + MatrixLine80Form4X6TypeA = []*structs.MatrixLine80Form4X6TypeA{} + MatrixLine80Form7X5TypeA = []*structs.MatrixLine80Form7X5TypeA{} + MatrixLine90Form11X5TypeA = []*structs.MatrixLine90Form11X5TypeA{} + MatrixLine95Form8X5TypeA = []*structs.MatrixLine95Form8X5TypeA{} + MatrixMatchForm7X7TypeA = []*structs.MatrixMatchForm7X7TypeA{} + MatrixSameForm5X6TypeA = []*structs.MatrixSameForm5X6TypeA{} + MatrixSameForm5X6TypeB = []*structs.MatrixSameForm5X6TypeB{} + MatrixWaysForm333331 = []*structs.MatrixWaysForm333331{} + MatrixWaysForm33555 = []*structs.MatrixWaysForm33555{} + MatrixWaysForm344444 = []*structs.MatrixWaysForm344444{} + MatrixWaysForm3X5TypeA = []*structs.MatrixWaysForm3X5TypeA{} + MatrixWaysForm44668 = []*structs.MatrixWaysForm44668{} + MatrixWaysForm4X5TypeA = []*structs.MatrixWaysForm4X5TypeA{} + MatrixWaysForm4X5TypeB = []*structs.MatrixWaysForm4X5TypeB{} + OptGroup = []*structs.OptGroup{} + PrizeModelPrizeModelTypeA = map[int64]*structs.PrizeModelPrizeModelTypeA{} + PrizeModelPrizeModelTypeB = map[int64]*structs.PrizeModelPrizeModelTypeB{} + SimulatorFSMultiLevel = []*structs.SimulatorFSMultiLevel{} + SimulatorMultiLevel = []*structs.SimulatorMultiLevel{} + TestBetBetChangeList = map[int64]*structs.TestBetBetChangeList{} + TestBetBetLevel = map[int64]*structs.TestBetBetLevel{} + TestBetBetLine = map[int64]*structs.TestBetBetLine{} + TestBetBetSize = map[int64]*structs.TestBetBetSize{} + TestBetFirstBet = map[int64]*structs.TestBetFirstBet{} + TestFormation = []*structs.TestFormation{} + TestMapRTPMode = map[int64]*structs.TestMapRTPMode{} + TestRandomWeight = []*structs.TestRandomWeight{} + TestReelBaseSpinRange = [][]int64{} + TestReelBaseSpinReel = [][]int64{} + TestReelBaseSpinWeight = [][]float64{} + TestSymbolBetRatio = []*structs.TestSymbolBetRatio{} + TestSymbol = map[int64]*structs.TestSymbol{} +) \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/storage/storage.go b/gamesrv/slotspkg/internal/exported/excel2go/storage/storage.go index 4862c11..eaa44d3 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/storage/storage.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/storage/storage.go @@ -179,6 +179,46 @@ func StoragesLoading(data map[string]string) { Load(data, "Base.FortuneTiger/SuperStack.Weight", &base.FortuneTigerSuperStackWeight) Load(data, "Base.FortuneTiger/Symbol.BetRatio", &base.FortuneTigerSymbolBetRatio) Load(data, "Base.FortuneTiger/Symbol.Default", &base.FortuneTigerSymbol) + Load(data, "Base.GatesOfOlympus/Bet.BetChangeList", &base.GatesOfOlympusBetBetChangeList) + Load(data, "Base.GatesOfOlympus/Bet.BetLevel", &base.GatesOfOlympusBetBetLevel) + Load(data, "Base.GatesOfOlympus/Bet.BetLine", &base.GatesOfOlympusBetBetLine) + Load(data, "Base.GatesOfOlympus/Bet.BetSize", &base.GatesOfOlympusBetBetSize) + Load(data, "Base.GatesOfOlympus/Bet.FirstBet", &base.GatesOfOlympusBetFirstBet) + Load(data, "Base.GatesOfOlympus/Formation.Default", &base.GatesOfOlympusFormation) + Load(data, "Base.GatesOfOlympus/Map.RTPMode", &base.GatesOfOlympusMapRTPMode) + Load(data, "Base.GatesOfOlympus/Multiplier.Default", &base.GatesOfOlympusMultiplier) + Load(data, "Base.GatesOfOlympus/Multiplier.Default/ID", &base.GatesOfOlympusMultiplierKeyID) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin1.Range", &base.GatesOfOlympusReelBaseSpin1Range) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin1.Reel", &base.GatesOfOlympusReelBaseSpin1Reel) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin1.Weight", &base.GatesOfOlympusReelBaseSpin1Weight) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin2.Range", &base.GatesOfOlympusReelBaseSpin2Range) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin2.Reel", &base.GatesOfOlympusReelBaseSpin2Reel) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin2.Weight", &base.GatesOfOlympusReelBaseSpin2Weight) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin3.Range", &base.GatesOfOlympusReelBaseSpin3Range) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin3.Reel", &base.GatesOfOlympusReelBaseSpin3Reel) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin3.Weight", &base.GatesOfOlympusReelBaseSpin3Weight) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin7.Range", &base.GatesOfOlympusReelBaseSpin7Range) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin7.Reel", &base.GatesOfOlympusReelBaseSpin7Reel) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin7.Weight", &base.GatesOfOlympusReelBaseSpin7Weight) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin8.Range", &base.GatesOfOlympusReelBaseSpin8Range) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin8.Reel", &base.GatesOfOlympusReelBaseSpin8Reel) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin8.Weight", &base.GatesOfOlympusReelBaseSpin8Weight) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin.Range", &base.GatesOfOlympusReelBaseSpinRange) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin.Reel", &base.GatesOfOlympusReelBaseSpinReel) + Load(data, "Base.GatesOfOlympus/ReelBaseSpin.Weight", &base.GatesOfOlympusReelBaseSpinWeight) + Load(data, "Base.GatesOfOlympus/ReelChoose.Default", &base.GatesOfOlympusReelChoose) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin4.Range", &base.GatesOfOlympusReelFreeSpin4Range) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin4.Reel", &base.GatesOfOlympusReelFreeSpin4Reel) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin4.Weight", &base.GatesOfOlympusReelFreeSpin4Weight) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin5.Range", &base.GatesOfOlympusReelFreeSpin5Range) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin5.Reel", &base.GatesOfOlympusReelFreeSpin5Reel) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin5.Weight", &base.GatesOfOlympusReelFreeSpin5Weight) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin.Range", &base.GatesOfOlympusReelFreeSpinRange) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin.Reel", &base.GatesOfOlympusReelFreeSpinReel) + Load(data, "Base.GatesOfOlympus/ReelFreeSpin.Weight", &base.GatesOfOlympusReelFreeSpinWeight) + Load(data, "Base.GatesOfOlympus/Scatter.Default", &base.GatesOfOlympusScatter) + Load(data, "Base.GatesOfOlympus/Symbol.BetRatio", &base.GatesOfOlympusSymbolBetRatio) + Load(data, "Base.GatesOfOlympus/Symbol.Default", &base.GatesOfOlympusSymbol) Load(data, "Base.Matrix/FeaturesForm15X1TypeA.Default", &base.MatrixFeaturesForm15X1TypeA) Load(data, "Base.Matrix/FeaturesForm19X1TypeA.Default", &base.MatrixFeaturesForm19X1TypeA) Load(data, "Base.Matrix/FeaturesForm20X1TypeA.Default", &base.MatrixFeaturesForm20X1TypeA) @@ -401,6 +441,46 @@ func StoragesMapping() { Set("Base", "FortuneTiger/SuperStack", "Weight", base.FortuneTigerSuperStackWeight) Set("Base", "FortuneTiger/Symbol", "BetRatio", base.FortuneTigerSymbolBetRatio) Set("Base", "FortuneTiger/Symbol", "Default", base.FortuneTigerSymbol) + Set("Base", "GatesOfOlympus/Bet", "BetChangeList", base.GatesOfOlympusBetBetChangeList) + Set("Base", "GatesOfOlympus/Bet", "BetLevel", base.GatesOfOlympusBetBetLevel) + Set("Base", "GatesOfOlympus/Bet", "BetLine", base.GatesOfOlympusBetBetLine) + Set("Base", "GatesOfOlympus/Bet", "BetSize", base.GatesOfOlympusBetBetSize) + Set("Base", "GatesOfOlympus/Bet", "FirstBet", base.GatesOfOlympusBetFirstBet) + Set("Base", "GatesOfOlympus/Formation", "Default", base.GatesOfOlympusFormation) + Set("Base", "GatesOfOlympus/Map", "RTPMode", base.GatesOfOlympusMapRTPMode) + Set("Base", "GatesOfOlympus/Multiplier", "Default", base.GatesOfOlympusMultiplier) + Set("Base", "GatesOfOlympus/Multiplier", "Default/ID", base.GatesOfOlympusMultiplierKeyID) + Set("Base", "GatesOfOlympus/ReelBaseSpin1", "Range", base.GatesOfOlympusReelBaseSpin1Range) + Set("Base", "GatesOfOlympus/ReelBaseSpin1", "Reel", base.GatesOfOlympusReelBaseSpin1Reel) + Set("Base", "GatesOfOlympus/ReelBaseSpin1", "Weight", base.GatesOfOlympusReelBaseSpin1Weight) + Set("Base", "GatesOfOlympus/ReelBaseSpin2", "Range", base.GatesOfOlympusReelBaseSpin2Range) + Set("Base", "GatesOfOlympus/ReelBaseSpin2", "Reel", base.GatesOfOlympusReelBaseSpin2Reel) + Set("Base", "GatesOfOlympus/ReelBaseSpin2", "Weight", base.GatesOfOlympusReelBaseSpin2Weight) + Set("Base", "GatesOfOlympus/ReelBaseSpin3", "Range", base.GatesOfOlympusReelBaseSpin3Range) + Set("Base", "GatesOfOlympus/ReelBaseSpin3", "Reel", base.GatesOfOlympusReelBaseSpin3Reel) + Set("Base", "GatesOfOlympus/ReelBaseSpin3", "Weight", base.GatesOfOlympusReelBaseSpin3Weight) + Set("Base", "GatesOfOlympus/ReelBaseSpin7", "Range", base.GatesOfOlympusReelBaseSpin7Range) + Set("Base", "GatesOfOlympus/ReelBaseSpin7", "Reel", base.GatesOfOlympusReelBaseSpin7Reel) + Set("Base", "GatesOfOlympus/ReelBaseSpin7", "Weight", base.GatesOfOlympusReelBaseSpin7Weight) + Set("Base", "GatesOfOlympus/ReelBaseSpin8", "Range", base.GatesOfOlympusReelBaseSpin8Range) + Set("Base", "GatesOfOlympus/ReelBaseSpin8", "Reel", base.GatesOfOlympusReelBaseSpin8Reel) + Set("Base", "GatesOfOlympus/ReelBaseSpin8", "Weight", base.GatesOfOlympusReelBaseSpin8Weight) + Set("Base", "GatesOfOlympus/ReelBaseSpin", "Range", base.GatesOfOlympusReelBaseSpinRange) + Set("Base", "GatesOfOlympus/ReelBaseSpin", "Reel", base.GatesOfOlympusReelBaseSpinReel) + Set("Base", "GatesOfOlympus/ReelBaseSpin", "Weight", base.GatesOfOlympusReelBaseSpinWeight) + Set("Base", "GatesOfOlympus/ReelChoose", "Default", base.GatesOfOlympusReelChoose) + Set("Base", "GatesOfOlympus/ReelFreeSpin4", "Range", base.GatesOfOlympusReelFreeSpin4Range) + Set("Base", "GatesOfOlympus/ReelFreeSpin4", "Reel", base.GatesOfOlympusReelFreeSpin4Reel) + Set("Base", "GatesOfOlympus/ReelFreeSpin4", "Weight", base.GatesOfOlympusReelFreeSpin4Weight) + Set("Base", "GatesOfOlympus/ReelFreeSpin5", "Range", base.GatesOfOlympusReelFreeSpin5Range) + Set("Base", "GatesOfOlympus/ReelFreeSpin5", "Reel", base.GatesOfOlympusReelFreeSpin5Reel) + Set("Base", "GatesOfOlympus/ReelFreeSpin5", "Weight", base.GatesOfOlympusReelFreeSpin5Weight) + Set("Base", "GatesOfOlympus/ReelFreeSpin", "Range", base.GatesOfOlympusReelFreeSpinRange) + Set("Base", "GatesOfOlympus/ReelFreeSpin", "Reel", base.GatesOfOlympusReelFreeSpinReel) + Set("Base", "GatesOfOlympus/ReelFreeSpin", "Weight", base.GatesOfOlympusReelFreeSpinWeight) + Set("Base", "GatesOfOlympus/Scatter", "Default", base.GatesOfOlympusScatter) + Set("Base", "GatesOfOlympus/Symbol", "BetRatio", base.GatesOfOlympusSymbolBetRatio) + Set("Base", "GatesOfOlympus/Symbol", "Default", base.GatesOfOlympusSymbol) Set("Base", "Matrix/FeaturesForm15X1TypeA", "Default", base.MatrixFeaturesForm15X1TypeA) Set("Base", "Matrix/FeaturesForm19X1TypeA", "Default", base.MatrixFeaturesForm19X1TypeA) Set("Base", "Matrix/FeaturesForm20X1TypeA", "Default", base.MatrixFeaturesForm20X1TypeA) @@ -540,6 +620,12 @@ func LinksMapping() { Link("FortuneTiger/ReelBaseSpin", "Weight/1", "FortuneTiger/ReelBaseSpin", "Weight") Link("FortuneTiger/ReelBaseSpin", "Weight/2", "FortuneTiger/ReelBaseSpin", "Weight") Link("FortuneTiger/ReelBaseSpin", "Weight/3", "FortuneTiger/ReelBaseSpin", "Weight") + Link("GatesOfOlympus/MatrixSameForm5X6TypeA", "Default", "Matrix/SameForm5X6TypeA", "Default") + Link("GatesOfOlympus/MatrixSameForm5X6TypeB", "Default", "Matrix/SameForm5X6TypeB", "Default") + Link("GatesOfOlympus/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default") + Link("GatesOfOlympus/ReelBaseSpin1", "Weight/1", "GatesOfOlympus/ReelBaseSpin1", "Weight") + Link("GatesOfOlympus/ReelBaseSpin1", "Weight/2", "GatesOfOlympus/ReelBaseSpin1", "Weight") + Link("GatesOfOlympus/ReelBaseSpin1", "Weight/3", "GatesOfOlympus/ReelBaseSpin1", "Weight") Link("Test/MatrixLine1Form3X3TypeA", "Default", "Matrix/Line1Form3X3TypeA", "Default") Link("Test/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default") Link("Test/ReelBaseSpin", "Weight/1", "Test/ReelBaseSpin", "Weight") @@ -636,3 +722,4 @@ func Load(dataMap map[string]string, name string, v interface{}) { panic(err) } } + diff --git a/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go b/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go index a2d3e57..501a0e7 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go @@ -172,6 +172,19 @@ type ( FreeSpinCount int64 MaxWin int64 } + // GatesOfOlympusMultiplier comment + GatesOfOlympusMultiplier struct { + Multiple int64 + ID int64 + Weights []int64 + } + // GatesOfOlympusReelChoose comment + GatesOfOlympusReelChoose struct { + ID int64 + IsFreeSpin bool + NodeType string + Weights []int64 + } // JackpotPrize comment JackpotPrize struct { PrizeType int64 @@ -521,6 +534,42 @@ type ( // FortuneTigerSymbolBetRatio comment FortuneTigerSymbolBetRatio = SymbolBetRatio + // GatesOfOlympusBetBetChangeList comment + GatesOfOlympusBetBetChangeList = BetChangeList + + // GatesOfOlympusBetBetLevel comment + GatesOfOlympusBetBetLevel = BetLevel + + // GatesOfOlympusBetBetLine comment + GatesOfOlympusBetBetLine = BetLine + + // GatesOfOlympusBetBetSize comment + GatesOfOlympusBetBetSize = BetSize + + // GatesOfOlympusBetFirstBet comment + GatesOfOlympusBetFirstBet = FirstBet + + // GatesOfOlympusFormation comment + GatesOfOlympusFormation = Formation + + // GatesOfOlympusMapRTPMode comment + GatesOfOlympusMapRTPMode = MapRTPMode + + // GatesOfOlympusMapRTPModeTypeWeight comment + GatesOfOlympusMapRTPModeTypeWeight = MapRTPModeTypeWeight + + // GatesOfOlympusMultiplierKeyID comment + GatesOfOlympusMultiplierKeyID = GatesOfOlympusMultiplier + + // GatesOfOlympusScatter comment + GatesOfOlympusScatter = Scatter + + // GatesOfOlympusSymbol comment + GatesOfOlympusSymbol = Symbol + + // GatesOfOlympusSymbolBetRatio comment + GatesOfOlympusSymbolBetRatio = SymbolBetRatio + // MatrixFeaturesForm15X1TypeA comment MatrixFeaturesForm15X1TypeA = Matrix diff --git a/gamesrv/slotspkg/internal/generic/key/theme.go b/gamesrv/slotspkg/internal/generic/key/theme.go index 8eefc7a..53c9f09 100644 --- a/gamesrv/slotspkg/internal/generic/key/theme.go +++ b/gamesrv/slotspkg/internal/generic/key/theme.go @@ -1,13 +1,14 @@ package key const ( - FortuneTiger = "FortuneTiger" - FortuneDragon = "FortuneDragon" - FortuneRabbit = "FortuneRabbit" - FortuneOx = "FortuneOx" - FortuneMouse = "FortuneMouse" - CashMania = "CashMania" - Test = "Test" + FortuneTiger = "FortuneTiger" + FortuneDragon = "FortuneDragon" + FortuneRabbit = "FortuneRabbit" + FortuneOx = "FortuneOx" + FortuneMouse = "FortuneMouse" + CashMania = "CashMania" + GatesOfOlympus = "GatesOfOlympus" + Test = "Test" ) const ( GameId_Min uint = iota @@ -17,28 +18,31 @@ const ( GameId_OX GameId_Mouse GameId_Cash_Mania + GameId_GatesOfOlympus GameId_Max GameId_Test = 999 ) var GameMap = map[uint]string{ - GameId_Tiger: FortuneTiger, - GameId_Dragon: FortuneDragon, - GameId_Rabbit: FortuneRabbit, - GameId_OX: FortuneOx, - GameId_Mouse: FortuneMouse, - GameId_Cash_Mania: CashMania, - GameId_Test: Test, + GameId_Tiger: FortuneTiger, + GameId_Dragon: FortuneDragon, + GameId_Rabbit: FortuneRabbit, + GameId_OX: FortuneOx, + GameId_Mouse: FortuneMouse, + GameId_Cash_Mania: CashMania, + GameId_GatesOfOlympus: GatesOfOlympus, + GameId_Test: Test, } var GameMapTheme = map[string]uint{ - FortuneTiger: GameId_Tiger, - FortuneDragon: GameId_Dragon, - FortuneRabbit: GameId_Rabbit, - FortuneOx: GameId_OX, - FortuneMouse: GameId_Mouse, - CashMania: GameId_Cash_Mania, - Test: GameId_Test, + FortuneTiger: GameId_Tiger, + FortuneDragon: GameId_Dragon, + FortuneRabbit: GameId_Rabbit, + FortuneOx: GameId_OX, + FortuneMouse: GameId_Mouse, + CashMania: GameId_Cash_Mania, + GatesOfOlympus: GameId_GatesOfOlympus, + Test: GameId_Test, } var GameKeyMap = map[int64]uint{ 0: GameId_Min, @@ -47,5 +51,7 @@ var GameKeyMap = map[int64]uint{ 310: GameId_Rabbit, 311: GameId_OX, 312: GameId_Mouse, + 313: GameId_Cash_Mania, + 314: GameId_GatesOfOlympus, 999: GameId_Max, } diff --git a/gamesrv/slotspkg/internal/module/shared/types.go b/gamesrv/slotspkg/internal/module/shared/types.go index c275ce3..f8669c6 100644 --- a/gamesrv/slotspkg/internal/module/shared/types.go +++ b/gamesrv/slotspkg/internal/module/shared/types.go @@ -58,6 +58,18 @@ type GameEndDto struct { ActualWin int64 `json:"actualWin"` } +type CustomEliminate struct { + LinkPositions []*LinkPositions `json:"LinkPositions,omitempty"` //消除的位置 + AppendSymbols [][]int64 `json:"AppendSymbols,omitempty"` //新增 + FormattedSymbols [][]int64 `json:"FormattedSymbols,omitempty"` //最终的结果 + LinePays []float64 `json:"LinePays,omitempty"` //赔付 + WinCoins []float64 `json:"WinCoins,omitempty"` //输赢 + MultiStr string `json:"multi_str,omitempty"` + MultiStrVal string `json:"multi_str_val,omitempty"` + SymbolsAbove []int64 `json:"symbols_above,omitempty"` + SymbolsBelow []int64 `json:"symbols_below,omitempty"` +} + // Special type SpinLock struct { //tigerSpecial @@ -81,4 +93,13 @@ type SpinLock struct { Multiple int64 `json:"multiple,omitempty"` //倍乘倍数 Irv [][]float64 `json:"irv,omitempty"` Frv [][]float64 `json:"frv,omitempty"` + + //GatesOfOlympus + CustomEliminates []CustomEliminate `json:"CustomEliminates,omitempty"` + Pay float64 `json:"Pay,omitempty"` + Multi int64 `json:"Multi,omitempty"` + MultiStr string `json:"multi_str,omitempty"` + MultiStrVal string `json:"multi_str_val,omitempty"` + SymbolsAbove []int64 `json:"symbols_above,omitempty"` + SymbolsBelow []int64 `json:"symbols_below,omitempty"` } diff --git a/gamesrv/slotspkg/slots/formation/formation.go b/gamesrv/slotspkg/slots/formation/formation.go index 627732c..3d96c18 100644 --- a/gamesrv/slotspkg/slots/formation/formation.go +++ b/gamesrv/slotspkg/slots/formation/formation.go @@ -13,6 +13,8 @@ type Formation struct { NodeType string FormationDesc *desc.FormationDesc Symbols []int64 + SymbolsAbove []int64 + SymbolsBelow []int64 RandPositions []int64 CheatSymbols []int64 DisplaySymbols []int64 @@ -72,6 +74,8 @@ func NewFormation(n *desc.NodeDesc, seqID int64) (*Formation, error) { NodeType: n.NodeType, FormationDesc: formationDesc, Symbols: nil, + SymbolsAbove: nil, + SymbolsBelow: nil, RandPositions: nil, CheatSymbols: nil, DisplaySymbols: nil, @@ -96,12 +100,16 @@ func (f *Formation) Rand(r *randx.Randx) { symbol := reelDesc.Reel[symbolIdx%length] f.Symbols = append(f.Symbols, symbol) } + f.SymbolsAbove = append(f.SymbolsAbove, reelDesc.Reel[(startIdx+reelDesc.Range-1)%length]) + f.SymbolsBelow = append(f.SymbolsBelow, reelDesc.Reel[(startIdx+reelDesc.Range)%length]) } } func (f *Formation) ResetRandSymbols(r *randx.Randx) { f.RandPositions = nil f.Symbols = nil + f.SymbolsAbove = nil + f.SymbolsBelow = nil for _, reelDesc := range f.FormationDesc.ReelsDesc { // 经测试:缓存权重 和 二分查找 对权重随机性能的提升微乎其微,没必要优化 startIdx := int64(randx.RandWeight(r, reelDesc.Weights)) @@ -111,11 +119,15 @@ func (f *Formation) ResetRandSymbols(r *randx.Randx) { symbol := reelDesc.Reel[symbolIdx%length] f.Symbols = append(f.Symbols, symbol) } + f.SymbolsAbove = append(f.SymbolsAbove, reelDesc.Reel[(startIdx-1)%length]) + f.SymbolsBelow = append(f.SymbolsBelow, reelDesc.Reel[(startIdx+reelDesc.Range)%length]) } } func (f *Formation) ResetRandSymbolsByIndex(r *randx.Randx) { f.RandPositions = nil f.Symbols = nil + f.SymbolsAbove = nil + f.SymbolsBelow = nil for _, reelDesc := range f.FormationDesc.ReelsDesc { // 经测试:缓存权重 和 二分查找 对权重随机性能的提升微乎其微,没必要优化 startIdx := int64(r.Intn(len(reelDesc.Weights))) @@ -125,6 +137,8 @@ func (f *Formation) ResetRandSymbolsByIndex(r *randx.Randx) { symbol := reelDesc.Reel[symbolIdx%length] f.Symbols = append(f.Symbols, symbol) } + f.SymbolsAbove = append(f.SymbolsAbove, reelDesc.Reel[(startIdx-1)%length]) + f.SymbolsBelow = append(f.SymbolsBelow, reelDesc.Reel[(startIdx+reelDesc.Range)%length]) } } diff --git a/gamesrv/slotspkg/slots/intf/formation.go b/gamesrv/slotspkg/slots/intf/formation.go index 7c0ee73..8175668 100644 --- a/gamesrv/slotspkg/slots/intf/formation.go +++ b/gamesrv/slotspkg/slots/intf/formation.go @@ -16,6 +16,8 @@ type Formation interface { SetInitFormattedSymbols(symbols [][]int64) Formation GetSymbols() []int64 + GetSymbolsAbove() []int64 + GetSymbolsBelow() []int64 SetSymbols(symbols []int64) Formation GetReelFormattedSymbols() [][]int64 GetMatrixFormattedSymbols() [][]int64 @@ -41,6 +43,8 @@ type Formation interface { GetMatrixFormattedFinalSymbols() [][]int64 SetFormattedFinalSymbols(symbols [][]int64) Formation + GetMatrixFormattedBySymbols(symbols []int64) [][]int64 + GetLinkPositions() []*shared.LinkPositions SetLinkPositions(linkPositions []*shared.LinkPositions) Formation diff --git a/gamesrv/slotspkg/slots/intf/spinner.go b/gamesrv/slotspkg/slots/intf/spinner.go index 649d598..c0b91f1 100644 --- a/gamesrv/slotspkg/slots/intf/spinner.go +++ b/gamesrv/slotspkg/slots/intf/spinner.go @@ -44,6 +44,7 @@ type Spinner interface { BetLines() []int64 BaseBets() []int64 BetChangeList() []float64 + GetBetIndexByVal(val float64) []int64 Choice() int64 Stay() bool diff --git a/gamesrv/slotspkg/slots/machine/formation.go b/gamesrv/slotspkg/slots/machine/formation.go index b5ef770..772fe91 100644 --- a/gamesrv/slotspkg/slots/machine/formation.go +++ b/gamesrv/slotspkg/slots/machine/formation.go @@ -65,6 +65,20 @@ func (f *Formation) GetSymbols() []int64 { return symbols } +// GetSymbolsAbove gets origin SymbolsAbove +func (f *Formation) GetSymbolsAbove() []int64 { + symbolsAbove := make([]int64, len(f.OriginFormation.SymbolsAbove)) + copy(symbolsAbove, f.OriginFormation.SymbolsAbove) + return symbolsAbove +} + +// GetSymbolsBelow gets origin SymbolsBelow +func (f *Formation) GetSymbolsBelow() []int64 { + symbolsBelow := make([]int64, len(f.OriginFormation.SymbolsBelow)) + copy(symbolsBelow, f.OriginFormation.SymbolsBelow) + return symbolsBelow +} + // SetSymbols sets origin symbols func (f *Formation) SetSymbols(symbols []int64) intf.Formation { f.OriginFormation.Symbols = symbols @@ -183,6 +197,12 @@ func (f *Formation) GetMatrixFormattedFinalSymbols() [][]int64 { f.OriginFormation.MatrixForm) } +// GetMatrixFormattedBySymbols gets symbols and places them into specific form +func (f *Formation) GetMatrixFormattedBySymbols(symbols []int64) [][]int64 { + return formation.FormatSymbols(symbols, + f.OriginFormation.MatrixForm) +} + // SetFormattedFinalSymbols sets formed final symbols func (f *Formation) SetFormattedFinalSymbols(symbols [][]int64) intf.Formation { f.Formation.FinalSymbols = formation.DeformatSymbols(symbols) diff --git a/gamesrv/slotspkg/slots/plugin/gatesofolympus/choose_wheel.go b/gamesrv/slotspkg/slots/plugin/gatesofolympus/choose_wheel.go new file mode 100644 index 0000000..2f930d3 --- /dev/null +++ b/gamesrv/slotspkg/slots/plugin/gatesofolympus/choose_wheel.go @@ -0,0 +1,36 @@ +package gatesofolympus + +import ( + "mongo.games.com/game/gamesrv/slotspkg/internal/generic/key" + "mongo.games.com/game/gamesrv/slotspkg/slots/intf" + "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic" +) + +type PluginChooseWheel struct { + generic.PluginBase +} + +func (p *PluginChooseWheel) Theme() string { + return key.GatesOfOlympus +} + +func (p *PluginChooseWheel) OnStepBegin(m intf.Master) { + isFreeSpin := m.Next().GetType() == FreeSpin + typ := m.Choice() + + nodeName := Descx(m).RandWheel(isFreeSpin, typ) + if !isFreeSpin { + if typ == RoundTypeMoreScatter { + nodeName = "MoreScatter" + nodeName + m.SetRatio(key.MachineRatioMoreCoinMoreBet, 1.25) + } else if typ == RoundTypeBuyFreeSpin { + m.SetRatio(key.MachineRatioMoreCoinSameBet, 100) + } + } + m.Set(key.MachineFormationSeqsDesc, nodeName) + + // 设置日志中的RoundType + if m.Next().GetType() == BaseSpin { + m.Set(key.MachineRoundType, typ) + } +} diff --git a/gamesrv/slotspkg/slots/plugin/gatesofolympus/common.go b/gamesrv/slotspkg/slots/plugin/gatesofolympus/common.go new file mode 100644 index 0000000..152bf8f --- /dev/null +++ b/gamesrv/slotspkg/slots/plugin/gatesofolympus/common.go @@ -0,0 +1,30 @@ +package gatesofolympus + +const ( + BaseSpin = "BaseSpin" + FreeSpin = "FreeSpin" +) + +const ( + RoundTypeBaseSpin = iota + RoundTypeMoreScatter // 25% more cost + RoundTypeBuyFreeSpin // 10000% more cost +) + +const ( + MultiplierBaseSpin = iota + MultiplierFreeSpin + MultiplierNoWin +) + +const ( + SymbolMultiplier = int64(12) +) + +type CustomFortune struct { + FreeStatus int `json:"fs"` + FreeSpinNum int64 `json:"fsn"` //剩余freespin + FreeNumMax int64 `json:"fnm"` //总次数 + FreeNumTrigger int64 `json:"fnt"` //新增freespin + ScatterWin int64 `json:"sw,omitempty"` +} diff --git a/gamesrv/slotspkg/slots/plugin/gatesofolympus/descx.go b/gamesrv/slotspkg/slots/plugin/gatesofolympus/descx.go new file mode 100644 index 0000000..4b5be57 --- /dev/null +++ b/gamesrv/slotspkg/slots/plugin/gatesofolympus/descx.go @@ -0,0 +1,84 @@ +package gatesofolympus + +import ( + "encoding/json" + "github.com/tomas-qstarrs/boost/randx" + "mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs" + "mongo.games.com/game/gamesrv/slotspkg/internal/generic/errors" + "mongo.games.com/game/gamesrv/slotspkg/slots/desc" + "mongo.games.com/game/gamesrv/slotspkg/slots/intf" +) + +type descx struct { + *randx.Randx + *desc.NodeDesc +} + +func Descx(m intf.Master) *descx { + return &descx{ + Randx: m.Randx(), + NodeDesc: m.Desc(), + } +} + +func (n descx) RandWheel(isFreeSpin bool, typ int64) string { + sheet := n.DefaultSheet("ReelChoose") + rows, ok := sheet.([]*structs.GatesOfOlympusReelChoose) + if !ok { + panic(errors.ConfigTypeError.ErrorWith(n.Theme, "ReelChoose")) + } + + var weights = make(map[int]int64, 0) + for idx, row := range rows { + if row.IsFreeSpin == isFreeSpin { + weights[idx] = row.Weights[int(typ)] + } + } + + idx := randx.RandWeightMap(n.Randx, weights) + return rows[idx].NodeType +} + +func (n descx) RandMultiplier(typ int64) int64 { + sheet := n.DefaultSheet("Multiplier") + rows, ok := sheet.([]*structs.GatesOfOlympusMultiplier) + if !ok { + panic(errors.ConfigTypeError.ErrorWith(n.Theme, "Multiplier")) + } + + var weights = make([]int64, 0, len(rows)) + for _, row := range rows { + weights = append(weights, row.Weights[typ]) + } + + idx := randx.RandWeight(n.Randx, weights) + return rows[idx].ID +} + +func (n descx) GetMultiBySymbol(symbol int64) int64 { + sheet := n.KeySheet("Multiplier", "Default", "ID") + rows, ok := sheet.(map[int64]*structs.GatesOfOlympusMultiplier) + if !ok { + panic(errors.ConfigTypeError.ErrorWith(n.Theme, "Multiplier")) + } + + row, ok := rows[symbol] + if !ok { + return 0 + } + + return row.Multiple +} +func (n descx) GetMultiStr() string { + sheet := n.KeySheet("Multiplier", "Default", "ID") + rows, ok := sheet.(map[int64]*structs.GatesOfOlympusMultiplier) + if !ok { + panic(errors.ConfigTypeError.ErrorWith(n.Theme, "Multiplier")) + } + var multiples = make(map[int64]int64) + for _, v := range rows { + multiples[v.ID] = v.Multiple + } + multiplesByte, _ := json.Marshal(multiples) + return string(multiplesByte) +} diff --git a/gamesrv/slotspkg/slots/plugin/gatesofolympus/eliminate.go b/gamesrv/slotspkg/slots/plugin/gatesofolympus/eliminate.go new file mode 100644 index 0000000..3440693 --- /dev/null +++ b/gamesrv/slotspkg/slots/plugin/gatesofolympus/eliminate.go @@ -0,0 +1,239 @@ +package gatesofolympus + +import ( + "fmt" + "github.com/mohae/deepcopy" + "github.com/tomas-qstarrs/boost/mathx" + "mongo.games.com/game/gamesrv/slotspkg/internal/generic/key" + "mongo.games.com/game/gamesrv/slotspkg/internal/module/shared" + "mongo.games.com/game/gamesrv/slotspkg/slots/intf" + "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic" +) + +type PluginEliminate struct { + generic.PluginBase +} + +type CustomEliminate struct { + LinkPositions []*shared.LinkPositions `json:"LinkPositions,omitempty"` //消除的位置 + AppendSymbols [][]int64 `json:"AppendSymbols,omitempty"` //新增 + FormattedSymbols [][]int64 `json:"FormattedSymbols,omitempty"` //最终的结果 + LinePays []float64 `json:"LinePays,omitempty"` //赔付 + WinCoins []float64 `json:"WinCoins,omitempty"` //输赢 + MultiStr string `json:"multi_str,omitempty"` + SymbolsAbove []int64 `json:"symbols_above,omitempty"` + SymbolsBelow []int64 `json:"symbols_below,omitempty"` +} + +type CustomMulti struct { + Multi int64 + MultiStr string + MultiStrVal string +} + +type CustomPay struct { + Pay float64 +} + +func (p *PluginEliminate) Theme() string { + return key.GatesOfOlympus +} + +func (p *PluginEliminate) Customs() []interface{} { + return []interface{}{ + &CustomEliminate{}, + &CustomMulti{}, + &CustomPay{}, + &CustomFortune{}, + } +} + +func (p *PluginEliminate) OnInit(m intf.Master) { + if len(m.RootCustoms(&CustomMulti{})) == 0 { + m.AddRootFeature(&CustomMulti{}) + } +} + +func (p *PluginEliminate) OnEnterNode(m intf.Master) { + if m.Cursor().GetType() == key.BaseSpin { + m.RootCustom(&CustomMulti{}).(*CustomMulti).Multi = 0 + } +} + +func (p *PluginEliminate) BeforeSpin(m intf.Master) { + m.AddCursorFeature(&CustomPay{}).SetLifetime(1) +} + +func (p *PluginEliminate) AfterSpin(m intf.Master) { + cursorFormation := m.CursorFormation() + formattedSymbols := cursorFormation.GetReelFormattedDisplaySymbols() + + //f := getCustomFortune(m) + //if f.FreeSpinNum == 13 { + // formattedSymbols[0][0] = 1 + // formattedSymbols[0][1] = 1 + // formattedSymbols[0][2] = 1 + //} + + appendFormattedSymbols := deepcopy.Copy(formattedSymbols).([][]int64) + randPositions := cursorFormation.GetRandPositions() + + // 清空基础赢钱 + m.CursorFormation().SetWin(0) + + // 获取custom + customMulti := m.RootCustom(&CustomMulti{}).(*CustomMulti) + customPay := m.CursorCustom(&CustomPay{}).(*CustomPay) + + // 根据赔付计算multi type + linkPositions, _, linePays := m.TryLinkMatrixSymbols(1, formattedSymbols) + + var multiType int64 + if mathx.Sum(linePays) == 0 { + multiType = MultiplierNoWin + } else if m.Cursor().GetType() == key.BaseSpin { + multiType = MultiplierBaseSpin + } else { + multiType = MultiplierFreeSpin + } + + // 替换Formation元素 + for colIdx, symbols := range formattedSymbols { + for rowIdx, symbol := range symbols { + if symbol == SymbolMultiplier { + multiSymbol := Descx(m).RandMultiplier(multiType) + formattedSymbols[int64(colIdx)][5-int64(len(symbols))+int64(rowIdx)] = multiSymbol + } + } + } + + // 存储 Formation元素 + cursorFormation.SetFormattedDisplaySymbols(formattedSymbols) + defer cursorFormation.SetFormattedFinalSymbols(formattedSymbols) + + // 有消除 + for mathx.Sum(linePays) > 0 { + // 计算连线赢钱 + lineNum := len(linePays) + winCoins := make([]float64, lineNum) + for lineIdx, pay := range linePays { + winCoins[lineIdx] = float64(m.Cursor().GetSingleBet()) * float64(pay) + } + + // 标记消除的元素 + for _, link := range linkPositions { + for _, pos := range link.Positions { + row, col := cursorFormation.PositionToCoords(pos) + formattedSymbols[col][row] = -1 + } + } + // 删除消除的元素 + for colIndex := range formattedSymbols { + for rowIndex := 0; rowIndex < len(formattedSymbols[colIndex]); rowIndex++ { + if formattedSymbols[colIndex][rowIndex] == -1 { + formattedSymbols[colIndex] = append(formattedSymbols[colIndex][:rowIndex], formattedSymbols[colIndex][rowIndex+1:]...) + rowIndex-- + } + } + } + + var symbolsAbove []int64 + // 获取新得元素 + for colIdx, symbols := range formattedSymbols { + // 获取后续(向前)元素 + appendFormattedSymbols[colIdx] = cursorFormation.GetReelSymbols(int64(colIdx), + randPositions[colIdx]-int64(5-len(symbols)), int64(5-len(symbols))) + + symbolsAbove = append(symbolsAbove, cursorFormation.GetReelSymbols(int64(colIdx), + randPositions[colIdx]-int64(5-len(symbols))-1, 1)...) + + for rowIdx, symbol := range appendFormattedSymbols[colIdx] { + if symbol == SymbolMultiplier { + multiSymbol := Descx(m).RandMultiplier(multiType) + appendFormattedSymbols[colIdx][rowIdx] = multiSymbol + } + } + + // 拼接剩余元素和后续(向前)元素 + formattedSymbols[colIdx] = deepcopy.Copy(appendFormattedSymbols[colIdx]).([]int64) + formattedSymbols[colIdx] = append(formattedSymbols[colIdx], symbols...) + + // randPosition 向前移动 + randPositions[colIdx] -= int64(len(appendFormattedSymbols[colIdx])) + } + + // 添加后续feature,这里是消除 + m.AddCursorFeature(&CustomEliminate{ + LinkPositions: linkPositions, + AppendSymbols: appendFormattedSymbols, + FormattedSymbols: formattedSymbols, + LinePays: linePays, + WinCoins: winCoins, + MultiStr: Descx(m).GetMultiStr(), + SymbolsAbove: symbolsAbove, + SymbolsBelow: m.CursorFormation().GetSymbolsBelow(), + }).SetLifetime(1) + + // 累加pay + customPay.Pay += mathx.Sum(linePays) + + // 连线 + linkPositions, _, linePays = m.TryLinkMatrixSymbols(1, formattedSymbols) + } + + // 增加multi + var multiSum int64 + maxColCount := 0 + + // 找到最长的列数 + for _, row := range formattedSymbols { + if len(row) > maxColCount { + maxColCount = len(row) + } + } + + flatIndex := 0 // 当前符号在一维数组中的索引 + + customMulti.MultiStr = "" + customMulti.MultiStrVal = "" + + // 遍历列优先的索引 + for col := 0; col < maxColCount; col++ { + for row := 0; row < len(formattedSymbols); row++ { + rowSymbols := formattedSymbols[row] // 当前行的符号 + if col < len(rowSymbols) { // 确保当前列存在 + symbol := rowSymbols[col] + multi := Descx(m).GetMultiBySymbol(symbol) + multiSum += multi + + // 打印 Symbol 和其一维索引 + //fmt.Printf("Symbol: %s, Position in one-dimensional array: %d\n", symbol, flatIndex) + if multi > 0 { + if len(customMulti.MultiStr) > 0 { + customMulti.MultiStr += ";" + customMulti.MultiStrVal += "," + } + customMulti.MultiStr += fmt.Sprintf("%v~%v~%v", 12, flatIndex, multi) + customMulti.MultiStrVal += fmt.Sprintf("%v", multi) + } + flatIndex++ // 索引递增 + } + } + } + + if customPay.Pay > 0 { + if multiSum == 0 { + win := int64(customPay.Pay * float64(m.Cursor().GetSingleBet())) + m.CursorFeature(&CustomPay{}).SetWin(win) + } else { + customMulti.Multi += multiSum + var win int64 + if customMulti.Multi == 0 { + win = int64(customPay.Pay * float64(m.Cursor().GetSingleBet())) + } else { + win = int64(customPay.Pay * float64(m.Cursor().GetSingleBet()) * float64(customMulti.Multi)) + } + m.CursorFeature(&CustomPay{}).SetWin(win) + } + } +} diff --git a/gamesrv/slotspkg/slots/plugin/gatesofolympus/free_spin.go b/gamesrv/slotspkg/slots/plugin/gatesofolympus/free_spin.go new file mode 100644 index 0000000..b2ae211 --- /dev/null +++ b/gamesrv/slotspkg/slots/plugin/gatesofolympus/free_spin.go @@ -0,0 +1,106 @@ +package gatesofolympus + +import ( + "github.com/tomas-qstarrs/boost/mathx" + "mongo.games.com/game/gamesrv/slotspkg/internal/generic/key" + "mongo.games.com/game/gamesrv/slotspkg/slots/intf" + "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic" +) + +type PluginFreeSpin struct { + generic.PluginScatter +} + +func (p *PluginFreeSpin) Theme() string { + return key.GatesOfOlympus +} + +// 获取特性数据 +func getCustomFortune(m intf.Master) *CustomFortune { + customFortune := new(CustomFortune) + if len(m.CursorCustoms(customFortune)) == 0 { + m.AddCursorFeature(customFortune) + } + return m.CursorCustom(customFortune).(*CustomFortune) +} + +// AfterSpin implements generic.PluginBase.AfterSpin +func (p *PluginFreeSpin) AfterSpin(m intf.Master) { + switch m.Cursor().GetType() { + case key.BaseSpin: + p.AfterBaseSpin(m) + case key.FreeSpin: + p.AfterFreeSpin(m) + } +} + +// AfterBaseSpin is called after base spin +func (p *PluginFreeSpin) AfterBaseSpin(m intf.Master) { + addTimes, win := p.GetScatterInfo(m, false) + if addTimes > 0 { + //m.AddNodeOnCursor(key.FreeSpin, addTimes) + customFortune := getCustomFortune(m) + customFortune.FreeStatus = 1 + customFortune.FreeNumMax += addTimes + customFortune.FreeNumTrigger = addTimes + customFortune.FreeSpinNum = addTimes + customFortune.ScatterWin = win + m.AddNodeFeature(m.AddNodeOnCursor(key.FreeSpin, addTimes).GetID(), customFortune).SetLifetime(addTimes) + } + if win > 0 { + m.AddCursorFeature(&generic.CustomScatterWin{}).SetWin(win) + } +} + +// AfterFreeSpin is called after free spin +func (p *PluginFreeSpin) AfterFreeSpin(m intf.Master) { + addTimes, win := p.GetScatterInfo(m, true) + customFortune := getCustomFortune(m) + if addTimes > 0 { + customFortune.FreeStatus = 2 + customFortune.FreeNumTrigger = addTimes + customFortune.FreeNumMax += addTimes + customFortune.FreeSpinNum += addTimes + customFortune.ScatterWin = win + m.AddProgress(addTimes) + m.AddCursorFeature(&generic.CustomExtraFreeSpin{ExtraTimes: addTimes}).SetLifetime(1) + } else { + customFortune.FreeStatus = 0 + customFortune.FreeNumTrigger = 0 + if customFortune.FreeSpinNum > 0 { + if customFortune.FreeSpinNum == 1 { + customFortune.FreeStatus = 3 + } + customFortune.FreeSpinNum-- + } + } + if win > 0 { + m.AddCursorFeature(&generic.CustomScatterWin{}).SetWin(win) + } +} + +// GetScatterInfo gets add free spin times & pay rate +func (p *PluginFreeSpin) GetScatterInfo(m intf.Master, inFreeSpin bool) (int64, int64) { + var scatterCount int64 + symbols := m.CursorFormation().GetFinalSymbols() + scatterSymbols := p.Scatters(m) + for _, scatterSymbol := range scatterSymbols { + scatterCount += int64(mathx.Count(scatterSymbol, symbols)) + } + + if scatterCount == 0 { + return 0, 0 + } + + freeSpinCount := generic.Descx(m).FreeSpin(inFreeSpin, scatterCount) + + payRate := generic.Descx(m).ScatterPayRate(inFreeSpin, scatterCount) + + win := m.Bet() * payRate + + if m.Choice() == RoundTypeMoreScatter { + win = int64(mathx.SafeDiv(win, 1.25)) + } + + return freeSpinCount, win +} diff --git a/gamesrv/slotspkg/slots/plugin/gatesofolympus/init.go b/gamesrv/slotspkg/slots/plugin/gatesofolympus/init.go new file mode 100644 index 0000000..6f13eb6 --- /dev/null +++ b/gamesrv/slotspkg/slots/plugin/gatesofolympus/init.go @@ -0,0 +1,10 @@ +package gatesofolympus + +var Plugins = []interface{}{ + &PluginChooseWheel{}, + &PluginEliminate{}, + &PluginFreeSpin{}, + &PluginSpecial{}, +} + +var SimulatorPlugins = []interface{}{} diff --git a/gamesrv/slotspkg/slots/plugin/gatesofolympus/tospecial.go b/gamesrv/slotspkg/slots/plugin/gatesofolympus/tospecial.go new file mode 100644 index 0000000..4e6b074 --- /dev/null +++ b/gamesrv/slotspkg/slots/plugin/gatesofolympus/tospecial.go @@ -0,0 +1,77 @@ +package gatesofolympus + +import ( + "mongo.games.com/game/gamesrv/slotspkg/internal/generic/key" + "mongo.games.com/game/gamesrv/slotspkg/slots/intf" + "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic" +) + +type PluginSpecial struct { + generic.PluginBase +} +type Special struct { + CustomEliminates []CustomEliminate `json:"CustomEliminates,omitempty"` //消除的次数 一次为一个结果 + FreeStatus int `json:"fs"` + FreeSpinNum int64 `json:"fsn,omitempty"` //剩余freespin + FreeNumMax int64 `json:"fnm,omitempty"` //总次数 + FreeNumTrigger int64 `json:"fnt,omitempty"` //新增freespin + Pay float64 `json:"Pay,omitempty"` + Multi int64 `json:"Multi,omitempty"` + MultiStr string `json:"multi_str,omitempty"` + MultiStrVal string `json:"multi_str_val,omitempty"` + SymbolsAbove []int64 `json:"symbols_above,omitempty"` + SymbolsBelow []int64 `json:"symbols_below,omitempty"` +} + +func (p *PluginSpecial) Theme() string { + return key.GatesOfOlympus +} + +func (p *PluginSpecial) Customs() []interface{} { + return []interface{}{ + &Special{}, + } +} +func (p *PluginSpecial) getCustomSpecial(m intf.Master) *Special { + customSpecial := new(Special) + if len(m.CursorCustoms(customSpecial)) == 0 { + m.AddCursorFeature(customSpecial).SetLifetime(0) + } + return m.CursorCustom(customSpecial).(*Special) +} +func (p *PluginSpecial) AfterSpin(m intf.Master) { + //cf := m.CursorFeatures(&CustomEliminate{}) + ces := m.CursorCustoms(&CustomEliminate{}) + sp := p.getCustomSpecial(m) + if len(ces) > 0 { + for _, i2 := range ces { + ce := i2.(*CustomEliminate) + wc := make([]float64, len(ce.WinCoins)) + for j := 0; j < len(ce.WinCoins); j++ { + wc[j] = ce.WinCoins[j] / 10000 + } + sp.CustomEliminates = append(sp.CustomEliminates, CustomEliminate{ + LinkPositions: ce.LinkPositions, + AppendSymbols: ce.AppendSymbols, + FormattedSymbols: ce.FormattedSymbols, + LinePays: ce.LinePays, + WinCoins: wc, + MultiStr: ce.MultiStr, + }) + } + } + customFortune := getCustomFortune(m) + sp.FreeStatus = customFortune.FreeStatus + sp.FreeSpinNum = customFortune.FreeSpinNum + sp.FreeNumMax = customFortune.FreeNumMax + sp.FreeNumTrigger = customFortune.FreeNumTrigger + + customMulti := m.RootCustom(&CustomMulti{}).(*CustomMulti) + customPay := m.CursorCustom(&CustomPay{}).(*CustomPay) + sp.Multi = customMulti.Multi + sp.MultiStr = customMulti.MultiStr + sp.MultiStrVal = customMulti.MultiStrVal + sp.Pay = customPay.Pay + sp.SymbolsAbove = m.CursorFormation().GetSymbolsAbove() + sp.SymbolsBelow = m.CursorFormation().GetSymbolsBelow() +} diff --git a/gamesrv/slotspkg/slots/plugin/init.go b/gamesrv/slotspkg/slots/plugin/init.go index 0d18fc2..2f5dc28 100644 --- a/gamesrv/slotspkg/slots/plugin/init.go +++ b/gamesrv/slotspkg/slots/plugin/init.go @@ -8,6 +8,7 @@ import ( "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortuneox" "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortunerabbit" "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortunetiger" + "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/gatesofolympus" "mongo.games.com/game/gamesrv/slotspkg/slots/plugin/test" "mongo.games.com/game/gamesrv/slotspkg/slots/reg" ) @@ -20,6 +21,7 @@ func Init() { reg.Register(fortunedragon.Plugins...) reg.Register(fortunemouse.Plugins...) reg.Register(cashmania.Plugins...) + reg.Register(gatesofolympus.Plugins...) reg.Register(test.Plugins...) if global.Mock { @@ -28,6 +30,8 @@ func Init() { reg.Register(fortunerabbit.SimulatorPlugins...) reg.Register(fortunedragon.SimulatorPlugins...) reg.Register(cashmania.SimulatorPlugins...) + reg.Register(gatesofolympus.SimulatorPlugins...) + reg.Register(test.SimulatorPlugins...) } } @@ -39,11 +43,15 @@ func Close() { reg.Deregister(fortunedragon.Plugins...) reg.Deregister(fortunemouse.Plugins...) reg.Deregister(cashmania.Plugins...) + reg.Deregister(gatesofolympus.Plugins...) + reg.Deregister(test.Plugins...) if global.Mock { reg.Deregister(fortuneox.SimulatorPlugins...) reg.Deregister(fortunetiger.SimulatorPlugins...) reg.Deregister(fortunerabbit.SimulatorPlugins...) reg.Deregister(fortunedragon.SimulatorPlugins...) reg.Deregister(cashmania.SimulatorPlugins...) + reg.Deregister(gatesofolympus.SimulatorPlugins...) + reg.Deregister(test.SimulatorPlugins...) } } diff --git a/protocol/cashmania/cashmania.proto b/protocol/cashmania/cashmania.proto index fe0d37e..fc35847 100644 --- a/protocol/cashmania/cashmania.proto +++ b/protocol/cashmania/cashmania.proto @@ -27,7 +27,7 @@ message CashManiaPlayerData { int32 VIP = 11; } //房间信息 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO +//PACKET_CASHMANIA_SCCASHMANIAROOMINFO message SCCashManiaRoomInfo { int32 RoomId = 1; //房间id int32 GameFreeId = 2; @@ -42,26 +42,26 @@ message SCCashManiaRoomInfo { string PlayerInfo = 11; } //玩家操作 -//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP +//PACKET_CASHMANIA_CSCASHMANIAOP message CSCashManiaOp { int32 OpCode = 1; //操作码 0.spin repeated int64 Params = 2; //操作参数 下注索引编号 } //玩家操作返回 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP +//PACKET_CASHMANIA_SCCASHMANIAOP message SCCashManiaOp { int32 OpCode = 1; //操作码 int32 OpRetCode = 2; //操作结果 1.金币不足 2.低于该值不能押注 repeated int64 Params = 3; //操作参数 } //房间状态 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE +//PACKET_CASHMANIA_SCCASHMANIAROOMSTATE message SCCashManiaRoomState { int32 State = 1; //房间当前状态 int32 SubState = 2; //房间当前子状态 repeated int32 Params = 3; //状态参数 } -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED +//PACKET_CASHMANIA_SCCASHMANIABILLED message SCCashManiaBilled{ int32 OpRetCode = 1;//0.spin成功 1.spin失败 string GameEndStr = 2; diff --git a/protocol/gatesofolympus/gatesofolympus.proto b/protocol/gatesofolympus/gatesofolympus.proto index ef76923..4d4b9bb 100644 --- a/protocol/gatesofolympus/gatesofolympus.proto +++ b/protocol/gatesofolympus/gatesofolympus.proto @@ -27,7 +27,7 @@ message GatesOfOlympusPlayerData { int32 VIP = 11; } //房间信息 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMINFO message SCGatesOfOlympusRoomInfo { int32 RoomId = 1; //房间id int32 GameFreeId = 2; @@ -42,26 +42,26 @@ message SCGatesOfOlympusRoomInfo { string PlayerInfo = 11; } //玩家操作 -//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP +//PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP message CSGatesOfOlympusOp { int32 OpCode = 1; //操作码 0.spin repeated int64 Params = 2; //操作参数 下注索引编号 } //玩家操作返回 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSOP message SCGatesOfOlympusOp { int32 OpCode = 1; //操作码 int32 OpRetCode = 2; //操作结果 1.金币不足 2.低于该值不能押注 repeated int64 Params = 3; //操作参数 } //房间状态 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMSTATE message SCGatesOfOlympusRoomState { int32 State = 1; //房间当前状态 int32 SubState = 2; //房间当前子状态 repeated int32 Params = 3; //状态参数 } -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED message SCGatesOfOlympusBilled{ int32 OpRetCode = 1;//0.spin成功 1.spin失败 string GameEndStr = 2; From d193a0c11cfde59397e9890ad5d908b667c7a8d4 Mon Sep 17 00:00:00 2001 From: tomas Date: Thu, 16 Jan 2025 10:32:49 +0800 Subject: [PATCH 73/74] 111 --- protocol/cashmania/cashmania.pb.go | 10 +++++----- protocol/gatesofolympus/gatesofolympus.pb.go | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/protocol/cashmania/cashmania.pb.go b/protocol/cashmania/cashmania.pb.go index 623796b..9c7b2f8 100644 --- a/protocol/cashmania/cashmania.pb.go +++ b/protocol/cashmania/cashmania.pb.go @@ -208,7 +208,7 @@ func (x *CashManiaPlayerData) GetVIP() int32 { } //房间信息 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO +//PACKET_CASHMANIA_SCCASHMANIAROOMINFO type SCCashManiaRoomInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -337,7 +337,7 @@ func (x *SCCashManiaRoomInfo) GetPlayerInfo() string { } //玩家操作 -//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP +//PACKET_CASHMANIA_CSCASHMANIAOP type CSCashManiaOp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -394,7 +394,7 @@ func (x *CSCashManiaOp) GetParams() []int64 { } //玩家操作返回 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP +//PACKET_CASHMANIA_SCCASHMANIAOP type SCCashManiaOp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -459,7 +459,7 @@ func (x *SCCashManiaOp) GetParams() []int64 { } //房间状态 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE +//PACKET_CASHMANIA_SCCASHMANIAROOMSTATE type SCCashManiaRoomState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -523,7 +523,7 @@ func (x *SCCashManiaRoomState) GetParams() []int32 { return nil } -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED +//PACKET_CASHMANIA_SCCASHMANIABILLED type SCCashManiaBilled struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/protocol/gatesofolympus/gatesofolympus.pb.go b/protocol/gatesofolympus/gatesofolympus.pb.go index 2d4df78..7ab7bc9 100644 --- a/protocol/gatesofolympus/gatesofolympus.pb.go +++ b/protocol/gatesofolympus/gatesofolympus.pb.go @@ -208,7 +208,7 @@ func (x *GatesOfOlympusPlayerData) GetVIP() int32 { } //房间信息 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMINFO type SCGatesOfOlympusRoomInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -337,7 +337,7 @@ func (x *SCGatesOfOlympusRoomInfo) GetPlayerInfo() string { } //玩家操作 -//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP +//PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP type CSGatesOfOlympusOp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -394,7 +394,7 @@ func (x *CSGatesOfOlympusOp) GetParams() []int64 { } //玩家操作返回 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSOP type SCGatesOfOlympusOp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -459,7 +459,7 @@ func (x *SCGatesOfOlympusOp) GetParams() []int64 { } //房间状态 -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMSTATE type SCGatesOfOlympusRoomState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -523,7 +523,7 @@ func (x *SCGatesOfOlympusRoomState) GetParams() []int32 { return nil } -//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED +//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED type SCGatesOfOlympusBilled struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache From 027333b4a213dc42c96d06da479fcb09882653cb Mon Sep 17 00:00:00 2001 From: tomas Date: Thu, 16 Jan 2025 10:47:42 +0800 Subject: [PATCH 74/74] fix --- gamesrv/slotspkg/slots/desc/machine_desc.go | 12 ++++++++++++ .../slotspkg/slots/machine/machine_master_misc.go | 3 +++ 2 files changed, 15 insertions(+) diff --git a/gamesrv/slotspkg/slots/desc/machine_desc.go b/gamesrv/slotspkg/slots/desc/machine_desc.go index 1ab0b43..0ef0437 100644 --- a/gamesrv/slotspkg/slots/desc/machine_desc.go +++ b/gamesrv/slotspkg/slots/desc/machine_desc.go @@ -122,6 +122,18 @@ func (n *MachineDesc) BetChangeList() []float64 { } return lists } +func (n *MachineDesc) GetBetIndexByVal(val float64) []int64 { + betChangeListRows, ok := n.Sheet("Bet", "BetChangeList").(map[int64]*structs.BetChangeList) + if !ok { + panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BetChangeList")) + } + for _, list := range betChangeListRows { + if list.BetChangeList == val { + return []int64{list.BetSizeIndex, list.BetLevelIndex} + } + } + return nil +} func (n *MachineDesc) GetVector(choice int64, minRatio, maxRatio float64, isForceWin bool) (int64, []int64) { if vectorIndex := config.GetInt64("slots.vectorIndex"); vectorIndex > 0 { rows := n.DefaultSheet("Vector").([]*structs.Vector) diff --git a/gamesrv/slotspkg/slots/machine/machine_master_misc.go b/gamesrv/slotspkg/slots/machine/machine_master_misc.go index 2580bb4..94b7532 100644 --- a/gamesrv/slotspkg/slots/machine/machine_master_misc.go +++ b/gamesrv/slotspkg/slots/machine/machine_master_misc.go @@ -45,6 +45,9 @@ func (m *Machine) BaseBets() []int64 { func (m *Machine) BetChangeList() []float64 { return m.MachineDesc.BetChangeList() } +func (m *Machine) GetBetIndexByVal(val float64) []int64 { + return m.MachineDesc.GetBetIndexByVal(val) +} func (m *Machine) Choice() int64 { if m.UserData().ForceChoice > 0 { return m.UserData().ForceChoice