登录后根据道具记录恢复道具数量
This commit is contained in:
parent
4c64b96429
commit
72b8f927b0
|
@ -28,6 +28,8 @@ func ItemLogsCollection(plt string) *mongo.Collection {
|
||||||
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"snid", "logtype", "itemid", "typeid"}, Background: true, Sparse: true})
|
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"snid", "logtype", "itemid", "typeid"}, Background: true, Sparse: true})
|
||||||
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"roomconfigid"}, Background: true, Sparse: true})
|
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"roomconfigid"}, Background: true, Sparse: true})
|
||||||
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"typeid", "roomconfigid"}, Background: true, Sparse: true})
|
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"typeid", "roomconfigid"}, Background: true, Sparse: true})
|
||||||
|
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
|
||||||
|
c_itemlog.EnsureIndex(mgo.Index{Key: []string{"-ts"}, Background: true, Sparse: true})
|
||||||
}
|
}
|
||||||
return c_itemlog
|
return c_itemlog
|
||||||
}
|
}
|
||||||
|
@ -132,13 +134,31 @@ func (svc *ItemLogSvc) GetItemLog(req *model.GetItemLogParam, res *model.GetItem
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err := c.Find(bson.M{"snid": req.SnId, "createts": bson.M{"$gt": req.Ts}}).Sort("createts").All(&res.Logs)
|
err := c.Find(bson.M{"snid": req.SnId, "ts": bson.M{"$gt": req.Ts}}).All(&res.Logs)
|
||||||
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (svc *ItemLogSvc) Insert(req *model.InsertItemLogReq, res *bool) error {
|
||||||
|
if len(req.Logs) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
clog := ItemLogsCollection(req.Logs[0].Platform)
|
||||||
|
if clog == nil {
|
||||||
|
logger.Logger.Errorf("ItemLogSvc.Insert collection not found Platform:%v", req.Logs[0].Platform)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if err := clog.Insert(req.Logs); err != nil {
|
||||||
|
logger.Logger.Warn("ItemLogSvc.Insert error:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*res = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
rpc.Register(new(ItemLogSvc))
|
rpc.Register(new(ItemLogSvc))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1266,11 +1266,7 @@ func (this *Player) GetSkillAdd(id int32) int32 {
|
||||||
// 增加或减少道具
|
// 增加或减少道具
|
||||||
// 同步到 worldsrv
|
// 同步到 worldsrv
|
||||||
func (this *Player) AddItems(args *model.AddItemParam) {
|
func (this *Player) AddItems(args *model.AddItemParam) {
|
||||||
pack := &server.PlayerChangeItems{
|
changeItem := map[int32]int64{}
|
||||||
SnId: args.SnId,
|
|
||||||
NoLog: args.NoLog,
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, v := range args.Change {
|
for _, v := range args.Change {
|
||||||
item := srvdata.GameItemMgr.Get(this.Platform, v.ItemId)
|
item := srvdata.GameItemMgr.Get(this.Platform, v.ItemId)
|
||||||
if item == nil {
|
if item == nil {
|
||||||
|
@ -1283,34 +1279,25 @@ func (this *Player) AddItems(args *model.AddItemParam) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
this.Items[v.ItemId] += v.ItemNum
|
this.Items[v.ItemId] += v.ItemNum
|
||||||
if !args.NoLog {
|
changeItem[v.ItemId] += v.ItemNum
|
||||||
logType := 0
|
|
||||||
if v.ItemNum < 0 {
|
|
||||||
logType = 1
|
|
||||||
}
|
|
||||||
LogChannelSingleton.WriteLog(model.NewItemLogEx(model.ItemParam{
|
|
||||||
Platform: this.Platform,
|
|
||||||
SnId: this.SnId,
|
|
||||||
LogType: int32(logType),
|
|
||||||
ItemId: v.ItemId,
|
|
||||||
ItemName: item.Name,
|
|
||||||
Count: v.ItemNum,
|
|
||||||
Remark: args.Remark,
|
|
||||||
TypeId: args.GainWay,
|
|
||||||
GameId: args.GameId,
|
|
||||||
GameFreeId: args.GameFreeId,
|
|
||||||
Cost: args.Cost,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
pack.Items = append(pack.Items, &server.Item{
|
|
||||||
Id: v.ItemId,
|
|
||||||
Num: v.ItemNum,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
if len(changeItem) > 0 {
|
||||||
if len(pack.Items) > 0 {
|
args.Change = args.Change[:0]
|
||||||
|
for k, v := range changeItem {
|
||||||
|
args.Change = append(args.Change, &model.Item{
|
||||||
|
ItemId: k,
|
||||||
|
ItemNum: v,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
b, err := netlib.Gob.Marshal(args)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("道具变更日志序列化失败 %v", err)
|
||||||
|
}
|
||||||
|
pack := &server.PlayerChangeItems{
|
||||||
|
Data: b,
|
||||||
|
}
|
||||||
this.SendToWorld(int(server.SSPacketID_PACKET_PlayerChangeItems), pack)
|
this.SendToWorld(int(server.SSPacketID_PACKET_PlayerChangeItems), pack)
|
||||||
logger.Logger.Tracef("PlayerChangeItems: %v", pack)
|
logger.Logger.Tracef("PlayerChangeItems: %v", args)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,10 @@ type BagInfo struct {
|
||||||
SnId int32 //玩家账号直接在这里生成
|
SnId int32 //玩家账号直接在这里生成
|
||||||
Platform string //平台
|
Platform string //平台
|
||||||
BagItem map[int32]*Item //背包数据 key为itemId
|
BagItem map[int32]*Item //背包数据 key为itemId
|
||||||
Ts int64
|
Ts int64 // 最后数据更新纳秒时间戳
|
||||||
GainWay int32 `bson:"-"`
|
|
||||||
|
// 临时参数,不保存数据库
|
||||||
|
GainWay int32 `bson:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Item struct {
|
type Item struct {
|
||||||
|
@ -95,7 +97,6 @@ type AddItemParam struct {
|
||||||
GainWay int32 // 记录类型
|
GainWay int32 // 记录类型
|
||||||
Operator, Remark string // 操作人,备注
|
Operator, Remark string // 操作人,备注
|
||||||
GameId, GameFreeId int64 // 游戏id,场次id
|
GameId, GameFreeId int64 // 游戏id,场次id
|
||||||
NoLog bool // 是否不记录日志
|
|
||||||
LogId string // 撤销的id,道具兑换失败
|
LogId string // 撤销的id,道具兑换失败
|
||||||
RoomConfigId int32 // 房间配置id
|
RoomConfigId int32 // 房间配置id
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"mongo.games.com/game/protocol/server"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/globalsign/mgo/bson"
|
"github.com/globalsign/mgo/bson"
|
||||||
|
@ -23,6 +24,7 @@ type ItemLog struct {
|
||||||
ItemName string //道具名称
|
ItemName string //道具名称
|
||||||
Count int64 //个数
|
Count int64 //个数
|
||||||
CreateTs int64 //记录时间
|
CreateTs int64 //记录时间
|
||||||
|
Ts int64 // 纳秒时间戳
|
||||||
Remark string //备注
|
Remark string //备注
|
||||||
TypeId int32 // 变化类型
|
TypeId int32 // 变化类型
|
||||||
GameId int64 // 游戏id,游戏中获得时有值
|
GameId int64 // 游戏id,游戏中获得时有值
|
||||||
|
@ -30,6 +32,7 @@ type ItemLog struct {
|
||||||
Cost []*Item // 消耗的道具
|
Cost []*Item // 消耗的道具
|
||||||
Id string // 撤销的id,兑换失败
|
Id string // 撤销的id,兑换失败
|
||||||
RoomConfigId int32 // 房间配置id
|
RoomConfigId int32 // 房间配置id
|
||||||
|
Offline int32 // 离线时的记录
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewItemLog() *ItemLog {
|
func NewItemLog() *ItemLog {
|
||||||
|
@ -51,9 +54,11 @@ type ItemParam struct {
|
||||||
Cost []*Item // 消耗的道具
|
Cost []*Item // 消耗的道具
|
||||||
LogId string // 撤销的id,兑换失败
|
LogId string // 撤销的id,兑换失败
|
||||||
RoomConfigId int32 // 房间配置id
|
RoomConfigId int32 // 房间配置id
|
||||||
|
Offline int32 // 离线记录
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewItemLogEx(param ItemParam) *ItemLog {
|
func NewItemLogEx(param ItemParam) *ItemLog {
|
||||||
|
now := time.Now()
|
||||||
itemLog := NewItemLog()
|
itemLog := NewItemLog()
|
||||||
itemLog.Platform = param.Platform
|
itemLog.Platform = param.Platform
|
||||||
itemLog.SnId = param.SnId
|
itemLog.SnId = param.SnId
|
||||||
|
@ -61,7 +66,8 @@ func NewItemLogEx(param ItemParam) *ItemLog {
|
||||||
itemLog.ItemId = param.ItemId
|
itemLog.ItemId = param.ItemId
|
||||||
itemLog.ItemName = param.ItemName
|
itemLog.ItemName = param.ItemName
|
||||||
itemLog.Count = param.Count
|
itemLog.Count = param.Count
|
||||||
itemLog.CreateTs = time.Now().Unix()
|
itemLog.CreateTs = now.Unix()
|
||||||
|
itemLog.Ts = now.UnixNano()
|
||||||
itemLog.Remark = param.Remark
|
itemLog.Remark = param.Remark
|
||||||
itemLog.TypeId = param.TypeId
|
itemLog.TypeId = param.TypeId
|
||||||
itemLog.GameId = param.GameId
|
itemLog.GameId = param.GameId
|
||||||
|
@ -69,6 +75,7 @@ func NewItemLogEx(param ItemParam) *ItemLog {
|
||||||
itemLog.Cost = param.Cost
|
itemLog.Cost = param.Cost
|
||||||
itemLog.Id = param.LogId
|
itemLog.Id = param.LogId
|
||||||
itemLog.RoomConfigId = param.RoomConfigId
|
itemLog.RoomConfigId = param.RoomConfigId
|
||||||
|
itemLog.Offline = param.Offline
|
||||||
return itemLog
|
return itemLog
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,3 +194,59 @@ func GetItemLog(plt string, snid int32, ts int64) ([]*ItemLog, error) {
|
||||||
|
|
||||||
return ret.Logs, nil
|
return ret.Logs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type InsertItemLogReq struct {
|
||||||
|
Logs []*ItemLog
|
||||||
|
}
|
||||||
|
|
||||||
|
func InsertItemLog(configItems map[string]map[int32]*server.DB_GameItem, param *AddItemParam, isOffline bool) error {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Warnf("rpcCli is nil")
|
||||||
|
return errors.New("rpcCli is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
var logs []*ItemLog
|
||||||
|
for _, v := range param.Change {
|
||||||
|
num := v.ItemNum
|
||||||
|
logType := 0
|
||||||
|
if v.ItemNum < 0 {
|
||||||
|
logType = 1
|
||||||
|
num = -v.ItemNum
|
||||||
|
}
|
||||||
|
offline := 0
|
||||||
|
if isOffline {
|
||||||
|
offline = 1
|
||||||
|
}
|
||||||
|
// 日志
|
||||||
|
name := ""
|
||||||
|
if configItems != nil && configItems[param.Platform] != nil && configItems[param.Platform][v.ItemId] != nil {
|
||||||
|
name = configItems[param.Platform][v.ItemId].GetName()
|
||||||
|
}
|
||||||
|
log := NewItemLogEx(ItemParam{
|
||||||
|
Platform: param.Platform,
|
||||||
|
SnId: param.SnId,
|
||||||
|
LogType: int32(logType),
|
||||||
|
ItemId: v.ItemId,
|
||||||
|
ItemName: name,
|
||||||
|
Count: num,
|
||||||
|
Remark: param.Remark,
|
||||||
|
TypeId: param.GainWay,
|
||||||
|
GameId: param.GameId,
|
||||||
|
GameFreeId: param.GameFreeId,
|
||||||
|
Cost: param.Cost,
|
||||||
|
LogId: param.LogId,
|
||||||
|
RoomConfigId: param.RoomConfigId,
|
||||||
|
Offline: int32(offline),
|
||||||
|
})
|
||||||
|
logs = append(logs, log)
|
||||||
|
}
|
||||||
|
var ret bool
|
||||||
|
err := rpcCli.CallWithTimeout("ItemLogSvc.Insert", &InsertItemLogReq{
|
||||||
|
Logs: logs,
|
||||||
|
}, &ret, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("InsertItemLog err:%v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -8889,9 +8889,7 @@ type PlayerChangeItems struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"`
|
Data []byte `protobuf:"bytes,1,opt,name=Data,proto3" json:"Data,omitempty"`
|
||||||
Items []*Item `protobuf:"bytes,2,rep,name=Items,proto3" json:"Items,omitempty"` // 道具变化数量
|
|
||||||
NoLog bool `protobuf:"varint,3,opt,name=NoLog,proto3" json:"NoLog,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PlayerChangeItems) Reset() {
|
func (x *PlayerChangeItems) Reset() {
|
||||||
|
@ -8926,27 +8924,13 @@ func (*PlayerChangeItems) Descriptor() ([]byte, []int) {
|
||||||
return file_server_proto_rawDescGZIP(), []int{116}
|
return file_server_proto_rawDescGZIP(), []int{116}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PlayerChangeItems) GetSnId() int32 {
|
func (x *PlayerChangeItems) GetData() []byte {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.SnId
|
return x.Data
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PlayerChangeItems) GetItems() []*Item {
|
|
||||||
if x != nil {
|
|
||||||
return x.Items
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PlayerChangeItems) GetNoLog() bool {
|
|
||||||
if x != nil {
|
|
||||||
return x.NoLog
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
var File_server_proto protoreflect.FileDescriptor
|
var File_server_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_server_proto_rawDesc = []byte{
|
var file_server_proto_rawDesc = []byte{
|
||||||
|
@ -9957,200 +9941,197 @@ var file_server_proto_rawDesc = []byte{
|
||||||
0x22, 0x32, 0x0a, 0x0c, 0x57, 0x47, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e,
|
0x22, 0x32, 0x0a, 0x0c, 0x57, 0x47, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e,
|
||||||
0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
|
0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
|
||||||
0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
|
0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x52, 0x02, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68,
|
0x52, 0x02, 0x49, 0x64, 0x22, 0x27, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68,
|
||||||
0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49,
|
0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74,
|
||||||
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a,
|
0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x2a, 0x83, 0x17,
|
||||||
0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73,
|
0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12,
|
||||||
0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x5a, 0x45,
|
||||||
0x73, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x6f, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
|
0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
|
||||||
0x52, 0x05, 0x4e, 0x6f, 0x4c, 0x6f, 0x67, 0x2a, 0x83, 0x17, 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61,
|
0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, 0x07, 0x12, 0x1b, 0x0a,
|
||||||
0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45,
|
||||||
0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17,
|
0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
|
||||||
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f,
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x49, 0x4e, 0x46, 0x4f,
|
||||||
0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53,
|
||||||
0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43,
|
0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, 0x07, 0x12, 0x16, 0x0a,
|
||||||
0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, 0x52, 0x56, 0x43, 0x54,
|
||||||
0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a,
|
0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
||||||
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e,
|
0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10,
|
||||||
0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x47, 0x5f,
|
||||||
0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, 0x52, 0x56, 0x43, 0x54, 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12,
|
0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x07, 0x12,
|
||||||
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52,
|
0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x43, 0x55, 0x53,
|
||||||
0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16,
|
0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54,
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x47, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52,
|
0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
|
||||||
0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43,
|
0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xcd, 0x08, 0x12,
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47,
|
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x45, 0x53,
|
||||||
0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a,
|
0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, 0x12, 0x1a, 0x0a, 0x15,
|
||||||
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54,
|
|
||||||
0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xcd, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
|
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43,
|
|
||||||
0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
|
||||||
0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10,
|
|
||||||
0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
|
|
||||||
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d,
|
|
||||||
0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c,
|
|
||||||
0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x43, 0x41, 0x52, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a,
|
|
||||||
0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52,
|
|
||||||
0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xd2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
|
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x52,
|
|
||||||
0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xd3, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
|
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x48,
|
|
||||||
0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
|
||||||
0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f,
|
|
||||||
0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd5, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b,
|
|
||||||
0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53,
|
|
||||||
0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16,
|
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
|
||||||
0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0xd7, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43,
|
0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43,
|
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56,
|
||||||
0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
|
||||||
0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c,
|
0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x43, 0x41, 0x52, 0x44,
|
||||||
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49,
|
0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
|
||||||
0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17,
|
0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xd2, 0x08,
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e,
|
0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c,
|
||||||
0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xdb, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
|
0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xd3, 0x08, 0x12,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41,
|
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41,
|
||||||
0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, 0x12, 0x20, 0x0a, 0x1b,
|
||||||
0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
|
||||||
0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41,
|
0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd5, 0x08, 0x12, 0x22,
|
||||||
0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, 0x43, 0x4b, 0x4f, 0x55, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45,
|
0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59,
|
||||||
0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
|
0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10,
|
||||||
0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08,
|
0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
|
||||||
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c,
|
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0xd7, 0x08, 0x12,
|
||||||
0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, 0x4d, 0x4f, 0x4e, 0x45, 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a,
|
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x52, 0x45, 0x50,
|
||||||
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49,
|
0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, 0x12, 0x16, 0x0a, 0x11,
|
||||||
0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, 0x44, 0x10, 0xe2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45,
|
0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
|
||||||
0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10,
|
||||||
0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12,
|
0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
|
||||||
0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45,
|
0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xdb, 0x08,
|
||||||
0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xe5, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41,
|
0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45,
|
0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50,
|
||||||
0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a,
|
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52,
|
||||||
0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45,
|
0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
||||||
0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, 0x43, 0x4b, 0x4f, 0x55,
|
||||||
0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8,
|
0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
|
||||||
0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50,
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x4e, 0x41, 0x4c, 0x59,
|
||||||
0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10,
|
0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
|
0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, 0x4d, 0x4f, 0x4e, 0x45,
|
||||||
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x53, 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10,
|
0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
|
||||||
0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
|
0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, 0x44, 0x10, 0xe2, 0x08,
|
||||||
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a,
|
0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55,
|
||||||
0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64,
|
0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, 0x12, 0x17, 0x0a, 0x12,
|
||||||
0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xec, 0x08,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52,
|
||||||
0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43,
|
0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
||||||
0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73,
|
0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xe5, 0x08,
|
||||||
0x61, 0x67, 0x65, 0x10, 0xed, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x52,
|
||||||
0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65,
|
0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45,
|
||||||
0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xee, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b,
|
0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
|
||||||
0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x52, 0x45, 0x41,
|
0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, 0x12, 0x19, 0x0a, 0x14,
|
||||||
0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xef, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x52, 0x45,
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10,
|
0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
||||||
0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f,
|
0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x43, 0x45,
|
||||||
0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a,
|
0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65,
|
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x53,
|
||||||
0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
|
0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56,
|
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41,
|
||||||
0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
|
0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57,
|
||||||
0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a,
|
0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73,
|
||||||
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59,
|
0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0x45, 0x52, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0xdc, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41,
|
0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53,
|
0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, 0x08, 0x12, 0x20, 0x0a, 0x1b,
|
||||||
0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52,
|
||||||
0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45,
|
0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xee, 0x08, 0x12, 0x1f,
|
||||||
0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
|
0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49,
|
||||||
0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a,
|
0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xef, 0x08, 0x12,
|
||||||
0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
|
0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x4c, 0x6f, 0x67,
|
||||||
0x52, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0xe0, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
|
0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c,
|
0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
|
||||||
0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xe1, 0x0b, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41,
|
0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45,
|
0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x08, 0x12, 0x1a,
|
||||||
0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21,
|
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79,
|
||||||
0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f,
|
0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
|
||||||
0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, 0x45, 0x57, 0x42, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3,
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66,
|
||||||
0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50,
|
0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
|
||||||
0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a,
|
0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0xdc, 0x0b,
|
||||||
0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45,
|
0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x52, 0x45,
|
||||||
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x4f, 0x47, 0x10, 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18,
|
0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, 0x0b, 0x12, 0x1a, 0x0a,
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c,
|
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
|
||||||
0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe6, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50,
|
0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
|
||||||
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f,
|
0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45,
|
||||||
0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a,
|
0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
|
||||||
0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46,
|
0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0xe0, 0x0b,
|
||||||
0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41,
|
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4f,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79,
|
0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xe1, 0x0b,
|
||||||
0x65, 0x72, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b,
|
0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45,
|
||||||
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45,
|
0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x45, 0x56, 0x45,
|
||||||
0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b,
|
0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
|
||||||
0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42,
|
0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, 0x45, 0x57, 0x42, 0x4c,
|
||||||
0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0xee, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50,
|
0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
||||||
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41,
|
0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x52, 0x41, 0x4d,
|
||||||
0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
|
0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57,
|
||||||
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10,
|
0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x4f, 0x47, 0x10,
|
||||||
0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
|
0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
|
||||||
0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a,
|
0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe6,
|
||||||
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b,
|
0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50,
|
||||||
0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf2, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41,
|
0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45,
|
0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52,
|
||||||
0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x0b,
|
||||||
0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f,
|
0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x79,
|
||||||
0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43,
|
||||||
0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52,
|
0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x0b, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f,
|
||||||
0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e,
|
0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
|
||||||
0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55,
|
0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0xee,
|
||||||
0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
|
0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47,
|
||||||
0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54,
|
0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x0b, 0x12, 0x18,
|
||||||
0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
|
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45,
|
||||||
0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x54, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43,
|
0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0xf8, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43,
|
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x4c, 0x49, 0x53,
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45,
|
0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
|
||||||
0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0xf9, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
|
0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf2, 0x0b,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41,
|
0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x49,
|
||||||
0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
|
0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, 0x0b, 0x12, 0x1c, 0x0a,
|
||||||
0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c,
|
0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
|
||||||
0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50,
|
||||||
0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47,
|
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41,
|
||||||
0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x0b, 0x12, 0x2b, 0x0a,
|
||||||
0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d,
|
0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54,
|
||||||
0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, 0x0b, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x53, 0x43, 0x45,
|
||||||
0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42,
|
0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
|
||||||
0x41, 0x53, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a,
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x4f, 0x52, 0x43,
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45,
|
0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43,
|
||||||
0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a,
|
0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x54, 0x43, 0x4f, 0x4e,
|
||||||
0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54,
|
0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0xf8, 0x0b, 0x12,
|
||||||
0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x52, 0x4f, 0x42, 0x10, 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15,
|
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x48, 0x41,
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41,
|
0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0xf9, 0x0b,
|
||||||
0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, 0x83, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b,
|
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x54, 0x5f, 0x50, 0x4c,
|
||||||
0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45,
|
0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
|
||||||
0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a,
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41,
|
||||||
0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
|
0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, 0x12, 0x1f, 0x0a, 0x1a,
|
||||||
0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
|
||||||
0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f,
|
0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, 0x0b, 0x12, 0x1e, 0x0a,
|
||||||
0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49,
|
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45,
|
||||||
0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, 0x0c, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, 0x0b, 0x12, 0x23, 0x0a,
|
||||||
0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49,
|
0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45,
|
||||||
0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x88, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b,
|
0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10,
|
||||||
0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45,
|
0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f,
|
||||||
0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52,
|
||||||
0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c,
|
0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
|
||||||
0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54,
|
0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x52, 0x4f, 0x42, 0x10,
|
||||||
0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8b, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50,
|
0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f,
|
||||||
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52,
|
0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, 0x83, 0x0c, 0x12, 0x23,
|
||||||
0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8c, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
|
0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59,
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53,
|
0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45,
|
||||||
0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
|
||||||
0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53,
|
0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e,
|
||||||
0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
|
0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53,
|
0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56,
|
||||||
0x54, 0x10, 0x8f, 0x0c, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57,
|
0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, 0x0c, 0x12, 0x1f, 0x0a,
|
||||||
0x47, 0x5f, 0x42, 0x55, 0x59, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4d, 0x45, 0x49, 0x54, 0x45, 0x4d,
|
0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52,
|
||||||
0x10, 0x90, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47,
|
0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x88, 0x0c, 0x12, 0x1b,
|
||||||
0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x10, 0x91, 0x0c, 0x12, 0x1d,
|
0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x44, 0x45, 0x53, 0x54,
|
||||||
0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43,
|
0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50,
|
||||||
0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x10, 0x92, 0x0c, 0x42, 0x26, 0x5a,
|
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49,
|
||||||
0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
|
0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73,
|
0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8b,
|
||||||
0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44,
|
||||||
|
0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8c, 0x0c, 0x12,
|
||||||
|
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52,
|
||||||
|
0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, 0x0c, 0x12, 0x1b, 0x0a,
|
||||||
|
0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c,
|
||||||
|
0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41,
|
||||||
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, 0x49, 0x4e, 0x47, 0x4c,
|
||||||
|
0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
|
||||||
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x42, 0x55, 0x59, 0x52, 0x45, 0x43, 0x54, 0x49,
|
||||||
|
0x4d, 0x45, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x90, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43,
|
||||||
|
0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69,
|
||||||
|
0x6e, 0x10, 0x91, 0x0c, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50,
|
||||||
|
0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73,
|
||||||
|
0x10, 0x92, 0x0c, 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 (
|
var (
|
||||||
|
@ -10330,12 +10311,11 @@ var file_server_proto_depIdxs = []int32{
|
||||||
97, // 32: server.WGGameJackpot.Info:type_name -> server.GameInfo
|
97, // 32: server.WGGameJackpot.Info:type_name -> server.GameInfo
|
||||||
108, // 33: server.GWDTRoomInfo.Players:type_name -> server.PlayerDTCoin
|
108, // 33: server.GWDTRoomInfo.Players:type_name -> server.PlayerDTCoin
|
||||||
109, // 34: server.GWDTRoomInfo.Results:type_name -> server.EResult
|
109, // 34: server.GWDTRoomInfo.Results:type_name -> server.EResult
|
||||||
10, // 35: server.PlayerChangeItems.Items:type_name -> server.Item
|
35, // [35:35] is the sub-list for method output_type
|
||||||
36, // [36:36] is the sub-list for method output_type
|
35, // [35:35] is the sub-list for method input_type
|
||||||
36, // [36:36] is the sub-list for method input_type
|
35, // [35:35] is the sub-list for extension type_name
|
||||||
36, // [36:36] is the sub-list for extension type_name
|
35, // [35:35] is the sub-list for extension extendee
|
||||||
36, // [36:36] is the sub-list for extension extendee
|
0, // [0:35] is the sub-list for field type_name
|
||||||
0, // [0:36] is the sub-list for field type_name
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_server_proto_init() }
|
func init() { file_server_proto_init() }
|
||||||
|
|
|
@ -1021,7 +1021,5 @@ message WGUpdateSkin{
|
||||||
|
|
||||||
// PACKET_PlayerChangeItems
|
// PACKET_PlayerChangeItems
|
||||||
message PlayerChangeItems{
|
message PlayerChangeItems{
|
||||||
int32 SnId = 1;
|
bytes Data = 1;
|
||||||
repeated Item Items = 2; // 道具变化数量
|
|
||||||
bool NoLog = 3;
|
|
||||||
}
|
}
|
|
@ -381,7 +381,6 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e
|
||||||
GainWay: common.GainWayItemChange,
|
GainWay: common.GainWayItemChange,
|
||||||
Operator: "system",
|
Operator: "system",
|
||||||
Remark: "背包内使用兑换",
|
Remark: "背包内使用兑换",
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
if isF {
|
if isF {
|
||||||
pack.RetCode = bag.OpResultCode_OPRC_Sucess
|
pack.RetCode = bag.OpResultCode_OPRC_Sucess
|
||||||
|
@ -407,7 +406,6 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e
|
||||||
GainWay: common.GainWayItemFen,
|
GainWay: common.GainWayItemFen,
|
||||||
Operator: "system",
|
Operator: "system",
|
||||||
Remark: fmt.Sprintf("道具分解%v", msg.GetItemId()),
|
Remark: fmt.Sprintf("道具分解%v", msg.GetItemId()),
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
if isF {
|
if isF {
|
||||||
pack.RetCode = bag.OpResultCode_OPRC_Sucess
|
pack.RetCode = bag.OpResultCode_OPRC_Sucess
|
||||||
|
@ -622,7 +620,6 @@ func CSDollChange(s *netlib.Session, packetid int, data interface{}, sid int64)
|
||||||
GainWay: common.GainWayItemBagChangeDoll,
|
GainWay: common.GainWayItemBagChangeDoll,
|
||||||
Operator: "system",
|
Operator: "system",
|
||||||
Remark: "背包内使用兑换娃娃卡",
|
Remark: "背包内使用兑换娃娃卡",
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
logger.Logger.Trace("背包内使用兑换娃娃卡 bagInfo = ", bagInfo)
|
logger.Logger.Trace("背包内使用兑换娃娃卡 bagInfo = ", bagInfo)
|
||||||
pack.RetCode = rest
|
pack.RetCode = rest
|
||||||
|
|
|
@ -603,7 +603,6 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64)
|
||||||
GainWay: common.GainWaySkinUpGrade,
|
GainWay: common.GainWaySkinUpGrade,
|
||||||
Operator: "system",
|
Operator: "system",
|
||||||
Remark: "皮肤升级消耗",
|
Remark: "皮肤升级消耗",
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
if !ok {
|
if !ok {
|
||||||
logger.Logger.Errorf("CSSkinUpgrade upgrade error")
|
logger.Logger.Errorf("CSSkinUpgrade upgrade error")
|
||||||
|
@ -658,7 +657,6 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) {
|
||||||
GainWay: common.GainWaySkinUnLock,
|
GainWay: common.GainWaySkinUnLock,
|
||||||
Operator: "system",
|
Operator: "system",
|
||||||
Remark: "皮肤解锁消耗",
|
Remark: "皮肤解锁消耗",
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
if !ok {
|
if !ok {
|
||||||
logger.Logger.Errorf("CSSKinUnLock Unlock error")
|
logger.Logger.Errorf("CSSKinUnLock Unlock error")
|
||||||
|
|
|
@ -412,7 +412,6 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da
|
||||||
Remark: "钻石抽奖",
|
Remark: "钻石抽奖",
|
||||||
GameId: 0,
|
GameId: 0,
|
||||||
GameFreeId: 0,
|
GameFreeId: 0,
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
pack.LuckyScore = p.DiamondLotteryScore
|
pack.LuckyScore = p.DiamondLotteryScore
|
||||||
p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_DiamondLottery), pack)
|
p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_DiamondLottery), pack)
|
||||||
|
|
|
@ -3187,7 +3187,6 @@ func CSClawdollItemLog(s *netlib.Session, packetId int, data interface{}, sid in
|
||||||
Remark: "商城兑换娃娃",
|
Remark: "商城兑换娃娃",
|
||||||
GameId: 0,
|
GameId: 0,
|
||||||
GameFreeId: 0,
|
GameFreeId: 0,
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
msg, ok := data.(*player_proto.CSClawdollItemLog)
|
msg, ok := data.(*player_proto.CSClawdollItemLog)
|
||||||
|
|
|
@ -767,25 +767,19 @@ func HandlePlayerChangeItems(session *netlib.Session, packetId int, data interfa
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId())
|
param := model.AddItemParam{}
|
||||||
|
if err := netlib.Gob.Unmarshal(msg.GetData(), ¶m); err != nil {
|
||||||
|
logger.Logger.Errorf("HandlePlayerChangeItems 游戏道具变更同步失败 %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
p := PlayerMgrSington.GetPlayerBySnId(param.SnId)
|
||||||
if p == nil {
|
if p == nil {
|
||||||
|
logger.Logger.Errorf("HandlePlayerChangeItems player is nil")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
var items []*model.Item
|
_, _, ok = BagMgrSingleton.AddItems(¶m)
|
||||||
for _, v := range msg.GetItems() {
|
|
||||||
items = append(items, &model.Item{
|
|
||||||
ItemId: v.GetId(),
|
|
||||||
ItemNum: v.GetNum(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
_, _, ok = BagMgrSingleton.AddItems(&model.AddItemParam{
|
|
||||||
Platform: p.Platform,
|
|
||||||
SnId: p.SnId,
|
|
||||||
Change: items,
|
|
||||||
NoLog: msg.GetNoLog(),
|
|
||||||
})
|
|
||||||
if !ok {
|
if !ok {
|
||||||
logger.Logger.Errorf("HandlePlayerChangeItems add item failed %v", msg)
|
logger.Logger.Errorf("HandlePlayerChangeItems add item failed %+v", param)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1119,7 +1119,6 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
|
||||||
Remark: "赛季通行证兑换获得",
|
Remark: "赛季通行证兑换获得",
|
||||||
GameId: 0,
|
GameId: 0,
|
||||||
GameFreeId: 0,
|
GameFreeId: 0,
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix())
|
p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix())
|
||||||
// 兑换记录
|
// 兑换记录
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/globalsign/mgo/bson"
|
"github.com/globalsign/mgo/bson"
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
"mongo.games.com/goserver/core/basic"
|
"mongo.games.com/goserver/core/basic"
|
||||||
"mongo.games.com/goserver/core/i18n"
|
"mongo.games.com/goserver/core/i18n"
|
||||||
"mongo.games.com/goserver/core/logger"
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
@ -194,7 +195,7 @@ type BagMgr struct {
|
||||||
PlayerBag map[int32]*BagInfo // snid:背包
|
PlayerBag map[int32]*BagInfo // snid:背包
|
||||||
|
|
||||||
// 道具变更监听,玩家离线时道具变更会在登录时根据道具日志执行一遍
|
// 道具变更监听,玩家离线时道具变更会在登录时根据道具日志执行一遍
|
||||||
OnChangeFuncs []func(param *model.ChangeItemParam)
|
onChangeFuncs []func(param *model.ChangeItemParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *BagMgr) ModuleName() string {
|
func (this *BagMgr) ModuleName() string {
|
||||||
|
@ -212,7 +213,14 @@ func (this *BagMgr) Shutdown() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *BagMgr) AddOnChangeFuncs(f ...func(param *model.ChangeItemParam)) {
|
func (this *BagMgr) AddOnChangeFuncs(f ...func(param *model.ChangeItemParam)) {
|
||||||
this.OnChangeFuncs = append(this.OnChangeFuncs, f...)
|
this.onChangeFuncs = append(this.onChangeFuncs, f...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *BagMgr) OnChangeFuncs(param *model.ChangeItemParam) {
|
||||||
|
logger.Logger.Tracef("OnChangeFuncs %+v", *param)
|
||||||
|
for _, v := range this.onChangeFuncs {
|
||||||
|
v(param)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetItem 获取个人的指定道具信息
|
// GetItem 获取个人的指定道具信息
|
||||||
|
@ -296,6 +304,9 @@ func (this *BagMgr) GetBagInfo(snid int32) *BagInfo {
|
||||||
|
|
||||||
// SyncBagData 通知玩家背包数据变化
|
// SyncBagData 通知玩家背包数据变化
|
||||||
func (this *BagMgr) SyncBagData(snid int32, changeItemIds ...int32) {
|
func (this *BagMgr) SyncBagData(snid int32, changeItemIds ...int32) {
|
||||||
|
if len(changeItemIds) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
p := PlayerMgrSington.GetPlayerBySnId(snid)
|
p := PlayerMgrSington.GetPlayerBySnId(snid)
|
||||||
if p == nil || p.IsRob {
|
if p == nil || p.IsRob {
|
||||||
return
|
return
|
||||||
|
@ -438,7 +449,7 @@ func (this *BagMgr) AddItems(param *model.AddItemParam) (*BagInfo, bag.OpResultC
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新背包
|
// 更新背包
|
||||||
var ts int64 // 最新日志时间戳
|
var ts int64 // 最新日志纳秒时间戳
|
||||||
var itemInfos []int32
|
var itemInfos []int32
|
||||||
for _, v := range items {
|
for _, v := range items {
|
||||||
itemData := srvdata.GameItemMgr.Get(p.Platform, v.ItemId)
|
itemData := srvdata.GameItemMgr.Get(p.Platform, v.ItemId)
|
||||||
|
@ -455,47 +466,44 @@ func (this *BagMgr) AddItems(param *model.AddItemParam) (*BagInfo, bag.OpResultC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 日志
|
num := v.ItemNum
|
||||||
if !param.NoLog {
|
logType := ItemObtain
|
||||||
num := v.ItemNum
|
if v.ItemNum < 0 {
|
||||||
logType := ItemObtain
|
logType = ItemConsume
|
||||||
if v.ItemNum < 0 {
|
num = -v.ItemNum
|
||||||
logType = ItemConsume
|
|
||||||
num = -v.ItemNum
|
|
||||||
}
|
|
||||||
log := model.NewItemLogEx(model.ItemParam{
|
|
||||||
Platform: p.Platform,
|
|
||||||
SnId: p.SnId,
|
|
||||||
LogType: int32(logType),
|
|
||||||
ItemId: v.ItemId,
|
|
||||||
ItemName: itemData.Name,
|
|
||||||
Count: num,
|
|
||||||
Remark: param.Remark,
|
|
||||||
TypeId: param.GainWay,
|
|
||||||
GameId: param.GameId,
|
|
||||||
GameFreeId: param.GameFreeId,
|
|
||||||
Cost: param.Cost,
|
|
||||||
LogId: param.LogId,
|
|
||||||
RoomConfigId: param.RoomConfigId,
|
|
||||||
})
|
|
||||||
if log != nil {
|
|
||||||
LogChannelSingleton.WriteLog(log)
|
|
||||||
ts = log.CreateTs
|
|
||||||
newBagInfo.LogId = log.LogId.Hex()
|
|
||||||
}
|
|
||||||
for _, f := range this.OnChangeFuncs {
|
|
||||||
f(&model.ChangeItemParam{
|
|
||||||
SnId: p.SnId,
|
|
||||||
ItemId: v.ItemId,
|
|
||||||
ItemNum: num,
|
|
||||||
GainWay: param.GainWay,
|
|
||||||
RoomConfigId: param.RoomConfigId,
|
|
||||||
GameId: param.GameId,
|
|
||||||
GameFreeId: param.GameFreeId,
|
|
||||||
Cost: param.Cost,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// 日志
|
||||||
|
log := model.NewItemLogEx(model.ItemParam{
|
||||||
|
Platform: p.Platform,
|
||||||
|
SnId: p.SnId,
|
||||||
|
LogType: int32(logType),
|
||||||
|
ItemId: v.ItemId,
|
||||||
|
ItemName: itemData.Name,
|
||||||
|
Count: num,
|
||||||
|
Remark: param.Remark,
|
||||||
|
TypeId: param.GainWay,
|
||||||
|
GameId: param.GameId,
|
||||||
|
GameFreeId: param.GameFreeId,
|
||||||
|
Cost: param.Cost,
|
||||||
|
LogId: param.LogId,
|
||||||
|
RoomConfigId: param.RoomConfigId,
|
||||||
|
})
|
||||||
|
if log != nil {
|
||||||
|
LogChannelSingleton.WriteLog(log)
|
||||||
|
ts = log.Ts
|
||||||
|
newBagInfo.LogId = log.LogId.Hex()
|
||||||
|
}
|
||||||
|
// 监听道具变化
|
||||||
|
this.OnChangeFuncs(&model.ChangeItemParam{
|
||||||
|
SnId: p.SnId,
|
||||||
|
ItemId: v.ItemId,
|
||||||
|
ItemNum: num,
|
||||||
|
GainWay: param.GainWay,
|
||||||
|
RoomConfigId: param.RoomConfigId,
|
||||||
|
GameId: param.GameId,
|
||||||
|
GameFreeId: param.GameFreeId,
|
||||||
|
Cost: param.Cost,
|
||||||
|
})
|
||||||
|
|
||||||
itemInfo := this.GetItem(p.SnId, v.ItemId)
|
itemInfo := this.GetItem(p.SnId, v.ItemId)
|
||||||
if itemInfo != nil {
|
if itemInfo != nil {
|
||||||
|
@ -539,62 +547,30 @@ func (this *BagMgr) AddItemsOffline(param *model.AddItemParam, callback func(err
|
||||||
if v == nil || v.ItemNum == 0 {
|
if v == nil || v.ItemNum == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
newBagInfo.BagItem[v.ItemId] = &model.Item{ItemId: v.ItemId, ItemNum: v.ItemNum}
|
|
||||||
}
|
|
||||||
return model.SaveDBBagItem(newBagInfo)
|
|
||||||
}), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
|
|
||||||
logger.Logger.Tracef("AddItemsOffline error(%v) Player:%+v", data, *findPlayer)
|
|
||||||
p := PlayerMgrSington.GetPlayerBySnId(param.SnId)
|
|
||||||
if p != nil {
|
|
||||||
// 在线仍然走在线流程
|
|
||||||
_, code, ok := this.AddItems(param)
|
|
||||||
if !ok {
|
|
||||||
logger.Logger.Errorf("AddItemsOffline failed Code:%v Player:%+v", code, *findPlayer)
|
|
||||||
callback(errors.New("AddItemsOffline failed"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
callback(nil)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if data != nil || findPlayer == nil {
|
|
||||||
logger.Logger.Errorf("AddItemsOffline Error error(%v) Player:%+v", data, *findPlayer)
|
|
||||||
callback(errors.New("AddItemsOffline failed"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
callback(nil)
|
|
||||||
if param.NoLog {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, v := range param.Change {
|
|
||||||
itemData := srvdata.GameItemMgr.Get(param.Platform, v.ItemId)
|
itemData := srvdata.GameItemMgr.Get(param.Platform, v.ItemId)
|
||||||
if itemData == nil {
|
if itemData == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
num := v.ItemNum
|
newBagInfo.BagItem[v.ItemId] = &model.Item{ItemId: v.ItemId, ItemNum: v.ItemNum}
|
||||||
logType := ItemObtain
|
|
||||||
if v.ItemNum < 0 {
|
|
||||||
logType = ItemConsume
|
|
||||||
num = -v.ItemNum
|
|
||||||
}
|
|
||||||
log := model.NewItemLogEx(model.ItemParam{
|
|
||||||
Platform: findPlayer.Platform,
|
|
||||||
SnId: findPlayer.SnId,
|
|
||||||
LogType: int32(logType),
|
|
||||||
ItemId: v.ItemId,
|
|
||||||
ItemName: itemData.Name,
|
|
||||||
Count: num,
|
|
||||||
Remark: param.Remark,
|
|
||||||
TypeId: param.GainWay,
|
|
||||||
GameId: param.GameId,
|
|
||||||
GameFreeId: param.GameFreeId,
|
|
||||||
})
|
|
||||||
if log != nil {
|
|
||||||
LogChannelSingleton.WriteLog(log)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if err := model.SaveDBBagItem(newBagInfo); err != nil {
|
||||||
|
logger.Logger.Errorf("离线保存道具变更错误 %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// 保存日志
|
||||||
|
if err := model.InsertItemLog(srvdata.GameItemMgr.Items, param, true); err != nil {
|
||||||
|
logger.Logger.Errorf("离线保存道具变更日志错误 %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
|
||||||
|
logger.Logger.Tracef("AddItemsOffline error(%v) Player:%+v", data, *findPlayer)
|
||||||
|
if data != nil || findPlayer == nil {
|
||||||
|
logger.Logger.Errorf("AddItemsOffline Error %v", data)
|
||||||
|
callback(errors.New("AddItemsOffline failed"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback(nil)
|
||||||
})).StartByExecutor(fmt.Sprintf("Player%v", param.SnId))
|
})).StartByExecutor(fmt.Sprintf("Player%v", param.SnId))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -796,7 +772,6 @@ func (this *BagMgr) ItemExchangeCard(p *Player, itemId int32, money, cardType in
|
||||||
Remark: "背包内使用兑换失败",
|
Remark: "背包内使用兑换失败",
|
||||||
GameId: 0,
|
GameId: 0,
|
||||||
GameFreeId: 0,
|
GameFreeId: 0,
|
||||||
NoLog: false,
|
|
||||||
LogId: logId,
|
LogId: logId,
|
||||||
})
|
})
|
||||||
logger.Logger.Errorf("获取兑换码失败 snid:%v itemID:%v res:%v err:%v", p.SnId, itemId, res, err)
|
logger.Logger.Errorf("获取兑换码失败 snid:%v itemID:%v res:%v err:%v", p.SnId, itemId, res, err)
|
||||||
|
@ -843,6 +818,11 @@ func (this *BagMgr) Load(platform string, snid int32, player any) *internal.Play
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 对账时间戳初始化
|
||||||
|
if bagInfo.Ts == 0 {
|
||||||
|
bagInfo.Ts = time.Now().UnixNano()
|
||||||
|
}
|
||||||
|
|
||||||
return &internal.PlayerLoadReplay{
|
return &internal.PlayerLoadReplay{
|
||||||
Platform: platform,
|
Platform: platform,
|
||||||
Snid: snid,
|
Snid: snid,
|
||||||
|
@ -884,8 +864,9 @@ func (this *BagMgr) Callback(player any, ret *internal.PlayerLoadReplay) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type LoadAfterData struct {
|
type LoadAfterData struct {
|
||||||
GameID []int32
|
GameID []int32
|
||||||
ItemLogs []*model.ItemLog
|
ItemLogs []*model.ItemLog
|
||||||
|
StarTs, EndTs int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *BagMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadReplay {
|
func (this *BagMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadReplay {
|
||||||
|
@ -894,6 +875,7 @@ func (this *BagMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadR
|
||||||
gameID := model.GetRecentGame(platform, snid)
|
gameID := model.GetRecentGame(platform, snid)
|
||||||
|
|
||||||
// 道具变更记录
|
// 道具变更记录
|
||||||
|
endTs := time.Now().UnixNano()
|
||||||
var itemLogs []*model.ItemLog
|
var itemLogs []*model.ItemLog
|
||||||
itemLogs, err = model.GetItemLog(platform, snid, this.PlayerBag[snid].Ts)
|
itemLogs, err = model.GetItemLog(platform, snid, this.PlayerBag[snid].Ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -913,6 +895,8 @@ func (this *BagMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadR
|
||||||
Data: &LoadAfterData{
|
Data: &LoadAfterData{
|
||||||
GameID: gameID,
|
GameID: gameID,
|
||||||
ItemLogs: itemLogs,
|
ItemLogs: itemLogs,
|
||||||
|
StarTs: this.PlayerBag[snid].Ts,
|
||||||
|
EndTs: endTs,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -925,25 +909,55 @@ func (this *BagMgr) CallbackAfter(ret *internal.PlayerLoadReplay) {
|
||||||
logger.Logger.Error("BagMgr LoadAfter err:", ret.Err)
|
logger.Logger.Error("BagMgr LoadAfter err:", ret.Err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
param, ok := ret.Data.(*LoadAfterData)
|
||||||
|
if !ok {
|
||||||
|
logger.Logger.Errorf("BagMgr LoadAfter BUGE 1")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
p := PlayerMgrSington.GetPlayerBySnId(ret.Snid)
|
p := PlayerMgrSington.GetPlayerBySnId(ret.Snid)
|
||||||
if p != nil {
|
if p == nil {
|
||||||
// 最近游戏
|
logger.Logger.Errorf("BagMgr LoadAfter BUGE 2")
|
||||||
p.GameID = ret.Data.(*LoadAfterData).GameID
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 道具变更记录
|
// 最近游戏
|
||||||
bagInfo := this.PlayerBag[p.SnId]
|
p.GameID = param.GameID
|
||||||
if bagInfo != nil {
|
|
||||||
for _, v := range ret.Data.(*LoadAfterData).ItemLogs {
|
// 道具变更记录
|
||||||
bagInfo.Ts = v.CreateTs
|
bagInfo := this.PlayerBag[p.SnId]
|
||||||
|
if bagInfo != nil {
|
||||||
|
changeItems := make(map[int32]struct{})
|
||||||
|
for _, v := range param.ItemLogs {
|
||||||
|
if v == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if v.Ts > param.StarTs && v.Ts <= param.EndTs {
|
||||||
bagInfo.dirty = true
|
bagInfo.dirty = true
|
||||||
|
|
||||||
num := v.Count
|
num := v.Count
|
||||||
if v.LogType == 1 {
|
if v.LogType == 1 {
|
||||||
num = -num
|
num = -num
|
||||||
}
|
}
|
||||||
|
if v.Ts > bagInfo.Ts {
|
||||||
for _, f := range this.OnChangeFuncs {
|
bagInfo.Ts = v.Ts
|
||||||
f(&model.ChangeItemParam{
|
}
|
||||||
|
if v.Offline == 0 {
|
||||||
|
// 在线数据恢复
|
||||||
|
logger.Logger.Tracef("道具恢复 SnId:%v Item:%+v", p.SnId, *v)
|
||||||
|
if _, ok := bagInfo.BagItem[v.ItemId]; !ok {
|
||||||
|
bagInfo.BagItem[v.ItemId] = &Item{
|
||||||
|
ItemId: v.ItemId,
|
||||||
|
ItemNum: 0,
|
||||||
|
ObtainTime: v.CreateTs,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bagInfo.BagItem[v.ItemId].ItemNum += num
|
||||||
|
changeItems[v.ItemId] = struct{}{}
|
||||||
|
} else {
|
||||||
|
// 离线时的变更
|
||||||
|
logger.Logger.Tracef("处理离线道具变化 SnId:%v Item:%v", p.SnId, *v)
|
||||||
|
this.OnChangeFuncs(&model.ChangeItemParam{
|
||||||
SnId: p.SnId,
|
SnId: p.SnId,
|
||||||
ItemId: v.ItemId,
|
ItemId: v.ItemId,
|
||||||
ItemNum: num,
|
ItemNum: num,
|
||||||
|
@ -956,6 +970,8 @@ func (this *BagMgr) CallbackAfter(ret *internal.PlayerLoadReplay) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.SyncBagData(p.SnId, maps.Keys(changeItems)...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -190,7 +190,6 @@ func (spd *ScenePolicyData) GiveCostPayment(s *Scene, snid int32) bool {
|
||||||
Remark: "竞技场房间费用返还",
|
Remark: "竞技场房间费用返还",
|
||||||
GameId: int64(s.gameId),
|
GameId: int64(s.gameId),
|
||||||
GameFreeId: int64(s.dbGameFree.GetId()),
|
GameFreeId: int64(s.dbGameFree.GetId()),
|
||||||
NoLog: false,
|
|
||||||
RoomConfigId: roomConfig.GetId(),
|
RoomConfigId: roomConfig.GetId(),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
@ -203,7 +202,6 @@ func (spd *ScenePolicyData) GiveCostPayment(s *Scene, snid int32) bool {
|
||||||
Remark: "竞技场房间费用返还",
|
Remark: "竞技场房间费用返还",
|
||||||
GameId: int64(s.gameId),
|
GameId: int64(s.gameId),
|
||||||
GameFreeId: int64(s.dbGameFree.GetId()),
|
GameFreeId: int64(s.dbGameFree.GetId()),
|
||||||
NoLog: false,
|
|
||||||
RoomConfigId: roomConfig.GetId(),
|
RoomConfigId: roomConfig.GetId(),
|
||||||
}, func(err error) {
|
}, func(err error) {
|
||||||
logger.Logger.Errorf("竞技场房间费用返还失败, err: %v", err)
|
logger.Logger.Errorf("竞技场房间费用返还失败, err: %v", err)
|
||||||
|
|
|
@ -907,7 +907,6 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) {
|
||||||
Remark: "累计签到进阶奖励获得",
|
Remark: "累计签到进阶奖励获得",
|
||||||
GameId: 0,
|
GameId: 0,
|
||||||
GameFreeId: 0,
|
GameFreeId: 0,
|
||||||
NoLog: false,
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
//通知客户端
|
//通知客户端
|
||||||
|
|
Loading…
Reference in New Issue