Enhanced turn-around performance.

This commit is contained in:
genxium 2023-01-20 11:29:27 +08:00
parent c357ebad3b
commit 59c8427c70
26 changed files with 1802 additions and 1414 deletions

View File

@ -41,6 +41,7 @@ func toPbRoomDownsyncFrame(rdf *battle.RoomDownsyncFrame) *pb.RoomDownsyncFrame
OnWall: last.OnWall,
OnWallNormX: last.OnWallNormX,
OnWallNormY: last.OnWallNormY,
CapturedByInertia: last.CapturedByInertia,
JoinIndex: last.JoinIndex,
BulletTeamId: last.BulletTeamId,
ChCollisionTeamId: last.ChCollisionTeamId,
@ -165,6 +166,7 @@ func toPbPlayers(modelInstances map[int32]*Player, withMetaInfo bool) []*pb.Play
OnWall: last.OnWall,
OnWallNormX: last.OnWallNormX,
OnWallNormY: last.OnWallNormY,
CapturedByInertia: last.CapturedByInertia,
JoinIndex: last.JoinIndex,
BulletTeamId: last.BulletTeamId,
ChCollisionTeamId: last.ChCollisionTeamId,
@ -216,6 +218,7 @@ func toJsPlayers(modelInstances map[int32]*Player) []*battle.PlayerDownsync {
OnWall: last.OnWall,
OnWallNormX: last.OnWallNormX,
OnWallNormY: last.OnWallNormY,
CapturedByInertia: last.CapturedByInertia,
Score: last.Score,
Removed: last.Removed,
}

View File

@ -30,9 +30,9 @@ type PlayerDownsync struct {
VirtualGridX int32 `protobuf:"varint,2,opt,name=virtualGridX,proto3" json:"virtualGridX,omitempty"`
VirtualGridY int32 `protobuf:"varint,3,opt,name=virtualGridY,proto3" json:"virtualGridY,omitempty"`
DirX int32 `protobuf:"varint,4,opt,name=dirX,proto3" json:"dirX,omitempty"`
DirY int32 `protobuf:"varint,5,opt,name=dirY,proto3" json:"dirY,omitempty"` // "dirX" and "dirY" determines character facing
DirY int32 `protobuf:"varint,5,opt,name=dirY,proto3" json:"dirY,omitempty"`
VelX int32 `protobuf:"varint,6,opt,name=velX,proto3" json:"velX,omitempty"`
VelY int32 `protobuf:"varint,7,opt,name=velY,proto3" json:"velY,omitempty"` // "velX" and "velY" is used to record the accumulated effect by accelerations (including gravity)
VelY int32 `protobuf:"varint,7,opt,name=velY,proto3" json:"velY,omitempty"` // "velX" and "velY" is used to record the accumulated effect by inertia and accelerations (including gravity)
Speed int32 `protobuf:"varint,8,opt,name=speed,proto3" json:"speed,omitempty"` // this is the instantaneous scalar attribute of a character, different from but will be accounted in "velX" and "velY"
BattleState int32 `protobuf:"varint,9,opt,name=battleState,proto3" json:"battleState,omitempty"`
JoinIndex int32 `protobuf:"varint,10,opt,name=joinIndex,proto3" json:"joinIndex,omitempty"`
@ -54,6 +54,7 @@ type PlayerDownsync struct {
OnWall bool `protobuf:"varint,26,opt,name=onWall,proto3" json:"onWall,omitempty"` // like "inAir", its by design a standalone field only inferred by the collision result of "applyInputFrameDownsyncDynamicsOnSingleRenderFrame" instead of "characterState", because we need check the transition for "characterState" from this field, i.e. "onWall (prev -> curr)"
OnWallNormX int32 `protobuf:"varint,27,opt,name=onWallNormX,proto3" json:"onWallNormX,omitempty"`
OnWallNormY int32 `protobuf:"varint,28,opt,name=onWallNormY,proto3" json:"onWallNormY,omitempty"`
CapturedByInertia bool `protobuf:"varint,29,opt,name=capturedByInertia,proto3" json:"capturedByInertia,omitempty"` // like "inAir", its by design a standalone field only inferred by the calc result of "applyInputFrameDownsyncDynamicsOnSingleRenderFrame" instead of "characterState"
Name string `protobuf:"bytes,997,opt,name=name,proto3" json:"name,omitempty"`
DisplayName string `protobuf:"bytes,998,opt,name=displayName,proto3" json:"displayName,omitempty"`
Avatar string `protobuf:"bytes,999,opt,name=avatar,proto3" json:"avatar,omitempty"`
@ -287,6 +288,13 @@ func (x *PlayerDownsync) GetOnWallNormY() int32 {
return 0
}
func (x *PlayerDownsync) GetCapturedByInertia() bool {
if x != nil {
return x.CapturedByInertia
}
return false
}
func (x *PlayerDownsync) GetName() string {
if x != nil {
return x.Name
@ -1616,7 +1624,7 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
0x0a, 0x19, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x5f,
0x66, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x73, 0x1a, 0x0e, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x07, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f,
0x6f, 0x74, 0x6f, 0x22, 0xf3, 0x07, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f,
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69,
@ -1671,294 +1679,297 @@ var file_room_downsync_frame_proto_rawDesc = []byte{
0x4e, 0x6f, 0x72, 0x6d, 0x58, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f, 0x6e, 0x57,
0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x6e, 0x57, 0x61,
0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x59, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6f,
0x6e, 0x57, 0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0xe5, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
0x21, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0xe6,
0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x17, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0xe7, 0x07, 0x20,
0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49,
0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64,
0x12, 0x0e, 0x0a, 0x02, 0x64, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x78,
0x12, 0x0e, 0x0a, 0x02, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x79,
0x12, 0x1c, 0x0a, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c,
0x0a, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x6e, 0x0a, 0x10,
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
0x6e, 0x57, 0x61, 0x6c, 0x6c, 0x4e, 0x6f, 0x72, 0x6d, 0x59, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x61,
0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x42, 0x79, 0x49, 0x6e, 0x65, 0x72, 0x74, 0x69, 0x61, 0x18,
0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x42,
0x79, 0x49, 0x6e, 0x65, 0x72, 0x74, 0x69, 0x61, 0x12, 0x13, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0xe5, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a,
0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0xe6, 0x07, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x17, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x6f, 0x0a, 0x11, 0x49, 0x6e, 0x70,
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x0e,
0x0a, 0x02, 0x64, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x78, 0x12, 0x0e,
0x0a, 0x02, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x64, 0x79, 0x12, 0x1c,
0x0a, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x62, 0x74, 0x6e, 0x41, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09,
0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
0x09, 0x62, 0x74, 0x6e, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x6e, 0x0a, 0x10, 0x49, 0x6e,
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x22,
0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09,
0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x7c, 0x0a, 0x12, 0x49, 0x6e,
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x1c,
0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x7c, 0x0a, 0x12,
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79,
0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c,
0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74,
0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x48, 0x65,
0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a,
0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73, 0x52, 0x65,
0x71, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65,
0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65,
0x72, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x03, 0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e,
0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x6b, 0x69,
0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x63, 0x6b,
0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18,
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70,
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69, 0x6e, 0x70,
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74,
0x63, 0x68, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79,
0x6e, 0x63, 0x52, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70,
0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68, 0x62, 0x18,
0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x48,
0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x02,
0x68, 0x62, 0x22, 0xaf, 0x02, 0x0a, 0x06, 0x57, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a,
0x03, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12,
0x20, 0x0a, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49,
0x6d, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69, 0x73,
0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x4c, 0x69,
0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4c,
0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69,
0x72, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x48, 0x65, 0x61, 0x72,
0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x0a, 0x0f, 0x63,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xb8, 0x02, 0x0a, 0x05, 0x57, 0x73, 0x52, 0x65, 0x71, 0x12,
0x14, 0x0a, 0x05, 0x6d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x6d, 0x73, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49,
0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x61, 0x63, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f,
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72, 0x64, 0x66,
0x12, 0x54, 0x0a, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f,
0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x17, 0x69,
0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e,
0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x73, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x24,
0x0a, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x22, 0x9a, 0x02, 0x0a, 0x14, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42,
0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, 0x0a,
0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01,
0x28, 0x04, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d,
0x61, 0x73, 0x6b, 0x12, 0x58, 0x0a, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70,
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73,
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79,
0x6e, 0x63, 0x52, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46,
0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12, 0x2c, 0x0a,
0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79,
0x6e, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64,
0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x70,
0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x22, 0x89, 0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65,
0x74, 0x12, 0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f,
0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72,
0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61,
0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
0x2e, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e,
0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12,
0x2e, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e,
0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12,
0x22, 0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18,
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72,
0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53,
0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f,
0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56,
0x65, 0x6c, 0x58, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62,
0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62,
0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70,
0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64,
0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d,
0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56,
0x65, 0x6c, 0x58, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c,
0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c,
0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73,
0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68,
0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,
0x58, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65,
0x74, 0x59, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f,
0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69,
0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74,
0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62,
0x6c, 0x6f, 0x77, 0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f,
0x77, 0x55, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62,
0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49,
0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15,
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12,
0x28, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d,
0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73,
0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53,
0x74, 0x61, 0x74, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74,
0x61, 0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42,
0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72,
0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xc1, 0x08,
0x0a, 0x0e, 0x46, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
0x12, 0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66,
0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a,
0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72,
0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e,
0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46,
0x72, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63,
0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e,
0x0a, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46,
0x72, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63,
0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22,
0x0a, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d,
0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74,
0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63,
0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d,
0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65,
0x6c, 0x58, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61,
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61,
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75,
0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61,
0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61,
0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65,
0x6c, 0x58, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f,
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f,
0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65,
0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69,
0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58,
0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,
0x59, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f,
0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
0x53, 0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74,
0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62,
0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68,
0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c,
0x6f, 0x77, 0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77,
0x55, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01,
0x28, 0x05, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75,
0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64,
0x12, 0x1c, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15, 0x20,
0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12, 0x28,
0x0a, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69,
0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53, 0x74,
0x61, 0x74, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61,
0x74, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c,
0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72, 0x61,
0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0c,
0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0xe7, 0x07, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64,
0x58, 0x12, 0x23, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64,
0x59, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61,
0x6c, 0x47, 0x72, 0x69, 0x64, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x69, 0x72, 0x58, 0x18, 0xe9,
0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x64,
0x69, 0x72, 0x59, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x59,
0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x58, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x76, 0x65, 0x6c, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x18, 0xec, 0x07,
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x12, 0x15, 0x0a, 0x05, 0x73, 0x70,
0x65, 0x65, 0x64, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65,
0x64, 0x22, 0xc9, 0x05, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c,
0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67,
0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61,
0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76,
0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e,
0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34,
0x0a, 0x15, 0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63,
0x74, 0x69, 0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x77,
0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76,
0x65, 0x46, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f,
0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64,
0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65,
0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20,
0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75,
0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61,
0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
0x52, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79,
0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65,
0x12, 0x48, 0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68,
0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f,
0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44,
0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x72,
0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64,
0x44, 0x74, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c,
0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e,
0x61, 0x6e, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c,
0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e,
0x61, 0x6e, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61,
0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22,
0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0b,
0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65,
0x74, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65,
0x74, 0x59, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f,
0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73,
0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74,
0x65, 0x70, 0x12, 0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c,
0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x80, 0x08,
0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c,
0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xc2, 0x03,
0x0a, 0x11, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72,
0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72,
0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52,
0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61,
0x6e, 0x6f, 0x73, 0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c,
0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c,
0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0f,
0x66, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18,
0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x46,
0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0f, 0x66,
0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x37,
0x0a, 0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69,
0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x80, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52,
0x16, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c,
0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x81, 0x08, 0x20,
0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65,
0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65,
0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x82, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d,
0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a,
0x14, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f,
0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x83, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x62, 0x75,
0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x65, 0x72, 0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x76,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x61, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78,
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e,
0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20,
0x01, 0x28, 0x05, 0x52, 0x12, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68,
0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
0x52, 0x15, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79,
0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x27, 0x0a, 0x02, 0x68, 0x62, 0x18, 0x08, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x48, 0x65, 0x61,
0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x02, 0x68, 0x62,
0x22, 0xaf, 0x02, 0x0a, 0x06, 0x57, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x72,
0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x65, 0x74, 0x12, 0x20, 0x0a,
0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x49, 0x64, 0x12,
0x10, 0x0a, 0x03, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x63,
0x74, 0x12, 0x2b, 0x0a, 0x03, 0x72, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e,
0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x72, 0x64, 0x66, 0x12, 0x54,
0x0a, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e,
0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72,
0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x17, 0x69, 0x6e, 0x70,
0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x42,
0x61, 0x74, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e,
0x66, 0x6f, 0x52, 0x08, 0x62, 0x63, 0x69, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d,
0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x22, 0x9a, 0x02, 0x0a, 0x14, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x42, 0x75, 0x66,
0x66, 0x65, 0x72, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x72,
0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x72, 0x65, 0x66, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x4d, 0x61, 0x73,
0x6b, 0x12, 0x58, 0x0a, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x49, 0x6e,
0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63,
0x52, 0x19, 0x74, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x73,
0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63,
0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f,
0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x65, 0x65,
0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22,
0x89, 0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12,
0x38, 0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66,
0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f,
0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74,
0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a,
0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72,
0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65,
0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a,
0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72,
0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65,
0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a,
0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x73, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d,
0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75,
0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c,
0x58, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63,
0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63,
0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73,
0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d,
0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67,
0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c,
0x58, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63,
0x6b, 0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63,
0x6b, 0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c,
0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74,
0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12,
0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59,
0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66,
0x66, 0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53,
0x69, 0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62,
0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f,
0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69,
0x74, 0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f,
0x77, 0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55,
0x70, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28,
0x05, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6c,
0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12,
0x1c, 0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15, 0x20, 0x01,
0x28, 0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a,
0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f,
0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61,
0x74, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53,
0x74, 0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d,
0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xc1, 0x08, 0x0a, 0x0e,
0x46, 0x69, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x38,
0x0a, 0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x17, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x6e, 0x64, 0x65,
0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x66, 0x66, 0x65,
0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69,
0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75,
0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73,
0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x12,
0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x12,
0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61,
0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c,
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65,
0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x53, 0x74, 0x75, 0x6e,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53,
0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x75, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73,
0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58,
0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b,
0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x62, 0x61, 0x63, 0x6b,
0x56, 0x65, 0x6c, 0x59, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x75, 0x73, 0x68,
0x62, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61,
0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65,
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x58,
0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b,
0x56, 0x65, 0x6c, 0x58, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x4c, 0x6f, 0x63, 0x6b,
0x56, 0x65, 0x6c, 0x59, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66,
0x4c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x6c, 0x59, 0x12, 0x24, 0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62,
0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x12, 0x24,
0x0a, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59, 0x18,
0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x4f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x59, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x53, 0x69,
0x7a, 0x65, 0x58, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f,
0x78, 0x53, 0x69, 0x7a, 0x65, 0x58, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x62, 0x6f, 0x78,
0x53, 0x69, 0x7a, 0x65, 0x59, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x68, 0x69, 0x74,
0x62, 0x6f, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x59, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x77,
0x55, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x77, 0x55, 0x70,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x75, 0x6c, 0x6c,
0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x1c,
0x0a, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f,
0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18,
0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x73, 0x69, 0x6f, 0x6e,
0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65,
0x12, 0x28, 0x0a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74,
0x61, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65,
0x73, 0x49, 0x6e, 0x42, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x76, 0x69,
0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28,
0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x58, 0x12,
0x23, 0x0a, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47, 0x72, 0x69, 0x64, 0x59, 0x18,
0xe8, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x47,
0x72, 0x69, 0x64, 0x59, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x69, 0x72, 0x58, 0x18, 0xe9, 0x07, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x69, 0x72,
0x59, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x69, 0x72, 0x59, 0x12, 0x13,
0x0a, 0x04, 0x76, 0x65, 0x6c, 0x58, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x76,
0x65, 0x6c, 0x58, 0x12, 0x13, 0x0a, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x18, 0xec, 0x07, 0x20, 0x01,
0x28, 0x05, 0x52, 0x04, 0x76, 0x65, 0x6c, 0x59, 0x12, 0x15, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65,
0x64, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x22,
0xc9, 0x05, 0x0a, 0x12, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x69, 0x64,
0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x4e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x6e,
0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x15,
0x77, 0x69, 0x6c, 0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69,
0x76, 0x65, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x77, 0x69, 0x6c,
0x6c, 0x4b, 0x69, 0x63, 0x6b, 0x49, 0x66, 0x49, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x46,
0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x6f,
0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
0x03, 0x52, 0x13, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x46, 0x0a, 0x1e, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x46,
0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54,
0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e,
0x69, 0x6e, 0x70, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x55, 0x70, 0x73, 0x79, 0x6e, 0x63,
0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x48,
0x0a, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64,
0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1f, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x61, 0x73,
0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x50,
0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x72, 0x6f, 0x6c, 0x6c,
0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4d,
0x69, 0x6c, 0x6c, 0x69, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x72, 0x6f, 0x6c,
0x6c, 0x62, 0x61, 0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74,
0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e,
0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x72, 0x6f, 0x6c, 0x6c, 0x62, 0x61,
0x63, 0x6b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x44, 0x74, 0x4e, 0x61, 0x6e,
0x6f, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68,
0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x72, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c,
0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x58,
0x12, 0x22, 0x0a, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x59,
0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x59, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10,
0x63, 0x6f, 0x6c, 0x6c, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x53, 0x74, 0x65, 0x70,
0x12, 0x39, 0x0a, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67,
0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x80, 0x08, 0x20, 0x01,
0x28, 0x08, 0x52, 0x17, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x67,
0x67, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0xc2, 0x03, 0x0a, 0x11,
0x52, 0x6f, 0x6f, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x46, 0x72, 0x61, 0x6d,
0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69,
0x64, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x0a, 0x70,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x41, 0x72, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x4e, 0x61, 0x6e, 0x6f,
0x73, 0x12, 0x37, 0x0a, 0x0c, 0x6d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
0x2e, 0x4d, 0x65, 0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0c, 0x6d, 0x65,
0x6c, 0x65, 0x65, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x66, 0x69,
0x72, 0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x05, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x46, 0x69, 0x72,
0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x0f, 0x66, 0x69, 0x72,
0x65, 0x62, 0x61, 0x6c, 0x6c, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x16,
0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d,
0x65, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x80, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x62,
0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65,
0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2d, 0x0a, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46,
0x6f, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x18, 0x81, 0x08, 0x20, 0x01, 0x28,
0x08, 0x52, 0x11, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x65,
0x73, 0x79, 0x6e, 0x63, 0x12, 0x25, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x49,
0x64, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x82, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x70,
0x65, 0x63, 0x69, 0x65, 0x73, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x14, 0x62,
0x75, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e,
0x74, 0x65, 0x72, 0x18, 0x83, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x62, 0x75, 0x6c, 0x6c,
0x65, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72,
0x42, 0x13, 0x5a, 0x11, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x76, 0x2f, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +0,0 @@
{
"ver": "1.0.1",
"uuid": "5a2059cd-f691-4ffa-bdc9-7e1232295450",
"subMetas": {}
}

View File

@ -15,7 +15,7 @@
<key>spriteSourceSize</key>
<string>{112,128}</string>
<key>textureRect</key>
<string>{{806,750},{112,128}}</string>
<string>{{384,989},{112,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -30,7 +30,7 @@
<key>spriteSourceSize</key>
<string>{112,128}</string>
<key>textureRect</key>
<string>{{0,1076},{112,128}}</string>
<string>{{256,990},{112,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -60,7 +60,7 @@
<key>spriteSourceSize</key>
<string>{80,128}</string>
<key>textureRect</key>
<string>{{528,515},{80,128}}</string>
<string>{{940,0},{80,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -75,7 +75,7 @@
<key>spriteSourceSize</key>
<string>{80,128}</string>
<key>textureRect</key>
<string>{{934,640},{80,128}}</string>
<string>{{940,128},{80,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -90,7 +90,7 @@
<key>spriteSourceSize</key>
<string>{112,128}</string>
<key>textureRect</key>
<string>{{128,1076},{112,128}}</string>
<string>{{128,1082},{112,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -105,7 +105,7 @@
<key>spriteSourceSize</key>
<string>{112,128}</string>
<key>textureRect</key>
<string>{{678,862},{112,128}}</string>
<string>{{0,1188},{112,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -150,7 +150,7 @@
<key>spriteSourceSize</key>
<string>{80,128}</string>
<key>textureRect</key>
<string>{{934,768},{80,128}}</string>
<string>{{940,256},{80,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -165,7 +165,7 @@
<key>spriteSourceSize</key>
<string>{80,128}</string>
<key>textureRect</key>
<string>{{934,896},{80,128}}</string>
<string>{{937,384},{80,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -180,9 +180,9 @@
<key>spriteSourceSize</key>
<string>{80,128}</string>
<key>textureRect</key>
<string>{{806,958},{80,128}}</string>
<string>{{528,515},{80,128}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>Atk2_0.png</key>
<dict>
@ -195,7 +195,7 @@
<key>spriteSourceSize</key>
<string>{80,128}</string>
<key>textureRect</key>
<string>{{934,1024},{80,128}}</string>
<string>{{936,512},{80,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -225,7 +225,7 @@
<key>spriteSourceSize</key>
<string>{128,112}</string>
<key>textureRect</key>
<string>{{128,964},{128,112}}</string>
<string>{{0,1076},{128,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -240,7 +240,7 @@
<key>spriteSourceSize</key>
<string>{96,96}</string>
<key>textureRect</key>
<string>{{912,1152},{96,96}}</string>
<string>{{688,1357},{96,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -255,7 +255,7 @@
<key>spriteSourceSize</key>
<string>{96,112}</string>
<key>textureRect</key>
<string>{{340,1197},{96,112}}</string>
<string>{{240,1360},{96,112}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -270,7 +270,7 @@
<key>spriteSourceSize</key>
<string>{96,112}</string>
<key>textureRect</key>
<string>{{452,1196},{96,112}}</string>
<string>{{352,1358},{96,112}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -285,7 +285,7 @@
<key>spriteSourceSize</key>
<string>{96,112}</string>
<key>textureRect</key>
<string>{{564,1155},{96,112}}</string>
<string>{{920,1072},{96,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -300,7 +300,7 @@
<key>spriteSourceSize</key>
<string>{96,112}</string>
<key>textureRect</key>
<string>{{608,1043},{96,112}}</string>
<string>{{914,1184},{96,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -330,7 +330,7 @@
<key>spriteSourceSize</key>
<string>{128,112}</string>
<key>textureRect</key>
<string>{{678,750},{128,112}}</string>
<string>{{806,631},{128,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -540,7 +540,7 @@
<key>spriteSourceSize</key>
<string>{112,112}</string>
<key>textureRect</key>
<string>{{448,1293},{112,112}}</string>
<string>{{802,1149},{112,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -555,9 +555,9 @@
<key>spriteSourceSize</key>
<string>{96,112}</string>
<key>textureRect</key>
<string>{{660,1155},{96,112}}</string>
<string>{{800,1261},{96,112}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Atked1_3.png</key>
<dict>
@ -570,7 +570,7 @@
<key>spriteSourceSize</key>
<string>{128,112}</string>
<key>textureRect</key>
<string>{{384,988},{128,112}}</string>
<string>{{806,743},{128,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -645,7 +645,7 @@
<key>spriteSourceSize</key>
<string>{114,112}</string>
<key>textureRect</key>
<string>{{0,1188},{114,112}}</string>
<string>{{806,1037},{114,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -660,9 +660,9 @@
<key>spriteSourceSize</key>
<string>{114,112}</string>
<key>textureRect</key>
<string>{{114,1188},{114,112}}</string>
<string>{{384,1213},{114,112}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Dashing_3.png</key>
<dict>
@ -675,7 +675,7 @@
<key>spriteSourceSize</key>
<string>{114,112}</string>
<key>textureRect</key>
<string>{{0,1300},{114,112}}</string>
<string>{{464,1327},{114,112}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -690,7 +690,7 @@
<key>spriteSourceSize</key>
<string>{114,112}</string>
<key>textureRect</key>
<string>{{112,1300},{114,112}}</string>
<string>{{496,1213},{114,112}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -705,7 +705,7 @@
<key>spriteSourceSize</key>
<string>{114,112}</string>
<key>textureRect</key>
<string>{{0,1300},{114,112}}</string>
<string>{{464,1327},{114,112}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -720,7 +720,7 @@
<key>spriteSourceSize</key>
<string>{114,112}</string>
<key>textureRect</key>
<string>{{224,1300},{114,112}}</string>
<string>{{576,1327},{114,112}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -735,56 +735,11 @@
<key>spriteSourceSize</key>
<string>{114,112}</string>
<key>textureRect</key>
<string>{{336,1293},{114,112}}</string>
<string>{{688,1043},{114,112}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>GetUp1_1.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{128,118}</string>
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{384,634},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_2.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{128,118}</string>
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{384,752},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_3.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{128,118}</string>
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{256,753},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_4.png</key>
<dict>
<key>aliases</key>
<array/>
@ -799,7 +754,7 @@
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_5.png</key>
<key>GetUp1_2.png</key>
<dict>
<key>aliases</key>
<array/>
@ -814,6 +769,51 @@
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_3.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{128,118}</string>
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{384,753},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_4.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{128,118}</string>
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{678,631},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_5.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{128,118}</string>
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{384,871},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>GetUp1_6.png</key>
<dict>
<key>aliases</key>
@ -825,7 +825,7 @@
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{384,870},{128,118}}</string>
<string>{{256,872},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -840,7 +840,7 @@
<key>spriteSourceSize</key>
<string>{128,118}</string>
<key>textureRect</key>
<string>{{256,871},{128,118}}</string>
<string>{{128,964},{128,118}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -855,7 +855,7 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{940,0},{70,128}}</string>
<string>{{608,531},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -870,7 +870,7 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{940,128},{70,128}}</string>
<string>{{608,659},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -885,7 +885,7 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{940,256},{70,128}}</string>
<string>{{608,787},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -900,7 +900,7 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{937,384},{70,128}}</string>
<string>{{608,915},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -915,9 +915,9 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{936,512},{70,128}}</string>
<string>{{128,1290},{70,128}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Idle1_14.png</key>
<dict>
@ -930,9 +930,9 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{608,531},{70,128}}</string>
<string>{{0,1300},{70,128}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Idle1_15.png</key>
<dict>
@ -945,9 +945,9 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{608,659},{70,128}}</string>
<string>{{0,1370},{70,128}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Idle1_2.png</key>
<dict>
@ -960,9 +960,9 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{608,659},{70,128}}</string>
<string>{{0,1370},{70,128}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Idle1_3.png</key>
<dict>
@ -975,9 +975,9 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{608,531},{70,128}}</string>
<string>{{0,1300},{70,128}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Idle1_4.png</key>
<dict>
@ -990,71 +990,11 @@
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{936,512},{70,128}}</string>
<string>{{128,1290},{70,128}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Idle1_5.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{937,384},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>Idle1_6.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{940,256},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>Idle1_7.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{940,128},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>Idle1_8.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{608,787},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>Idle1_9.png</key>
<dict>
<key>aliases</key>
<array/>
@ -1069,6 +1009,66 @@
<key>textureRotated</key>
<false/>
</dict>
<key>Idle1_6.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{608,787},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>Idle1_7.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{608,659},{70,128}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>Idle1_8.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{806,967},{70,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
<key>Idle1_9.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{70,128}</string>
<key>spriteSourceSize</key>
<string>{70,128}</string>
<key>textureRect</key>
<string>{{678,973},{70,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
<key>InAirAtk1_0.png</key>
<dict>
<key>aliases</key>
@ -1080,7 +1080,7 @@
<key>spriteSourceSize</key>
<string>{112,96}</string>
<key>textureRect</key>
<string>{{228,1197},{112,96}}</string>
<string>{{128,1360},{112,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1125,7 +1125,7 @@
<key>spriteSourceSize</key>
<string>{128,112}</string>
<key>textureRect</key>
<string>{{256,989},{128,112}}</string>
<string>{{678,749},{128,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1140,7 +1140,7 @@
<key>spriteSourceSize</key>
<string>{96,96}</string>
<key>textureRect</key>
<string>{{672,1363},{96,96}}</string>
<string>{{784,1357},{96,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1155,7 +1155,7 @@
<key>spriteSourceSize</key>
<string>{80,96}</string>
<key>textureRect</key>
<string>{{672,1267},{80,96}}</string>
<string>{{934,976},{80,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1170,7 +1170,7 @@
<key>spriteSourceSize</key>
<string>{112,112}</string>
<key>textureRect</key>
<string>{{560,1292},{112,112}}</string>
<string>{{688,1155},{112,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1185,7 +1185,7 @@
<key>spriteSourceSize</key>
<string>{128,96}</string>
<key>textureRect</key>
<string>{{384,1100},{128,96}}</string>
<string>{{256,1102},{128,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1200,9 +1200,9 @@
<key>spriteSourceSize</key>
<string>{80,112}</string>
<key>textureRect</key>
<string>{{800,1038},{80,112}}</string>
<string>{{934,640},{80,112}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>InAirIdle1_1.png</key>
<dict>
@ -1215,9 +1215,9 @@
<key>spriteSourceSize</key>
<string>{80,112}</string>
<key>textureRect</key>
<string>{{800,1118},{80,112}}</string>
<string>{{934,752},{80,112}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>InAirIdle1_2.png</key>
<dict>
@ -1230,7 +1230,7 @@
<key>spriteSourceSize</key>
<string>{64,128}</string>
<key>textureRect</key>
<string>{{678,974},{64,128}}</string>
<string>{{256,1294},{64,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1245,9 +1245,9 @@
<key>spriteSourceSize</key>
<string>{80,112}</string>
<key>textureRect</key>
<string>{{756,1198},{80,112}}</string>
<string>{{934,864},{80,112}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>InAirIdle1_4.png</key>
<dict>
@ -1260,9 +1260,9 @@
<key>spriteSourceSize</key>
<string>{80,96}</string>
<key>textureRect</key>
<string>{{752,1278},{80,96}}</string>
<string>{{608,1043},{80,96}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>InAirIdle1_5.png</key>
<dict>
@ -1275,7 +1275,7 @@
<key>spriteSourceSize</key>
<string>{80,96}</string>
<key>textureRect</key>
<string>{{768,1358},{80,96}}</string>
<string>{{608,1139},{80,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1290,7 +1290,7 @@
<key>spriteSourceSize</key>
<string>{80,96}</string>
<key>textureRect</key>
<string>{{868,1248},{80,96}}</string>
<string>{{688,1267},{80,96}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1305,9 +1305,9 @@
<key>spriteSourceSize</key>
<string>{96,112}</string>
<key>textureRect</key>
<string>{{704,1038},{96,112}}</string>
<string>{{912,1296},{96,112}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>InAirIdle1_8.png</key>
<dict>
@ -1320,7 +1320,7 @@
<key>spriteSourceSize</key>
<string>{96,128}</string>
<key>textureRect</key>
<string>{{256,1101},{96,128}}</string>
<string>{{128,1194},{96,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1335,7 +1335,7 @@
<key>spriteSourceSize</key>
<string>{96,128}</string>
<key>textureRect</key>
<string>{{806,862},{96,128}}</string>
<string>{{256,1198},{96,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1414,6 +1414,51 @@
<key>textureRotated</key>
<true/>
</dict>
<key>TurnAround1_1.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{112,128}</string>
<key>spriteSourceSize</key>
<string>{112,128}</string>
<key>textureRect</key>
<string>{{806,855},{112,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
<key>TurnAround1_2.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{112,128}</string>
<key>spriteSourceSize</key>
<string>{112,128}</string>
<key>textureRect</key>
<string>{{678,861},{112,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
<key>TurnAround1_3.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{112,128}</string>
<key>spriteSourceSize</key>
<string>{112,128}</string>
<key>textureRect</key>
<string>{{384,1101},{112,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
<key>Walking_1.png</key>
<dict>
<key>aliases</key>
@ -1455,7 +1500,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{680,512},{119,128}}</string>
<string>{{272,515},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1470,7 +1515,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{808,512},{119,128}}</string>
<string>{{128,608},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1485,7 +1530,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{272,515},{119,128}}</string>
<string>{{0,720},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1500,7 +1545,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{128,608},{119,128}}</string>
<string>{{400,515},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1515,7 +1560,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{0,720},{119,128}}</string>
<string>{{256,634},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1530,7 +1575,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{400,515},{119,128}}</string>
<string>{{128,727},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1545,7 +1590,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{678,631},{119,128}}</string>
<string>{{0,839},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1560,7 +1605,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{806,631},{119,128}}</string>
<string>{{384,634},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1575,7 +1620,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{256,634},{119,128}}</string>
<string>{{680,512},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1590,7 +1635,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{128,727},{119,128}}</string>
<string>{{808,512},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1605,7 +1650,7 @@
<key>spriteSourceSize</key>
<string>{119,128}</string>
<key>textureRect</key>
<string>{{0,839},{119,128}}</string>
<string>{{256,753},{119,128}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1621,9 +1666,9 @@
<key>realTextureFileName</key>
<string>KnifeGirl.png</string>
<key>size</key>
<string>{1014,1459}</string>
<string>{1024,1456}</string>
<key>smartupdate</key>
<string>$TexturePacker:SmartUpdate:4ca72309f7dc04bba6be361462471d91:9a48d10caa37a76ff8c43fb72bce6103:1ae107e0c6667a1ecb5ed98687517e0e$</string>
<string>$TexturePacker:SmartUpdate:8fd7507b5e24a1de6da5e4a6c568fcd3:d861e924a13180a640774a9c85662e57:1ae107e0c6667a1ecb5ed98687517e0e$</string>
<key>textureFileName</key>
<string>KnifeGirl.png</string>
</dict>

View File

@ -3,8 +3,8 @@
"uuid": "579bc0c1-f5e2-4a5d-889b-9d567e53b0e6",
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"size": {
"width": 1014,
"height": 1459
"width": 1024,
"height": 1456
},
"type": "Texture Packer",
"subMetas": {
@ -17,8 +17,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 806,
"trimY": 750,
"trimX": 384,
"trimY": 989,
"width": 112,
"height": 128,
"rawWidth": 112,
@ -39,8 +39,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 1076,
"trimX": 256,
"trimY": 990,
"width": 112,
"height": 128,
"rawWidth": 112,
@ -83,8 +83,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 528,
"trimY": 515,
"trimX": 940,
"trimY": 0,
"width": 80,
"height": 128,
"rawWidth": 80,
@ -105,8 +105,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 934,
"trimY": 640,
"trimX": 940,
"trimY": 128,
"width": 80,
"height": 128,
"rawWidth": 80,
@ -128,7 +128,7 @@
"offsetX": 0,
"offsetY": 0,
"trimX": 128,
"trimY": 1076,
"trimY": 1082,
"width": 112,
"height": 128,
"rawWidth": 112,
@ -149,8 +149,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 678,
"trimY": 862,
"trimX": 0,
"trimY": 1188,
"width": 112,
"height": 128,
"rawWidth": 112,
@ -215,8 +215,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 934,
"trimY": 768,
"trimX": 940,
"trimY": 256,
"width": 80,
"height": 128,
"rawWidth": 80,
@ -237,8 +237,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 934,
"trimY": 896,
"trimX": 937,
"trimY": 384,
"width": 80,
"height": 128,
"rawWidth": 80,
@ -256,11 +256,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 806,
"trimY": 958,
"trimX": 528,
"trimY": 515,
"width": 80,
"height": 128,
"rawWidth": 80,
@ -281,8 +281,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 934,
"trimY": 1024,
"trimX": 936,
"trimY": 512,
"width": 80,
"height": 128,
"rawWidth": 80,
@ -325,8 +325,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 128,
"trimY": 964,
"trimX": 0,
"trimY": 1076,
"width": 128,
"height": 112,
"rawWidth": 128,
@ -347,8 +347,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 912,
"trimY": 1152,
"trimX": 688,
"trimY": 1357,
"width": 96,
"height": 96,
"rawWidth": 96,
@ -369,8 +369,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 340,
"trimY": 1197,
"trimX": 240,
"trimY": 1360,
"width": 96,
"height": 112,
"rawWidth": 96,
@ -391,8 +391,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 452,
"trimY": 1196,
"trimX": 352,
"trimY": 1358,
"width": 96,
"height": 112,
"rawWidth": 96,
@ -413,8 +413,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 564,
"trimY": 1155,
"trimX": 920,
"trimY": 1072,
"width": 96,
"height": 112,
"rawWidth": 96,
@ -435,8 +435,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 608,
"trimY": 1043,
"trimX": 914,
"trimY": 1184,
"width": 96,
"height": 112,
"rawWidth": 96,
@ -479,8 +479,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 678,
"trimY": 750,
"trimX": 806,
"trimY": 631,
"width": 128,
"height": 112,
"rawWidth": 128,
@ -787,8 +787,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 448,
"trimY": 1293,
"trimX": 802,
"trimY": 1149,
"width": 112,
"height": 112,
"rawWidth": 112,
@ -806,11 +806,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 660,
"trimY": 1155,
"trimX": 800,
"trimY": 1261,
"width": 96,
"height": 112,
"rawWidth": 96,
@ -831,8 +831,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 384,
"trimY": 988,
"trimX": 806,
"trimY": 743,
"width": 128,
"height": 112,
"rawWidth": 128,
@ -941,8 +941,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 1188,
"trimX": 806,
"trimY": 1037,
"width": 114,
"height": 112,
"rawWidth": 114,
@ -960,11 +960,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 114,
"trimY": 1188,
"trimX": 384,
"trimY": 1213,
"width": 114,
"height": 112,
"rawWidth": 114,
@ -985,8 +985,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 1300,
"trimX": 464,
"trimY": 1327,
"width": 114,
"height": 112,
"rawWidth": 114,
@ -1007,8 +1007,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 112,
"trimY": 1300,
"trimX": 496,
"trimY": 1213,
"width": 114,
"height": 112,
"rawWidth": 114,
@ -1029,8 +1029,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 1300,
"trimX": 464,
"trimY": 1327,
"width": 114,
"height": 112,
"rawWidth": 114,
@ -1051,8 +1051,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 224,
"trimY": 1300,
"trimX": 576,
"trimY": 1327,
"width": 114,
"height": 112,
"rawWidth": 114,
@ -1070,11 +1070,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 336,
"trimY": 1293,
"trimX": 688,
"trimY": 1043,
"width": 114,
"height": 112,
"rawWidth": 114,
@ -1095,8 +1095,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 384,
"trimY": 634,
"trimX": 128,
"trimY": 846,
"width": 128,
"height": 118,
"rawWidth": 128,
@ -1117,8 +1117,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 384,
"trimY": 752,
"trimX": 0,
"trimY": 958,
"width": 128,
"height": 118,
"rawWidth": 128,
@ -1139,7 +1139,7 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 256,
"trimX": 384,
"trimY": 753,
"width": 128,
"height": 118,
@ -1161,8 +1161,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 128,
"trimY": 846,
"trimX": 678,
"trimY": 631,
"width": 128,
"height": 118,
"rawWidth": 128,
@ -1183,8 +1183,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 958,
"trimX": 384,
"trimY": 871,
"width": 128,
"height": 118,
"rawWidth": 128,
@ -1205,8 +1205,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 384,
"trimY": 870,
"trimX": 256,
"trimY": 872,
"width": 128,
"height": 118,
"rawWidth": 128,
@ -1227,8 +1227,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 256,
"trimY": 871,
"trimX": 128,
"trimY": 964,
"width": 128,
"height": 118,
"rawWidth": 128,
@ -1249,8 +1249,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 940,
"trimY": 0,
"trimX": 608,
"trimY": 531,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1271,8 +1271,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 940,
"trimY": 128,
"trimX": 608,
"trimY": 659,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1293,8 +1293,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 940,
"trimY": 256,
"trimX": 608,
"trimY": 787,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1315,8 +1315,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 937,
"trimY": 384,
"trimX": 608,
"trimY": 915,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1334,11 +1334,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 936,
"trimY": 512,
"trimX": 128,
"trimY": 1290,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1356,11 +1356,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 608,
"trimY": 531,
"trimX": 0,
"trimY": 1300,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1378,11 +1378,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 608,
"trimY": 659,
"trimX": 0,
"trimY": 1370,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1400,11 +1400,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 608,
"trimY": 659,
"trimX": 0,
"trimY": 1370,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1422,11 +1422,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 608,
"trimY": 531,
"trimX": 0,
"trimY": 1300,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1444,11 +1444,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 936,
"trimY": 512,
"trimX": 128,
"trimY": 1290,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1469,8 +1469,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 937,
"trimY": 384,
"trimX": 608,
"trimY": 915,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1491,8 +1491,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 940,
"trimY": 256,
"trimX": 608,
"trimY": 787,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1513,8 +1513,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 940,
"trimY": 128,
"trimX": 608,
"trimY": 659,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1532,11 +1532,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 608,
"trimY": 787,
"trimX": 806,
"trimY": 967,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1554,11 +1554,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 608,
"trimY": 915,
"trimX": 678,
"trimY": 973,
"width": 70,
"height": 128,
"rawWidth": 70,
@ -1579,8 +1579,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 228,
"trimY": 1197,
"trimX": 128,
"trimY": 1360,
"width": 112,
"height": 96,
"rawWidth": 112,
@ -1645,8 +1645,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 256,
"trimY": 989,
"trimX": 678,
"trimY": 749,
"width": 128,
"height": 112,
"rawWidth": 128,
@ -1667,8 +1667,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 672,
"trimY": 1363,
"trimX": 784,
"trimY": 1357,
"width": 96,
"height": 96,
"rawWidth": 96,
@ -1689,8 +1689,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 672,
"trimY": 1267,
"trimX": 934,
"trimY": 976,
"width": 80,
"height": 96,
"rawWidth": 80,
@ -1711,8 +1711,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 560,
"trimY": 1292,
"trimX": 688,
"trimY": 1155,
"width": 112,
"height": 112,
"rawWidth": 112,
@ -1733,8 +1733,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 384,
"trimY": 1100,
"trimX": 256,
"trimY": 1102,
"width": 128,
"height": 96,
"rawWidth": 128,
@ -1752,11 +1752,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 800,
"trimY": 1038,
"trimX": 934,
"trimY": 640,
"width": 80,
"height": 112,
"rawWidth": 80,
@ -1774,11 +1774,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 800,
"trimY": 1118,
"trimX": 934,
"trimY": 752,
"width": 80,
"height": 112,
"rawWidth": 80,
@ -1799,8 +1799,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 678,
"trimY": 974,
"trimX": 256,
"trimY": 1294,
"width": 64,
"height": 128,
"rawWidth": 64,
@ -1818,11 +1818,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 756,
"trimY": 1198,
"trimX": 934,
"trimY": 864,
"width": 80,
"height": 112,
"rawWidth": 80,
@ -1840,11 +1840,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 752,
"trimY": 1278,
"trimX": 608,
"trimY": 1043,
"width": 80,
"height": 96,
"rawWidth": 80,
@ -1865,8 +1865,8 @@
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 768,
"trimY": 1358,
"trimX": 608,
"trimY": 1139,
"width": 80,
"height": 96,
"rawWidth": 80,
@ -1887,8 +1887,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 868,
"trimY": 1248,
"trimX": 688,
"trimY": 1267,
"width": 80,
"height": 96,
"rawWidth": 80,
@ -1906,11 +1906,11 @@
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 704,
"trimY": 1038,
"trimX": 912,
"trimY": 1296,
"width": 96,
"height": 112,
"rawWidth": 96,
@ -1931,8 +1931,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 256,
"trimY": 1101,
"trimX": 128,
"trimY": 1194,
"width": 96,
"height": 128,
"rawWidth": 96,
@ -1953,8 +1953,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 806,
"trimY": 862,
"trimX": 256,
"trimY": 1198,
"width": 96,
"height": 128,
"rawWidth": 96,
@ -2076,6 +2076,72 @@
"spriteType": "normal",
"subMetas": {}
},
"TurnAround1_1.png": {
"ver": "1.0.4",
"uuid": "28ee1f29-e538-4d36-bb5c-275f9e3b392b",
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 806,
"trimY": 855,
"width": 112,
"height": 128,
"rawWidth": 112,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"spriteType": "normal",
"subMetas": {}
},
"TurnAround1_2.png": {
"ver": "1.0.4",
"uuid": "211a73bb-31d7-4e6c-901e-f6939d9214e0",
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 678,
"trimY": 861,
"width": 112,
"height": 128,
"rawWidth": 112,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"spriteType": "normal",
"subMetas": {}
},
"TurnAround1_3.png": {
"ver": "1.0.4",
"uuid": "048c41dc-fc00-4bc4-8041-6003e7c2b6e4",
"rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a",
"trimType": "auto",
"trimThreshold": 1,
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 384,
"trimY": 1101,
"width": 112,
"height": 128,
"rawWidth": 112,
"rawHeight": 128,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"spriteType": "normal",
"subMetas": {}
},
"Walking_1.png": {
"ver": "1.0.4",
"uuid": "9435195e-4560-495e-b1ae-083c0c87e8a0",
@ -2129,8 +2195,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 680,
"trimY": 512,
"trimX": 272,
"trimY": 515,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2151,8 +2217,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 808,
"trimY": 512,
"trimX": 128,
"trimY": 608,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2173,8 +2239,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 272,
"trimY": 515,
"trimX": 0,
"trimY": 720,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2195,8 +2261,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 128,
"trimY": 608,
"trimX": 400,
"trimY": 515,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2217,8 +2283,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 720,
"trimX": 256,
"trimY": 634,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2239,8 +2305,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 400,
"trimY": 515,
"trimX": 128,
"trimY": 727,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2261,8 +2327,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 678,
"trimY": 631,
"trimX": 0,
"trimY": 839,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2283,8 +2349,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 806,
"trimY": 631,
"trimX": 384,
"trimY": 634,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2305,8 +2371,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 256,
"trimY": 634,
"trimX": 680,
"trimY": 512,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2327,8 +2393,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 128,
"trimY": 727,
"trimX": 808,
"trimY": 512,
"width": 119,
"height": 128,
"rawWidth": 119,
@ -2349,8 +2415,8 @@
"rotated": true,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 839,
"trimX": 256,
"trimY": 753,
"width": 119,
"height": 128,
"rawWidth": 119,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 119 KiB

View File

@ -3,7 +3,7 @@
"_name": "Walking",
"_objFlags": 0,
"_native": "",
"_duration": 1.5166666666666666,
"_duration": 0.6333333333333333,
"sample": 60,
"speed": 1.2,
"wrapMode": 2,
@ -13,78 +13,78 @@
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "c3b14ecc-a6d9-4cb3-8637-ca7b407a0f5c"
}
},
{
"frame": 0.08333333333333333,
"value": {
"__uuid__": "9435195e-4560-495e-b1ae-083c0c87e8a0"
}
},
{
"frame": 0.18333333333333332,
"frame": 0.06666666666666667,
"value": {
"__uuid__": "ec048360-7a17-4f22-ba52-eb86ec1acae8"
}
},
{
"frame": 0.2833333333333333,
"frame": 0.11666666666666667,
"value": {
"__uuid__": "82bb81e3-667c-4280-8710-211f4904ef2f"
}
},
{
"frame": 0.4,
"frame": 0.16666666666666666,
"value": {
"__uuid__": "c3b14ecc-a6d9-4cb3-8637-ca7b407a0f5c"
}
},
{
"frame": 0.21666666666666667,
"value": {
"__uuid__": "f958fb7f-ef5a-4918-81f3-564004572f45"
}
},
{
"frame": 0.5333333333333333,
"frame": 0.26666666666666666,
"value": {
"__uuid__": "8a0ecf92-db26-4206-9a80-20e749055def"
}
},
{
"frame": 0.65,
"frame": 0.31666666666666665,
"value": {
"__uuid__": "942f2e02-a700-4fbf-877e-08c93e4d4010"
}
},
{
"frame": 0.7666666666666667,
"frame": 0.36666666666666664,
"value": {
"__uuid__": "30546064-1a11-499e-8523-a82c83951c73"
}
},
{
"frame": 0.9,
"frame": 0.4166666666666667,
"value": {
"__uuid__": "515bb75f-7a1f-4500-8aa9-c895915ce19f"
}
},
{
"frame": 1.0333333333333334,
"frame": 0.4666666666666667,
"value": {
"__uuid__": "9100da6b-7582-4afb-9698-3d67d3b2012d"
}
},
{
"frame": 1.2166666666666666,
"frame": 0.5166666666666667,
"value": {
"__uuid__": "1257f72d-0cb3-4750-ae70-13c2d8eb2269"
}
},
{
"frame": 1.3833333333333333,
"frame": 0.5666666666666667,
"value": {
"__uuid__": "1d34b6db-27ba-4e26-864d-0f00d501765e"
}
},
{
"frame": 1.5,
"frame": 0.6166666666666667,
"value": {
"__uuid__": "c317a75a-52c0-4c38-9300-a064cbf4efb3"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 269 KiB

View File

@ -15,7 +15,7 @@
<key>spriteSourceSize</key>
<string>{62,92}</string>
<key>textureRect</key>
<string>{{1277,188},{62,92}}</string>
<string>{{1307,188},{62,92}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -30,7 +30,7 @@
<key>spriteSourceSize</key>
<string>{77,99}</string>
<key>textureRect</key>
<string>{{748,0},{77,99}}</string>
<string>{{782,101},{77,99}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -45,7 +45,7 @@
<key>spriteSourceSize</key>
<string>{112,99}</string>
<key>textureRect</key>
<string>{{408,348},{112,99}}</string>
<string>{{381,360},{112,99}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -60,7 +60,7 @@
<key>spriteSourceSize</key>
<string>{96,100}</string>
<key>textureRect</key>
<string>{{664,315},{96,100}}</string>
<string>{{704,312},{96,100}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -75,7 +75,7 @@
<key>spriteSourceSize</key>
<string>{62,92}</string>
<key>textureRect</key>
<string>{{1277,188},{62,92}}</string>
<string>{{1307,188},{62,92}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -90,7 +90,7 @@
<key>spriteSourceSize</key>
<string>{58,97}</string>
<key>textureRect</key>
<string>{{1023,194},{58,97}}</string>
<string>{{983,388},{58,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -105,9 +105,9 @@
<key>spriteSourceSize</key>
<string>{60,90}</string>
<key>textureRect</key>
<string>{{1393,141},{60,90}}</string>
<string>{{1424,0},{60,90}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>Atk2_2.png</key>
<dict>
@ -120,7 +120,7 @@
<key>spriteSourceSize</key>
<string>{84,96}</string>
<key>textureRect</key>
<string>{{1087,97},{84,96}}</string>
<string>{{1082,291},{84,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -135,7 +135,7 @@
<key>spriteSourceSize</key>
<string>{55,100}</string>
<key>textureRect</key>
<string>{{731,101},{55,100}}</string>
<string>{{738,206},{55,100}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -150,9 +150,9 @@
<key>spriteSourceSize</key>
<string>{63,100}</string>
<key>textureRect</key>
<string>{{717,206},{63,100}}</string>
<string>{{0,437},{63,100}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Atk2_5.png</key>
<dict>
@ -165,7 +165,7 @@
<key>spriteSourceSize</key>
<string>{66,101}</string>
<key>textureRect</key>
<string>{{682,0},{66,101}}</string>
<string>{{755,0},{66,101}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -180,7 +180,7 @@
<key>spriteSourceSize</key>
<string>{80,95}</string>
<key>textureRect</key>
<string>{{1126,0},{80,95}}</string>
<string>{{1099,387},{80,95}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -195,7 +195,7 @@
<key>spriteSourceSize</key>
<string>{116,109}</string>
<key>textureRect</key>
<string>{{315,119},{116,109}}</string>
<string>{{336,244},{116,109}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -210,7 +210,7 @@
<key>spriteSourceSize</key>
<string>{102,96}</string>
<key>textureRect</key>
<string>{{621,213},{102,96}}</string>
<string>{{608,325},{102,96}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -225,9 +225,9 @@
<key>spriteSourceSize</key>
<string>{75,102}</string>
<key>textureRect</key>
<string>{{139,421},{75,102}}</string>
<string>{{663,210},{75,102}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>Atk3_0.png</key>
<dict>
@ -240,7 +240,7 @@
<key>spriteSourceSize</key>
<string>{66,109}</string>
<key>textureRect</key>
<string>{{469,110},{66,109}}</string>
<string>{{480,339},{66,109}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -255,7 +255,7 @@
<key>spriteSourceSize</key>
<string>{66,113}</string>
<key>textureRect</key>
<string>{{355,235},{66,113}}</string>
<string>{{403,114},{66,113}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -330,7 +330,7 @@
<key>spriteSourceSize</key>
<string>{78,131}</string>
<key>textureRect</key>
<string>{{137,290},{78,131}}</string>
<string>{{78,0},{78,131}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -345,9 +345,9 @@
<key>spriteSourceSize</key>
<string>{59,139}</string>
<key>textureRect</key>
<string>{{0,437},{59,139}}</string>
<string>{{78,290},{59,139}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>Atk3_8.png</key>
<dict>
@ -360,7 +360,7 @@
<key>spriteSourceSize</key>
<string>{59,139}</string>
<key>textureRect</key>
<string>{{78,290},{59,139}}</string>
<string>{{137,290},{59,139}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -375,9 +375,9 @@
<key>spriteSourceSize</key>
<string>{62,97}</string>
<key>textureRect</key>
<string>{{507,434},{62,97}}</string>
<string>{{962,291},{62,97}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>Atked1_1.png</key>
<dict>
@ -390,9 +390,9 @@
<key>spriteSourceSize</key>
<string>{73,95}</string>
<key>textureRect</key>
<string>{{1171,95},{73,95}}</string>
<string>{{641,427},{73,95}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Atked1_2.png</key>
<dict>
@ -405,7 +405,7 @@
<key>spriteSourceSize</key>
<string>{90,89}</string>
<key>textureRect</key>
<string>{{1324,0},{90,89}}</string>
<string>{{1335,0},{90,89}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -420,7 +420,7 @@
<key>spriteSourceSize</key>
<string>{95,80}</string>
<key>textureRect</key>
<string>{{1084,291},{95,80}}</string>
<string>{{1168,193},{95,80}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -435,7 +435,7 @@
<key>spriteSourceSize</key>
<string>{80,95}</string>
<key>textureRect</key>
<string>{{1010,388},{80,95}}</string>
<string>{{1166,290},{80,95}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -450,7 +450,7 @@
<key>spriteSourceSize</key>
<string>{83,92}</string>
<key>textureRect</key>
<string>{{1208,382},{83,92}}</string>
<string>{{1299,382},{83,92}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -465,7 +465,7 @@
<key>spriteSourceSize</key>
<string>{92,83}</string>
<key>textureRect</key>
<string>{{1224,284},{92,83}}</string>
<string>{{1306,284},{92,83}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -480,7 +480,7 @@
<key>spriteSourceSize</key>
<string>{112,45}</string>
<key>textureRect</key>
<string>{{424,115},{112,45}}</string>
<string>{{469,112},{112,45}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -495,7 +495,7 @@
<key>spriteSourceSize</key>
<string>{88,69}</string>
<key>textureRect</key>
<string>{{604,427},{88,69}}</string>
<string>{{1443,222},{88,69}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -510,7 +510,7 @@
<key>spriteSourceSize</key>
<string>{91,90}</string>
<key>textureRect</key>
<string>{{1303,93},{91,90}}</string>
<string>{{1313,93},{91,90}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -525,7 +525,7 @@
<key>spriteSourceSize</key>
<string>{120,93}</string>
<key>textureRect</key>
<string>{{222,123},{120,93}}</string>
<string>{{254,124},{120,93}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -540,9 +540,9 @@
<key>spriteSourceSize</key>
<string>{100,112}</string>
<key>textureRect</key>
<string>{{241,396},{100,112}}</string>
<string>{{408,0},{100,112}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>GetUp1_5.png</key>
<dict>
@ -555,7 +555,7 @@
<key>spriteSourceSize</key>
<string>{106,93}</string>
<key>textureRect</key>
<string>{{507,328},{106,93}}</string>
<string>{{570,219},{106,93}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -570,7 +570,7 @@
<key>spriteSourceSize</key>
<string>{106,79}</string>
<key>textureRect</key>
<string>{{542,217},{106,79}}</string>
<string>{{571,108},{106,79}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -585,7 +585,7 @@
<key>spriteSourceSize</key>
<string>{73,87}</string>
<key>textureRect</key>
<string>{{1307,280},{73,87}}</string>
<string>{{1382,376},{73,87}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -600,9 +600,9 @@
<key>spriteSourceSize</key>
<string>{67,90}</string>
<key>textureRect</key>
<string>{{1413,74},{67,90}}</string>
<string>{{1403,90},{67,90}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>GetUp1_9.png</key>
<dict>
@ -615,7 +615,7 @@
<key>spriteSourceSize</key>
<string>{58,97}</string>
<key>textureRect</key>
<string>{{1023,194},{58,97}}</string>
<string>{{983,388},{58,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -630,7 +630,7 @@
<key>spriteSourceSize</key>
<string>{58,95}</string>
<key>textureRect</key>
<string>{{1090,386},{58,95}}</string>
<string>{{1219,0},{58,95}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -645,7 +645,7 @@
<key>spriteSourceSize</key>
<string>{58,97}</string>
<key>textureRect</key>
<string>{{1029,97},{58,97}}</string>
<string>{{1024,291},{58,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -660,7 +660,7 @@
<key>spriteSourceSize</key>
<string>{60,94}</string>
<key>textureRect</key>
<string>{{1148,386},{60,94}}</string>
<string>{{1179,385},{60,94}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -675,7 +675,7 @@
<key>spriteSourceSize</key>
<string>{58,97}</string>
<key>textureRect</key>
<string>{{1081,194},{58,97}}</string>
<string>{{1036,194},{58,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -690,7 +690,7 @@
<key>spriteSourceSize</key>
<string>{58,97}</string>
<key>textureRect</key>
<string>{{1068,0},{58,97}}</string>
<string>{{1041,388},{58,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -705,9 +705,9 @@
<key>spriteSourceSize</key>
<string>{60,95}</string>
<key>textureRect</key>
<string>{{1206,0},{60,95}}</string>
<string>{{546,440},{60,95}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>Idle1_5.png</key>
<dict>
@ -720,7 +720,7 @@
<key>spriteSourceSize</key>
<string>{60,94}</string>
<key>textureRect</key>
<string>{{1164,288},{60,94}}</string>
<string>{{1239,385},{60,94}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -735,7 +735,7 @@
<key>spriteSourceSize</key>
<string>{59,93}</string>
<key>textureRect</key>
<string>{{789,403},{59,93}}</string>
<string>{{1248,191},{59,93}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -750,7 +750,7 @@
<key>spriteSourceSize</key>
<string>{58,93}</string>
<key>textureRect</key>
<string>{{1266,0},{58,93}}</string>
<string>{{1277,0},{58,93}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -765,7 +765,7 @@
<key>spriteSourceSize</key>
<string>{59,93}</string>
<key>textureRect</key>
<string>{{1244,95},{59,93}}</string>
<string>{{1254,95},{59,93}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -780,7 +780,7 @@
<key>spriteSourceSize</key>
<string>{60,94}</string>
<key>textureRect</key>
<string>{{1217,190},{60,94}}</string>
<string>{{1246,288},{60,94}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -795,7 +795,7 @@
<key>spriteSourceSize</key>
<string>{77,68}</string>
<key>textureRect</key>
<string>{{1437,417},{77,68}}</string>
<string>{{1473,291},{77,68}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -810,7 +810,7 @@
<key>spriteSourceSize</key>
<string>{118,76}</string>
<key>textureRect</key>
<string>{{215,278},{118,76}}</string>
<string>{{196,284},{118,76}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -825,7 +825,7 @@
<key>spriteSourceSize</key>
<string>{104,65}</string>
<key>textureRect</key>
<string>{{617,0},{104,65}}</string>
<string>{{650,106},{104,65}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -840,9 +840,9 @@
<key>spriteSourceSize</key>
<string>{80,66}</string>
<key>textureRect</key>
<string>{{1380,285},{80,66}}</string>
<string>{{1473,368},{80,66}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>InAirAtk1_12.png</key>
<dict>
@ -855,7 +855,7 @@
<key>spriteSourceSize</key>
<string>{102,67}</string>
<key>textureRect</key>
<string>{{664,104},{102,67}}</string>
<string>{{715,104},{102,67}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -870,9 +870,9 @@
<key>spriteSourceSize</key>
<string>{79,66}</string>
<key>textureRect</key>
<string>{{1339,201},{79,66}}</string>
<string>{{1470,90},{79,66}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>InAirAtk1_3.png</key>
<dict>
@ -885,7 +885,7 @@
<key>spriteSourceSize</key>
<string>{124,64}</string>
<key>textureRect</key>
<string>{{78,0},{124,64}}</string>
<string>{{156,0},{124,64}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -900,7 +900,7 @@
<key>spriteSourceSize</key>
<string>{104,64}</string>
<key>textureRect</key>
<string>{{600,323},{104,64}}</string>
<string>{{691,0},{104,64}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -915,7 +915,7 @@
<key>spriteSourceSize</key>
<string>{79,61}</string>
<key>textureRect</key>
<string>{{1376,417},{79,61}}</string>
<string>{{1484,0},{79,61}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -930,7 +930,7 @@
<key>spriteSourceSize</key>
<string>{124,64}</string>
<key>textureRect</key>
<string>{{142,0},{124,64}}</string>
<string>{{160,124},{124,64}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -945,7 +945,7 @@
<key>spriteSourceSize</key>
<string>{106,67}</string>
<key>textureRect</key>
<string>{{597,107},{106,67}}</string>
<string>{{624,0},{106,67}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -960,7 +960,7 @@
<key>spriteSourceSize</key>
<string>{79,66}</string>
<key>textureRect</key>
<string>{{1380,351},{79,66}}</string>
<string>{{1470,156},{79,66}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -975,7 +975,7 @@
<key>spriteSourceSize</key>
<string>{118,64}</string>
<key>textureRect</key>
<string>{{291,243},{118,64}}</string>
<string>{{272,284},{118,64}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -990,9 +990,9 @@
<key>spriteSourceSize</key>
<string>{71,119}</string>
<key>textureRect</key>
<string>{{242,0},{71,119}}</string>
<string>{{100,429},{71,119}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>InAirIdle1_1.png</key>
<dict>
@ -1005,7 +1005,7 @@
<key>spriteSourceSize</key>
<string>{71,119}</string>
<key>textureRect</key>
<string>{{313,0},{71,119}}</string>
<string>{{282,0},{71,119}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1020,7 +1020,7 @@
<key>spriteSourceSize</key>
<string>{55,114}</string>
<key>textureRect</key>
<string>{{353,361},{55,114}}</string>
<string>{{353,0},{55,114}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1035,7 +1035,7 @@
<key>spriteSourceSize</key>
<string>{62,124}</string>
<key>textureRect</key>
<string>{{160,124},{62,124}}</string>
<string>{{220,0},{62,124}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1050,9 +1050,9 @@
<key>spriteSourceSize</key>
<string>{74,90}</string>
<key>textureRect</key>
<string>{{1413,0},{74,90}}</string>
<string>{{1369,184},{74,90}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>InAirIdle1_3.png</key>
<dict>
@ -1065,7 +1065,7 @@
<key>spriteSourceSize</key>
<string>{110,54}</string>
<key>textureRect</key>
<string>{{440,0},{110,54}}</string>
<string>{{508,0},{110,54}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1080,7 +1080,7 @@
<key>spriteSourceSize</key>
<string>{85,88}</string>
<key>textureRect</key>
<string>{{1291,376},{85,88}}</string>
<string>{{736,412},{85,88}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1095,7 +1095,7 @@
<key>spriteSourceSize</key>
<string>{64,112}</string>
<key>textureRect</key>
<string>{{421,235},{64,112}}</string>
<string>{{445,227},{64,112}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1110,7 +1110,7 @@
<key>spriteSourceSize</key>
<string>{62,107}</string>
<key>textureRect</key>
<string>{{555,0},{62,107}}</string>
<string>{{546,333},{62,107}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1125,9 +1125,9 @@
<key>spriteSourceSize</key>
<string>{85,84}</string>
<key>textureRect</key>
<string>{{1405,201},{85,84}}</string>
<string>{{1389,291},{85,84}}</string>
<key>textureRotated</key>
<false/>
<true/>
</dict>
<key>InAirIdle1_8.png</key>
<dict>
@ -1140,7 +1140,7 @@
<key>spriteSourceSize</key>
<string>{109,61}</string>
<key>textureRect</key>
<string>{{494,0},{109,61}}</string>
<string>{{509,224},{109,61}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1155,7 +1155,7 @@
<key>spriteSourceSize</key>
<string>{78,95}</string>
<key>textureRect</key>
<string>{{1139,193},{78,95}}</string>
<string>{{1176,96},{78,95}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1170,7 +1170,7 @@
<key>spriteSourceSize</key>
<string>{115,56}</string>
<key>textureRect</key>
<string>{{384,0},{115,56}}</string>
<string>{{347,119},{115,56}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1185,7 +1185,7 @@
<key>spriteSourceSize</key>
<string>{109,57}</string>
<key>textureRect</key>
<string>{{485,219},{109,57}}</string>
<string>{{514,110},{109,57}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1200,7 +1200,7 @@
<key>spriteSourceSize</key>
<string>{108,62}</string>
<key>textureRect</key>
<string>{{535,109},{108,62}}</string>
<string>{{562,0},{108,62}}</string>
<key>textureRotated</key>
<true/>
</dict>
@ -1215,9 +1215,9 @@
<key>spriteSourceSize</key>
<string>{123,36}</string>
<key>textureRect</key>
<string>{{206,0},{123,36}}</string>
<string>{{160,248},{123,36}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>LayDown1_4.png</key>
<dict>
@ -1230,7 +1230,52 @@
<key>spriteSourceSize</key>
<string>{123,30}</string>
<key>textureRect</key>
<string>{{160,248},{123,30}}</string>
<string>{{224,124},{123,30}}</string>
<key>textureRotated</key>
<true/>
</dict>
<key>TurnAround1_1.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{74,96}</string>
<key>spriteSourceSize</key>
<string>{74,96}</string>
<key>textureRect</key>
<string>{{1094,194},{74,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>TurnAround1_2.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{74,96}</string>
<key>spriteSourceSize</key>
<string>{74,96}</string>
<key>textureRect</key>
<string>{{1102,97},{74,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
<key>TurnAround1_3.png</key>
<dict>
<key>aliases</key>
<array/>
<key>spriteOffset</key>
<string>{0,0}</string>
<key>spriteSize</key>
<string>{74,96}</string>
<key>spriteSourceSize</key>
<string>{74,96}</string>
<key>textureRect</key>
<string>{{1145,0},{74,96}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1245,9 +1290,9 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{692,415},{81,97}}</string>
<string>{{219,402},{81,97}}</string>
<key>textureRotated</key>
<true/>
<false/>
</dict>
<key>Walking_10.png</key>
<dict>
@ -1260,7 +1305,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{760,306},{81,97}}</string>
<string>{{300,402},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1275,7 +1320,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{780,201},{81,97}}</string>
<string>{{821,0},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1290,7 +1335,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{786,99},{81,97}}</string>
<string>{{793,200},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1305,7 +1350,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{825,0},{81,97}}</string>
<string>{{859,97},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1320,7 +1365,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{841,298},{81,97}}</string>
<string>{{902,0},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1335,7 +1380,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{848,395},{81,97}}</string>
<string>{{800,297},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1350,7 +1395,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{861,196},{81,97}}</string>
<string>{{874,194},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1365,7 +1410,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{867,97},{81,97}}</string>
<string>{{940,97},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1380,7 +1425,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{906,0},{81,97}}</string>
<string>{{983,0},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1395,7 +1440,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{922,293},{81,97}}</string>
<string>{{821,394},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1410,7 +1455,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{942,194},{81,97}}</string>
<string>{{881,291},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1425,7 +1470,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{948,97},{81,97}}</string>
<string>{{955,194},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1440,7 +1485,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{987,0},{81,97}}</string>
<string>{{1021,97},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1455,7 +1500,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{929,390},{81,97}}</string>
<string>{{1064,0},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1470,7 +1515,7 @@
<key>spriteSourceSize</key>
<string>{81,97}</string>
<key>textureRect</key>
<string>{{1003,291},{81,97}}</string>
<string>{{902,388},{81,97}}</string>
<key>textureRotated</key>
<false/>
</dict>
@ -1486,9 +1531,9 @@
<key>realTextureFileName</key>
<string>MonkGirl.png</string>
<key>size</key>
<string>{1505,496}</string>
<string>{1549,500}</string>
<key>smartupdate</key>
<string>$TexturePacker:SmartUpdate:8383576ddc6ed0fb9e6adcbc98ec9c07:b0caf27c9f592741053365a3d87b3473:7b088363a1f16e4f4ff313aecc52227b$</string>
<string>$TexturePacker:SmartUpdate:f2fd96a7a4bba5a2e1c4622dcb63e1f2:17c698372c46bf0be82704dd808cd6f4:7b088363a1f16e4f4ff313aecc52227b$</string>
<key>textureFileName</key>
<string>MonkGirl.png</string>
</dict>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -9,9 +9,9 @@ message PlayerDownsync {
int32 virtualGridX = 2;
int32 virtualGridY = 3;
int32 dirX = 4;
int32 dirY = 5; // "dirX" and "dirY" determines character facing
int32 dirY = 5;
int32 velX = 6;
int32 velY = 7; // "velX" and "velY" is used to record the accumulated effect by accelerations (including gravity)
int32 velY = 7; // "velX" and "velY" is used to record the accumulated effect by inertia and accelerations (including gravity)
int32 speed = 8; // this is the instantaneous scalar attribute of a character, different from but will be accounted in "velX" and "velY"
int32 battleState = 9;
int32 joinIndex = 10;
@ -36,6 +36,8 @@ message PlayerDownsync {
int32 onWallNormX = 27;
int32 onWallNormY = 28;
bool capturedByInertia = 29; // like "inAir", its by design a standalone field only inferred by the calc result of "applyInputFrameDownsyncDynamicsOnSingleRenderFrame" instead of "characterState"
string name = 997;
string displayName = 998;
string avatar = 999;

View File

@ -538,7 +538,7 @@
"__id__": 8
},
"_children": [],
"_active": true,
"_active": false,
"_components": [
{
"__id__": 14

View File

@ -362,7 +362,7 @@
"array": [
0,
0,
216.46608171234504,
215.64032554232523,
0,
0,
0,

View File

@ -537,7 +537,7 @@
"array": [
0,
0,
216.46608171234504,
215.64032554232523,
0,
0,
0,

View File

@ -308,7 +308,7 @@ cc.Class({
const newFireball = newFireballNode.getComponent("Fireball");
newFireballNode.setPosition(cc.v2(Number.MAX_VALUE, Number.MAX_VALUE));
safelyAddChild(self.node, newFireballNode);
setLocalZOrder(newFireballNode, 5);
setLocalZOrder(newFireballNode, 10);
newFireball.lastUsed = -1;
newFireball.bulletLocalId = -1;
const initLookupKey = -(k + 1); // there's definitely no suck "bulletLocalId"
@ -609,7 +609,7 @@ cc.Class({
const jsPlayersArr = new Array(pbRdf.playersArr.length).fill(null);
for (let k = 0; k < pbRdf.playersArr.length; ++k) {
const pbPlayer = pbRdf.playersArr[k];
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.framesInvinsible, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir, pbPlayer.onWall, pbPlayer.onWallNormX, pbPlayer.onWallNormY, pbPlayer.bulletTeamId, pbPlayer.chCollisionTeamId);
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.activeSkillId, pbPlayer.activeSkillHit, pbPlayer.framesInvinsible, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.colliderRadius, pbPlayer.inAir, pbPlayer.onWall, pbPlayer.onWallNormX, pbPlayer.onWallNormY, pbPlayer.capturedByInertia, pbPlayer.bulletTeamId, pbPlayer.chCollisionTeamId);
jsPlayersArr[k] = jsPlayer;
}
const jsMeleeBulletsArr = new Array(pbRdf.meleeBullets.length).fill(null);

View File

@ -1219,6 +1219,7 @@ $root.protos = (function() {
* @property {boolean|null} [onWall] PlayerDownsync onWall
* @property {number|null} [onWallNormX] PlayerDownsync onWallNormX
* @property {number|null} [onWallNormY] PlayerDownsync onWallNormY
* @property {boolean|null} [capturedByInertia] PlayerDownsync capturedByInertia
* @property {string|null} [name] PlayerDownsync name
* @property {string|null} [displayName] PlayerDownsync displayName
* @property {string|null} [avatar] PlayerDownsync avatar
@ -1463,6 +1464,14 @@ $root.protos = (function() {
*/
PlayerDownsync.prototype.onWallNormY = 0;
/**
* PlayerDownsync capturedByInertia.
* @member {boolean} capturedByInertia
* @memberof protos.PlayerDownsync
* @instance
*/
PlayerDownsync.prototype.capturedByInertia = false;
/**
* PlayerDownsync name.
* @member {string} name
@ -1567,6 +1576,8 @@ $root.protos = (function() {
writer.uint32(/* id 27, wireType 0 =*/216).int32(message.onWallNormX);
if (message.onWallNormY != null && Object.hasOwnProperty.call(message, "onWallNormY"))
writer.uint32(/* id 28, wireType 0 =*/224).int32(message.onWallNormY);
if (message.capturedByInertia != null && Object.hasOwnProperty.call(message, "capturedByInertia"))
writer.uint32(/* id 29, wireType 0 =*/232).bool(message.capturedByInertia);
if (message.name != null && Object.hasOwnProperty.call(message, "name"))
writer.uint32(/* id 997, wireType 2 =*/7978).string(message.name);
if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
@ -1719,6 +1730,10 @@ $root.protos = (function() {
message.onWallNormY = reader.int32();
break;
}
case 29: {
message.capturedByInertia = reader.bool();
break;
}
case 997: {
message.name = reader.string();
break;
@ -1850,6 +1865,9 @@ $root.protos = (function() {
if (message.onWallNormY != null && message.hasOwnProperty("onWallNormY"))
if (!$util.isInteger(message.onWallNormY))
return "onWallNormY: integer expected";
if (message.capturedByInertia != null && message.hasOwnProperty("capturedByInertia"))
if (typeof message.capturedByInertia !== "boolean")
return "capturedByInertia: boolean expected";
if (message.name != null && message.hasOwnProperty("name"))
if (!$util.isString(message.name))
return "name: string expected";
@ -1930,6 +1948,8 @@ $root.protos = (function() {
message.onWallNormX = object.onWallNormX | 0;
if (object.onWallNormY != null)
message.onWallNormY = object.onWallNormY | 0;
if (object.capturedByInertia != null)
message.capturedByInertia = Boolean(object.capturedByInertia);
if (object.name != null)
message.name = String(object.name);
if (object.displayName != null)
@ -1981,6 +2001,7 @@ $root.protos = (function() {
object.onWall = false;
object.onWallNormX = 0;
object.onWallNormY = 0;
object.capturedByInertia = false;
object.name = "";
object.displayName = "";
object.avatar = "";
@ -2041,6 +2062,8 @@ $root.protos = (function() {
object.onWallNormX = message.onWallNormX;
if (message.onWallNormY != null && message.hasOwnProperty("onWallNormY"))
object.onWallNormY = message.onWallNormY;
if (message.capturedByInertia != null && message.hasOwnProperty("capturedByInertia"))
object.capturedByInertia = message.capturedByInertia;
if (message.name != null && message.hasOwnProperty("name"))
object.name = message.name;
if (message.displayName != null && message.hasOwnProperty("displayName"))

View File

@ -11,17 +11,17 @@ serve:
clean:
gopherjs clean
rm -f ../frontend/assets/plugin_scripts/jsexport.js
rm -f ../frontend/assets/plugin_scripts/jsexport.js.map
#rm -f ../frontend/assets/plugin_scripts/jsexport.js.map
build: clean
gopherjs build $(PROJECTNAME)
mv ./jsexport.js ../frontend/assets/plugin_scripts/
mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
#mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
build-min: clean
gopherjs build -m $(PROJECTNAME)
mv ./jsexport.js ../frontend/assets/plugin_scripts/
mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
#mv ./jsexport.js.map ../frontend/assets/plugin_scripts/
.PHONY: help

View File

@ -77,6 +77,8 @@ const (
ATK_CHARACTER_STATE_DASHING = int32(15)
ATK_CHARACTER_STATE_ONWALL = int32(16)
ATK_CHARACTER_STATE_TURNAROUND = int32(17)
)
var inAirSet = map[int32]bool{
@ -514,31 +516,32 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
// Make a copy first
for i, currPlayerDownsync := range currRenderFrame.PlayersArr {
nextRenderFramePlayers[i] = &PlayerDownsync{
Id: currPlayerDownsync.Id,
VirtualGridX: currPlayerDownsync.VirtualGridX,
VirtualGridY: currPlayerDownsync.VirtualGridY,
DirX: currPlayerDownsync.DirX,
DirY: currPlayerDownsync.DirY,
VelX: currPlayerDownsync.VelX,
VelY: currPlayerDownsync.VelY,
CharacterState: currPlayerDownsync.CharacterState,
InAir: true,
OnWall: false,
Speed: currPlayerDownsync.Speed,
BattleState: currPlayerDownsync.BattleState,
Score: currPlayerDownsync.Score,
Removed: currPlayerDownsync.Removed,
JoinIndex: currPlayerDownsync.JoinIndex,
Hp: currPlayerDownsync.Hp,
MaxHp: currPlayerDownsync.MaxHp,
FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
FramesInChState: currPlayerDownsync.FramesInChState + 1,
ActiveSkillId: currPlayerDownsync.ActiveSkillId,
ActiveSkillHit: currPlayerDownsync.ActiveSkillHit,
FramesInvinsible: currPlayerDownsync.FramesInvinsible - 1,
ColliderRadius: currPlayerDownsync.ColliderRadius,
OnWallNormX: currPlayerDownsync.OnWallNormX,
OnWallNormY: currPlayerDownsync.OnWallNormY,
Id: currPlayerDownsync.Id,
VirtualGridX: currPlayerDownsync.VirtualGridX,
VirtualGridY: currPlayerDownsync.VirtualGridY,
DirX: currPlayerDownsync.DirX,
DirY: currPlayerDownsync.DirY,
VelX: currPlayerDownsync.VelX,
VelY: currPlayerDownsync.VelY,
CharacterState: currPlayerDownsync.CharacterState,
InAir: true,
OnWall: false,
Speed: currPlayerDownsync.Speed,
BattleState: currPlayerDownsync.BattleState,
Score: currPlayerDownsync.Score,
Removed: currPlayerDownsync.Removed,
JoinIndex: currPlayerDownsync.JoinIndex,
Hp: currPlayerDownsync.Hp,
MaxHp: currPlayerDownsync.MaxHp,
FramesToRecover: currPlayerDownsync.FramesToRecover - 1,
FramesInChState: currPlayerDownsync.FramesInChState + 1,
ActiveSkillId: currPlayerDownsync.ActiveSkillId,
ActiveSkillHit: currPlayerDownsync.ActiveSkillHit,
FramesInvinsible: currPlayerDownsync.FramesInvinsible - 1,
ColliderRadius: currPlayerDownsync.ColliderRadius,
OnWallNormX: currPlayerDownsync.OnWallNormX,
OnWallNormY: currPlayerDownsync.OnWallNormY,
CapturedByInertia: currPlayerDownsync.CapturedByInertia,
}
if nextRenderFramePlayers[i].FramesToRecover < 0 {
nextRenderFramePlayers[i].FramesToRecover = 0
@ -631,19 +634,34 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
}
if 0 == currPlayerDownsync.FramesToRecover {
prevCapturedByInertia := currPlayerDownsync.CapturedByInertia
isWallJumping := (currPlayerDownsync.Speed < intAbs(currPlayerDownsync.VelX))
/*
if isWallJumping {
fmt.Printf("joinIndex=%d is wall jumping\n{renderFrame.id: %d, currPlayerDownsync.Speed: %d, currPlayerDownsync.VelX: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, currPlayerDownsync.Speed, currPlayerDownsync.VelX)
}
*/
if 0 != effDx {
if !isWallJumping && 0 > effDx*thatPlayerInNextFrame.DirX {
// [WARNING] A "turn-around", or in more generic direction schema a "change in direction" is a hurdle for our current "prediction+rollback" approach, yet applying a "FramesToRecover" for "turn-around" can alleviate the graphical inconsistence to a huge extent! For better operational experience, this is intentionally NOT APPLIED TO WALL JUMPING!
thatPlayerInNextFrame.DirX = effDx
thatPlayerInNextFrame.VelX = 0
thatPlayerInNextFrame.FramesToRecover = chConfig.TurnAroundFramesToRecover
} else {
alignedWithInertia := true
if 0 == effDx && 0 != thatPlayerInNextFrame.VelX {
alignedWithInertia = false
} else if 0 != effDx && 0 == thatPlayerInNextFrame.VelX {
alignedWithInertia = false
} else if 0 > effDx*thatPlayerInNextFrame.VelX {
alignedWithInertia = false
}
if !isWallJumping && !prevCapturedByInertia && !alignedWithInertia {
/*
[WARNING] A "turn-around", or in more generic direction schema a "change in direction" is a hurdle for our current "prediction+rollback" approach, yet applying a "FramesToRecover" for "turn-around" can alleviate the graphical inconsistence to a huge extent! For better operational experience, this is intentionally NOT APPLIED TO WALL JUMPING!
When "false == alignedWithInertia", we're GUARANTEED TO BE WRONG AT INPUT PREDICTION ON THE FRONTEND, but we COULD STILL BE RIGHT AT POSITION PREDICTION WITHIN "InertiaFramesToRecover" -- which together with "INPUT_DELAY_FRAMES" grants the frontend a big chance to be graphically consistent even upon wrong prediction!
*/
//fmt.Printf("joinIndex=%d is not wall jumping and not aligned w/ inertia\n{renderFrame.id: %d, effDx: %d, thatPlayerInNextFrame.VelX: %d}\n", currPlayerDownsync.JoinIndex, currRenderFrame.Id, effDx, thatPlayerInNextFrame.VelX)
thatPlayerInNextFrame.CapturedByInertia = true
thatPlayerInNextFrame.FramesToRecover = chConfig.InertiaFramesToRecover
} else {
thatPlayerInNextFrame.CapturedByInertia = false
if 0 != effDx {
xfac := int32(1)
if 0 > effDx {
xfac = -xfac
@ -658,11 +676,12 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer
thatPlayerInNextFrame.VelX = xfac * currPlayerDownsync.Speed
}
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_WALKING
} else {
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1
thatPlayerInNextFrame.VelX = 0
}
} else {
thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1
thatPlayerInNextFrame.VelX = 0
}
}
}

View File

@ -26,7 +26,7 @@ type CharacterConfig struct {
WallJumpingInitVelY int32
WallSlidingVelY int32
TurnAroundFramesToRecover int32
InertiaFramesToRecover int32
SkillMapper SkillMapperType
}
@ -49,7 +49,7 @@ var Characters = map[int]*CharacterConfig{
JumpingInitVelY: int32(float64(8) * WORLD_TO_VIRTUAL_GRID_RATIO),
JumpingFramesToRecover: int32(2),
TurnAroundFramesToRecover: int32(4),
InertiaFramesToRecover: int32(5),
DashingEnabled: false,
OnWallEnabled: false,
@ -98,7 +98,7 @@ var Characters = map[int]*CharacterConfig{
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
JumpingFramesToRecover: int32(2),
TurnAroundFramesToRecover: int32(4),
InertiaFramesToRecover: int32(5),
DashingEnabled: true,
OnWallEnabled: true,
@ -151,7 +151,7 @@ var Characters = map[int]*CharacterConfig{
JumpingInitVelY: int32(float64(7.5) * WORLD_TO_VIRTUAL_GRID_RATIO),
JumpingFramesToRecover: int32(2),
TurnAroundFramesToRecover: int32(4),
InertiaFramesToRecover: int32(5),
DashingEnabled: false,
OnWallEnabled: false,

View File

@ -37,6 +37,8 @@ type PlayerDownsync struct {
OnWallNormX int32
OnWallNormY int32
CapturedByInertia bool
ActiveSkillId int32
ActiveSkillHit int32

View File

@ -42,7 +42,7 @@ func NewBarrierJs(boundary *Polygon2D) *js.Object {
})
}
func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, framesInvinsible, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius int32, inAir, onWall bool, onWallNormX, onWallNormY, bulletTeamId, chCollisionTeamId int32) *js.Object {
func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY, framesToRecover, framesInChState, activeSkillId, activeSkillHit, framesInvinsible, speed, battleState, characterState, joinIndex, hp, maxHp, colliderRadius int32, inAir, onWall bool, onWallNormX, onWallNormY int32, capturedByInertia bool, bulletTeamId, chCollisionTeamId int32) *js.Object {
return js.MakeWrapper(&PlayerDownsync{
Id: id,
VirtualGridX: virtualGridX,
@ -67,6 +67,7 @@ func NewPlayerDownsyncJs(id, virtualGridX, virtualGridY, dirX, dirY, velX, velY,
OnWall: onWall,
OnWallNormX: onWallNormX,
OnWallNormY: onWallNormY,
CapturedByInertia: capturedByInertia,
BulletTeamId: bulletTeamId,
ChCollisionTeamId: chCollisionTeamId,
})