上传代码

This commit is contained in:
liwei1dao 2023-10-18 18:33:23 +08:00
parent 30d9457ae0
commit d377ecca4b
11 changed files with 1741 additions and 1194 deletions

View File

@ -100,7 +100,7 @@ func ProtoMarshal(rsp proto.Message, msg *pb.UserMessage) (ok bool) {
return true
}
// / 参数 权重数组 返回值 数组下标
//参数 权重数组 返回值 数组下标
func GetRandW(sz []int32) int32 {
if len(sz) > 0 {
var _totalW int64 // 总权重

View File

@ -731,6 +731,7 @@ func (this *modelBattleComp) createBattleRole(hero *pb.DBHero, vlv int32, tid, p
if hero.Ispasson && vlv > 0 {
hero = this.module.ModuleHero.GetVirtualHero(hero, vlv)
role.Lv = hero.Lv
}
for k, v := range hero.Property {

View File

@ -2,12 +2,14 @@ package parkour
import (
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/modules/parkour/ai"
"go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"sync"
"time"
)
/*
@ -17,9 +19,10 @@ type aiComp struct {
cbase.ModuleCompBase
service core.IService
module *Parkour
conf []*cfg.GameBuzkashiGradeData
avoidConf []*cfg.GameBuzkashiGradeData
shotConf []*cfg.GameBuzkashiQteLvData
lock sync.RWMutex
ais map[string][]*ai.AI
ais map[string][]*AI
}
//组件初始化接口
@ -27,16 +30,19 @@ func (this *aiComp) Init(service core.IService, module core.IModule, comp core.I
this.ModuleCompBase.Init(service, module, comp, options)
this.module = module.(*Parkour)
this.service = service
this.ais = make(map[string][]*ai.AI)
this.ais = make(map[string][]*AI)
return
}
func (this *aiComp) Start() (err error) {
err = this.ModuleCompBase.Start()
if this.conf, err = this.module.configure.getGameBuzkashiGrades(); err != nil {
if this.avoidConf, err = this.module.configure.getGameBuzkashiGrades(); err != nil {
return
}
// timewheel.AddCron(time.Second*3, this.aihandle)
if this.shotConf, err = this.module.configure.getGameBuzkashiQteLvs(); err != nil {
return
}
timewheel.AddCron(time.Second, this.run)
return
}
@ -44,7 +50,7 @@ func (this *aiComp) Start() (err error) {
func (this *aiComp) createAi(battleid string, btype pb.RaceType, users []*pb.DBRaceMember) (err error) {
var (
ok bool
ais []*ai.AI
ais []*AI
conf *cfg.GameBukashiAiData
)
if battleid == "" || users == nil || len(users) == 0 {
@ -59,12 +65,12 @@ func (this *aiComp) createAi(battleid string, btype pb.RaceType, users []*pb.DBR
err = fmt.Errorf("battle:%s already exists", battleid)
return
}
ais = make([]*ai.AI, len(users))
ais = make([]*AI, len(users))
for i, v := range users {
if conf, err = this.module.configure.getgameBukashiAiDataByDan(int32(btype), v.Dan); err != nil {
return
}
ais[i] = ai.NewAI(battleid, v.Uid, conf)
ais[i] = NewAI(battleid, v.Uid, conf)
}
this.lock.Lock()
@ -80,45 +86,115 @@ func (this *aiComp) removeAi(battleid string) {
this.lock.Unlock()
}
//ai自动化
// func (this *aiComp) aihandle(task *timewheel.Task, args ...interface{}) {
// var (
// ok bool
// ais map[string][]*AI = make(map[string][]*AI)
// )
// this.lock.RLock()
// if len(this.ais) > 0 {
// ok = true
// for k, v := range this.ais {
// ais[k] = v
// }
// }
// this.lock.RUnlock()
// if ok {
// for id, member := range ais {
// for _, ai := range member {
// if time.Now().Sub(ai.LastTime) > ai.Interval {
// switch ai.Handle[ai.CurrIndex] {
// case AIHandle_Avoid0: //躲避障碍 失败
// go this.module.avoid(id, ai.UId, nil)
// break
// case AIHandle_Avoid1: //躲避障碍 成功
// go this.module.avoid(id, ai.UId, this.conf[1])
// break
// case AIHandle_Avoid2: //躲避障碍 完美
// go this.module.avoid(id, ai.UId, this.conf[0])
// break
// case AIHandle_Shots0: //射门 失败
// break
// case AIHandle_Shots1: //射门 成功
// go this.module.shot(id, ai.UId)
// break
// }
// ai.LastTime = time.Now()
// ai.CurrIndex++
// ai.CurrIndex = ai.CurrIndex % int32(len(ai.Handle))
// }
// }
// }
// }
// }
func (this *aiComp) run(task *timewheel.Task, args ...interface{}) {
var (
ais []*AI
)
this.lock.Lock()
for _, v := range this.ais {
ais = append(ais, v...)
}
this.lock.Unlock()
for _, v := range ais {
this.ExceAi(v)
}
}
//执行ai
func (this *aiComp) ExceAi(_ai *AI) {
var (
handle []*AIHandle
weights []int32
indexhandle int32
currhandle *AIHandle
)
_ai.CD = _ai.CD - 1
if _ai.CD > 0 {
return
}
for _, v := range _ai.Handles {
v.cd -= _ai.Conf.BehaviorCD
if v.cd <= 0 {
handle = append(handle, v)
weights = append(weights, v.weight)
}
}
if len(handle) > 0 {
return
}
indexhandle = comm.GetRandW(weights)
currhandle = handle[indexhandle]
switch currhandle.htype {
case AIHandle_Null:
break
case AIHandle_Avoid:
this.ExceAiHandle_Avoid(_ai, currhandle)
break
case AIHandle_Shot:
this.ExceAiHandle_Shot(_ai, currhandle)
break
case AIHandle_AddBlood:
this.ExceAiHandle_AddBlood(_ai, currhandle)
break
}
}
//躲避障碍
func (this *aiComp) ExceAiHandle_Avoid(_ai *AI, handle *AIHandle) {
var (
weights []int32 = make([]int32, 0)
conf *cfg.GameBuzkashiGradeData
indexhandle int32
)
weights = append(weights, _ai.Conf.BumpFailWeight)
weights = append(weights, _ai.Conf.BumpSuccessWeight...)
indexhandle = comm.GetRandW(weights)
if indexhandle == 0 { //失败
go this.module.avoid(_ai.Bid, _ai.Uid, nil)
} else {
conf = this.avoidConf[indexhandle-1]
go this.module.avoid(_ai.Bid, _ai.Uid, conf)
}
handle.cd = _ai.Conf.BumpCD
}
//射门
func (this *aiComp) ExceAiHandle_Shot(_ai *AI, handle *AIHandle) {
var (
weights []int32 = make([]int32, 0)
conf *cfg.GameBuzkashiQteLvData
indexhandle int32
)
weights = append(weights, _ai.Conf.CatchQteFailWeight)
weights = append(weights, _ai.Conf.CatchQteSuccessWeight...)
indexhandle = comm.GetRandW(weights)
if indexhandle == 0 { //失败
go this.module.qte(_ai.Bid, _ai.Uid, nil)
} else {
conf = this.shotConf[indexhandle-1]
go func() {
this.module.qte(_ai.Bid, _ai.Uid, conf)
this.module.shot(_ai.Bid, _ai.Uid)
}()
}
handle.cd = _ai.Conf.CatchQteCD
}
//加血
func (this *aiComp) ExceAiHandle_AddBlood(_ai *AI, handle *AIHandle) {
var (
weights []int32 = make([]int32, 0)
indexhandle int32
)
weights = append(weights, _ai.Conf.HpBumpFailWeight)
weights = append(weights, _ai.Conf.HpBumpSuccessWeight)
indexhandle = comm.GetRandW(weights)
if indexhandle > 0 { //失败
go this.module.recoverhp(_ai.Bid, _ai.Uid, this.module.ModuleTools.GetGlobalConf().BuzkashiHpbumphp)
}
handle.cd = _ai.Conf.CatchQteCD
}

View File

@ -1,46 +0,0 @@
package ai
import (
cfg "go_dreamfactory/sys/configure/structs"
)
type AILevel int32
const (
AILevelS AILevel = iota
AILevelSS
AILevelSSS
)
type AIHandleType int32
const (
AIHandle_Null AIHandleType = iota //空操作
AIHandle_Avoid //躲避障碍
AIHandle_Shot //射门
AIHandle_AddBlood //加血
)
type AIHandle struct {
htype AIHandleType
cd int32
weight int32
}
//捕羊大赛AI对象
type AI struct {
Bid string //战场id
Uid string //用户id
Conf *cfg.GameBukashiAiData //配置
Handles []*AIHandle //操作列表
Lastopttime int64 //最后一次操作时间
}
func NewAI(battleid string, uid string, conf *cfg.GameBukashiAiData) (_ai *AI) {
_ai = &AI{
Bid: battleid,
Uid: uid,
Conf: conf,
}
return
}

View File

@ -40,7 +40,7 @@ func (this *apiComp) RecoverHp(session comm.IUserSession, req *pb.ParkourRecover
}
}
//恢复hp
go this.module.recoverhp(req.Battleid, 1, users...)
go this.module.recoverhp(req.Battleid, req.Uid, this.module.ModuleTools.GetGlobalConf().BuzkashiHpbumphp)
} else {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,

View File

@ -100,6 +100,18 @@ func (this *configureComp) getGameBuzkashiGrade(distance int32) (configure *cfg.
return
}
func (this *configureComp) getGameBuzkashiQteLvs() (confs []*cfg.GameBuzkashiQteLvData, err error) {
var (
v interface{}
)
if v, err = this.GetConfigure(game_buzkashiqtelv); err != nil {
this.module.Errorf("err:%v", err)
return
} else {
confs = v.(*cfg.GameBuzkashiQteLv).GetDataList()
}
return
}
func (this *configureComp) getGameBuzkashiQteLv(time float32) (configure *cfg.GameBuzkashiQteLvData, err error) {
var (
v interface{}
@ -119,6 +131,7 @@ func (this *configureComp) getGameBuzkashiQteLv(time float32) (configure *cfg.Ga
}
return
}
func (this *configureComp) getgameBukashiAiData(id int32) (conf *cfg.GameBukashiAiData, err error) {
var (
v interface{}

View File

@ -4,6 +4,7 @@ import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/timewheel"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"sync"
)
@ -25,3 +26,65 @@ type RaceItem struct {
BuleScore int32 //蓝方分值
overtimer *timewheel.Task //准备倒计时定时器
}
type AILevel int32
const (
AILevelS AILevel = iota
AILevelSS
AILevelSSS
)
type AIHandleType int32
const (
AIHandle_Null AIHandleType = iota //空操作
AIHandle_Avoid //躲避障碍
AIHandle_Shot //射门
AIHandle_AddBlood //加血
)
type AIHandle struct {
htype AIHandleType
cd int32
weight int32
}
func NewAI(battleid string, uid string, conf *cfg.GameBukashiAiData) (_ai *AI) {
_ai = &AI{
Bid: battleid,
Uid: uid,
Conf: conf,
Handles: make([]*AIHandle, 0),
CD: conf.BehaviorCD,
}
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_Null,
weight: conf.EmptyWeight,
})
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_Avoid,
weight: conf.BumpWeight,
cd: conf.BumpCD,
})
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_AddBlood,
weight: conf.HpBumpWeight,
cd: conf.HpBumpCD,
})
_ai.Handles = append(_ai.Handles, &AIHandle{
htype: AIHandle_Shot,
weight: conf.CatchQteWeight,
cd: conf.CatchQteCD,
})
return
}
//捕羊大赛AI对象
type AI struct {
Bid string //战场id
Uid string //用户id
Conf *cfg.GameBukashiAiData //配置
Handles []*AIHandle //操作列表
CD int32 //CD
}

View File

@ -224,12 +224,14 @@ func (this *Parkour) startbattle(id string) {
}
// 射门
func (this *Parkour) qte(id string, uid string, conf *cfg.GameBuzkashiQteLvData) {
this.Debug("qte", log.Field{Key: "id", Value: id})
func (this *Parkour) qte(id string, uid string, time float32, conf *cfg.GameBuzkashiQteLvData) {
this.Debug("qte", log.Field{Key: "id", Value: id}, log.Field{Key: "time", Value: time})
var (
battle *RaceItem
side int32
ok bool
member *pb.DBRaceMember
teamScores int32
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
)
@ -242,6 +244,7 @@ func (this *Parkour) qte(id string, uid string, conf *cfg.GameBuzkashiQteLvData)
ok = true
v.Scores += conf.Value
side = 1
member = v
}
}
if !ok {
@ -250,21 +253,26 @@ func (this *Parkour) qte(id string, uid string, conf *cfg.GameBuzkashiQteLvData)
ok = true
v.Scores += conf.Value
side = 2
member = v
}
}
}
if side == 1 {
battle.RedScore += conf.Value
teamScores = battle.RedScore
} else {
battle.BuleScore += conf.Value
teamScores = battle.BuleScore
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "scorechanage", &pb.ParkourScoreChanagePush{
Redscore: battle.RedScore,
Bluescore: battle.BuleScore,
if err = this.SendMsgToSession(string(this.GetType()), "qteoperate", &pb.ParkourQTEOperatePush{
Uid: uid,
Time: time,
Teamscore: teamScores,
Playerscore: member.Scores,
}, sessions...); err != nil {
this.Errorln(err)
}
@ -278,6 +286,8 @@ func (this *Parkour) shot(id string, uid string) {
battle *RaceItem
side int32
ok bool
member *pb.DBRaceMember
teamScores int32
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
)
@ -290,6 +300,7 @@ func (this *Parkour) shot(id string, uid string) {
v.Scores += this.ModuleTools.GetGlobalConf().BuzkashiGoalscore
ok = true
side = 1
member = v
}
}
if !ok {
@ -298,20 +309,25 @@ func (this *Parkour) shot(id string, uid string) {
v.Scores += this.ModuleTools.GetGlobalConf().BuzkashiGoalscore
ok = true
side = 2
member = v
}
}
}
if side == 1 {
battle.RedScore += this.ModuleTools.GetGlobalConf().BuzkashiGoalteamscore
teamScores = battle.RedScore
} else {
battle.BuleScore += this.ModuleTools.GetGlobalConf().BuzkashiGoalteamscore
teamScores = battle.BuleScore
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "scorechanage", &pb.ParkourScoreChanagePush{
Redscore: battle.RedScore,
Bluescore: battle.BuleScore,
if err = this.SendMsgToSession(string(this.GetType()), "shotoperate", &pb.ParkourShotOperatePush{
Uid: uid,
Shotnum: member.Shot,
Teamscore: teamScores,
Playerscore: member.Scores,
}, sessions...); err != nil {
this.Errorln(err)
}
@ -319,12 +335,14 @@ func (this *Parkour) shot(id string, uid string) {
}
// 躲避障碍物
func (this *Parkour) avoid(id string, uid string, conf *cfg.GameBuzkashiGradeData) {
func (this *Parkour) avoid(id string, uid string, distance float32, conf *cfg.GameBuzkashiGradeData) {
this.Debug("shot", log.Field{Key: "id", Value: id})
var (
battle *RaceItem
winSide int32
ok bool
member *pb.DBRaceMember
teamScores int32
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
)
@ -337,6 +355,8 @@ func (this *Parkour) avoid(id string, uid string, conf *cfg.GameBuzkashiGradeDat
if v.Uid == uid {
member = v
ok = true
winSide = 1
teamScores = battle.RedScore
}
}
if !ok {
@ -344,6 +364,8 @@ func (this *Parkour) avoid(id string, uid string, conf *cfg.GameBuzkashiGradeDat
if v.Uid == uid {
member = v
ok = true
winSide = 2
teamScores = battle.BuleScore
}
}
}
@ -358,21 +380,26 @@ func (this *Parkour) avoid(id string, uid string, conf *cfg.GameBuzkashiGradeDat
if conf == nil {
member.Currhp -= this.ModuleTools.GetGlobalConf().BuzkashiSpeedbumphp
member.Energy += conf.Energy
if member.Currhp <= 0 {
timewheel.Add(time.Second*time.Duration(this.ModuleTools.GetGlobalConf().BuzkashiResurrection), this.resurrectiontimer, battle.Id, member.Uid)
}
} else {
if err = this.SendMsgToSession(string(this.GetType()), "playerhpchanage", &pb.ParkourScoreChanagePush{
Redscore: battle.RedScore,
Bluescore: battle.BuleScore,
}, sessions...); err != nil {
this.Errorln(err)
member.Scores += conf.Value
member.Energy += conf.Energy
teamScores += conf.Matchvalue
if winSide == 1 {
battle.RedScore = teamScores
} else {
battle.BuleScore = teamScores
}
}
if err = this.SendMsgToSession(string(this.GetType()), "playerhpchanage", &pb.ParkourPlayerHPChanagePush{
Change: map[string]int32{uid: member.Currhp},
if err = this.SendMsgToSession(string(this.GetType()), "avoidoperate", &pb.ParkourAvoidOperatePush{
Uid: uid,
Hp: member.Currhp,
Distance: distance,
Teamscore: teamScores,
Playerscore: member.Scores,
}, sessions...); err != nil {
this.Errorln(err)
}
@ -380,12 +407,13 @@ func (this *Parkour) avoid(id string, uid string, conf *cfg.GameBuzkashiGradeDat
}
// 恢复hp值
func (this *Parkour) recoverhp(id string, hp int32, uids ...string) {
this.Debug("recoverhp", log.Field{Key: "id", Value: id}, log.Field{Key: "hp", Value: hp}, log.Field{Key: "uids", Value: uids})
func (this *Parkour) recoverhp(id string, uid string, hp int32) {
this.Debug("recoverhp", log.Field{Key: "id", Value: id}, log.Field{Key: "hp", Value: hp}, log.Field{Key: "uid", Value: uid})
var (
battle *RaceItem
ok bool
chanage map[string]int32 = make(map[string]int32)
player *pb.DBRaceMember
teamScores int32
sessions []comm.IUserSession = make([]comm.IUserSession, 0)
err error
)
@ -394,40 +422,40 @@ func (this *Parkour) recoverhp(id string, hp int32, uids ...string) {
this.lock.RUnlock()
if ok {
for _, v := range battle.RedMember {
for _, v1 := range uids {
if v.Uid == v1 {
if v.Uid == uid {
player = v
v.Currhp += hp
if v.Currhp > v.Property[comm.Dhp] {
v.Currhp = v.Property[comm.Dhp]
}
chanage[v.Uid] = v.Currhp
teamScores = battle.RedScore
break
}
}
}
for _, v := range battle.BuleMember {
for _, v1 := range uids {
if v.Uid == v1 {
if v.Uid == uid {
player = v
v.Currhp += hp
if v.Currhp > v.Property[comm.Dhp] {
v.Currhp = v.Property[comm.Dhp]
}
chanage[v.Uid] = v.Currhp
teamScores = battle.BuleScore
break
}
}
}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "playerhpchanage", &pb.ParkourPlayerHPChanagePush{
Change: chanage,
if err = this.SendMsgToSession(string(this.GetType()), "recoverhpoperate", &pb.ParkourRecoverHpOperatePush{
Uid: uid,
Hp: player.Currhp,
Teamscore: teamScores,
Playerscore: player.Scores,
}, sessions...); err != nil {
this.Errorln(err)
}
}
}
// 战斗结束
@ -748,8 +776,9 @@ func (this *Parkour) resurrectiontimer(task *timewheel.Task, args ...interface{}
for _, v := range battle.Session {
sessions = append(sessions, v)
}
if err = this.SendMsgToSession(string(this.GetType()), "playerhpchanage", &pb.ParkourPlayerHPChanagePush{
Change: map[string]int32{uid: member.Currhp},
if err = this.SendMsgToSession(string(this.GetType()), "revivalplayer", &pb.ParkourRevivalPlayerPush{
Uid: uid,
Hp: member.Currhp,
}, sessions...); err != nil {
this.Errorln(err)
}

View File

@ -135,13 +135,13 @@ type DBRaceMember struct {
Mount string `protobuf:"bytes,8,opt,name=mount,proto3" json:"mount"` //上阵坐骑
Property map[string]int32 `protobuf:"bytes,9,rep,name=property,proto3" json:"property" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` //坐骑属性
Currhp int32 `protobuf:"varint,10,opt,name=currhp,proto3" json:"currhp"` //当前血量
Innermost int32 `protobuf:"varint,11,opt,name=innermost,proto3" json:"innermost"` //里程数
Ready bool `protobuf:"varint,12,opt,name=ready,proto3" json:"ready"` //是否准备
Isai bool `protobuf:"varint,13,opt,name=isai,proto3" json:"isai"` //是否是ai
Isoff bool `protobuf:"varint,14,opt,name=isoff,proto3" json:"isoff"` //是否离线
Scores int32 `protobuf:"varint,15,opt,name=scores,proto3" json:"scores"` //当前分数
Energy int32 `protobuf:"varint,16,opt,name=energy,proto3" json:"energy"` //当前能量
Dodge int32 `protobuf:"varint,17,opt,name=dodge,proto3" json:"dodge"` //闪避次数
Shot int32 `protobuf:"varint,18,opt,name=shot,proto3" json:"shot"` //射门次数
}
func (x *DBRaceMember) Reset() {
@ -246,13 +246,6 @@ func (x *DBRaceMember) GetCurrhp() int32 {
return 0
}
func (x *DBRaceMember) GetInnermost() int32 {
if x != nil {
return x.Innermost
}
return 0
}
func (x *DBRaceMember) GetReady() bool {
if x != nil {
return x.Ready
@ -295,6 +288,13 @@ func (x *DBRaceMember) GetDodge() int32 {
return 0
}
func (x *DBRaceMember) GetShot() int32 {
if x != nil {
return x.Shot
}
return 0
}
type DBRaceInvite struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -690,7 +690,7 @@ var File_parkour_parkour_db_proto protoreflect.FileDescriptor
var file_parkour_parkour_db_proto_rawDesc = []byte{
0x0a, 0x18, 0x70, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x2f, 0x70, 0x61, 0x72, 0x6b, 0x6f, 0x75,
0x72, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd6, 0x03, 0x0a, 0x0c, 0x44,
0x72, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcc, 0x03, 0x0a, 0x0c, 0x44,
0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x75,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
@ -706,99 +706,99 @@ var file_parkour_parkour_db_proto_rawDesc = []byte{
0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75,
0x72, 0x72, 0x68, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, 0x75, 0x72, 0x72,
0x68, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x18,
0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74,
0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52,
0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x61, 0x69, 0x18, 0x0d,
0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x61, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73,
0x6f, 0x66, 0x66, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x6f, 0x66, 0x66,
0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x65, 0x72,
0x67, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e, 0x65, 0x72, 0x67, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52,
0x05, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 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, 0x76, 0x0a, 0x0c, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61,
0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61,
0x72, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c,
0x76, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01,
0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x22, 0xc5, 0x05, 0x0a, 0x09,
0x44, 0x42, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 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, 0x12, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12,
0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x73, 0x65,
0x78, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x73, 0x6b, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x61, 0x6e, 0x18, 0x07, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x6d, 0x74,
0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x66, 0x6d, 0x74, 0x73, 0x12,
0x10, 0x0a, 0x03, 0x6d, 0x6c, 0x76, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x6c,
0x76, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
0x52, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x50, 0x61,
0x72, 0x6b, 0x6f, 0x75, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x24, 0x0a,
0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x52,
0x61, 0x63, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x62, 0x61, 0x74, 0x74, 0x69,
0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x62, 0x61, 0x74,
0x74, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18,
0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12,
0x1c, 0x0a, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x64, 0x12, 0x25, 0x0a,
0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x11,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d,
0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x77,
0x65, 0x65, 0x6b, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x77,
0x65, 0x65, 0x6b, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x72,
0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x44, 0x42,
0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x2e, 0x57, 0x65, 0x65, 0x6b, 0x72, 0x65, 0x77, 0x61,
0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x77, 0x65, 0x65, 0x6b, 0x72, 0x65, 0x77,
0x61, 0x72, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x65, 0x65, 0x6b, 0x69, 0x6e, 0x74, 0x65, 0x67,
0x72, 0x61, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x65, 0x65, 0x6b, 0x69,
0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x3d, 0x0a, 0x0f, 0x57, 0x65, 0x65, 0x6b, 0x72, 0x65, 0x77, 0x61,
0x72, 0x64, 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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x22, 0xad, 0x02, 0x0a, 0x06, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20,
0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68,
0x12, 0x1f, 0x0a, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x72, 0x74, 0x79, 0x70,
0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
0x28, 0x05, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69,
0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x09, 0x72, 0x65, 0x64,
0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44,
0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x09, 0x72, 0x65, 0x64,
0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x64, 0x73, 0x63, 0x6f,
0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x65, 0x64, 0x73, 0x63,
0x6f, 0x72, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x0a, 0x62, 0x75, 0x6c, 0x65, 0x6d, 0x65, 0x6d, 0x62,
0x65, 0x72, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63,
0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0a, 0x62, 0x75, 0x6c, 0x65, 0x6d, 0x65, 0x6d,
0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6c, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65,
0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62, 0x75, 0x6c, 0x65, 0x73, 0x63, 0x6f,
0x72, 0x65, 0x73, 0x2a, 0x22, 0x0a, 0x08, 0x52, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12,
0x0c, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a,
0x04, 0x70, 0x72, 0x6f, 0x70, 0x10, 0x01, 0x2a, 0x44, 0x0a, 0x0d, 0x52, 0x61, 0x63, 0x65, 0x54,
0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74,
0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67,
0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x10, 0x02,
0x12, 0x0b, 0x0a, 0x07, 0x72, 0x61, 0x63, 0x65, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x06, 0x5a,
0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x68, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28,
0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x61, 0x69,
0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x61, 0x69, 0x12, 0x14, 0x0a, 0x05,
0x69, 0x73, 0x6f, 0x66, 0x66, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x6f,
0x66, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01,
0x28, 0x05, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e,
0x65, 0x72, 0x67, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x65, 0x6e, 0x65, 0x72,
0x67, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x74,
0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x74, 0x1a, 0x3b, 0x0a, 0x0d,
0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x76, 0x0a, 0x0c, 0x44, 0x42, 0x52,
0x61, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x04, 0x20,
0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72,
0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
0x64, 0x22, 0xc5, 0x05, 0x0a, 0x09, 0x44, 0x42, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x6e, 0x18,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x64,
0x61, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x61, 0x6e, 0x12, 0x16, 0x0a,
0x06, 0x64, 0x65, 0x66, 0x6d, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
0x65, 0x66, 0x6d, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x6c, 0x76, 0x18, 0x09, 0x20, 0x01,
0x28, 0x05, 0x52, 0x03, 0x6d, 0x6c, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a,
0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70,
0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65,
0x72, 0x74, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61,
0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x75, 0x72,
0x72, 0x62, 0x61, 0x74, 0x74, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63,
0x75, 0x72, 0x72, 0x62, 0x61, 0x74, 0x74, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74,
0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74,
0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e,
0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69,
0x6e, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x10, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x6d, 0x65,
0x6d, 0x62, 0x65, 0x72, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52,
0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65,
0x72, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20,
0x01, 0x28, 0x03, 0x52, 0x08, 0x77, 0x65, 0x65, 0x6b, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a,
0x0a, 0x77, 0x65, 0x65, 0x6b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x13, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1a, 0x2e, 0x44, 0x42, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x2e, 0x57, 0x65,
0x65, 0x6b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x77,
0x65, 0x65, 0x6b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x77, 0x65, 0x65,
0x6b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0c, 0x77, 0x65, 0x65, 0x6b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x1a, 0x3b, 0x0a,
0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x3d, 0x0a, 0x0f, 0x57, 0x65,
0x65, 0x6b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x08, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xad, 0x02, 0x0a, 0x06, 0x44, 0x42,
0x52, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50,
0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x52, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65,
0x52, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b,
0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69,
0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x18, 0x05,
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x74, 0x12,
0x2b, 0x0a, 0x09, 0x72, 0x65, 0x64, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65,
0x72, 0x52, 0x09, 0x72, 0x65, 0x64, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09,
0x72, 0x65, 0x64, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
0x09, 0x72, 0x65, 0x64, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x0a, 0x62, 0x75,
0x6c, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d,
0x2e, 0x44, 0x42, 0x52, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x0a, 0x62,
0x75, 0x6c, 0x65, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x6c,
0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62,
0x75, 0x6c, 0x65, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x2a, 0x22, 0x0a, 0x08, 0x52, 0x61, 0x63,
0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x72,
0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x70, 0x72, 0x6f, 0x70, 0x10, 0x01, 0x2a, 0x44, 0x0a,
0x0d, 0x52, 0x61, 0x63, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b,
0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x74,
0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63,
0x68, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x72, 0x61, 0x63, 0x65, 0x69, 0x6e,
0x67, 0x10, 0x03, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x33,
}
var (

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff