From a430cc0421dad2387efcb00d563e1d033bdcbb85 Mon Sep 17 00:00:00 2001 From: skeleton Date: Thu, 26 Dec 2024 10:10:52 +0000 Subject: [PATCH 1/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0.gitlab-ci.yml=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2fb8ee8..e2f6f58 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,6 +54,7 @@ build-job: - echo '编译' - if [ "$GOMODTIDY" == 1 ]; then go mod tidy; + go mod download; fi - | while IFS= read -r line || [[ -n $line ]] From 0b34ed9d759027b1e58144fdaa72674bd4a9addc Mon Sep 17 00:00:00 2001 From: "DESKTOP-45ANQ2C\\unis" <121212121@qq.com> Date: Fri, 27 Dec 2024 10:00:31 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E9=87=91=E5=B8=81=E9=92=BB=E7=9F=B3?= =?UTF-8?q?=E5=AD=98=E9=92=B1=E7=BD=90=E4=BC=98=E5=8C=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 2 + data/DB_GameItem.dat | Bin 20409 -> 20673 bytes data/DB_GameItem.json | 72 ++ data/DB_PigBank_Diamond.dat | 6 +- data/DB_PigBank_Diamond.json | 16 + etcd/keyconf.go | 2 + gamesrv/base/etcd.go | 8 + mgrsrv/api/webapi_worldsrv.go | 89 ++ model/config.go | 4 + model/player.go | 26 +- protocol/server/pbdata.pb.go | 912 ++++++++++---------- protocol/server/pbdata.proto | 14 +- protocol/webapi/common.pb.go | 485 ++++++++++- protocol/webapi/common.proto | 50 ++ protocol/welfare/welfare.pb.go | 1427 +++++++++++++++++--------------- protocol/welfare/welfare.proto | 45 +- webapi/deprecated.go | 20 + worldsrv/etcd.go | 9 + worldsrv/trascate_webapi.go | 74 ++ worldsrv/welfmgr.go | 207 +++-- xlsx/DB_GameItem.xlsx | Bin 37420 -> 37714 bytes xlsx/DB_PigBank_Diamond.xlsx | Bin 10788 -> 10968 bytes 22 files changed, 2244 insertions(+), 1224 deletions(-) diff --git a/common/constant.go b/common/constant.go index d024ab8..1544e3f 100644 --- a/common/constant.go +++ b/common/constant.go @@ -328,6 +328,8 @@ const ( GainWayGuide2 = 117 // 竞技馆引导奖励 GainWayCompound = 118 // 道具合成消耗 GainWayCompoundGain = 119 // 道具合成获得 + GainWayItem_PigBankTakeCoin = 120 // 购买金币存钱罐奖励道具 + GainWayItem_PigBankTakeDiamond = 121 // 购买钻石存钱罐奖励道具 ) // 后台选择 金币变化类型 的充值 类型id号起始 diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 5200952b65f12450294722faafe59bc9d7a1b00b..4c9618617ceb54dfa32845adecc27cc88e1add2c 100644 GIT binary patch delta 166 zcmdlvpYh;A#tl3D`MDYyIgajN65@Z^KJn>}#>t1-)N~j0vIQ_kFlI3t6gfZHJLmb7 z74P@V0+LU5^*!ra`gB6?^Uj^m)^)v{wEOw|&65S#rNr0HcsXg~^Su*5rX2&D29YDn IG!B?)00BZ*rT_o{ delta 9 QcmX@Oka6dH#tl3D0T(9(bpQYW diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 133fcf4..c7bfc88 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -7154,6 +7154,78 @@ "Compound": { "71002": 10 } + }, + { + "Id": 40005, + "Name": "金币赛门票", + "ShowLocation": [ + 1, + 1, + 0 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 4, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleGold": 100000, + "Composition": 1, + "CompositionMax": 1, + "Location": "0", + "Describe": "作用:用于报名特殊钻石赛事;\n产出途径:存钱罐" + }, + { + "Id": 40006, + "Name": "钻石赛门票", + "ShowLocation": [ + 1, + 1, + 0 + ], + "Classify": [ + 1, + 1, + 0 + ], + "Type": 4, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleGold": 100000, + "Composition": 1, + "CompositionMax": 1, + "Location": "0", + "Describe": "作用:用于报名特殊钻石赛事;\n产出途径:存钱罐" } ] } \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 48806c1..c40b846 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@ - (08;@dHPc - ((08;@dHP -/ 2(08;@dHP \ No newline at end of file + (8@;PdX`c +< ((2Ÿ28@;JJƸPdX` +?/ 2(22Ÿ8@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.json b/data/DB_PigBank_Diamond.json index 550f3a4..2151b12 100644 --- a/data/DB_PigBank_Diamond.json +++ b/data/DB_PigBank_Diamond.json @@ -18,8 +18,16 @@ "BuyCountMax": 2, "CostDiamond": 40, "MaxGold": 10000000, + "GoldExc": { + "310003": 1, + "40005": 1 + }, "MaxDiamond": 300, "DiamondId": 980002, + "DiamondExc": { + "310003": 1, + "40006": 1 + }, "CoinPrice": 100, "DiamondPrice": 300, "DiamondNowPrice": 199 @@ -30,8 +38,16 @@ "BuyCountMax": 99999999, "CostDiamond": 50, "MaxGold": 10000000, + "GoldExc": { + "310003": 1, + "40005": 2 + }, "MaxDiamond": 750, "DiamondId": 980003, + "DiamondExc": { + "310003": 1, + "40006": 2 + }, "CoinPrice": 100, "DiamondPrice": 750, "DiamondNowPrice": 499 diff --git a/etcd/keyconf.go b/etcd/keyconf.go index f3dc6a5..0e0d5dc 100644 --- a/etcd/keyconf.go +++ b/etcd/keyconf.go @@ -49,4 +49,6 @@ const ( ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置 ETCDKEY_LotteryConfig = "/game/lottery" //抽奖配置 ETCDKEY_LotteryUser = "/game/user_lottery" //抽奖用户必中配置 + ETCDKEY_PigBankDiamond = "/game/pigbank_diamond" //存钱罐消耗获得 + ETCDKEY_PigBankProp = "/game/pigbank_prop" //存钱罐属性 ) diff --git a/gamesrv/base/etcd.go b/gamesrv/base/etcd.go index 44233f8..4effbfb 100644 --- a/gamesrv/base/etcd.go +++ b/gamesrv/base/etcd.go @@ -29,6 +29,10 @@ func init() { etcd.Register(etcd.ETCDKEY_SKin, webapi.SkinConfig{}, platformConfigEtcd) // 娃娃机配置 etcd.Register(etcd.ETCDKEY_MACHINE, webapi.MachineConfig{}, platformConfigEtcd) + // 存钱罐消耗获得 + etcd.Register(etcd.ETCDKEY_PigBankDiamond, webapi.GamePigBankDiamondConfig{}, platformConfigEtcd) + // 存钱罐属性值 + etcd.Register(etcd.ETCDKEY_PigBankProp, webapi.GamePigBankPropConfig{}, platformConfigEtcd) } func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -51,6 +55,10 @@ func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev case *webapi.ItemConfig: ConfigMgrInst.GetConfig(d.Platform).ItemConfig = d srvdata.GameItemMgr.SetConfig(d) + case *webapi.GamePigBankDiamondConfig: + ConfigMgrInst.GetConfig(d.Platform).GamePigBankDiamondConfig = d + case *webapi.GamePigBankPropConfig: + ConfigMgrInst.GetConfig(d.Platform).GamePigBankPropConfig = d default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } diff --git a/mgrsrv/api/webapi_worldsrv.go b/mgrsrv/api/webapi_worldsrv.go index f5a48cf..0f4d2a1 100644 --- a/mgrsrv/api/webapi_worldsrv.go +++ b/mgrsrv/api/webapi_worldsrv.go @@ -139,6 +139,92 @@ func WorldSrvApi(rw http.ResponseWriter, req *http.Request) { return } +func DebugSrvApi(rw http.ResponseWriter, req *http.Request) { + + if !common.Config.IsDevMode { + return + } + + defer utils.DumpStackIfPanic("api.DebugSrvApi") + logger.Logger.Info("DebugSrvApi receive:", req.URL.Path, req.URL.RawQuery) + + if common.RequestCheck(req, model.GameParamData.WhiteHttpAddr) == false { + logger.Logger.Info("RemoteAddr [%v] require api.", req.RemoteAddr) + return + } + data, err := io.ReadAll(req.Body) + if err != nil { + logger.Logger.Info("Body err.", err) + webApiResponse(rw, nil /*map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "Post data is null!"}*/) + return + } + + params := make(map[string]string) + json.Unmarshal(data, ¶ms) + + startTime := time.Now().UnixNano() + + var stats *ApiStats + if v, exist := WebApiStats.Load(req.URL.Path); exist { + stats = v.(*ApiStats) + } else { + stats = &ApiStats{} + WebApiStats.Store(req.URL.Path, stats) + } + var rep []byte + start := time.Now() + res := make(chan []byte, 1) + suc := core.CoreObject().SendCommand(&WebApiEvent{req: req, path: req.URL.Path, h: HandlerWrapper(func(event *WebApiEvent, data []byte) bool { + logger.Logger.Trace("WorldSrvApi start transcate") + tnp := &transact.TransNodeParam{ + Tt: common.TransTypeWebApi, + Ot: transact.TransOwnerType(common.GetSelfSrvType()), + Oid: common.GetSelfSrvId(), + AreaID: common.GetSelfAreaId(), + } + tNode := transact.DTCModule.StartTrans(tnp, event, transact.DefaultTransactTimeout) //超时时间30秒 + if tNode != nil { + tNode.TransEnv.SetField(WEBAPI_TRANSACTE_EVENT, event) + tNode.Go(core.CoreObject()) + } + return true + }), body: data, rawQuery: req.URL.RawQuery, res: res}, false) + if suc { + select { + case rep = <-res: + if rep != nil { + webApiResponse(rw, rep) + } + case <-time.After(ApiDefaultTimeout): + //rep = make(map[string]interface{}) + //rep[webapi.RESPONSE_STATE] = webapi.STATE_ERR + //rep[webapi.RESPONSE_ERRMSG] = "proccess timeout!" + webApiResponse(rw, rep) + if stats != nil { + atomic.AddInt64(&stats.TimeoutTimes, 1) + } + } + } else { + webApiResponse(rw, nil) + if stats != nil { + atomic.AddInt64(&stats.UnreachTimes, 1) + } + } + ps := int64(time.Now().Sub(start) / time.Millisecond) + if stats != nil { + atomic.AddInt64(&stats.RunTimes, 1) + atomic.AddInt64(&stats.TotalRuningTime, ps) + if atomic.LoadInt64(&stats.MaxRuningTime) < ps { + atomic.StoreInt64(&stats.MaxRuningTime, ps) + } + } + + log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(rep[:]), startTime, ps) + mq.Write(log) + + return +} + // -------------------------------------------------------------------------------------- func init() { transact.RegisteHandler(common.TransTypeWebApi, &transact.TransHanderWrapper{ @@ -262,6 +348,9 @@ func init() { admin.MyAdminApp.Route("/api/game/exchange_create", WorldSrvApi) // 兑换订单列表 admin.MyAdminApp.Route("/api/game/exchange_order", WorldSrvApi) + + admin.MyAdminApp.Route("/api/platform/debug", DebugSrvApi) + } func Stats() map[string]ApiStats { diff --git a/model/config.go b/model/config.go index cc94888..046cc37 100644 --- a/model/config.go +++ b/model/config.go @@ -163,6 +163,10 @@ type AllConfig struct { LotteryShows map[int64]*webapi.ShowLottery // 竞技馆抽奖必中配置 LotteryUser map[int64]*webapi.UserLottery + // 存钱罐消耗获得 + *webapi.GamePigBankDiamondConfig + // 存钱罐属性 + *webapi.GamePigBankPropConfig } type GlobalConfig struct { diff --git a/model/player.go b/model/player.go index 3175c16..638a06c 100644 --- a/model/player.go +++ b/model/player.go @@ -534,16 +534,18 @@ type TaskData struct { } type PigBankData struct { - TakeTimes int32 //一共领取次数 - BankCoin int64 //当前金币数量 - DayBuyTimes int32 //当天领取次数 + TakeTimes int32 //一共领取次数 + BankCoin int64 //当前金币数量 + DayBuyTimes int32 //当天领取次数 + TakeRecord map[int32]int64 // 每次领取记录 } // 钻石储存罐数据 type DiamondBankData struct { - TakeTimes int32 //一共领取次数 - BankDiamond float64 //当前钻石数量 - DayBuyTimes int32 //当天领取次数 + TakeTimes int32 //一共领取次数 + BankDiamond float64 //当前钻石数量 + DayBuyTimes int32 //当天领取次数 + TakeRecord map[int32]int64 // 每次领取记录 } type WelfareData struct { @@ -570,10 +572,14 @@ func NewWelfareData() *WelfareData { VIPBag: make(map[int32]map[int32]int32), Task: make(map[int32]*TaskData), PhoneLotteryTask: make(map[int32]*TaskData), - PigBank: &PigBankData{}, - DiamondBank: &DiamondBankData{}, - PermitAward: make(map[int32]int64), - PermitExchange: make(map[int32][]int64), + PigBank: &PigBankData{ + TakeRecord: make(map[int32]int64, 8), + }, + DiamondBank: &DiamondBankData{ + TakeRecord: make(map[int32]int64, 8), + }, + PermitAward: make(map[int32]int64), + PermitExchange: make(map[int32][]int64), } } diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index ae88b26..02662a3 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -8046,16 +8046,18 @@ type DB_PigBank_Diamond struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - BuyCountMin int32 `protobuf:"varint,2,opt,name=BuyCountMin,proto3" json:"BuyCountMin,omitempty"` - BuyCountMax int32 `protobuf:"varint,3,opt,name=BuyCountMax,proto3" json:"BuyCountMax,omitempty"` - CostDiamond int32 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` - MaxGold int32 `protobuf:"varint,5,opt,name=MaxGold,proto3" json:"MaxGold,omitempty"` - MaxDiamond int32 `protobuf:"varint,6,opt,name=MaxDiamond,proto3" json:"MaxDiamond,omitempty"` - DiamondId int32 `protobuf:"varint,7,opt,name=DiamondId,proto3" json:"DiamondId,omitempty"` - CoinPrice int32 `protobuf:"varint,8,opt,name=CoinPrice,proto3" json:"CoinPrice,omitempty"` - DiamondPrice int32 `protobuf:"varint,9,opt,name=DiamondPrice,proto3" json:"DiamondPrice,omitempty"` - DiamondNowPrice int32 `protobuf:"varint,10,opt,name=DiamondNowPrice,proto3" json:"DiamondNowPrice,omitempty"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + BuyCountMin int32 `protobuf:"varint,2,opt,name=BuyCountMin,proto3" json:"BuyCountMin,omitempty"` + BuyCountMax int32 `protobuf:"varint,3,opt,name=BuyCountMax,proto3" json:"BuyCountMax,omitempty"` + CostDiamond int32 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` + MaxGold int32 `protobuf:"varint,5,opt,name=MaxGold,proto3" json:"MaxGold,omitempty"` + GoldExc map[int64]int64 `protobuf:"bytes,6,rep,name=GoldExc,proto3" json:"GoldExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + MaxDiamond int32 `protobuf:"varint,7,opt,name=MaxDiamond,proto3" json:"MaxDiamond,omitempty"` + DiamondId int32 `protobuf:"varint,8,opt,name=DiamondId,proto3" json:"DiamondId,omitempty"` + DiamondExc map[int64]int64 `protobuf:"bytes,9,rep,name=DiamondExc,proto3" json:"DiamondExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + CoinPrice int32 `protobuf:"varint,10,opt,name=CoinPrice,proto3" json:"CoinPrice,omitempty"` + DiamondPrice int32 `protobuf:"varint,11,opt,name=DiamondPrice,proto3" json:"DiamondPrice,omitempty"` + DiamondNowPrice int32 `protobuf:"varint,12,opt,name=DiamondNowPrice,proto3" json:"DiamondNowPrice,omitempty"` } func (x *DB_PigBank_Diamond) Reset() { @@ -8125,6 +8127,13 @@ func (x *DB_PigBank_Diamond) GetMaxGold() int32 { return 0 } +func (x *DB_PigBank_Diamond) GetGoldExc() map[int64]int64 { + if x != nil { + return x.GoldExc + } + return nil +} + func (x *DB_PigBank_Diamond) GetMaxDiamond() int32 { if x != nil { return x.MaxDiamond @@ -8139,6 +8148,13 @@ func (x *DB_PigBank_Diamond) GetDiamondId() int32 { return 0 } +func (x *DB_PigBank_Diamond) GetDiamondExc() map[int64]int64 { + if x != nil { + return x.DiamondExc + } + return nil +} + func (x *DB_PigBank_Diamond) GetCoinPrice() int32 { if x != nil { return x.CoinPrice @@ -11945,7 +11961,7 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 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, 0xce, 0x02, 0x0a, + 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, @@ -11956,399 +11972,415 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 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, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x18, 0x06, 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, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, - 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, - 0x09, 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, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 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, 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, 0x97, 0x02, 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, 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, + 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, 0x70, 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, + 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, 0x97, 0x02, 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, 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, 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, + 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, 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, 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, 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, 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, + 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 ( @@ -12363,7 +12395,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, 154) +var file_protocol_server_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 156) var file_protocol_server_pbdata_proto_goTypes = []interface{}{ (*DB_ActSign)(nil), // 0: server.DB_ActSign (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray @@ -12512,13 +12544,15 @@ var file_protocol_server_pbdata_proto_goTypes = []interface{}{ nil, // 144: server.DB_GiftCard.RewardsEntry nil, // 145: server.DB_GiftCard.DayRewardsEntry nil, // 146: server.DB_PetSkill.ItemConsumEntry - nil, // 147: server.DB_PropExchange.CostEntry - nil, // 148: server.DB_PropExchange.GainEntry - nil, // 149: server.DB_Skin.UnlockItemEntry - nil, // 150: server.DB_SkinLevel.UpItemEntry - nil, // 151: server.DB_Task.AwardEntry - nil, // 152: server.DB_VIP.Privilege7Entry - nil, // 153: server.DB_VIP.AwardEntry + nil, // 147: server.DB_PigBank_Diamond.GoldExcEntry + nil, // 148: server.DB_PigBank_Diamond.DiamondExcEntry + nil, // 149: server.DB_PropExchange.CostEntry + nil, // 150: server.DB_PropExchange.GainEntry + nil, // 151: server.DB_Skin.UnlockItemEntry + nil, // 152: server.DB_SkinLevel.UpItemEntry + nil, // 153: server.DB_Task.AwardEntry + nil, // 154: server.DB_VIP.Privilege7Entry + nil, // 155: server.DB_VIP.AwardEntry } var file_protocol_server_pbdata_proto_depIdxs = []int32{ 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign @@ -12579,37 +12613,39 @@ var file_protocol_server_pbdata_proto_depIdxs = []int32{ 146, // 55: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry 98, // 56: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill 100, // 57: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery - 102, // 58: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond - 104, // 59: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop - 106, // 60: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp - 108, // 61: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType - 110, // 62: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 147, // 63: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry - 148, // 64: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 112, // 65: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 114, // 66: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 116, // 67: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 118, // 68: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 120, // 69: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 149, // 70: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry - 122, // 71: server.DB_SkinArray.Arr:type_name -> server.DB_Skin - 150, // 72: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry - 124, // 73: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel - 126, // 74: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 128, // 75: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 151, // 76: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 130, // 77: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 132, // 78: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 134, // 79: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 152, // 80: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 153, // 81: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 136, // 82: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 138, // 83: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow - 84, // [84:84] is the sub-list for method output_type - 84, // [84:84] is the sub-list for method input_type - 84, // [84:84] is the sub-list for extension type_name - 84, // [84:84] is the sub-list for extension extendee - 0, // [0:84] is the sub-list for field type_name + 147, // 58: server.DB_PigBank_Diamond.GoldExc:type_name -> server.DB_PigBank_Diamond.GoldExcEntry + 148, // 59: server.DB_PigBank_Diamond.DiamondExc:type_name -> server.DB_PigBank_Diamond.DiamondExcEntry + 102, // 60: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond + 104, // 61: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop + 106, // 62: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp + 108, // 63: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType + 110, // 64: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd + 149, // 65: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 150, // 66: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 112, // 67: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 114, // 68: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 116, // 69: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 118, // 70: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 120, // 71: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 151, // 72: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry + 122, // 73: server.DB_SkinArray.Arr:type_name -> server.DB_Skin + 152, // 74: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry + 124, // 75: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel + 126, // 76: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 128, // 77: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 153, // 78: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 130, // 79: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 132, // 80: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 134, // 81: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 154, // 82: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 155, // 83: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 136, // 84: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 138, // 85: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow + 86, // [86:86] is the sub-list for method output_type + 86, // [86:86] is the sub-list for method input_type + 86, // [86:86] is the sub-list for extension type_name + 86, // [86:86] is the sub-list for extension extendee + 0, // [0:86] is the sub-list for field type_name } func init() { file_protocol_server_pbdata_proto_init() } @@ -14305,7 +14341,7 @@ func file_protocol_server_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_server_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 154, + NumMessages: 156, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index cfe6626..aeb22f4 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -1333,15 +1333,19 @@ message DB_PigBank_Diamond { int32 MaxGold = 5; - int32 MaxDiamond = 6; + map GoldExc = 6; - int32 DiamondId = 7; + int32 MaxDiamond = 7; - int32 CoinPrice = 8; + int32 DiamondId = 8; - int32 DiamondPrice = 9; + map DiamondExc = 9; - int32 DiamondNowPrice = 10; + int32 CoinPrice = 10; + + int32 DiamondPrice = 11; + + int32 DiamondNowPrice = 12; } diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index a8e4bfc..8636646 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -9550,6 +9550,316 @@ func (x *UserLottery) GetOn() int32 { return 0 } +type PigBankDiamondInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + BuyCountMin int32 `protobuf:"varint,2,opt,name=BuyCountMin,proto3" json:"BuyCountMin,omitempty"` + BuyCountMax int32 `protobuf:"varint,3,opt,name=BuyCountMax,proto3" json:"BuyCountMax,omitempty"` + CostDiamond int32 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` + MaxGold int32 `protobuf:"varint,5,opt,name=MaxGold,proto3" json:"MaxGold,omitempty"` + MaxDiamond int32 `protobuf:"varint,6,opt,name=MaxDiamond,proto3" json:"MaxDiamond,omitempty"` + DiamondId int32 `protobuf:"varint,7,opt,name=DiamondId,proto3" json:"DiamondId,omitempty"` + CoinPrice int32 `protobuf:"varint,8,opt,name=CoinPrice,proto3" json:"CoinPrice,omitempty"` + DiamondPrice int32 `protobuf:"varint,9,opt,name=DiamondPrice,proto3" json:"DiamondPrice,omitempty"` + DiamondNowPrice int32 `protobuf:"varint,10,opt,name=DiamondNowPrice,proto3" json:"DiamondNowPrice,omitempty"` + GoldExc []*ItemInfo `protobuf:"bytes,11,rep,name=GoldExc,proto3" json:"GoldExc,omitempty"` + DiamondExc []*ItemInfo `protobuf:"bytes,12,rep,name=DiamondExc,proto3" json:"DiamondExc,omitempty"` +} + +func (x *PigBankDiamondInfo) Reset() { + *x = PigBankDiamondInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankDiamondInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankDiamondInfo) ProtoMessage() {} + +func (x *PigBankDiamondInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[100] + 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 PigBankDiamondInfo.ProtoReflect.Descriptor instead. +func (*PigBankDiamondInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{100} +} + +func (x *PigBankDiamondInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PigBankDiamondInfo) GetBuyCountMin() int32 { + if x != nil { + return x.BuyCountMin + } + return 0 +} + +func (x *PigBankDiamondInfo) GetBuyCountMax() int32 { + if x != nil { + return x.BuyCountMax + } + return 0 +} + +func (x *PigBankDiamondInfo) GetCostDiamond() int32 { + if x != nil { + return x.CostDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetMaxGold() int32 { + if x != nil { + return x.MaxGold + } + return 0 +} + +func (x *PigBankDiamondInfo) GetMaxDiamond() int32 { + if x != nil { + return x.MaxDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondId() int32 { + if x != nil { + return x.DiamondId + } + return 0 +} + +func (x *PigBankDiamondInfo) GetCoinPrice() int32 { + if x != nil { + return x.CoinPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondPrice() int32 { + if x != nil { + return x.DiamondPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondNowPrice() int32 { + if x != nil { + return x.DiamondNowPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetGoldExc() []*ItemInfo { + if x != nil { + return x.GoldExc + } + return nil +} + +func (x *PigBankDiamondInfo) GetDiamondExc() []*ItemInfo { + if x != nil { + return x.DiamondExc + } + return nil +} + +// etcd /game/pigbank_diamond +type GamePigBankDiamondConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + DiamondInfo []*PigBankDiamondInfo `protobuf:"bytes,2,rep,name=DiamondInfo,proto3" json:"DiamondInfo,omitempty"` // 存钱罐消耗信息 +} + +func (x *GamePigBankDiamondConfig) Reset() { + *x = GamePigBankDiamondConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GamePigBankDiamondConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GamePigBankDiamondConfig) ProtoMessage() {} + +func (x *GamePigBankDiamondConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[101] + 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 GamePigBankDiamondConfig.ProtoReflect.Descriptor instead. +func (*GamePigBankDiamondConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{101} +} + +func (x *GamePigBankDiamondConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GamePigBankDiamondConfig) GetDiamondInfo() []*PigBankDiamondInfo { + if x != nil { + return x.DiamondInfo + } + return nil +} + +type PigBankPropInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + PorpName string `protobuf:"bytes,2,opt,name=PorpName,proto3" json:"PorpName,omitempty"` + PropValue int32 `protobuf:"varint,3,opt,name=PropValue,proto3" json:"PropValue,omitempty"` +} + +func (x *PigBankPropInfo) Reset() { + *x = PigBankPropInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankPropInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankPropInfo) ProtoMessage() {} + +func (x *PigBankPropInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[102] + 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 PigBankPropInfo.ProtoReflect.Descriptor instead. +func (*PigBankPropInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{102} +} + +func (x *PigBankPropInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PigBankPropInfo) GetPorpName() string { + if x != nil { + return x.PorpName + } + return "" +} + +func (x *PigBankPropInfo) GetPropValue() int32 { + if x != nil { + return x.PropValue + } + return 0 +} + +// etcd /game/pigbank_prop +type GamePigBankPropConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + PropInfo []*PigBankPropInfo `protobuf:"bytes,2,rep,name=PropInfo,proto3" json:"PropInfo,omitempty"` // 存钱罐属性 +} + +func (x *GamePigBankPropConfig) Reset() { + *x = GamePigBankPropConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GamePigBankPropConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GamePigBankPropConfig) ProtoMessage() {} + +func (x *GamePigBankPropConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[103] + 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 GamePigBankPropConfig.ProtoReflect.Descriptor instead. +func (*GamePigBankPropConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{103} +} + +func (x *GamePigBankPropConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GamePigBankPropConfig) GetPropInfo() []*PigBankPropInfo { + if x != nil { + return x.PropInfo + } + return nil +} + var File_protocol_webapi_common_proto protoreflect.FileDescriptor var file_protocol_webapi_common_proto_rawDesc = []byte{ @@ -11030,10 +11340,57 @@ var file_protocol_webapi_common_proto_rawDesc = []byte{ 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 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, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0xac, 0x03, 0x0a, 0x12, + 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 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, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x18, 0x06, 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, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, + 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 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, 0x09, + 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, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x07, + 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x12, 0x30, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x22, 0x74, 0x0a, 0x18, 0x47, 0x61, + 0x6d, 0x65, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 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, 0x3c, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x22, 0x5b, 0x0a, 0x0f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x49, + 0x6e, 0x66, 0x6f, 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, 0x68, 0x0a, + 0x15, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x70, + 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, 0x33, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, + 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x50, + 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 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 ( @@ -11048,7 +11405,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, 110) +var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 114) var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -11150,32 +11507,36 @@ var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*LotteryConfig)(nil), // 97: webapi.LotteryConfig (*LotteryInfo)(nil), // 98: webapi.LotteryInfo (*UserLottery)(nil), // 99: webapi.UserLottery - nil, // 100: webapi.Platform.BindTelRewardEntry - nil, // 101: webapi.PlayerData.RankScoreEntry - nil, // 102: webapi.ItemShop.AwardEntry - nil, // 103: webapi.VIPcfg.AwardEntry - nil, // 104: webapi.VIPcfg.Privilege1Entry - nil, // 105: webapi.VIPcfg.Privilege7Entry - nil, // 106: webapi.VIPcfg.Privilege9Entry - nil, // 107: webapi.ActInviteConfig.PayScoreEntry - nil, // 108: webapi.SkinLevel.UpItemEntry - nil, // 109: webapi.SkinItem.UnlockParamEntry - (*server.DB_GameFree)(nil), // 110: server.DB_GameFree - (*server.DB_GameItem)(nil), // 111: server.DB_GameItem + (*PigBankDiamondInfo)(nil), // 100: webapi.PigBankDiamondInfo + (*GamePigBankDiamondConfig)(nil), // 101: webapi.GamePigBankDiamondConfig + (*PigBankPropInfo)(nil), // 102: webapi.PigBankPropInfo + (*GamePigBankPropConfig)(nil), // 103: webapi.GamePigBankPropConfig + nil, // 104: webapi.Platform.BindTelRewardEntry + nil, // 105: webapi.PlayerData.RankScoreEntry + nil, // 106: webapi.ItemShop.AwardEntry + nil, // 107: webapi.VIPcfg.AwardEntry + nil, // 108: webapi.VIPcfg.Privilege1Entry + nil, // 109: webapi.VIPcfg.Privilege7Entry + nil, // 110: webapi.VIPcfg.Privilege9Entry + nil, // 111: webapi.ActInviteConfig.PayScoreEntry + nil, // 112: webapi.SkinLevel.UpItemEntry + nil, // 113: webapi.SkinItem.UnlockParamEntry + (*server.DB_GameFree)(nil), // 114: server.DB_GameFree + (*server.DB_GameItem)(nil), // 115: 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 - 100, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 104, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 110, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 114, // 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 - 110, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 101, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 114, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 105, // 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 @@ -11188,7 +11549,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 - 102, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 106, // 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 @@ -11209,14 +11570,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 - 103, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 104, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry - 105, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry - 106, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry + 107, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 108, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry + 109, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 110, // 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 - 107, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry + 111, // 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 @@ -11233,12 +11594,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 - 111, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem + 115, // 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 - 108, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry - 109, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry + 112, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry + 113, // 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 @@ -11253,11 +11614,15 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 96, // 86: webapi.PopUpWindowConfig.Info:type_name -> webapi.PopUpWindowInfo 98, // 87: webapi.LotteryConfig.List:type_name -> webapi.LotteryInfo 32, // 88: webapi.LotteryInfo.Reward:type_name -> webapi.ItemInfo - 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 + 32, // 89: webapi.PigBankDiamondInfo.GoldExc:type_name -> webapi.ItemInfo + 32, // 90: webapi.PigBankDiamondInfo.DiamondExc:type_name -> webapi.ItemInfo + 100, // 91: webapi.GamePigBankDiamondConfig.DiamondInfo:type_name -> webapi.PigBankDiamondInfo + 102, // 92: webapi.GamePigBankPropConfig.PropInfo:type_name -> webapi.PigBankPropInfo + 93, // [93:93] is the sub-list for method output_type + 93, // [93:93] is the sub-list for method input_type + 93, // [93:93] is the sub-list for extension type_name + 93, // [93:93] is the sub-list for extension extendee + 0, // [0:93] is the sub-list for field type_name } func init() { file_protocol_webapi_common_proto_init() } @@ -12466,6 +12831,54 @@ func file_protocol_webapi_common_proto_init() { return nil } } + file_protocol_webapi_common_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PigBankDiamondInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GamePigBankDiamondConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PigBankPropInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GamePigBankPropConfig); 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{ @@ -12473,7 +12886,7 @@ func file_protocol_webapi_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_webapi_common_proto_rawDesc, NumEnums: 0, - NumMessages: 110, + NumMessages: 114, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index c1cb5fb..7f20107 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -1046,4 +1046,54 @@ message UserLottery{ string Time = 4; // 抽奖时间 2006-01-02 15:04:05 int64 Num = 5; // 第几期 int32 On = 6; // 开关 1开启 2关闭 +} + +message PigBankDiamondInfo { + + int32 Id = 1; + + int32 BuyCountMin = 2; + + int32 BuyCountMax = 3; + + int32 CostDiamond = 4; + + int32 MaxGold = 5; + + int32 MaxDiamond = 6; + + int32 DiamondId = 7; + + int32 CoinPrice = 8; + + int32 DiamondPrice = 9; + + int32 DiamondNowPrice = 10; + + repeated ItemInfo GoldExc = 11; + + repeated ItemInfo DiamondExc = 12; +} + +// etcd /game/pigbank_diamond +message GamePigBankDiamondConfig{ + string Platform = 1; // 平台 + repeated PigBankDiamondInfo DiamondInfo = 2; // 存钱罐消耗信息 +} + + +message PigBankPropInfo { + + int32 Id = 1; + + string PorpName = 2; + + int32 PropValue = 3; + +} + +// etcd /game/pigbank_prop +message GamePigBankPropConfig{ + string Platform = 1; // 平台 + repeated PigBankPropInfo PropInfo = 2; // 存钱罐属性 } \ No newline at end of file diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 1aac9d4..053ab79 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -2603,6 +2603,101 @@ func (x *SCBindInvite) GetOpRetCode() OpResultCode { return OpResultCode_OPRC_Sucess } +type PigBankCoinInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IndexId int32 `protobuf:"varint,1,opt,name=IndexId,proto3" json:"IndexId,omitempty"` + TakeCoin int64 `protobuf:"varint,2,opt,name=TakeCoin,proto3" json:"TakeCoin,omitempty"` // + BankMaxCoin int64 `protobuf:"varint,3,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最大储存值 + DayBuyMaxCnt int32 `protobuf:"varint,4,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 + Price int64 `protobuf:"varint,5,opt,name=Price,proto3" json:"Price,omitempty"` //原价 + CostDiamond int64 `protobuf:"varint,6,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` //现价 + GoldExc map[int64]int64 `protobuf:"bytes,7,rep,name=GoldExc,proto3" json:"GoldExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 奖励道具 +} + +func (x *PigBankCoinInfo) Reset() { + *x = PigBankCoinInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankCoinInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankCoinInfo) ProtoMessage() {} + +func (x *PigBankCoinInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_proto_msgTypes[37] + 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 PigBankCoinInfo.ProtoReflect.Descriptor instead. +func (*PigBankCoinInfo) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{37} +} + +func (x *PigBankCoinInfo) GetIndexId() int32 { + if x != nil { + return x.IndexId + } + return 0 +} + +func (x *PigBankCoinInfo) GetTakeCoin() int64 { + if x != nil { + return x.TakeCoin + } + return 0 +} + +func (x *PigBankCoinInfo) GetBankMaxCoin() int64 { + if x != nil { + return x.BankMaxCoin + } + return 0 +} + +func (x *PigBankCoinInfo) GetDayBuyMaxCnt() int32 { + if x != nil { + return x.DayBuyMaxCnt + } + return 0 +} + +func (x *PigBankCoinInfo) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *PigBankCoinInfo) GetCostDiamond() int64 { + if x != nil { + return x.CostDiamond + } + return 0 +} + +func (x *PigBankCoinInfo) GetGoldExc() map[int64]int64 { + if x != nil { + return x.GoldExc + } + return nil +} + // 存钱罐信息 //PACKET_CSPigbankGetInfo type CSPigbankGetInfo struct { @@ -2614,7 +2709,7 @@ type CSPigbankGetInfo struct { func (x *CSPigbankGetInfo) Reset() { *x = CSPigbankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[37] + mi := &file_protocol_welfare_welfare_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2722,7 @@ func (x *CSPigbankGetInfo) String() string { func (*CSPigbankGetInfo) ProtoMessage() {} func (x *CSPigbankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[37] + mi := &file_protocol_welfare_welfare_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2735,7 @@ func (x *CSPigbankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPigbankGetInfo.ProtoReflect.Descriptor instead. func (*CSPigbankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{37} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{38} } // 存钱罐信息 @@ -2650,19 +2745,16 @@ type SCPigbankGetInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 - BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 - BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 - DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,7,opt,name=Price,proto3" json:"Price,omitempty"` //消耗钻石原价 + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 + BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + InfoArr []*PigBankCoinInfo `protobuf:"bytes,4,rep,name=infoArr,proto3" json:"infoArr,omitempty"` } func (x *SCPigbankGetInfo) Reset() { *x = SCPigbankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[38] + mi := &file_protocol_welfare_welfare_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2675,7 +2767,7 @@ func (x *SCPigbankGetInfo) String() string { func (*SCPigbankGetInfo) ProtoMessage() {} func (x *SCPigbankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[38] + mi := &file_protocol_welfare_welfare_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2688,7 +2780,7 @@ func (x *SCPigbankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPigbankGetInfo.ProtoReflect.Descriptor instead. func (*SCPigbankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{38} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{39} } func (x *SCPigbankGetInfo) GetOpRetCode() OpResultCode { @@ -2712,32 +2804,11 @@ func (x *SCPigbankGetInfo) GetTakeTimes() int32 { return 0 } -func (x *SCPigbankGetInfo) GetCostDiamond() int64 { +func (x *SCPigbankGetInfo) GetInfoArr() []*PigBankCoinInfo { if x != nil { - return x.CostDiamond + return x.InfoArr } - return 0 -} - -func (x *SCPigbankGetInfo) GetBankMaxCoin() int64 { - if x != nil { - return x.BankMaxCoin - } - return 0 -} - -func (x *SCPigbankGetInfo) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCPigbankGetInfo) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 + return nil } // 存钱罐领取金币 @@ -2751,7 +2822,7 @@ type CSPigbankTakeCoin struct { func (x *CSPigbankTakeCoin) Reset() { *x = CSPigbankTakeCoin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[39] + mi := &file_protocol_welfare_welfare_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2835,7 @@ func (x *CSPigbankTakeCoin) String() string { func (*CSPigbankTakeCoin) ProtoMessage() {} func (x *CSPigbankTakeCoin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[39] + mi := &file_protocol_welfare_welfare_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2848,7 @@ func (x *CSPigbankTakeCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPigbankTakeCoin.ProtoReflect.Descriptor instead. func (*CSPigbankTakeCoin) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{39} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{40} } // 存钱罐领取金币 @@ -2787,19 +2858,15 @@ type SCPigbankTakeCoin struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 - TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 - BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 - DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,7,opt,name=Price,proto3" json:"Price,omitempty"` //消耗钻石原价 + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 + TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 } func (x *SCPigbankTakeCoin) Reset() { *x = SCPigbankTakeCoin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[40] + mi := &file_protocol_welfare_welfare_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2812,7 +2879,7 @@ func (x *SCPigbankTakeCoin) String() string { func (*SCPigbankTakeCoin) ProtoMessage() {} func (x *SCPigbankTakeCoin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[40] + mi := &file_protocol_welfare_welfare_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2825,7 +2892,7 @@ func (x *SCPigbankTakeCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPigbankTakeCoin.ProtoReflect.Descriptor instead. func (*SCPigbankTakeCoin) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{40} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{41} } func (x *SCPigbankTakeCoin) GetOpRetCode() OpResultCode { @@ -2849,34 +2916,6 @@ func (x *SCPigbankTakeCoin) GetTakeTimes() int32 { return 0 } -func (x *SCPigbankTakeCoin) GetCostDiamond() int64 { - if x != nil { - return x.CostDiamond - } - return 0 -} - -func (x *SCPigbankTakeCoin) GetBankMaxCoin() int64 { - if x != nil { - return x.BankMaxCoin - } - return 0 -} - -func (x *SCPigbankTakeCoin) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCPigbankTakeCoin) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 -} - // 钻石存钱罐信息 //PACKET_CSDiamondBankGetInfo type CSDiamondBankGetInfo struct { @@ -2888,7 +2927,7 @@ type CSDiamondBankGetInfo struct { func (x *CSDiamondBankGetInfo) Reset() { *x = CSDiamondBankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[41] + mi := &file_protocol_welfare_welfare_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2901,7 +2940,7 @@ func (x *CSDiamondBankGetInfo) String() string { func (*CSDiamondBankGetInfo) ProtoMessage() {} func (x *CSDiamondBankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[41] + mi := &file_protocol_welfare_welfare_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2914,7 +2953,110 @@ func (x *CSDiamondBankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSDiamondBankGetInfo.ProtoReflect.Descriptor instead. func (*CSDiamondBankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{41} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{42} +} + +type PigBankDiamondInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IndexId int32 `protobuf:"varint,1,opt,name=IndexId,proto3" json:"IndexId,omitempty"` + TakeDiamond float64 `protobuf:"fixed64,2,opt,name=TakeDiamond,proto3" json:"TakeDiamond,omitempty"` // + BankMaxDiamond int64 `protobuf:"varint,3,opt,name=BankMaxDiamond,proto3" json:"BankMaxDiamond,omitempty"` // 存钱罐最大储存值 + DayBuyMaxCnt int32 `protobuf:"varint,4,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 + Price int64 `protobuf:"varint,5,opt,name=Price,proto3" json:"Price,omitempty"` //原价 + NowPrice int64 `protobuf:"varint,6,opt,name=NowPrice,proto3" json:"NowPrice,omitempty"` //现价 + ShopId int32 `protobuf:"varint,7,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //商城ID + DiamondExc map[int64]int64 `protobuf:"bytes,8,rep,name=DiamondExc,proto3" json:"DiamondExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` +} + +func (x *PigBankDiamondInfo) Reset() { + *x = PigBankDiamondInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankDiamondInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankDiamondInfo) ProtoMessage() {} + +func (x *PigBankDiamondInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_proto_msgTypes[43] + 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 PigBankDiamondInfo.ProtoReflect.Descriptor instead. +func (*PigBankDiamondInfo) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{43} +} + +func (x *PigBankDiamondInfo) GetIndexId() int32 { + if x != nil { + return x.IndexId + } + return 0 +} + +func (x *PigBankDiamondInfo) GetTakeDiamond() float64 { + if x != nil { + return x.TakeDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetBankMaxDiamond() int64 { + if x != nil { + return x.BankMaxDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDayBuyMaxCnt() int32 { + if x != nil { + return x.DayBuyMaxCnt + } + return 0 +} + +func (x *PigBankDiamondInfo) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *PigBankDiamondInfo) GetNowPrice() int64 { + if x != nil { + return x.NowPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetShopId() int32 { + if x != nil { + return x.ShopId + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondExc() map[int64]int64 { + if x != nil { + return x.DiamondExc + } + return nil } // 钻石存钱罐信息 @@ -2924,20 +3066,16 @@ type SCDiamondBankGetInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 - BankDiamond float64 `protobuf:"fixed64,2,opt,name=BankDiamond,proto3" json:"BankDiamond,omitempty"` // 当前已存钻石 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - BankMaxCoin int64 `protobuf:"varint,4,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最大储存值 - DayBuyMaxCnt int32 `protobuf:"varint,5,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,6,opt,name=Price,proto3" json:"Price,omitempty"` //原价 - NowPrice int64 `protobuf:"varint,7,opt,name=NowPrice,proto3" json:"NowPrice,omitempty"` //现价 - ShopId int32 `protobuf:"varint,8,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //商城ID + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 + BankDiamond float64 `protobuf:"fixed64,2,opt,name=BankDiamond,proto3" json:"BankDiamond,omitempty"` // 当前已存钻石 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + InfoArr []*PigBankDiamondInfo `protobuf:"bytes,4,rep,name=infoArr,proto3" json:"infoArr,omitempty"` // 奖励道具 } func (x *SCDiamondBankGetInfo) Reset() { *x = SCDiamondBankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[42] + mi := &file_protocol_welfare_welfare_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3088,7 @@ func (x *SCDiamondBankGetInfo) String() string { func (*SCDiamondBankGetInfo) ProtoMessage() {} func (x *SCDiamondBankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[42] + mi := &file_protocol_welfare_welfare_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3101,7 @@ func (x *SCDiamondBankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCDiamondBankGetInfo.ProtoReflect.Descriptor instead. func (*SCDiamondBankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{42} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{44} } func (x *SCDiamondBankGetInfo) GetOpRetCode() OpResultCode { @@ -2987,39 +3125,11 @@ func (x *SCDiamondBankGetInfo) GetTakeTimes() int32 { return 0 } -func (x *SCDiamondBankGetInfo) GetBankMaxCoin() int64 { +func (x *SCDiamondBankGetInfo) GetInfoArr() []*PigBankDiamondInfo { if x != nil { - return x.BankMaxCoin + return x.InfoArr } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetNowPrice() int64 { - if x != nil { - return x.NowPrice - } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetShopId() int32 { - if x != nil { - return x.ShopId - } - return 0 + return nil } // 钻石存钱罐领取金币 @@ -3032,17 +3142,12 @@ type SCDiamondBankTakeDiamond struct { OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 TakeDiamondNum float64 `protobuf:"fixed64,2,opt,name=TakeDiamondNum,proto3" json:"TakeDiamondNum,omitempty"` // 领取钻石数量 TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - BankMaxDiamond int64 `protobuf:"varint,4,opt,name=BankMaxDiamond,proto3" json:"BankMaxDiamond,omitempty"` // 存钱罐最大储存值 - DayBuyMaxCnt int32 `protobuf:"varint,5,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,6,opt,name=Price,proto3" json:"Price,omitempty"` //原价 - NowPrice int64 `protobuf:"varint,7,opt,name=NowPrice,proto3" json:"NowPrice,omitempty"` //现价 - ShopId int32 `protobuf:"varint,8,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //商城ID } func (x *SCDiamondBankTakeDiamond) Reset() { *x = SCDiamondBankTakeDiamond{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[43] + mi := &file_protocol_welfare_welfare_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3055,7 +3160,7 @@ func (x *SCDiamondBankTakeDiamond) String() string { func (*SCDiamondBankTakeDiamond) ProtoMessage() {} func (x *SCDiamondBankTakeDiamond) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[43] + mi := &file_protocol_welfare_welfare_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3068,7 +3173,7 @@ func (x *SCDiamondBankTakeDiamond) ProtoReflect() protoreflect.Message { // Deprecated: Use SCDiamondBankTakeDiamond.ProtoReflect.Descriptor instead. func (*SCDiamondBankTakeDiamond) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{43} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{45} } func (x *SCDiamondBankTakeDiamond) GetOpRetCode() OpResultCode { @@ -3092,41 +3197,6 @@ func (x *SCDiamondBankTakeDiamond) GetTakeTimes() int32 { return 0 } -func (x *SCDiamondBankTakeDiamond) GetBankMaxDiamond() int64 { - if x != nil { - return x.BankMaxDiamond - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetNowPrice() int64 { - if x != nil { - return x.NowPrice - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetShopId() int32 { - if x != nil { - return x.ShopId - } - return 0 -} - // 赛季通行证信息 //PACKET_CSPermitInfo type CSPermitInfo struct { @@ -3138,7 +3208,7 @@ type CSPermitInfo struct { func (x *CSPermitInfo) Reset() { *x = CSPermitInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[44] + mi := &file_protocol_welfare_welfare_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3151,7 +3221,7 @@ func (x *CSPermitInfo) String() string { func (*CSPermitInfo) ProtoMessage() {} func (x *CSPermitInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[44] + mi := &file_protocol_welfare_welfare_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3164,7 +3234,7 @@ func (x *CSPermitInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitInfo.ProtoReflect.Descriptor instead. func (*CSPermitInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{44} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{46} } type PropInfo struct { @@ -3179,7 +3249,7 @@ type PropInfo struct { func (x *PropInfo) Reset() { *x = PropInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[45] + mi := &file_protocol_welfare_welfare_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3192,7 +3262,7 @@ func (x *PropInfo) String() string { func (*PropInfo) ProtoMessage() {} func (x *PropInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[45] + mi := &file_protocol_welfare_welfare_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3205,7 +3275,7 @@ func (x *PropInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PropInfo.ProtoReflect.Descriptor instead. func (*PropInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{45} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{47} } func (x *PropInfo) GetItemId() int32 { @@ -3235,7 +3305,7 @@ type PropItem struct { func (x *PropItem) Reset() { *x = PropItem{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[46] + mi := &file_protocol_welfare_welfare_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3248,7 +3318,7 @@ func (x *PropItem) String() string { func (*PropItem) ProtoMessage() {} func (x *PropItem) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[46] + mi := &file_protocol_welfare_welfare_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3261,7 +3331,7 @@ func (x *PropItem) ProtoReflect() protoreflect.Message { // Deprecated: Use PropItem.ProtoReflect.Descriptor instead. func (*PropItem) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{46} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{48} } func (x *PropItem) GetAward() []*PropInfo { @@ -3299,7 +3369,7 @@ type PermitAward struct { func (x *PermitAward) Reset() { *x = PermitAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[47] + mi := &file_protocol_welfare_welfare_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3312,7 +3382,7 @@ func (x *PermitAward) String() string { func (*PermitAward) ProtoMessage() {} func (x *PermitAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[47] + mi := &file_protocol_welfare_welfare_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3325,7 +3395,7 @@ func (x *PermitAward) ProtoReflect() protoreflect.Message { // Deprecated: Use PermitAward.ProtoReflect.Descriptor instead. func (*PermitAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{47} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{49} } func (x *PermitAward) GetExp() int64 { @@ -3369,7 +3439,7 @@ type PermitShow struct { func (x *PermitShow) Reset() { *x = PermitShow{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[48] + mi := &file_protocol_welfare_welfare_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3382,7 +3452,7 @@ func (x *PermitShow) String() string { func (*PermitShow) ProtoMessage() {} func (x *PermitShow) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[48] + mi := &file_protocol_welfare_welfare_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3395,7 +3465,7 @@ func (x *PermitShow) ProtoReflect() protoreflect.Message { // Deprecated: Use PermitShow.ProtoReflect.Descriptor instead. func (*PermitShow) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{48} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{50} } func (x *PermitShow) GetShowType() int32 { @@ -3432,7 +3502,7 @@ type PermitRankAward struct { func (x *PermitRankAward) Reset() { *x = PermitRankAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[49] + mi := &file_protocol_welfare_welfare_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3445,7 +3515,7 @@ func (x *PermitRankAward) String() string { func (*PermitRankAward) ProtoMessage() {} func (x *PermitRankAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[49] + mi := &file_protocol_welfare_welfare_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3458,7 +3528,7 @@ func (x *PermitRankAward) ProtoReflect() protoreflect.Message { // Deprecated: Use PermitRankAward.ProtoReflect.Descriptor instead. func (*PermitRankAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{49} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{51} } func (x *PermitRankAward) GetStart() int32 { @@ -3501,7 +3571,7 @@ type SCPermitInfo struct { func (x *SCPermitInfo) Reset() { *x = SCPermitInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[50] + mi := &file_protocol_welfare_welfare_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3514,7 +3584,7 @@ func (x *SCPermitInfo) String() string { func (*SCPermitInfo) ProtoMessage() {} func (x *SCPermitInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[50] + mi := &file_protocol_welfare_welfare_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3527,7 +3597,7 @@ func (x *SCPermitInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitInfo.ProtoReflect.Descriptor instead. func (*SCPermitInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{50} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{52} } func (x *SCPermitInfo) GetExp() int64 { @@ -3600,7 +3670,7 @@ type CSPermitAward struct { func (x *CSPermitAward) Reset() { *x = CSPermitAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[51] + mi := &file_protocol_welfare_welfare_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3613,7 +3683,7 @@ func (x *CSPermitAward) String() string { func (*CSPermitAward) ProtoMessage() {} func (x *CSPermitAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[51] + mi := &file_protocol_welfare_welfare_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3626,7 +3696,7 @@ func (x *CSPermitAward) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitAward.ProtoReflect.Descriptor instead. func (*CSPermitAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{51} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{53} } func (x *CSPermitAward) GetTp() int32 { @@ -3659,7 +3729,7 @@ type SCPermitAward struct { func (x *SCPermitAward) Reset() { *x = SCPermitAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[52] + mi := &file_protocol_welfare_welfare_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3672,7 +3742,7 @@ func (x *SCPermitAward) String() string { func (*SCPermitAward) ProtoMessage() {} func (x *SCPermitAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[52] + mi := &file_protocol_welfare_welfare_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3685,7 +3755,7 @@ func (x *SCPermitAward) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitAward.ProtoReflect.Descriptor instead. func (*SCPermitAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{52} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{54} } func (x *SCPermitAward) GetOpRetCode() OpResultCode { @@ -3734,7 +3804,7 @@ type CSPermitExchangeList struct { func (x *CSPermitExchangeList) Reset() { *x = CSPermitExchangeList{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[53] + mi := &file_protocol_welfare_welfare_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3747,7 +3817,7 @@ func (x *CSPermitExchangeList) String() string { func (*CSPermitExchangeList) ProtoMessage() {} func (x *CSPermitExchangeList) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[53] + mi := &file_protocol_welfare_welfare_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3760,7 +3830,7 @@ func (x *CSPermitExchangeList) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitExchangeList.ProtoReflect.Descriptor instead. func (*CSPermitExchangeList) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{53} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{55} } type ShopInfo struct { @@ -3781,7 +3851,7 @@ type ShopInfo struct { func (x *ShopInfo) Reset() { *x = ShopInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[54] + mi := &file_protocol_welfare_welfare_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3794,7 +3864,7 @@ func (x *ShopInfo) String() string { func (*ShopInfo) ProtoMessage() {} func (x *ShopInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[54] + mi := &file_protocol_welfare_welfare_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3807,7 +3877,7 @@ func (x *ShopInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ShopInfo.ProtoReflect.Descriptor instead. func (*ShopInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{54} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{56} } func (x *ShopInfo) GetId() int32 { @@ -3878,7 +3948,7 @@ type SCPermitExchangeList struct { func (x *SCPermitExchangeList) Reset() { *x = SCPermitExchangeList{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[55] + mi := &file_protocol_welfare_welfare_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3891,7 +3961,7 @@ func (x *SCPermitExchangeList) String() string { func (*SCPermitExchangeList) ProtoMessage() {} func (x *SCPermitExchangeList) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[55] + mi := &file_protocol_welfare_welfare_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3904,7 +3974,7 @@ func (x *SCPermitExchangeList) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitExchangeList.ProtoReflect.Descriptor instead. func (*SCPermitExchangeList) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{55} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{57} } func (x *SCPermitExchangeList) GetList() []*ShopInfo { @@ -3927,7 +3997,7 @@ type CSPermitExchange struct { func (x *CSPermitExchange) Reset() { *x = CSPermitExchange{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[56] + mi := &file_protocol_welfare_welfare_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3940,7 +4010,7 @@ func (x *CSPermitExchange) String() string { func (*CSPermitExchange) ProtoMessage() {} func (x *CSPermitExchange) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[56] + mi := &file_protocol_welfare_welfare_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3953,7 +4023,7 @@ func (x *CSPermitExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitExchange.ProtoReflect.Descriptor instead. func (*CSPermitExchange) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{56} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{58} } func (x *CSPermitExchange) GetId() int32 { @@ -3975,7 +4045,7 @@ type SCPermitExchange struct { func (x *SCPermitExchange) Reset() { *x = SCPermitExchange{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[57] + mi := &file_protocol_welfare_welfare_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3988,7 +4058,7 @@ func (x *SCPermitExchange) String() string { func (*SCPermitExchange) ProtoMessage() {} func (x *SCPermitExchange) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[57] + mi := &file_protocol_welfare_welfare_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4001,7 +4071,7 @@ func (x *SCPermitExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitExchange.ProtoReflect.Descriptor instead. func (*SCPermitExchange) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{57} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{59} } func (x *SCPermitExchange) GetOpRetCode() OpResultCode { @@ -4021,7 +4091,7 @@ type CSPermitShop struct { func (x *CSPermitShop) Reset() { *x = CSPermitShop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[58] + mi := &file_protocol_welfare_welfare_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4034,7 +4104,7 @@ func (x *CSPermitShop) String() string { func (*CSPermitShop) ProtoMessage() {} func (x *CSPermitShop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[58] + mi := &file_protocol_welfare_welfare_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4047,7 +4117,7 @@ func (x *CSPermitShop) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitShop.ProtoReflect.Descriptor instead. func (*CSPermitShop) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{58} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{60} } //PACKET_SCPermitShop @@ -4065,7 +4135,7 @@ type SCPermitShop struct { func (x *SCPermitShop) Reset() { *x = SCPermitShop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[59] + mi := &file_protocol_welfare_welfare_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4078,7 +4148,7 @@ func (x *SCPermitShop) String() string { func (*SCPermitShop) ProtoMessage() {} func (x *SCPermitShop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[59] + mi := &file_protocol_welfare_welfare_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4091,7 +4161,7 @@ func (x *SCPermitShop) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitShop.ProtoReflect.Descriptor instead. func (*SCPermitShop) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{59} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{61} } func (x *SCPermitShop) GetId() int32 { @@ -4133,7 +4203,7 @@ type CSLotteryInfo struct { func (x *CSLotteryInfo) Reset() { *x = CSLotteryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[60] + mi := &file_protocol_welfare_welfare_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4146,7 +4216,7 @@ func (x *CSLotteryInfo) String() string { func (*CSLotteryInfo) ProtoMessage() {} func (x *CSLotteryInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[60] + mi := &file_protocol_welfare_welfare_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4159,7 +4229,7 @@ func (x *CSLotteryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSLotteryInfo.ProtoReflect.Descriptor instead. func (*CSLotteryInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{60} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{62} } type LotteryInfo struct { @@ -4192,7 +4262,7 @@ type LotteryInfo struct { func (x *LotteryInfo) Reset() { *x = LotteryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[61] + mi := &file_protocol_welfare_welfare_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4205,7 +4275,7 @@ func (x *LotteryInfo) String() string { func (*LotteryInfo) ProtoMessage() {} func (x *LotteryInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[61] + mi := &file_protocol_welfare_welfare_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4218,7 +4288,7 @@ func (x *LotteryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LotteryInfo.ProtoReflect.Descriptor instead. func (*LotteryInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{61} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{63} } func (x *LotteryInfo) GetId() int64 { @@ -4367,7 +4437,7 @@ type SCLotteryInfo struct { func (x *SCLotteryInfo) Reset() { *x = SCLotteryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[62] + mi := &file_protocol_welfare_welfare_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4380,7 +4450,7 @@ func (x *SCLotteryInfo) String() string { func (*SCLotteryInfo) ProtoMessage() {} func (x *SCLotteryInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[62] + mi := &file_protocol_welfare_welfare_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4393,7 +4463,7 @@ func (x *SCLotteryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCLotteryInfo.ProtoReflect.Descriptor instead. func (*SCLotteryInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{62} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{64} } func (x *SCLotteryInfo) GetInfo() []*LotteryInfo { @@ -4423,7 +4493,7 @@ type NotifyLotteryAward struct { func (x *NotifyLotteryAward) Reset() { *x = NotifyLotteryAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[63] + mi := &file_protocol_welfare_welfare_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4436,7 +4506,7 @@ func (x *NotifyLotteryAward) String() string { func (*NotifyLotteryAward) ProtoMessage() {} func (x *NotifyLotteryAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[63] + mi := &file_protocol_welfare_welfare_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4449,7 +4519,7 @@ func (x *NotifyLotteryAward) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyLotteryAward.ProtoReflect.Descriptor instead. func (*NotifyLotteryAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{63} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{65} } func (x *NotifyLotteryAward) GetInfo() *LotteryInfo { @@ -4472,7 +4542,7 @@ type NotifyLotteryCode struct { func (x *NotifyLotteryCode) Reset() { *x = NotifyLotteryCode{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[64] + mi := &file_protocol_welfare_welfare_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4485,7 +4555,7 @@ func (x *NotifyLotteryCode) String() string { func (*NotifyLotteryCode) ProtoMessage() {} func (x *NotifyLotteryCode) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[64] + mi := &file_protocol_welfare_welfare_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4498,7 +4568,7 @@ func (x *NotifyLotteryCode) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyLotteryCode.ProtoReflect.Descriptor instead. func (*NotifyLotteryCode) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{64} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{66} } func (x *NotifyLotteryCode) GetInfo() []*LotteryInfo { @@ -4761,352 +4831,369 @@ var file_protocol_welfare_welfare_proto_rawDesc = []byte{ 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, 0x22, - 0x12, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0xff, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, - 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 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, 0x1a, 0x0a, - 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, - 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, - 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, - 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0xc2, 0x02, 0x0a, 0x0f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, + 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44, - 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, - 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x86, 0x02, 0x0a, 0x11, 0x53, - 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 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, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, - 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, - 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, - 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, - 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9b, 0x02, 0x0a, 0x14, - 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 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, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, - 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, - 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, - 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, - 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44, - 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x22, 0xab, 0x02, 0x0a, 0x18, 0x53, 0x43, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, + 0x78, 0x63, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 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, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, + 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb5, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, + 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 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, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x07, + 0x69, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, + 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, + 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, + 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 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, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, + 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, + 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf2, 0x02, 0x0a, 0x12, 0x50, 0x69, 0x67, + 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x18, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x6b, + 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, + 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x42, + 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0e, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, + 0x43, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, + 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, + 0x70, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, + 0x64, 0x12, 0x4b, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 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, 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, 0xc2, 0x01, + 0x0a, 0x14, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 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, 0x26, 0x0a, 0x0e, 0x54, - 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x0e, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x42, 0x61, 0x6e, 0x6b, 0x4d, - 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, - 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 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, 0x5b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 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, 0x16, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, - 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, - 0x22, 0x64, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 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, 0x02, 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x6e, - 0x64, 0x12, 0x29, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 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, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x02, 0x0a, - 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, - 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x2f, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x36, 0x0a, 0x09, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x54, 0x73, 0x22, 0x2f, 0x0a, 0x0d, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x0d, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x41, 0x77, 0x61, 0x72, 0x64, 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, 0x29, 0x0a, 0x06, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 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, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, - 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xfe, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x6f, - 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, + 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x42, + 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x69, + 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, + 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x41, + 0x72, 0x72, 0x22, 0x95, 0x01, 0x0a, 0x18, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 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, 0x26, 0x0a, 0x0e, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x54, 0x61, + 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, + 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x72, + 0x6f, 0x70, 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, 0x5b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x04, - 0x43, 0x6f, 0x73, 0x74, 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, 0x04, 0x43, - 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, - 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x14, 0x53, 0x43, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x10, - 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 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, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x62, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x53, 0x68, 0x6f, 0x70, 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, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x80, 0x04, 0x0a, 0x0b, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 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, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, - 0x6e, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x57, 0x69, 0x6e, 0x54, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, - 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, + 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x32, 0x22, 0x64, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, + 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 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, 0x02, 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x0f, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x45, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 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, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, + 0xa3, 0x02, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, + 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, + 0x36, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, + 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x54, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x54, 0x73, 0x22, 0x2f, 0x0a, 0x0d, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x0d, 0x53, 0x43, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 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, 0x29, 0x0a, + 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 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, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, - 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, - 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x55, 0x52, 0x4c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x55, 0x52, 0x4c, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, - 0x61, 0x72, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, - 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x63, 0x0a, - 0x0d, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, - 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x61, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x61, - 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x3d, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 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, 0x92, 0x0c, 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, + 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x32, 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, 0x06, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x54, 0x70, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xfe, 0x01, 0x0a, 0x08, + 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, + 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 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, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x14, + 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x68, 0x6f, + 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x10, 0x43, + 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, + 0x47, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 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, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x62, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 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, 0x18, 0x0a, 0x07, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x0f, 0x0a, 0x0d, + 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x80, 0x04, + 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 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, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x57, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x57, 0x69, + 0x6e, 0x54, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, + 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 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, 0x14, 0x0a, 0x05, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x6f, + 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, + 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, 0x6f, + 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x6f, + 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, + 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x63, 0x0a, 0x0d, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x04, 0x4c, + 0x61, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x4c, 0x61, 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x49, + 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3d, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, + 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x49, 0x6e, 0x66, 0x6f, 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, 0x92, 0x0c, 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, 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, + 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, 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, 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, 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, + 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, 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, 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 ( @@ -5122,7 +5209,7 @@ func file_protocol_welfare_welfare_proto_rawDescGZIP() []byte { } var file_protocol_welfare_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_protocol_welfare_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 66) +var file_protocol_welfare_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 70) var file_protocol_welfare_welfare_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: welfare.OpResultCode (SPacketID)(0), // 1: welfare.SPacketID @@ -5163,35 +5250,39 @@ var file_protocol_welfare_welfare_proto_goTypes = []interface{}{ (*SCInviteInfo)(nil), // 36: welfare.SCInviteInfo (*CSBindInvite)(nil), // 37: welfare.CSBindInvite (*SCBindInvite)(nil), // 38: welfare.SCBindInvite - (*CSPigbankGetInfo)(nil), // 39: welfare.CSPigbankGetInfo - (*SCPigbankGetInfo)(nil), // 40: welfare.SCPigbankGetInfo - (*CSPigbankTakeCoin)(nil), // 41: welfare.CSPigbankTakeCoin - (*SCPigbankTakeCoin)(nil), // 42: welfare.SCPigbankTakeCoin - (*CSDiamondBankGetInfo)(nil), // 43: welfare.CSDiamondBankGetInfo - (*SCDiamondBankGetInfo)(nil), // 44: welfare.SCDiamondBankGetInfo - (*SCDiamondBankTakeDiamond)(nil), // 45: welfare.SCDiamondBankTakeDiamond - (*CSPermitInfo)(nil), // 46: welfare.CSPermitInfo - (*PropInfo)(nil), // 47: welfare.PropInfo - (*PropItem)(nil), // 48: welfare.PropItem - (*PermitAward)(nil), // 49: welfare.PermitAward - (*PermitShow)(nil), // 50: welfare.PermitShow - (*PermitRankAward)(nil), // 51: welfare.PermitRankAward - (*SCPermitInfo)(nil), // 52: welfare.SCPermitInfo - (*CSPermitAward)(nil), // 53: welfare.CSPermitAward - (*SCPermitAward)(nil), // 54: welfare.SCPermitAward - (*CSPermitExchangeList)(nil), // 55: welfare.CSPermitExchangeList - (*ShopInfo)(nil), // 56: welfare.ShopInfo - (*SCPermitExchangeList)(nil), // 57: welfare.SCPermitExchangeList - (*CSPermitExchange)(nil), // 58: welfare.CSPermitExchange - (*SCPermitExchange)(nil), // 59: welfare.SCPermitExchange - (*CSPermitShop)(nil), // 60: welfare.CSPermitShop - (*SCPermitShop)(nil), // 61: welfare.SCPermitShop - (*CSLotteryInfo)(nil), // 62: welfare.CSLotteryInfo - (*LotteryInfo)(nil), // 63: welfare.LotteryInfo - (*SCLotteryInfo)(nil), // 64: welfare.SCLotteryInfo - (*NotifyLotteryAward)(nil), // 65: welfare.NotifyLotteryAward - (*NotifyLotteryCode)(nil), // 66: welfare.NotifyLotteryCode - nil, // 67: welfare.SCInviteInfo.PayScoreEntry + (*PigBankCoinInfo)(nil), // 39: welfare.PigBankCoinInfo + (*CSPigbankGetInfo)(nil), // 40: welfare.CSPigbankGetInfo + (*SCPigbankGetInfo)(nil), // 41: welfare.SCPigbankGetInfo + (*CSPigbankTakeCoin)(nil), // 42: welfare.CSPigbankTakeCoin + (*SCPigbankTakeCoin)(nil), // 43: welfare.SCPigbankTakeCoin + (*CSDiamondBankGetInfo)(nil), // 44: welfare.CSDiamondBankGetInfo + (*PigBankDiamondInfo)(nil), // 45: welfare.PigBankDiamondInfo + (*SCDiamondBankGetInfo)(nil), // 46: welfare.SCDiamondBankGetInfo + (*SCDiamondBankTakeDiamond)(nil), // 47: welfare.SCDiamondBankTakeDiamond + (*CSPermitInfo)(nil), // 48: welfare.CSPermitInfo + (*PropInfo)(nil), // 49: welfare.PropInfo + (*PropItem)(nil), // 50: welfare.PropItem + (*PermitAward)(nil), // 51: welfare.PermitAward + (*PermitShow)(nil), // 52: welfare.PermitShow + (*PermitRankAward)(nil), // 53: welfare.PermitRankAward + (*SCPermitInfo)(nil), // 54: welfare.SCPermitInfo + (*CSPermitAward)(nil), // 55: welfare.CSPermitAward + (*SCPermitAward)(nil), // 56: welfare.SCPermitAward + (*CSPermitExchangeList)(nil), // 57: welfare.CSPermitExchangeList + (*ShopInfo)(nil), // 58: welfare.ShopInfo + (*SCPermitExchangeList)(nil), // 59: welfare.SCPermitExchangeList + (*CSPermitExchange)(nil), // 60: welfare.CSPermitExchange + (*SCPermitExchange)(nil), // 61: welfare.SCPermitExchange + (*CSPermitShop)(nil), // 62: welfare.CSPermitShop + (*SCPermitShop)(nil), // 63: welfare.SCPermitShop + (*CSLotteryInfo)(nil), // 64: welfare.CSLotteryInfo + (*LotteryInfo)(nil), // 65: welfare.LotteryInfo + (*SCLotteryInfo)(nil), // 66: welfare.SCLotteryInfo + (*NotifyLotteryAward)(nil), // 67: welfare.NotifyLotteryAward + (*NotifyLotteryCode)(nil), // 68: welfare.NotifyLotteryCode + nil, // 69: welfare.SCInviteInfo.PayScoreEntry + nil, // 70: welfare.PigBankCoinInfo.GoldExcEntry + nil, // 71: welfare.PigBankDiamondInfo.DiamondExcEntry } var file_protocol_welfare_welfare_proto_depIdxs = []int32{ 0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode @@ -5218,39 +5309,43 @@ var file_protocol_welfare_welfare_proto_depIdxs = []int32{ 0, // 21: welfare.SCWelfareContinuousPayData.OpRetCode:type_name -> welfare.OpResultCode 23, // 22: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree 0, // 23: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode - 67, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry + 69, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry 35, // 25: welfare.SCInviteInfo.Awards1:type_name -> welfare.RankAward 35, // 26: welfare.SCInviteInfo.Awards2:type_name -> welfare.RankAward 35, // 27: welfare.SCInviteInfo.Awards3:type_name -> welfare.RankAward 0, // 28: welfare.SCBindInvite.OpRetCode:type_name -> welfare.OpResultCode - 0, // 29: welfare.SCPigbankGetInfo.OpRetCode:type_name -> welfare.OpResultCode - 0, // 30: welfare.SCPigbankTakeCoin.OpRetCode:type_name -> welfare.OpResultCode - 0, // 31: welfare.SCDiamondBankGetInfo.OpRetCode:type_name -> welfare.OpResultCode - 0, // 32: welfare.SCDiamondBankTakeDiamond.OpRetCode:type_name -> welfare.OpResultCode - 47, // 33: welfare.PropItem.Award:type_name -> welfare.PropInfo - 48, // 34: welfare.PermitAward.Award1:type_name -> welfare.PropItem - 48, // 35: welfare.PermitAward.Award2:type_name -> welfare.PropItem - 47, // 36: welfare.PermitRankAward.ItemId:type_name -> welfare.PropInfo - 49, // 37: welfare.SCPermitInfo.Award:type_name -> welfare.PermitAward - 50, // 38: welfare.SCPermitInfo.ShowList:type_name -> welfare.PermitShow - 51, // 39: welfare.SCPermitInfo.RankAward:type_name -> welfare.PermitRankAward - 0, // 40: welfare.SCPermitAward.OpRetCode:type_name -> welfare.OpResultCode - 47, // 41: welfare.SCPermitAward.Award1:type_name -> welfare.PropInfo - 47, // 42: welfare.SCPermitAward.Award2:type_name -> welfare.PropInfo - 47, // 43: welfare.ShopInfo.Gain:type_name -> welfare.PropInfo - 47, // 44: welfare.ShopInfo.Cost:type_name -> welfare.PropInfo - 56, // 45: welfare.SCPermitExchangeList.List:type_name -> welfare.ShopInfo - 0, // 46: welfare.SCPermitExchange.OpRetCode:type_name -> welfare.OpResultCode - 47, // 47: welfare.LotteryInfo.Award:type_name -> welfare.PropInfo - 63, // 48: welfare.SCLotteryInfo.Info:type_name -> welfare.LotteryInfo - 63, // 49: welfare.SCLotteryInfo.Last:type_name -> welfare.LotteryInfo - 63, // 50: welfare.NotifyLotteryAward.Info:type_name -> welfare.LotteryInfo - 63, // 51: welfare.NotifyLotteryCode.Info:type_name -> welfare.LotteryInfo - 52, // [52:52] is the sub-list for method output_type - 52, // [52:52] is the sub-list for method input_type - 52, // [52:52] is the sub-list for extension type_name - 52, // [52:52] is the sub-list for extension extendee - 0, // [0:52] is the sub-list for field type_name + 70, // 29: welfare.PigBankCoinInfo.GoldExc:type_name -> welfare.PigBankCoinInfo.GoldExcEntry + 0, // 30: welfare.SCPigbankGetInfo.OpRetCode:type_name -> welfare.OpResultCode + 39, // 31: welfare.SCPigbankGetInfo.infoArr:type_name -> welfare.PigBankCoinInfo + 0, // 32: welfare.SCPigbankTakeCoin.OpRetCode:type_name -> welfare.OpResultCode + 71, // 33: welfare.PigBankDiamondInfo.DiamondExc:type_name -> welfare.PigBankDiamondInfo.DiamondExcEntry + 0, // 34: welfare.SCDiamondBankGetInfo.OpRetCode:type_name -> welfare.OpResultCode + 45, // 35: welfare.SCDiamondBankGetInfo.infoArr:type_name -> welfare.PigBankDiamondInfo + 0, // 36: welfare.SCDiamondBankTakeDiamond.OpRetCode:type_name -> welfare.OpResultCode + 49, // 37: welfare.PropItem.Award:type_name -> welfare.PropInfo + 50, // 38: welfare.PermitAward.Award1:type_name -> welfare.PropItem + 50, // 39: welfare.PermitAward.Award2:type_name -> welfare.PropItem + 49, // 40: welfare.PermitRankAward.ItemId:type_name -> welfare.PropInfo + 51, // 41: welfare.SCPermitInfo.Award:type_name -> welfare.PermitAward + 52, // 42: welfare.SCPermitInfo.ShowList:type_name -> welfare.PermitShow + 53, // 43: welfare.SCPermitInfo.RankAward:type_name -> welfare.PermitRankAward + 0, // 44: welfare.SCPermitAward.OpRetCode:type_name -> welfare.OpResultCode + 49, // 45: welfare.SCPermitAward.Award1:type_name -> welfare.PropInfo + 49, // 46: welfare.SCPermitAward.Award2:type_name -> welfare.PropInfo + 49, // 47: welfare.ShopInfo.Gain:type_name -> welfare.PropInfo + 49, // 48: welfare.ShopInfo.Cost:type_name -> welfare.PropInfo + 58, // 49: welfare.SCPermitExchangeList.List:type_name -> welfare.ShopInfo + 0, // 50: welfare.SCPermitExchange.OpRetCode:type_name -> welfare.OpResultCode + 49, // 51: welfare.LotteryInfo.Award:type_name -> welfare.PropInfo + 65, // 52: welfare.SCLotteryInfo.Info:type_name -> welfare.LotteryInfo + 65, // 53: welfare.SCLotteryInfo.Last:type_name -> welfare.LotteryInfo + 65, // 54: welfare.NotifyLotteryAward.Info:type_name -> welfare.LotteryInfo + 65, // 55: welfare.NotifyLotteryCode.Info:type_name -> welfare.LotteryInfo + 56, // [56:56] is the sub-list for method output_type + 56, // [56:56] is the sub-list for method input_type + 56, // [56:56] is the sub-list for extension type_name + 56, // [56:56] is the sub-list for extension extendee + 0, // [0:56] is the sub-list for field type_name } func init() { file_protocol_welfare_welfare_proto_init() } @@ -5704,7 +5799,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPigbankGetInfo); i { + switch v := v.(*PigBankCoinInfo); i { case 0: return &v.state case 1: @@ -5716,7 +5811,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPigbankGetInfo); i { + switch v := v.(*CSPigbankGetInfo); i { case 0: return &v.state case 1: @@ -5728,7 +5823,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPigbankTakeCoin); i { + switch v := v.(*SCPigbankGetInfo); i { case 0: return &v.state case 1: @@ -5740,7 +5835,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPigbankTakeCoin); i { + switch v := v.(*CSPigbankTakeCoin); i { case 0: return &v.state case 1: @@ -5752,7 +5847,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSDiamondBankGetInfo); i { + switch v := v.(*SCPigbankTakeCoin); i { case 0: return &v.state case 1: @@ -5764,7 +5859,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCDiamondBankGetInfo); i { + switch v := v.(*CSDiamondBankGetInfo); i { case 0: return &v.state case 1: @@ -5776,7 +5871,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCDiamondBankTakeDiamond); i { + switch v := v.(*PigBankDiamondInfo); i { case 0: return &v.state case 1: @@ -5788,7 +5883,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitInfo); i { + switch v := v.(*SCDiamondBankGetInfo); i { case 0: return &v.state case 1: @@ -5800,7 +5895,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropInfo); i { + switch v := v.(*SCDiamondBankTakeDiamond); i { case 0: return &v.state case 1: @@ -5812,7 +5907,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropItem); i { + switch v := v.(*CSPermitInfo); i { case 0: return &v.state case 1: @@ -5824,7 +5919,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PermitAward); i { + switch v := v.(*PropInfo); i { case 0: return &v.state case 1: @@ -5836,7 +5931,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PermitShow); i { + switch v := v.(*PropItem); i { case 0: return &v.state case 1: @@ -5848,7 +5943,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PermitRankAward); i { + switch v := v.(*PermitAward); i { case 0: return &v.state case 1: @@ -5860,7 +5955,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitInfo); i { + switch v := v.(*PermitShow); i { case 0: return &v.state case 1: @@ -5872,7 +5967,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitAward); i { + switch v := v.(*PermitRankAward); i { case 0: return &v.state case 1: @@ -5884,7 +5979,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitAward); i { + switch v := v.(*SCPermitInfo); i { case 0: return &v.state case 1: @@ -5896,7 +5991,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitExchangeList); i { + switch v := v.(*CSPermitAward); i { case 0: return &v.state case 1: @@ -5908,7 +6003,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShopInfo); i { + switch v := v.(*SCPermitAward); i { case 0: return &v.state case 1: @@ -5920,7 +6015,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitExchangeList); i { + switch v := v.(*CSPermitExchangeList); i { case 0: return &v.state case 1: @@ -5932,7 +6027,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitExchange); i { + switch v := v.(*ShopInfo); i { case 0: return &v.state case 1: @@ -5944,7 +6039,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitExchange); i { + switch v := v.(*SCPermitExchangeList); i { case 0: return &v.state case 1: @@ -5956,7 +6051,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitShop); i { + switch v := v.(*CSPermitExchange); i { case 0: return &v.state case 1: @@ -5968,7 +6063,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitShop); i { + switch v := v.(*SCPermitExchange); i { case 0: return &v.state case 1: @@ -5980,7 +6075,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSLotteryInfo); i { + switch v := v.(*CSPermitShop); i { case 0: return &v.state case 1: @@ -5992,7 +6087,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LotteryInfo); i { + switch v := v.(*SCPermitShop); i { case 0: return &v.state case 1: @@ -6004,7 +6099,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLotteryInfo); i { + switch v := v.(*CSLotteryInfo); i { case 0: return &v.state case 1: @@ -6016,7 +6111,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyLotteryAward); i { + switch v := v.(*LotteryInfo); i { case 0: return &v.state case 1: @@ -6028,6 +6123,30 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCLotteryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotifyLotteryAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NotifyLotteryCode); i { case 0: return &v.state @@ -6046,7 +6165,7 @@ func file_protocol_welfare_welfare_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_welfare_welfare_proto_rawDesc, NumEnums: 2, - NumMessages: 66, + NumMessages: 70, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index 503dade..5baa22a 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -336,6 +336,17 @@ message SCBindInvite{ OpResultCode OpRetCode = 1; //结果 } + +message PigBankCoinInfo{ + int32 IndexId = 1; + int64 TakeCoin = 2; // + int64 BankMaxCoin = 3; // 存钱罐最大储存值 + int32 DayBuyMaxCnt = 4; // 今日最大可购买次数 + int64 Price = 5; //原价 + int64 CostDiamond = 6; //现价 + map GoldExc = 7; // 奖励道具 +} + // 存钱罐信息 //PACKET_CSPigbankGetInfo message CSPigbankGetInfo{ @@ -347,13 +358,9 @@ message SCPigbankGetInfo{ OpResultCode OpRetCode = 1; //结果 int64 BankCoin = 2; // 当前已存金额 int32 TakeTimes = 3; // 领取次数 - int64 CostDiamond = 4; // 耗费钻石 - int64 BankMaxCoin = 5; // 存钱罐最储存值 - int32 DayBuyMaxCnt = 6; // 今日最大可购买次数 - int64 Price = 7; //消耗钻石原价 + repeated PigBankCoinInfo infoArr = 4; } - // 存钱罐领取金币 //PACKET_CSPigbankTakeCoin message CSPigbankTakeCoin{ @@ -365,10 +372,7 @@ message SCPigbankTakeCoin{ OpResultCode OpRetCode = 1; // 结果 int64 TakeCoinNum = 2; // 领取金币数量 int32 TakeTimes = 3; // 领取次数 - int64 CostDiamond = 4; // 耗费钻石 - int64 BankMaxCoin = 5; // 存钱罐最储存值 - int32 DayBuyMaxCnt = 6; // 今日最大可购买次数 - int64 Price = 7; //消耗钻石原价 + //repeated PigBankCoinInfo info = 4; } // 钻石存钱罐信息 @@ -376,17 +380,24 @@ message SCPigbankTakeCoin{ message CSDiamondBankGetInfo{ } +message PigBankDiamondInfo{ + int32 IndexId = 1; + double TakeDiamond = 2; // + int64 BankMaxDiamond = 3; // 存钱罐最大储存值 + int32 DayBuyMaxCnt = 4; // 今日最大可购买次数 + int64 Price = 5; //原价 + int64 NowPrice = 6; //现价 + int32 ShopId = 7; //商城ID + map DiamondExc = 8; +} + // 钻石存钱罐信息 //PACKET_SCDiamondBankGetInfo message SCDiamondBankGetInfo{ OpResultCode OpRetCode = 1; //结果 double BankDiamond = 2; // 当前已存钻石 int32 TakeTimes = 3; // 领取次数 - int64 BankMaxCoin = 4; // 存钱罐最大储存值 - int32 DayBuyMaxCnt = 5; // 今日最大可购买次数 - int64 Price = 6; //原价 - int64 NowPrice = 7; //现价 - int32 ShopId = 8; //商城ID + repeated PigBankDiamondInfo infoArr = 4; // 奖励道具 } // 钻石存钱罐领取金币 //PACKET_SCDiamondBankTakeDiamond @@ -394,11 +405,7 @@ message SCDiamondBankTakeDiamond{ OpResultCode OpRetCode = 1; // 结果 double TakeDiamondNum = 2; // 领取钻石数量 int32 TakeTimes = 3; // 领取次数 - int64 BankMaxDiamond = 4; // 存钱罐最大储存值 - int32 DayBuyMaxCnt = 5; // 今日最大可购买次数 - int64 Price = 6; //原价 - int64 NowPrice = 7; //现价 - int32 ShopId = 8; //商城ID + //repeated PigBankDiamondInfo info = 4; } // 赛季通行证信息 diff --git a/webapi/deprecated.go b/webapi/deprecated.go index bbffa29..8096568 100644 --- a/webapi/deprecated.go +++ b/webapi/deprecated.go @@ -237,3 +237,23 @@ func API_GetActConfig(appId string) ([]byte, error) { func ApiGetInviteLink(appId string, body proto.Message) ([]byte, error) { return postRequest(appId, "/get_invite_link", nil, body, "http", DEFAULT_TIMEOUT) } + +// Debug请求 +type DebugTestReq struct { + Snid int32 `json:"snid"` + Username string `json:"username"` + Count string `json:"count"` + Rpc int32 `json:"rpc"` + Bankcoin int64 `json:"bankcoin"` + Daybuytimes int32 `json:"daybuytimes"` +} + +// Debug返回 +type DebugTestRsp struct { + Code int `json:"code"` + Data struct { + Count int64 `json:"count"` + } `json:"data"` + Message string `json:"message"` + Success bool `json:"success"` +} diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 17767f4..c637fbe 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -106,6 +106,11 @@ func init() { etcd.Register(etcd.ETCDKEY_LotteryConfig, webapi.LotteryConfig{}, platformConfigEvent) // 用户抽奖 etcd.Register(etcd.ETCDKEY_LotteryUser, webapi.UserLottery{}, handlerEvent) + // 存钱罐消耗获得 + etcd.Register(etcd.ETCDKEY_PigBankDiamond, webapi.GamePigBankDiamondConfig{}, platformConfigEvent) + // 存钱罐属性值 + etcd.Register(etcd.ETCDKEY_PigBankProp, webapi.GamePigBankPropConfig{}, platformConfigEvent) + } func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -347,6 +352,10 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e case *webapi.LotteryConfig: PlatformMgrSingleton.GetConfig(config.Platform).LotteryConfig = config LotteryMgrInst.UpdateConfig(config) + case *webapi.GamePigBankDiamondConfig: + PlatformMgrSingleton.GetConfig(config.Platform).GamePigBankDiamondConfig = config + case *webapi.GamePigBankPropConfig: + PlatformMgrSingleton.GetConfig(config.Platform).GamePigBankPropConfig = config default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index ea89290..cd7913b 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -3,6 +3,7 @@ package main import ( "crypto/md5" "encoding/hex" + "encoding/json" "errors" "fmt" "io" @@ -2928,6 +2929,79 @@ func init() { return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/platform/debug", WebAPIHandlerWrapper( + func(tNode *transact.TransNode, params []byte) (int, proto.Message) { + + var jsonDataRsp []byte + pack := &webapiproto.ASGetAddress{ + Platform: "1", + SnId: 200, + } + + if !common.Config.IsDevMode { + return common.ResponseTag_ParamError, pack + } + + var msg *webapi.DebugTestReq + err := json.Unmarshal(params, &msg) + if err != nil { + logger.Logger.Error("Unmarshal webapi.PlatfromUpScoreReq error:", err) + return common.ResponseTag_ParamError, pack + } + + jsonRet := &webapi.DebugTestRsp{ + Success: false, + Code: 200, + Message: "未知错误", + } + + logger.Logger.Tracef("/api/platform/debug upScoreReqInfo%v", msg) + + player := PlayerMgrSington.GetPlayerBySnId(msg.Snid) + //玩家在线 + if player != nil { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + //b, err = webapi.API_ExchangeRecord(common.GetAppId(), msg) + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + + if msg.Rpc == 1 { + addCoin, _ := strconv.ParseInt(msg.Count, 10, 64) + player.AddCoin(addCoin, 0, 5555, "platform", "debug加钻石") + player.SendDiffData() + jsonRet.Data.Count = player.Coin + } else if msg.Rpc == 2 { + WelfareMgrSington.PigbankGetInfo(player) + } else if msg.Rpc == 3 { + WelfareMgrSington.PigbankTakeCoin(player) + } else if msg.Rpc == 4 { + WelfareMgrSington.DayResetPigBank(player) + } else if msg.Rpc == 5 { + WelfareMgrSington.DiamondBankGetInfo(player) + } else if msg.Rpc == 6 { + WelfareMgrSington.DiamondBankTakeCoin(player) + } else if msg.Rpc == 7 { + player.WelfData.PigBank.BankCoin = msg.Bankcoin + player.WelfData.PigBank.DayBuyTimes = msg.Daybuytimes + } else if msg.Rpc == 8 { + player.WelfData.DiamondBank.BankDiamond = float64(msg.Bankcoin) + player.WelfData.DiamondBank.DayBuyTimes = msg.Daybuytimes + } else if msg.Rpc == 9 { + addCoin, _ := strconv.ParseInt(msg.Count, 10, 64) + player.AddDiamond(addCoin, 0, 5555, "platform", "dubeg加钻石") + player.SendDiffData() + jsonRet.Data.Count = player.Diamond + } + + jsonDataRsp, err = json.Marshal(jsonRet) + tNode.TransRep.RetFiels = jsonDataRsp + tNode.Resume() + }), "/api/game/debug").Start() + } + + return common.ResponseTag_TransactYield, pack + })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/game/exchange_create", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAWebCreateExchange{ diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index a0d0a49..75a6a77 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -290,7 +290,7 @@ func (this *WelfareMgr) OnDayChanged(player *Player) error { logger.Logger.Tracef("OnDayChanged SCGetReliefFund snid: %v pack: %v", player.SnId, pack) // 重置存钱罐 - this.DayResetPigrank(player) + this.DayResetPigBank(player) return nil } @@ -1700,6 +1700,10 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { return 0 } + if common.Config.IsDevMode { + p.AddCoin(70000, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取金币") + p.AddDiamond(4000, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取金币") + } /* fGetCostDiamond := func(taketimes int32) int64 { pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() for _, data := range pool { @@ -1711,40 +1715,59 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { }*/ if p.WelfData.PigBank == nil { - p.WelfData.PigBank = &model.PigBankData{} - } - - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() - infoData := pool[0] - for _, data := range pool { - if data == nil { - continue - } - if p.WelfData.PigBank.DayBuyTimes+1+1 >= data.BuyCountMin && p.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { - infoData = data - break + p.WelfData.PigBank = &model.PigBankData{ + TakeRecord: make(map[int32]int64, 8), } } - BankMaxCoin := int64(0) + if p.WelfData.PigBank.TakeRecord == nil { + p.WelfData.PigBank.TakeRecord = make(map[int32]int64, 8) + } + + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + //infoData := pool[0] + //for _, data := range pool { + // if data == nil { + // continue + // } + // + // if p.WelfData.PigBank.DayBuyTimes+1+1 >= data.BuyCountMin && p.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { + // infoData = data + // break + // } + //} + + DayBuyMaxCnt := fGetPropValue("DayBuyMaxCnt") for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() { if data == nil { continue } - if p.WelfData.PigBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { - BankMaxCoin = int64(data.MaxGold) - break + + bankInfo := &welfare.PigBankCoinInfo{ + GoldExc: make(map[int64]int64), } + + bankInfo.IndexId = data.Id + bankInfo.CostDiamond = int64(data.CostDiamond) + bankInfo.DayBuyMaxCnt = DayBuyMaxCnt + bankInfo.Price = int64(data.CoinPrice) + bankInfo.BankMaxCoin = int64(data.MaxGold) + bankInfo.GoldExc = data.GoldExc + + if takeRecorcd, exist := p.WelfData.PigBank.TakeRecord[data.Id]; exist { + bankInfo.TakeCoin = takeRecorcd + } + + pack.InfoArr = append(pack.InfoArr, bankInfo) } + if p.WelfData != nil && p.WelfData.PigBank != nil { pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess pack.BankCoin = p.WelfData.PigBank.BankCoin pack.TakeTimes = p.WelfData.PigBank.DayBuyTimes - pack.CostDiamond = int64(infoData.CostDiamond) - pack.BankMaxCoin = BankMaxCoin - pack.DayBuyMaxCnt = fGetPropValue("DayBuyMaxCnt") - pack.Price = int64(infoData.CoinPrice) + logger.Logger.Tracef("PigbankGetInfo snid: %v pack: %v", p.SnId, pack) + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankGetInfo), pack) } } @@ -1776,7 +1799,13 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { }*/ if p.WelfData.PigBank == nil { - p.WelfData.PigBank = &model.PigBankData{} + p.WelfData.PigBank = &model.PigBankData{ + TakeRecord: make(map[int32]int64, 8), + } + } + + if p.WelfData.PigBank.TakeRecord == nil { + p.WelfData.PigBank.TakeRecord = make(map[int32]int64, 8) } pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() @@ -1806,9 +1835,6 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { if p.WelfData != nil && p.WelfData.PigBank != nil { - pack.CostDiamond = int64(infoData.CostDiamond) - pack.BankMaxCoin = BankMaxCoin - // 检查每日领取次数 if p.WelfData.PigBank.DayBuyTimes >= DayBuyMaxCnt { pack.OpRetCode = welfare.OpResultCode_OPRC_PigbankOverTakeTimes @@ -1849,15 +1875,38 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { p.AddCoin(p.WelfData.PigBank.BankCoin, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取金币") + if infoData.GoldExc != nil { + // 发放奖励道具 + var items []*model.Item + for k, v := range infoData.GoldExc { + items = append(items, &model.Item{ + ItemId: int32(k), + ItemNum: v, + }) + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + Add: 0, + GainWay: common.GainWayItem_PigBankTakeCoin, + Operator: "system", + Remark: "购买金币存钱罐奖励道具", + GameId: 0, + GameFreeId: 0, + }) + } + // 领取完之后 设置为0 p.WelfData.PigBank.BankCoin = 0 p.WelfData.PigBank.TakeTimes++ p.WelfData.PigBank.DayBuyTimes++ + if p.WelfData.PigBank.TakeRecord != nil { + p.WelfData.PigBank.TakeRecord[infoData.Id] = p.WelfData.PigBank.BankCoin + } + pack.TakeTimes = p.WelfData.PigBank.DayBuyTimes - pack.CostDiamond = int64(infoData.CostDiamond) - pack.DayBuyMaxCnt = DayBuyMaxCnt - pack.Price = int64(infoData.CoinPrice) logger.Logger.Tracef("PigbankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_CoinPigBank, 1)) @@ -1865,15 +1914,16 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } // 每日重置存钱罐属性 -func (this *WelfareMgr) DayResetPigrank(p *Player) { +func (this *WelfareMgr) DayResetPigBank(p *Player) { if p != nil && p.WelfData != nil && p.WelfData.PigBank != nil { p.WelfData.PigBank.DayBuyTimes = 0 - + p.WelfData.PigBank.TakeRecord = make(map[int32]int64, 8) this.PigbankGetInfo(p) } if p != nil && p.WelfData != nil && p.WelfData.DiamondBank != nil { p.WelfData.DiamondBank.DayBuyTimes = 0 + p.WelfData.DiamondBank.TakeRecord = make(map[int32]int64, 8) this.DiamondBankGetInfo(p) } } @@ -1894,32 +1944,48 @@ func (this *WelfareMgr) DiamondBankGetInfo(p *Player) { } pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() - infoData := pool[0] + //infoData := pool[0] if p.WelfData.DiamondBank == nil { - p.WelfData.DiamondBank = &model.DiamondBankData{} + p.WelfData.DiamondBank = &model.DiamondBankData{ + TakeRecord: make(map[int32]int64, 8), + } } + + if p.WelfData.DiamondBank.TakeRecord == nil { + p.WelfData.DiamondBank.TakeRecord = make(map[int32]int64, 8) + } + + DayBuyMaxCntDiamond := fGetPropValue("DayBuyMaxCntDiamond") for _, data := range pool { if data == nil { continue } - if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax { - infoData = data - break - } - } - BankMaxCoin := infoData.MaxDiamond + bankInfo := &welfare.PigBankDiamondInfo{ + DiamondExc: make(map[int64]int64), + } + + bankInfo.IndexId = data.Id + bankInfo.BankMaxDiamond = int64(data.MaxDiamond) + bankInfo.DayBuyMaxCnt = DayBuyMaxCntDiamond + bankInfo.Price = int64(data.DiamondPrice) + bankInfo.NowPrice = int64(data.DiamondNowPrice) + bankInfo.ShopId = data.DiamondId + bankInfo.DiamondExc = data.DiamondExc + + if takeRecorcd, exist := p.WelfData.DiamondBank.TakeRecord[data.Id]; exist { + bankInfo.TakeDiamond = float64(takeRecorcd) + } + + pack.InfoArr = append(pack.InfoArr, bankInfo) + } if p.WelfData != nil && p.WelfData.DiamondBank != nil { bankDiamond := math.Floor(p.WelfData.DiamondBank.BankDiamond*10000) / 10000 pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess pack.BankDiamond = bankDiamond pack.TakeTimes = p.WelfData.DiamondBank.DayBuyTimes - pack.BankMaxCoin = int64(BankMaxCoin) - pack.DayBuyMaxCnt = fGetPropValue("DayBuyMaxCntDiamond") - pack.Price = int64(infoData.DiamondPrice) - pack.NowPrice = int64(infoData.DiamondNowPrice) - pack.ShopId = infoData.DiamondId + logger.Logger.Tracef("DiamondBankGetInfo snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCDiamondBankGetInfo), pack) } @@ -1930,15 +1996,7 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { pack := &welfare.SCDiamondBankTakeDiamond{ OpRetCode: welfare.OpResultCode_OPRC_Error, } - fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() - for _, PropItem := range pool { - if PropItem.PorpName == propName { - return PropItem.PropValue - } - } - return 0 - } + pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() infoData := pool[0] for _, data := range pool { @@ -1949,12 +2007,21 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { } BankMaxDiamond := int64(infoData.MaxDiamond) - DayBuyMaxCnt := fGetPropValue("DayBuyMaxCntDiamond") + if p.WelfData.DiamondBank == nil { + p.WelfData.DiamondBank = &model.DiamondBankData{ + TakeRecord: make(map[int32]int64, 8), + } + } - if p.WelfData != nil && p.WelfData.PigBank != nil { + if p.WelfData.DiamondBank.TakeRecord == nil { + p.WelfData.DiamondBank.TakeRecord = make(map[int32]int64, 8) + } + + if p.WelfData != nil && p.WelfData.DiamondBank != nil { if p.WelfData.DiamondBank.BankDiamond >= float64(BankMaxDiamond) { p.WelfData.DiamondBank.BankDiamond = float64(BankMaxDiamond) } + pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess addDiamond := int64(math.Ceil(p.WelfData.DiamondBank.BankDiamond)) p.AddDiamond(addDiamond, 0, common.GainWay_PigrankGainDiamond, "sys", "存钱罐领取钻石") @@ -1963,10 +2030,35 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { Num: 1, }) + // 发放奖励道具 + if infoData.DiamondExc != nil { + var items []*model.Item + for k, v := range infoData.DiamondExc { + items = append(items, &model.Item{ + ItemId: int32(k), + ItemNum: v, + }) + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + Add: 0, + GainWay: common.GainWayItem_PigBankTakeDiamond, + Operator: "system", + Remark: "购买钻石存钱罐奖励道具", + GameId: 0, + GameFreeId: 0, + }) + } + // 领取完之后 设置为0 p.WelfData.DiamondBank.BankDiamond = 0.0 p.WelfData.DiamondBank.TakeTimes++ p.WelfData.DiamondBank.DayBuyTimes++ + if p.WelfData.DiamondBank.TakeRecord != nil { + p.WelfData.DiamondBank.TakeRecord[infoData.Id] = addDiamond + } for _, data := range pool { if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax { @@ -1974,13 +2066,10 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { break } } - pack.BankMaxDiamond = int64(infoData.MaxDiamond) + pack.TakeTimes = p.WelfData.DiamondBank.DayBuyTimes - pack.DayBuyMaxCnt = DayBuyMaxCnt pack.TakeDiamondNum = float64(addDiamond) - pack.Price = int64(infoData.DiamondPrice) - pack.NowPrice = int64(infoData.DiamondNowPrice) - pack.ShopId = infoData.DiamondId + logger.Logger.Tracef("DiamondBankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCDiamondBankTakeDiamond), pack) } diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index 5d613b4079a35acbbbdb0c634788e7d4ebea2733..6df38f19cf37c13c45b0a3d1e86c380e0cc99427 100644 GIT binary patch delta 26607 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 delta 26615 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 Mg`y`!B>t!TUpOby-v9sr diff --git a/xlsx/DB_PigBank_Diamond.xlsx b/xlsx/DB_PigBank_Diamond.xlsx index 9d17b20942128391e2aea516828bc9b244194dd6..2e382afd2970e294dc2c30bab9c222dae34e32c9 100644 GIT binary patch delta 3362 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 E0o(=t8~^|S delta 3114 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 Date: Fri, 27 Dec 2024 02:14:57 +0000 Subject: [PATCH 3/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0.gitlab-ci.yml=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e2f6f58..49774e1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,14 +2,13 @@ stages: - lock - build - save - - sync - unlock variables: - ProjectPath: "mongo.games.com/game" # 项目相对于GOPATH的路径 + 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: @@ -42,19 +41,18 @@ build-job: 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 download; fi - | while IFS= read -r line || [[ -n $line ]] @@ -71,7 +69,6 @@ save-job: - develop - release script: - - cd $GOPATH/src/$ProjectPath # 拷贝文件 - echo '拷贝文件' - rm -rf ./temp @@ -138,6 +135,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 6a0e1e5e90e721071564aaf60218397e5dd070a5 Mon Sep 17 00:00:00 2001 From: skeleton Date: Fri, 27 Dec 2024 02:16:40 +0000 Subject: [PATCH 4/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0.gitlab-ci.yml=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 49774e1..d98641a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -92,45 +92,6 @@ 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"; - REMOTE_USER="$REMOTE_USER_DEVELOP"; - ServerName="develop"; - BinPath="$DevelopBinPath"; - elif [ "$CI_COMMIT_BRANCH" == "release" ]; then - SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_BETA"; - REMOTE_HOST="$REMOTE_HOST_BETA"; - REMOTE_USER="$REMOTE_USER_BETA"; - ServerName="beta"; - BinPath="$BetaBinPath"; - else - echo "不支持的分支"; - exit 1; - fi - - # 设置 .ssh 目录并写入 SSH 私钥 - - echo "设置 SSH keys..." - - mkdir -p ~/.ssh - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa - - chmod 600 ~/.ssh/id_rsa - - ssh-keyscan -H "$REMOTE_HOST" >> ~/.ssh/known_hosts - - # 使用 rsync 将文件同步到远程服务器 - - 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" - # 解锁作业,释放锁定 unlock_job: stage: unlock From a5bed973a59468882171c009a7eff077a1b00eb4 Mon Sep 17 00:00:00 2001 From: skeleton Date: Fri, 27 Dec 2024 02:18:47 +0000 Subject: [PATCH 5/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0.gitlab-ci.yml=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d98641a..cdb4811 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,11 +25,11 @@ lock_job: stage: lock script: - | - if [ -f /tmp/ci_lock/$CI_COMMIT_REF_NAME ]; then + if [ -f /tmp/ci_lock_$CI_COMMIT_REF_NAME ]; then echo "流水线($CI_COMMIT_REF_NAME)已在运行,等待..." exit 1 else - touch /tmp/ci_lock/$CI_COMMIT_REF_NAME + touch /tmp/ci_lock_$CI_COMMIT_REF_NAME echo "获得锁定,开始流水线($CI_COMMIT_REF_NAME)。" fi @@ -96,6 +96,6 @@ save-job: unlock_job: stage: unlock script: - - rm -f /tmp/ci_lock/$CI_COMMIT_REF_NAME + - rm -f /tmp/ci_lock_$CI_COMMIT_REF_NAME - echo "释放锁定,流水线结束(/$CI_COMMIT_REF_NAME)。" when: always \ No newline at end of file From f1a580bce50278002be489a5fda922e072538c81 Mon Sep 17 00:00:00 2001 From: "DESKTOP-45ANQ2C\\unis" <121212121@qq.com> Date: Fri, 27 Dec 2024 10:19:31 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=AD=98=E9=92=B1=E7=BD=90=E5=8F=96?= =?UTF-8?q?=E5=87=BA=E8=B0=83=E8=AF=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_PigBank_Diamond.dat | 4 ++-- worldsrv/welfmgr.go | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index c40b846..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(22Ÿ8@;JƸJPdX` \ No newline at end of file +< ((2Ÿ28@;JƸJPdX` +?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 75a6a77..bf8135d 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -1118,7 +1118,7 @@ func (this *WelfareMgr) BlindBoxInfo(p *Player, bid int32) { if cyc == 1 || blindBox.Cycle == model.WelfareOpen { p.WelfData.BlindBoxId = 0 } - } // == 1代表当日循环 + } // == 1代表当日循环 if p.WelfData.BlindBoxId == 0 { // 未领取过发随机Date idx := bid @@ -1700,10 +1700,6 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { return 0 } - if common.Config.IsDevMode { - p.AddCoin(70000, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取金币") - p.AddDiamond(4000, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取金币") - } /* fGetCostDiamond := func(taketimes int32) int64 { pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() for _, data := range pool { From 91e5b732c121a89680995cc5b75b38dbae188037 Mon Sep 17 00:00:00 2001 From: skeleton Date: Fri, 27 Dec 2024 02:30:18 +0000 Subject: [PATCH 7/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0.gitlab-ci.yml=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cdb4811..d005f2d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,7 @@ stages: - unlock variables: + GOPROXY: "https://goproxy.cn,direct" GOPATH: "/home/gopath" GoServerSrcPath: "mongo.games.com/goserver" # 项目相对于GOPATH/src的路径 BetaBinPath: "/home/game/" # beta环境部署路径