Commit 285f6717 authored by pengjun's avatar pengjun Committed by vipwzw

pokerbull add time log

parent 9b5c0ca6
......@@ -16,6 +16,7 @@ import (
"github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types"
pkt "github.com/33cn/plugin/plugin/dapp/pokerbull/types"
"time"
)
// Action 斗牛action结构
......@@ -484,7 +485,7 @@ func (action *Action) newGame(gameID string, start *pkt.PBGameStart) (*pkt.Poker
game = &pkt.PokerBull{
GameId: gameID,
Status: pkt.PBGameActionStart,
StartTime: action.blocktime,
StartTime: time.Unix(action.blocktime, 0).Format("2006-01-02 15:04:05"),
StartTxHash: gameID,
Value: start.GetValue(),
Poker: NewPoker(),
......@@ -497,7 +498,7 @@ func (action *Action) newGame(gameID string, start *pkt.PBGameStart) (*pkt.Poker
}
Shuffle(game.Poker, action.blocktime) //洗牌
logger.Debug(fmt.Sprintf("Start a new game %s for player %s", game.GameId, action.fromaddr))
logger.Info(fmt.Sprintf("Create a new game %s for player %s", game.GameId, action.fromaddr))
return game, nil
}
......@@ -560,7 +561,7 @@ func (action *Action) GameStart(start *pkt.PBGameStart) (*types.Receipt, error)
var logs []*types.ReceiptLog
var kv []*types.KeyValue
logger.Debug(fmt.Sprintf("Pokerbull game start for %s", action.fromaddr))
logger.Info(fmt.Sprintf("Pokerbull game match for %s", action.fromaddr))
if start.PlayerNum > pkt.MaxPlayerNum {
logger.Error("GameStart", "addr", action.fromaddr, "execaddr", action.execaddr,
"err", fmt.Sprintf("The maximum player number is %d", pkt.MaxPlayerNum))
......@@ -599,7 +600,7 @@ func (action *Action) GameStart(start *pkt.PBGameStart) (*types.Receipt, error)
return nil, err
}
}
logger.Debug(fmt.Sprintf("Match a new game %s for player %s", game.GameId, action.fromaddr))
logger.Info(fmt.Sprintf("Match a new game %s for player %s", game.GameId, action.fromaddr))
}
//发牌随机数取txhash
......@@ -613,11 +614,12 @@ func (action *Action) GameStart(start *pkt.PBGameStart) (*types.Receipt, error)
Address: action.fromaddr,
TxHash: txrng,
Ready: false,
MatchTime:time.Unix(action.blocktime, 0).Format("2006-01-02 15:04:05"),
})
// 如果人数达标,则发牌计算斗牛结果
if len(game.Players) == int(game.PlayerNum) {
logger.Debug(fmt.Sprintf("Game start: %s", game.GameId))
logger.Info(fmt.Sprintf("Game starting: %s round: %d", game.GameId, game.Round))
logsH, kvH, err := action.settleAccount(action.fromaddr, game)
if err != nil {
return nil, err
......@@ -631,7 +633,7 @@ func (action *Action) GameStart(start *pkt.PBGameStart) (*types.Receipt, error)
game.PreStatus = pkt.PBGameActionStart
game.IsWaiting = false
} else {
logger.Debug(fmt.Sprintf("Game waiting: %s", game.GameId))
logger.Info(fmt.Sprintf("Game waiting: %s round: %d", game.GameId, game.Round))
receipt, err := action.coinsAccount.ExecFrozen(action.fromaddr, action.execaddr, start.GetValue()*PokerbullLeverageMax) //冻结子账户资金, 最后一位玩家不需要冻结
if err != nil {
logger.Error("GameCreate.ExecFrozen", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", start.GetValue(), "err", err.Error())
......@@ -683,7 +685,7 @@ func (action *Action) GameContinue(pbcontinue *pkt.PBGameContinue) (*types.Recei
pbcontinue.GetGameId())
return nil, err
}
logger.Debug(fmt.Sprintf("Pokerbull game %s continue for %s", game.GameId, action.fromaddr))
logger.Info(fmt.Sprintf("Continue pokerbull game %s from %s", game.GameId, action.fromaddr))
// 检查余额,庄家检查闲家数量倍数的资金
checkValue := game.GetValue() * PokerbullLeverageMax
......@@ -716,9 +718,10 @@ func (action *Action) GameContinue(pbcontinue *pkt.PBGameContinue) (*types.Recei
}
pbplayer.TxHash = txrng
pbplayer.Ready = true
pbplayer.MatchTime = time.Unix(action.blocktime, 0).Format("2006-01-02 15:04:05")
if getReadyPlayerNum(game.Players) == int(game.PlayerNum) {
logger.Debug(fmt.Sprintf("Game start: %s", game.GameId))
logger.Info(fmt.Sprintf("Game starting: %s round: %d", game.GameId, game.Round))
logsH, kvH, err := action.settleAccount(action.fromaddr, game)
if err != nil {
return nil, err
......@@ -730,7 +733,7 @@ func (action *Action) GameContinue(pbcontinue *pkt.PBGameContinue) (*types.Recei
game.IsWaiting = false
game.PreStatus = pkt.PBGameActionContinue
} else {
logger.Debug(fmt.Sprintf("Game waiting: %s", game.GameId))
logger.Info(fmt.Sprintf("Game waiting: %s round: %d", game.GameId))
// 回合数加一次
if !game.IsWaiting {
game.Round++
......@@ -799,7 +802,7 @@ func (action *Action) GameQuit(pbend *pkt.PBGameQuit) (*types.Receipt, error) {
game.Status = pkt.PBGameActionQuit
game.PrevIndex = game.Index
game.Index = action.getIndex(game)
game.QuitTime = action.blocktime
game.QuitTime = time.Unix(action.blocktime, 0).Format("2006-01-02 15:04:05")
game.QuitTxHash = common.ToHex(action.txhash)
receiptLog := action.GetReceiptLog(game)
......
......@@ -6,7 +6,7 @@ package types;
message PokerBull {
string gameId = 1; //默认是由创建这局游戏的txHash作为gameId
int32 status = 2; // Start 1 -> Continue 2 -> Quit 3
int64 startTime = 3; //开始时间
string startTime = 3; //开始时间
string startTxHash = 4; //游戏启动交易hash
int64 value = 5; //赌注
PBPoker poker = 6; //扑克牌
......@@ -15,7 +15,7 @@ message PokerBull {
repeated PBResult results = 9; //游戏结果集
int64 index = 10; //索引
int64 prevIndex = 11; //上级索引
int64 quitTime = 12; //游戏结束时间
string quitTime = 12; //游戏结束时间
string quitTxHash = 13; //游戏结束交易hash
string dealerAddr = 14; //下局庄家地址
bool isWaiting = 15; //游戏是否处于等待状态
......@@ -30,6 +30,7 @@ message PBHand {
string address = 3; //玩家地址
bool isWin = 4; //是否赢庄家
int32 leverage = 5; //赌注倍数
string roundTime = 6; //本回合开始时间
}
//玩家
......@@ -37,7 +38,8 @@ message PBPlayer {
repeated PBHand hands = 1; //历史发牌和斗牛结果
string address = 2; //玩家地址
int64 txHash = 3; //发牌随机数因子txhash的整数格式
bool ready = 4; // continue状态下,是否ready
bool ready = 4; //continue状态下,是否ready
string matchTime = 5; //玩家匹配时间
}
//本局游戏结果
......
......@@ -5,9 +5,8 @@ package types
import (
fmt "fmt"
math "math"
proto "github.com/golang/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
......@@ -25,7 +24,7 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type PokerBull struct {
GameId string `protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
StartTime int64 `protobuf:"varint,3,opt,name=startTime,proto3" json:"startTime,omitempty"`
StartTime string `protobuf:"bytes,3,opt,name=startTime,proto3" json:"startTime,omitempty"`
StartTxHash string `protobuf:"bytes,4,opt,name=startTxHash,proto3" json:"startTxHash,omitempty"`
Value int64 `protobuf:"varint,5,opt,name=value,proto3" json:"value,omitempty"`
Poker *PBPoker `protobuf:"bytes,6,opt,name=poker,proto3" json:"poker,omitempty"`
......@@ -34,7 +33,7 @@ type PokerBull struct {
Results []*PBResult `protobuf:"bytes,9,rep,name=results,proto3" json:"results,omitempty"`
Index int64 `protobuf:"varint,10,opt,name=index,proto3" json:"index,omitempty"`
PrevIndex int64 `protobuf:"varint,11,opt,name=prevIndex,proto3" json:"prevIndex,omitempty"`
QuitTime int64 `protobuf:"varint,12,opt,name=quitTime,proto3" json:"quitTime,omitempty"`
QuitTime string `protobuf:"bytes,12,opt,name=quitTime,proto3" json:"quitTime,omitempty"`
QuitTxHash string `protobuf:"bytes,13,opt,name=quitTxHash,proto3" json:"quitTxHash,omitempty"`
DealerAddr string `protobuf:"bytes,14,opt,name=dealerAddr,proto3" json:"dealerAddr,omitempty"`
IsWaiting bool `protobuf:"varint,15,opt,name=isWaiting,proto3" json:"isWaiting,omitempty"`
......@@ -84,11 +83,11 @@ func (m *PokerBull) GetStatus() int32 {
return 0
}
func (m *PokerBull) GetStartTime() int64 {
func (m *PokerBull) GetStartTime() string {
if m != nil {
return m.StartTime
}
return 0
return ""
}
func (m *PokerBull) GetStartTxHash() string {
......@@ -147,11 +146,11 @@ func (m *PokerBull) GetPrevIndex() int64 {
return 0
}
func (m *PokerBull) GetQuitTime() int64 {
func (m *PokerBull) GetQuitTime() string {
if m != nil {
return m.QuitTime
}
return 0
return ""
}
func (m *PokerBull) GetQuitTxHash() string {
......@@ -196,6 +195,7 @@ type PBHand struct {
Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
IsWin bool `protobuf:"varint,4,opt,name=isWin,proto3" json:"isWin,omitempty"`
Leverage int32 `protobuf:"varint,5,opt,name=leverage,proto3" json:"leverage,omitempty"`
RoundTime string `protobuf:"bytes,6,opt,name=roundTime,proto3" json:"roundTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -261,12 +261,20 @@ func (m *PBHand) GetLeverage() int32 {
return 0
}
func (m *PBHand) GetRoundTime() string {
if m != nil {
return m.RoundTime
}
return ""
}
//玩家
type PBPlayer struct {
Hands []*PBHand `protobuf:"bytes,1,rep,name=hands,proto3" json:"hands,omitempty"`
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
TxHash int64 `protobuf:"varint,3,opt,name=txHash,proto3" json:"txHash,omitempty"`
Ready bool `protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"`
MatchTime string `protobuf:"bytes,5,opt,name=matchTime,proto3" json:"matchTime,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -325,6 +333,13 @@ func (m *PBPlayer) GetReady() bool {
return false
}
func (m *PBPlayer) GetMatchTime() string {
if m != nil {
return m.MatchTime
}
return ""
}
//本局游戏结果
type PBResult struct {
Hands []*PBHand `protobuf:"bytes,1,rep,name=hands,proto3" json:"hands,omitempty"`
......@@ -1734,69 +1749,71 @@ func init() {
func init() { proto.RegisterFile("pokerbull.proto", fileDescriptor_8d22e4ee2313e311) }
var fileDescriptor_8d22e4ee2313e311 = []byte{
// 1021 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x4b, 0x6f, 0x23, 0x45,
0x10, 0xde, 0xb1, 0x3d, 0x7e, 0xd4, 0x6c, 0xec, 0xa4, 0x81, 0xa8, 0x85, 0x10, 0xb2, 0x66, 0xc3,
0xae, 0x41, 0x90, 0x83, 0x23, 0x81, 0x56, 0x48, 0x48, 0x36, 0x07, 0x1c, 0x69, 0x85, 0x9c, 0xce,
0x4a, 0x7b, 0x9e, 0xf5, 0xf4, 0x66, 0x47, 0x3b, 0x19, 0x3b, 0xf3, 0xc8, 0xc6, 0x57, 0xee, 0xfc,
0x0a, 0x0e, 0xfc, 0x2a, 0x6e, 0xfc, 0x10, 0xd4, 0x55, 0xdd, 0x33, 0x3d, 0x13, 0x9b, 0x10, 0x6e,
0x5d, 0x8f, 0xae, 0xae, 0x57, 0x7f, 0x55, 0x30, 0xda, 0xac, 0x3f, 0xc8, 0xf4, 0x6d, 0x11, 0xc7,
0xa7, 0x9b, 0x74, 0x9d, 0xaf, 0x99, 0x9b, 0x6f, 0x37, 0x32, 0xf3, 0x7f, 0xef, 0xc0, 0x60, 0xa9,
0x44, 0xf3, 0x22, 0x8e, 0xd9, 0x31, 0x74, 0xaf, 0x82, 0x6b, 0x79, 0x1e, 0x72, 0x67, 0xec, 0x4c,
0x06, 0x42, 0x53, 0x8a, 0x9f, 0xe5, 0x41, 0x5e, 0x64, 0xbc, 0x35, 0x76, 0x26, 0xae, 0xd0, 0x14,
0xfb, 0x02, 0x06, 0x59, 0x1e, 0xa4, 0xf9, 0xeb, 0xe8, 0x5a, 0xf2, 0xf6, 0xd8, 0x99, 0xb4, 0x45,
0xc5, 0x60, 0x63, 0xf0, 0x88, 0xb8, 0x5b, 0x04, 0xd9, 0x7b, 0xde, 0x41, 0x93, 0x36, 0x8b, 0x7d,
0x0a, 0xee, 0x6d, 0x10, 0x17, 0x92, 0xbb, 0x78, 0x97, 0x08, 0x76, 0x02, 0x2e, 0x7a, 0xcb, 0xbb,
0x63, 0x67, 0xe2, 0x4d, 0x87, 0xa7, 0xe8, 0xea, 0xe9, 0x72, 0x8e, 0x8e, 0x0a, 0x12, 0xb2, 0xaf,
0xa1, 0xb7, 0x89, 0x83, 0xad, 0x4c, 0x33, 0xde, 0x1b, 0xb7, 0x27, 0xde, 0x74, 0x54, 0xe9, 0x21,
0x5f, 0x18, 0xb9, 0x72, 0x93, 0x8e, 0xbf, 0x16, 0xd7, 0xbc, 0x8f, 0x11, 0x54, 0x0c, 0x65, 0x28,
0x95, 0x59, 0x11, 0xe7, 0x19, 0x1f, 0x34, 0x0c, 0x09, 0xe4, 0x0b, 0x23, 0x57, 0xfe, 0x46, 0x49,
0x28, 0xef, 0x38, 0x90, 0xbf, 0x48, 0xa0, 0xf9, 0x54, 0xde, 0x9e, 0xa3, 0xc4, 0xa3, 0x2c, 0x94,
0x0c, 0xf6, 0x39, 0xf4, 0x6f, 0x8a, 0x88, 0x52, 0xf4, 0x14, 0x85, 0x25, 0xcd, 0xbe, 0x04, 0xc0,
0x33, 0x25, 0xe8, 0x00, 0x13, 0x64, 0x71, 0x94, 0x3c, 0x94, 0x41, 0x2c, 0xd3, 0x59, 0x18, 0xa6,
0x7c, 0x48, 0xf2, 0x8a, 0xa3, 0x5e, 0x8e, 0xb2, 0x37, 0x41, 0x94, 0x47, 0xc9, 0x15, 0x1f, 0x8d,
0x9d, 0x49, 0x5f, 0x54, 0x0c, 0xed, 0xd7, 0x25, 0x15, 0xee, 0x50, 0x87, 0x6d, 0x18, 0x2a, 0x96,
0x74, 0x5d, 0x24, 0x21, 0x3f, 0x42, 0x09, 0x11, 0xfe, 0x6f, 0x0e, 0x74, 0x97, 0xf3, 0x45, 0x90,
0x84, 0x4a, 0x61, 0x15, 0xa4, 0x61, 0xc6, 0x9d, 0x71, 0x5b, 0x29, 0x20, 0xa1, 0x5a, 0x81, 0xb2,
0x61, 0x5a, 0x81, 0x28, 0xc6, 0xa1, 0x17, 0x84, 0x61, 0x2a, 0xb3, 0x0c, 0x1b, 0x61, 0x20, 0x0c,
0x89, 0x49, 0xcb, 0xde, 0x44, 0x09, 0x36, 0x40, 0x5f, 0x10, 0xa1, 0xd2, 0x12, 0xcb, 0x5b, 0x99,
0x06, 0x57, 0x54, 0x7d, 0x57, 0x94, 0xb4, 0xff, 0x11, 0xfa, 0xa6, 0x88, 0xec, 0x19, 0xb8, 0xef,
0x83, 0x44, 0x7b, 0xe1, 0x4d, 0x0f, 0xca, 0xda, 0x28, 0x1f, 0x05, 0xc9, 0xec, 0xc7, 0x5b, 0xf5,
0xc7, 0x8f, 0xa1, 0x9b, 0x53, 0x76, 0xa9, 0x3d, 0x35, 0x85, 0xd1, 0xcb, 0x20, 0xdc, 0x1a, 0xa7,
0x90, 0xf0, 0xff, 0x70, 0xd4, 0xcb, 0x54, 0xf5, 0xff, 0xf6, 0xf2, 0x31, 0x74, 0x3f, 0x46, 0x49,
0x22, 0x53, 0xfd, 0xb0, 0xa6, 0x6a, 0xe1, 0xb5, 0xeb, 0xe1, 0xa9, 0x3b, 0x54, 0x43, 0xfd, 0x25,
0x34, 0xc5, 0x9e, 0xc3, 0x90, 0x4e, 0xaf, 0xea, 0x89, 0x69, 0x70, 0xfd, 0x97, 0xd0, 0xd3, 0x7f,
0x61, 0x4f, 0x8d, 0x38, 0xf4, 0x36, 0xeb, 0x28, 0xc9, 0xb5, 0x57, 0xae, 0x30, 0xa4, 0xff, 0x97,
0x03, 0x4f, 0x97, 0xf3, 0x5f, 0x82, 0x6b, 0x39, 0x5b, 0xe5, 0xd1, 0x3a, 0x61, 0xdf, 0x80, 0x8b,
0x1f, 0x12, 0x3f, 0xbc, 0x37, 0x65, 0x65, 0x90, 0x4a, 0xe7, 0x52, 0x49, 0x16, 0x4f, 0x04, 0xa9,
0xb0, 0x33, 0xe8, 0xaf, 0xd6, 0x49, 0x1e, 0x25, 0x85, 0x44, 0xbb, 0xde, 0xf4, 0xb3, 0x9a, 0xfa,
0xcf, 0x5a, 0xb8, 0x78, 0x22, 0x4a, 0x45, 0xf6, 0x02, 0x3a, 0xaa, 0xa1, 0x31, 0x09, 0xde, 0xf4,
0xa8, 0x76, 0xe1, 0xa2, 0x88, 0x94, 0x79, 0x54, 0x50, 0x9e, 0xdc, 0x14, 0x32, 0xa5, 0x8a, 0x34,
0x3d, 0xb9, 0x50, 0x12, 0xe5, 0x09, 0xaa, 0xb0, 0x21, 0xb4, 0xf2, 0x2d, 0x7e, 0x42, 0x57, 0xb4,
0xf2, 0xed, 0xbc, 0xa7, 0x71, 0xc4, 0x9f, 0x81, 0x67, 0xb9, 0x5e, 0xe1, 0x8b, 0x63, 0xe3, 0x4b,
0x0d, 0x0e, 0x5a, 0x0d, 0x38, 0xf0, 0x27, 0x30, 0xac, 0x87, 0xb3, 0x0f, 0x15, 0xfd, 0x13, 0x80,
0x2a, 0x8e, 0xbd, 0x5a, 0x5f, 0x19, 0x97, 0x30, 0x86, 0xbd, 0x6a, 0x37, 0xf0, 0x0c, 0x15, 0x48,
0xf7, 0x55, 0x94, 0xe5, 0xf3, 0x2d, 0xfd, 0xd4, 0x59, 0x12, 0x2e, 0x4b, 0xb0, 0xaa, 0x90, 0xd8,
0x69, 0x22, 0xf1, 0xfe, 0x98, 0x2a, 0xdc, 0x6a, 0x5b, 0xb8, 0xe5, 0xbf, 0x36, 0xbd, 0x20, 0xe4,
0x6a, 0x9d, 0x86, 0x8f, 0x46, 0xff, 0xdd, 0x56, 0x67, 0x70, 0x44, 0x56, 0x11, 0xfe, 0x1e, 0x30,
0x5d, 0x9a, 0x68, 0xd9, 0x26, 0x7e, 0x82, 0x03, 0xdb, 0xb1, 0x8c, 0x7d, 0xa7, 0x20, 0x1a, 0x8f,
0xfa, 0x33, 0x7e, 0x52, 0xeb, 0x0e, 0x52, 0x13, 0x46, 0xc7, 0x5f, 0x00, 0xbb, 0xe7, 0x42, 0xc6,
0xa6, 0x4d, 0x23, 0xbc, 0x66, 0xc4, 0xd2, 0xad, 0x2c, 0x7d, 0x80, 0x91, 0x55, 0x95, 0xf3, 0xe4,
0xdd, 0x7a, 0x6f, 0x28, 0x0c, 0x3a, 0x0a, 0x74, 0x34, 0x0e, 0xe0, 0xd9, 0xca, 0x5c, 0x7b, 0x77,
0xe6, 0x3a, 0x76, 0xd8, 0x67, 0xe0, 0x09, 0xb9, 0x89, 0xf5, 0x63, 0xec, 0x04, 0x3a, 0xca, 0xb4,
0xfe, 0x99, 0x87, 0xc6, 0x59, 0x33, 0xac, 0x05, 0x4a, 0xfd, 0x6f, 0xe1, 0xb0, 0xe1, 0x21, 0xfe,
0x7f, 0x72, 0x8a, 0x22, 0x1d, 0x08, 0x43, 0xfa, 0x2f, 0x61, 0x64, 0x3d, 0xa1, 0xba, 0x8c, 0x3d,
0x07, 0x57, 0x49, 0x4d, 0x52, 0xee, 0xbf, 0x43, 0x62, 0x7f, 0x0e, 0xcc, 0x7a, 0x68, 0xbe, 0x15,
0x6a, 0x5e, 0xfc, 0x5b, 0x61, 0x69, 0xba, 0xb4, 0xec, 0xe9, 0xf2, 0xb7, 0x03, 0xcc, 0x7a, 0xff,
0x21, 0x23, 0xfb, 0x1a, 0xef, 0x45, 0x39, 0x83, 0x08, 0x55, 0xee, 0x0d, 0x6c, 0x33, 0x94, 0x6a,
0xf3, 0xb1, 0xd3, 0x9c, 0x8f, 0xbb, 0xb7, 0x0f, 0x6b, 0xaf, 0xe8, 0x3e, 0xb0, 0x57, 0xe0, 0x2c,
0xcc, 0x8b, 0x34, 0xe1, 0x3d, 0x1a, 0x2e, 0x44, 0xf9, 0x7f, 0xb6, 0xe0, 0x40, 0xc8, 0x95, 0x8c,
0x36, 0xb9, 0xae, 0xe5, 0x63, 0x23, 0x34, 0xcd, 0xd4, 0xb6, 0x9a, 0x69, 0x67, 0xd3, 0xd4, 0x97,
0x0f, 0xb7, 0xb9, 0x7c, 0xd4, 0x60, 0xa1, 0xbb, 0x03, 0x16, 0x28, 0x01, 0xbd, 0x06, 0x3c, 0x56,
0x49, 0xeb, 0x37, 0x93, 0xc6, 0xab, 0xf4, 0x0c, 0xa8, 0xb7, 0xec, 0x2d, 0xab, 0x5c, 0x37, 0x60,
0xef, 0xba, 0xe1, 0xd9, 0x0d, 0x81, 0x10, 0x74, 0x49, 0x1b, 0xa1, 0x90, 0x37, 0xff, 0x07, 0xb0,
0xd9, 0x21, 0xb4, 0xdf, 0x49, 0xb3, 0x7e, 0xaa, 0xa3, 0xff, 0x23, 0x8c, 0x96, 0x73, 0x03, 0xdf,
0x64, 0x78, 0x5f, 0x01, 0xf4, 0xe5, 0x56, 0x75, 0xf9, 0x07, 0x85, 0xd7, 0x17, 0xb8, 0x83, 0x3d,
0xee, 0xe2, 0xf7, 0x6a, 0x1c, 0xe0, 0x17, 0x79, 0xd4, 0xbd, 0xb7, 0x5d, 0x5c, 0xc8, 0xcf, 0xfe,
0x09, 0x00, 0x00, 0xff, 0xff, 0xda, 0x14, 0x34, 0x44, 0xa3, 0x0b, 0x00, 0x00,
// 1045 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5f, 0x6f, 0xe3, 0x44,
0x10, 0x3f, 0xc7, 0xb1, 0x93, 0x8c, 0xaf, 0x4d, 0xbb, 0x40, 0xb5, 0x42, 0x08, 0x45, 0xbe, 0x72,
0x17, 0x10, 0xf4, 0x21, 0x95, 0x40, 0x27, 0x24, 0xa4, 0x84, 0x07, 0x52, 0xe9, 0x84, 0xd2, 0xed,
0x49, 0xf7, 0xec, 0x8b, 0xf7, 0x5a, 0xeb, 0x1c, 0x27, 0xf5, 0x9f, 0x72, 0xf9, 0x10, 0x3c, 0xf2,
0x8e, 0xc4, 0x03, 0x9f, 0x8a, 0x37, 0x3e, 0x08, 0xda, 0x99, 0xb5, 0xbd, 0x76, 0x13, 0x4a, 0x79,
0xdb, 0xf9, 0xb3, 0xb3, 0xbf, 0x99, 0x9d, 0xfd, 0xcd, 0xc2, 0x70, 0xb3, 0x7e, 0x2f, 0xd3, 0xb7,
0x45, 0x1c, 0x9f, 0x6d, 0xd2, 0x75, 0xbe, 0x66, 0x4e, 0xbe, 0xdd, 0xc8, 0xcc, 0xff, 0xb5, 0x0b,
0x83, 0x85, 0x32, 0xcd, 0x8a, 0x38, 0x66, 0x27, 0xe0, 0x5e, 0x07, 0x2b, 0x79, 0x11, 0x72, 0x6b,
0x64, 0x8d, 0x07, 0x42, 0x4b, 0x4a, 0x9f, 0xe5, 0x41, 0x5e, 0x64, 0xbc, 0x33, 0xb2, 0xc6, 0x8e,
0xd0, 0x12, 0xfb, 0x0c, 0x06, 0x59, 0x1e, 0xa4, 0xf9, 0xeb, 0x68, 0x25, 0xb9, 0x8d, 0x5b, 0x6a,
0x05, 0x1b, 0x81, 0x47, 0xc2, 0x87, 0x79, 0x90, 0xdd, 0xf0, 0x2e, 0xda, 0x4d, 0x15, 0xfb, 0x18,
0x9c, 0xbb, 0x20, 0x2e, 0x24, 0x77, 0x46, 0xd6, 0xd8, 0x16, 0x24, 0xb0, 0x53, 0x70, 0x10, 0x2d,
0x77, 0x47, 0xd6, 0xd8, 0x9b, 0x1c, 0x9e, 0x21, 0xd4, 0xb3, 0xc5, 0x0c, 0x81, 0x0a, 0x32, 0xb2,
0x2f, 0xa1, 0xb7, 0x89, 0x83, 0xad, 0x4c, 0x33, 0xde, 0x1b, 0xd9, 0x63, 0x6f, 0x32, 0xac, 0xfd,
0x50, 0x2f, 0x4a, 0xbb, 0x82, 0x49, 0xcb, 0x9f, 0x8b, 0x15, 0xef, 0x63, 0x06, 0xb5, 0x42, 0x05,
0x4a, 0x65, 0x56, 0xc4, 0x79, 0xc6, 0x07, 0xad, 0x40, 0x02, 0xf5, 0xa2, 0xb4, 0x2b, 0xbc, 0x51,
0x12, 0xca, 0x0f, 0x1c, 0x08, 0x2f, 0x0a, 0x18, 0x3e, 0x95, 0x77, 0x17, 0x68, 0xf1, 0xd0, 0x52,
0x2b, 0xd8, 0xa7, 0xd0, 0xbf, 0x2d, 0x22, 0x2a, 0xd1, 0x53, 0x2c, 0x41, 0x25, 0xb3, 0xcf, 0x01,
0x70, 0x4d, 0x05, 0x3a, 0x40, 0xab, 0xa1, 0x51, 0xf6, 0x50, 0x06, 0xb1, 0x4c, 0xa7, 0x61, 0x98,
0xf2, 0x43, 0xb2, 0xd7, 0x1a, 0x75, 0x72, 0x94, 0xbd, 0x09, 0xa2, 0x3c, 0x4a, 0xae, 0xf9, 0x70,
0x64, 0x8d, 0xfb, 0xa2, 0x56, 0x68, 0x5c, 0x57, 0x74, 0x71, 0x47, 0x3a, 0xed, 0x52, 0xa1, 0x72,
0x49, 0xd7, 0x45, 0x12, 0xf2, 0x63, 0xb4, 0x90, 0xe0, 0xff, 0x6e, 0x81, 0xbb, 0x98, 0xcd, 0x83,
0x24, 0x54, 0x0e, 0xcb, 0x20, 0x0d, 0x33, 0x6e, 0x8d, 0x6c, 0xe5, 0x80, 0x82, 0x6a, 0x05, 0xaa,
0x46, 0xd9, 0x0a, 0x24, 0x31, 0x0e, 0xbd, 0x20, 0x0c, 0x53, 0x99, 0x65, 0xba, 0x11, 0x4a, 0x11,
0x8b, 0x96, 0xbd, 0x89, 0x12, 0x6c, 0x80, 0xbe, 0x20, 0x41, 0x95, 0x25, 0x96, 0x77, 0x32, 0x0d,
0xae, 0xe9, 0xf6, 0x1d, 0x51, 0xc9, 0x0a, 0x38, 0xa2, 0xc1, 0x9a, 0xb9, 0xd4, 0x56, 0x95, 0xc2,
0xff, 0xcd, 0x82, 0x7e, 0x79, 0xc7, 0xec, 0x19, 0x38, 0x37, 0x41, 0xa2, 0x41, 0x7a, 0x93, 0x83,
0xea, 0xea, 0x54, 0x0a, 0x82, 0x6c, 0x26, 0xb6, 0x4e, 0x13, 0xdb, 0x09, 0xb8, 0x39, 0x15, 0xdf,
0xc6, 0x7b, 0xd3, 0x12, 0x16, 0x47, 0x06, 0xe1, 0xb6, 0xc4, 0x8c, 0x82, 0xc2, 0xb5, 0x0a, 0xf2,
0xe5, 0x0d, 0xe2, 0x72, 0x08, 0x57, 0xa5, 0xf0, 0xff, 0x40, 0x5c, 0xd4, 0x32, 0xff, 0x0d, 0xd7,
0x09, 0xb8, 0xbf, 0x44, 0x49, 0x22, 0x53, 0x0d, 0x4b, 0x4b, 0x8d, 0xda, 0xd8, 0xad, 0xda, 0x9c,
0x80, 0x4b, 0x0d, 0xa0, 0xdf, 0x93, 0x96, 0xd8, 0x73, 0x38, 0xa4, 0xd5, 0xab, 0x66, 0x55, 0x5b,
0x5a, 0xff, 0x25, 0xf4, 0xf4, 0x43, 0xda, 0x73, 0xc1, 0x1c, 0x7a, 0x9b, 0x75, 0x94, 0xe4, 0x1a,
0x95, 0x23, 0x4a, 0xd1, 0xff, 0xcb, 0x82, 0xa7, 0x8b, 0xd9, 0x4f, 0xc1, 0x4a, 0x4e, 0x97, 0x79,
0xb4, 0x4e, 0xd8, 0x57, 0xe0, 0xe0, 0x6b, 0x46, 0xb6, 0xf0, 0x26, 0xac, 0x4a, 0x52, 0xf9, 0x5c,
0x29, 0xcb, 0xfc, 0x89, 0x20, 0x17, 0x76, 0x0e, 0xfd, 0xe5, 0x3a, 0xc9, 0xa3, 0xa4, 0x90, 0x18,
0xd7, 0x9b, 0x7c, 0xd2, 0x70, 0xff, 0x51, 0x1b, 0xe7, 0x4f, 0x44, 0xe5, 0xc8, 0x5e, 0x40, 0x57,
0xbd, 0x06, 0x2c, 0x82, 0x37, 0x39, 0x6e, 0x6c, 0xb8, 0x2c, 0x22, 0x15, 0x1e, 0x1d, 0x14, 0x92,
0xdb, 0x42, 0xa6, 0x74, 0x5f, 0x6d, 0x24, 0x97, 0xca, 0xa2, 0x90, 0xa0, 0x0b, 0x3b, 0x84, 0x4e,
0xbe, 0xc5, 0x17, 0xec, 0x88, 0x4e, 0xbe, 0x9d, 0xf5, 0x34, 0x09, 0xf9, 0x53, 0xf0, 0x0c, 0xe8,
0x35, 0x39, 0x59, 0x26, 0x39, 0x35, 0xb8, 0xa4, 0xd3, 0xe2, 0x12, 0x7f, 0x0c, 0x87, 0xcd, 0x74,
0xf6, 0x51, 0xaa, 0x7f, 0x0a, 0x50, 0xe7, 0xb1, 0xd7, 0xeb, 0x8b, 0x12, 0x12, 0xe6, 0xb0, 0xd7,
0xed, 0x16, 0x9e, 0xa1, 0x03, 0xf9, 0xbe, 0x8a, 0xb2, 0x7c, 0xb6, 0xa5, 0x67, 0x3e, 0x4d, 0xc2,
0x45, 0xc5, 0x74, 0x35, 0x8d, 0x5b, 0x6d, 0x1a, 0xdf, 0x9f, 0x53, 0x4d, 0x7a, 0xb6, 0x41, 0x7a,
0xfe, 0xeb, 0xb2, 0x17, 0x84, 0x5c, 0xae, 0xd3, 0xf0, 0xd1, 0xa3, 0x63, 0x77, 0xd4, 0x29, 0x1c,
0x53, 0x54, 0xe4, 0xce, 0x07, 0x42, 0x57, 0x21, 0x3a, 0x66, 0x88, 0x1f, 0xe0, 0xc0, 0x04, 0x96,
0xb1, 0x6f, 0x14, 0xbf, 0xe3, 0x52, 0x3f, 0xc6, 0x8f, 0x1a, 0xdd, 0x41, 0x6e, 0xa2, 0xf4, 0xf1,
0xe7, 0xc0, 0xee, 0x41, 0xc8, 0xd8, 0xa4, 0x1d, 0x84, 0x37, 0x82, 0x18, 0xbe, 0x75, 0xa4, 0xf7,
0x30, 0x34, 0x6e, 0xe5, 0x22, 0x79, 0xb7, 0xde, 0x9b, 0x0a, 0x83, 0xae, 0xa2, 0x24, 0xcd, 0x03,
0xb8, 0x36, 0x2a, 0x67, 0xef, 0xae, 0x5c, 0xd7, 0x4c, 0xfb, 0x1c, 0x3c, 0x21, 0x37, 0xb1, 0x3e,
0x8c, 0x9d, 0x42, 0x57, 0x85, 0xd6, 0x2f, 0xf3, 0xa8, 0x04, 0x5b, 0x4e, 0x7a, 0x81, 0x56, 0xff,
0x6b, 0x38, 0x6a, 0x21, 0xc4, 0xf7, 0x4f, 0xa0, 0x28, 0xd3, 0x81, 0x28, 0x45, 0xff, 0x25, 0x0c,
0x8d, 0x23, 0x54, 0x97, 0xb1, 0xe7, 0xe0, 0x28, 0x6b, 0x59, 0x94, 0xfb, 0xe7, 0x90, 0xd9, 0x9f,
0x01, 0x33, 0x0e, 0x9a, 0x6d, 0x85, 0x62, 0xf3, 0x7f, 0xbb, 0x58, 0x1a, 0x4d, 0x1d, 0x73, 0x34,
0xfd, 0x6d, 0x01, 0x33, 0xce, 0x7f, 0x28, 0xc8, 0xbe, 0xc6, 0x7b, 0x51, 0x0d, 0x30, 0x62, 0x95,
0x7b, 0xd3, 0xbe, 0x9c, 0x68, 0x8d, 0xe1, 0xda, 0x6d, 0x0f, 0xd7, 0xdd, 0x5f, 0x17, 0xe3, 0x53,
0xe2, 0x3e, 0xf0, 0x29, 0xc1, 0x41, 0x9a, 0x17, 0x69, 0xc2, 0x7b, 0x34, 0x7a, 0x48, 0xf2, 0xff,
0xec, 0xc0, 0x81, 0x90, 0x4b, 0x19, 0x6d, 0x72, 0x7d, 0x97, 0x8f, 0xcd, 0xb0, 0x6c, 0x26, 0xdb,
0x68, 0xa6, 0x9d, 0x4d, 0xd3, 0xfc, 0xb9, 0x38, 0xed, 0x9f, 0x4b, 0x83, 0x16, 0xdc, 0x1d, 0xb4,
0x40, 0x05, 0xe8, 0xb5, 0xe8, 0xb1, 0x2e, 0x5a, 0xbf, 0x5d, 0x34, 0x5e, 0x97, 0x67, 0x40, 0xbd,
0x65, 0x7e, 0xd1, 0xaa, 0xbf, 0x0a, 0xec, 0xfd, 0xab, 0x78, 0x66, 0x43, 0x20, 0x05, 0x5d, 0xd1,
0x77, 0x52, 0xc8, 0xdb, 0xff, 0x43, 0xd8, 0xec, 0x08, 0xec, 0x77, 0x52, 0x6a, 0x12, 0x52, 0x4b,
0xff, 0x7b, 0x18, 0x2e, 0x66, 0x25, 0x7d, 0x53, 0xe0, 0x7d, 0x17, 0xa0, 0x37, 0x77, 0xea, 0xcd,
0xdf, 0x29, 0xbe, 0xbe, 0xc4, 0x0f, 0xdc, 0xe3, 0x36, 0x7e, 0xab, 0xc6, 0x01, 0x3e, 0x91, 0x47,
0xed, 0x7b, 0xeb, 0xe2, 0x6f, 0xfe, 0xfc, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x08, 0xea,
0x50, 0xe0, 0x0b, 0x00, 0x00,
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment