活动优化 + 错误码补充

This commit is contained in:
meixiongfeng 2023-08-09 18:07:56 +08:00
parent bda8c44208
commit 0d9e9f86a0
8 changed files with 128 additions and 59 deletions

View File

@ -4,6 +4,7 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go_dreamfactory/utils"
)
//参数校验
@ -22,6 +23,7 @@ func (this *apiComp) GetLattice(session comm.IUserSession, req *pb.UiGameGetLatt
hdData *pb.DBLatticeData // 玩家的活动数据
update map[string]interface{} //
)
update = make(map[string]interface{})
curTime := configure.Now().Unix()
if activity, err = this.module.ModuleActivity.GetHdInfoByHdId(req.Hdid); err != nil { // 活动不存在
errdata = &pb.ErrorData{
@ -40,22 +42,38 @@ func (this *apiComp) GetLattice(session comm.IUserSession, req *pb.UiGameGetLatt
// 获取玩家活动数据
hdData, _ = this.module.modelLattice.getLatticeList(session.GetUserId(), activity.Id)
if e, err := this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
if e, err := this.module.ModuleUser.GetUserExpand(session.GetUserId()); err == nil {
if conf, err := this.module.configure.GetLatticeConsumConf(); err != nil {
if conf, err := this.module.configure.GetLatticeConsumConf(); err == nil {
bchange := false
// 清除每日获得的碎片数据
if !utils.IsToday(hdData.Lasttime) {
hdData.Lasttime = configure.Now().Unix()
hdData.Val = 0
update["val"] = hdData.Val
update["lasttime"] = hdData.Lasttime
bchange = true
}
if conf.Getmax > hdData.Val { // 超过今日上限
if e.ConsumPs/conf.Usepawer >= hdData.Val {
hdData.Val = e.ConsumPs / conf.Usepawer
if conf.Getmax < hdData.Val { // 超过今日上限
hdData.Val = conf.Getmax
update["val"] = hdData.Val
this.module.ModuleUser.ChangeUserExpand(session.GetUserId(), update) // 修改进度
bchange = true
}
}
}
if bchange {
this.module.modelLattice.modifyLatticeListByObjId(session.GetUserId(), update)
}
}
}
this.LatticeReward(session, &pb.UiGameLatticeRewardReq{
Hdid: "64d4b1f7510317d189bb6ee5",
Id: 3,
})
session.SendMsg(string(this.module.GetType()), "getlattice", &pb.UiGameGetLatticeResp{Data: hdData})
return
}

View File

@ -4,6 +4,7 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go_dreamfactory/utils"
)
//参数校验
@ -22,6 +23,7 @@ func (this *apiComp) GetPuzzle(session comm.IUserSession, req *pb.UiGameGetPuzzl
hdData *pb.DBPuzzleData // 玩家的活动数据
update map[string]interface{} //
)
update = make(map[string]interface{})
curTime := configure.Now().Unix()
if activity, err = this.module.ModuleActivity.GetHdInfoByHdId(req.Hdid); err != nil { // 活动不存在
errdata = &pb.ErrorData{
@ -40,19 +42,31 @@ func (this *apiComp) GetPuzzle(session comm.IUserSession, req *pb.UiGameGetPuzzl
// 获取玩家活动数据
hdData, _ = this.module.modelPuzzle.getPuzzleList(session.GetUserId(), activity.Id)
if e, err := this.module.ModuleUser.GetUserExpand(session.GetUserId()); err != nil {
if e, err := this.module.ModuleUser.GetUserExpand(session.GetUserId()); err == nil {
if conf, err := this.module.configure.GetPuzzleConsumConf(); err != nil {
if conf, err := this.module.configure.GetPuzzleConsumConf(); err == nil {
bchange := false
// 清除每日获得的碎片数据
if !utils.IsToday(hdData.Lasttime) {
hdData.Lasttime = configure.Now().Unix()
hdData.Val = 0
update["val"] = hdData.Val
update["lasttime"] = hdData.Lasttime
bchange = true
}
if conf.Getmax > hdData.Val { // 超过今日上限
if e.ConsumPs/conf.Usepawer >= hdData.Val {
hdData.Val = e.ConsumPs / conf.Usepawer
if conf.Getmax < hdData.Val { // 超过今日上限
hdData.Val = conf.Getmax
update["val"] = hdData.Val
this.module.ModuleUser.ChangeUserExpand(session.GetUserId(), update) // 修改进度
bchange = true
}
}
}
if bchange {
this.module.modelPuzzle.modifyPuzzleListByObjId(session.GetUserId(), update)
}
}
}

View File

@ -37,9 +37,8 @@ func (this *apiComp) LatticeFinish(session comm.IUserSession, req *pb.UiGameLatt
list, _ := this.module.modelLattice.getLatticeList(session.GetUserId(), req.Hdid)
if list.BReward {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ActivityRepatReward,
Title: pb.ErrorCode_ActivityRepatReward.ToString(),
Message: err.Error(),
Code: pb.ErrorCode_ActivityRepatReward,
Title: pb.ErrorCode_ActivityRepatReward.ToString(),
}
return
}

View File

@ -24,7 +24,6 @@ func (this *apiComp) LatticeGrid(session comm.IUserSession, req *pb.UiGameLattic
return // 参数校验失败直接返回
}
var (
consum *cfg.Gameatn // 获取消耗
latticeConf *cfg.GameUiGameLatticeData
err error
atno []*pb.UserAtno
@ -37,19 +36,32 @@ func (this *apiComp) LatticeGrid(session comm.IUserSession, req *pb.UiGameLattic
session.SendMsg(string(this.module.GetType()), "latticegrid", &pb.UiGameLatticeGridResp{Data: list})
return
}
// 校验消耗
if conf, err = this.module.configure.GetLatticeConsumConf(); err != nil {
consum = &cfg.Gameatn{
A: conf.Itemget.A,
T: conf.Itemget.T,
N: 1,
if v1, ok := list.Lattice[list.Floor]; ok {
if _, ok := v1.Data[req.Grid]; ok {
errdata = &pb.ErrorData{ // 重复领取
Code: pb.ErrorCode_ActivityRepatReward,
Title: pb.ErrorCode_ActivityRepatReward.ToString(),
}
return
}
list.Lattice[list.Floor].Data[req.Grid] = 1
} else {
list.Lattice[list.Floor] = &pb.LatticeData{
Data: map[int32]int32{req.Grid: 1},
}
}
if errdata = this.module.ConsumeRes(session, []*cfg.Gameatn{consum}, true); errdata != nil {
return
// 校验消耗
if conf, err = this.module.configure.GetLatticeConsumConf(); err != nil {
if conf.Cost.N > 0 {
if errdata = this.module.CheckRes(session, []*cfg.Gameatn{conf.Cost}); errdata != nil { // 消耗校验
return
}
}
}
// 校验 是否是宝箱
latticeConf, err = this.module.configure.GetLatticeConf(list.Val)
latticeConf, err = this.module.configure.GetLatticeConf(list.Floor)
if err != nil {
return
}
@ -68,24 +80,27 @@ func (this *apiComp) LatticeGrid(session comm.IUserSession, req *pb.UiGameLattic
}
}
}
if errdata = this.module.ConsumeRes(session, []*cfg.Gameatn{conf.Cost}, true); errdata != nil {
return
}
update["lattice"] = list.Lattice
// 如果是下一关
if req.Grid == latticeConf.Outpos {
list.Val += 1
list.Floor += 1
// 校验是不是达到最大层数
if _, e := this.module.configure.GetLatticeConf(list.Val); e == nil {
list.Val -= 1
if _, e := this.module.configure.GetLatticeConf(list.Floor); e == nil {
list.Floor -= 1
}
update["val"] = list.Val
if list.Total < list.Val {
list.Total = list.Val
update["Floor"] = list.Floor
if list.Total < list.Floor {
list.Total = list.Floor
update["total"] = list.Total
}
}
list.Gotarr[req.Grid] = 1
// list.Gotarr[req.Grid] = 1
update["gotarr"] = list.Gotarr
this.module.ModuleUser.ChangeUserExpand(session.GetUserId(), update) // 修改进度
// update["gotarr"] = list.Gotarr
this.module.modelLattice.modifyLatticeListByObjId(session.GetUserId(), update)
session.SendMsg(string(this.module.GetType()), "latticegrid", &pb.UiGameLatticeGridResp{
Data: list,
Atno: atno,

View File

@ -34,8 +34,19 @@ func (this *apiComp) LatticeReward(session comm.IUserSession, req *pb.UiGameLatt
}
return
} else {
if len(conf.Openward) == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
return
}
list, _ := this.module.modelLattice.getLatticeList(session.GetUserId(), req.Hdid)
if _, ok := list.Gotarr[req.Id]; ok {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ActivityRepatReward,
Title: pb.ErrorCode_ActivityRepatReward.ToString(),
}
return
}

View File

@ -1,6 +1,7 @@
package uigame
import (
"fmt"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
@ -98,6 +99,7 @@ func (this *configureComp) GetLatticeConsumConf() (conf *cfg.GameUiGameConsumDat
this.module.Errorf("GetLatticeConsumConf conf not found key :puzzle")
return
}
func (this *configureComp) GetLatticeConf(id int32) (conf *cfg.GameUiGameLatticeData, err error) {
var (
v interface{}
@ -109,6 +111,7 @@ func (this *configureComp) GetLatticeConf(id int32) (conf *cfg.GameUiGameLattice
}
}
}
err = fmt.Errorf("GetLatticeConf conf not found key :%d", id)
this.module.Errorf("GetLatticeConf conf not found key :%d", id)
return
}

View File

@ -39,11 +39,11 @@ func (this *modelLattice) getLatticeList(uid string, hid string) (result *pb.DBL
Gotarr: map[int32]int32{},
Lattice: map[int32]*pb.LatticeData{},
Lasttime: 0,
Val: 1, //默认1层
Floor: 1, //默认1层
Total: 1,
}
err = nil
this.module.modelPuzzle.Add(uid, result)
this.module.modelLattice.Add(uid, result)
}
return
}

View File

@ -175,9 +175,10 @@ type DBLatticeData struct {
Gotarr map[int32]int32 `protobuf:"bytes,4,rep,name=gotarr,proto3" json:"gotarr" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 奖励领取状态
Lattice map[int32]*LatticeData `protobuf:"bytes,5,rep,name=lattice,proto3" json:"lattice" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 迷宫数据
Lasttime int64 `protobuf:"varint,6,opt,name=lasttime,proto3" json:"lasttime"`
Val int32 `protobuf:"varint,7,opt,name=val,proto3" json:"val"` // 当前第几层
Val int32 `protobuf:"varint,7,opt,name=val,proto3" json:"val"` // 今天获得N个碎片
Total int32 `protobuf:"varint,8,opt,name=total,proto3" json:"total"` // 总的层数
BReward bool `protobuf:"varint,9,opt,name=bReward,proto3" json:"bReward"` // 总奖励
Floor int32 `protobuf:"varint,10,opt,name=floor,proto3" json:"floor"` // 当前第几层
}
func (x *DBLatticeData) Reset() {
@ -275,6 +276,13 @@ func (x *DBLatticeData) GetBReward() bool {
return false
}
func (x *DBLatticeData) GetFloor() int32 {
if x != nil {
return x.Floor
}
return 0
}
// 矿工
type DBMinerData struct {
state protoimpl.MessageState
@ -404,7 +412,7 @@ var file_uigame_uigame_db_proto_rawDesc = []byte{
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
0x95, 0x03, 0x0a, 0x0d, 0x44, 0x42, 0x4c, 0x61, 0x74, 0x74, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74,
0xab, 0x03, 0x0a, 0x0d, 0x44, 0x42, 0x4c, 0x61, 0x74, 0x74, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74,
0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x64, 0x6f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
@ -421,32 +429,33 @@ var file_uigame_uigame_db_proto_rawDesc = []byte{
0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x52, 0x65, 0x77,
0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x52, 0x65, 0x77, 0x61,
0x72, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x6f, 0x74, 0x61, 0x72, 0x72, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x48, 0x0a,
0x0c, 0x4c, 0x61, 0x74, 0x74, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c,
0x2e, 0x4c, 0x61, 0x74, 0x74, 0x69, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfa, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x4d, 0x69,
0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x64, 0x6f,
0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x64, 0x6f, 0x69, 0x64, 0x12,
0x30, 0x0a, 0x06, 0x67, 0x6f, 0x74, 0x61, 0x72, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x44, 0x42, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x47, 0x6f,
0x74, 0x61, 0x72, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x6f, 0x74, 0x61, 0x72,
0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20,
0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a,
0x03, 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x12,
0x18, 0x0a, 0x07, 0x62, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08,
0x52, 0x07, 0x62, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x6f, 0x74,
0x61, 0x72, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x6f, 0x74, 0x61,
0x72, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x1a, 0x48, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x74, 0x69, 0x63, 0x65, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x4c, 0x61, 0x74, 0x74, 0x69, 0x63, 0x65, 0x44, 0x61,
0x74, 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xfa, 0x01,
0x0a, 0x0b, 0x44, 0x42, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a,
0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a,
0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12,
0x14, 0x0a, 0x05, 0x68, 0x64, 0x6f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
0x68, 0x64, 0x6f, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x67, 0x6f, 0x74, 0x61, 0x72, 0x72, 0x18,
0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x4d, 0x69, 0x6e, 0x65, 0x72, 0x44,
0x61, 0x74, 0x61, 0x2e, 0x47, 0x6f, 0x74, 0x61, 0x72, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x06, 0x67, 0x6f, 0x74, 0x61, 0x72, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x74,
0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x74,
0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a,
0x39, 0x0a, 0x0b, 0x47, 0x6f, 0x74, 0x61, 0x72, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (