Commit 26295d43 authored by jiangpeng's avatar jiangpeng

dapp/vote:add field voteNum in struct GroupInfo

parent 2c015735
......@@ -17,14 +17,8 @@ func (v *vote) ExecLocal_CreateGroup(payload *vty.CreateGroup, tx *types.Transac
groupInfo := decodeGroupInfo(receiptData.Logs[0].Log)
table := newGroupTable(v.GetLocalDB())
err := table.Add(groupInfo)
kvs, err := v.updateAndSaveTable(table.Add, table.Save, groupInfo, tx, vty.NameCreateGroupAction, "group")
if err != nil {
elog.Error("execLocal createGroup", "txHash", hex.EncodeToString(tx.Hash()), "table add", err)
return nil, err
}
kvs, err := table.Save()
if err != nil {
elog.Error("execLocal createGroup", "txHash", hex.EncodeToString(tx.Hash()), "table save", err)
return nil, err
}
dbSet.KV = kvs
......@@ -44,14 +38,8 @@ func (v *vote) ExecLocal_UpdateGroup(update *vty.UpdateGroup, tx *types.Transact
dbSet := &types.LocalDBSet{}
groupInfo := decodeGroupInfo(receiptData.Logs[0].Log)
table := newGroupTable(v.GetLocalDB())
err := table.Replace(groupInfo)
kvs, err := v.updateAndSaveTable(table.Replace, table.Save, groupInfo, tx, vty.NameUpdateGroupAction, "group")
if err != nil {
elog.Error("execLocal UpdateGroup", "txHash", hex.EncodeToString(tx.Hash()), "groupID", groupInfo.ID, "table replace", err)
return nil, err
}
kvs, err := table.Save()
if err != nil {
elog.Error("execLocal UpdateGroup", "txHash", hex.EncodeToString(tx.Hash()), "groupID", groupInfo.ID, "table save", err)
return nil, err
}
dbSet.KV = kvs
......@@ -75,17 +63,24 @@ func (v *vote) ExecLocal_CreateVote(payload *vty.CreateVote, tx *types.Transacti
dbSet := &types.LocalDBSet{}
voteInfo := decodeVoteInfo(receiptData.Logs[0].Log)
table := newVoteTable(v.GetLocalDB())
err := table.Add(voteInfo)
kvs, err := v.updateAndSaveTable(table.Add, table.Save, voteInfo, tx, vty.NameCreateVoteAction, "vote")
if err != nil {
elog.Error("execLocal createVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable add", err)
return nil, err
}
kvs, err := table.Save()
dbSet.KV = kvs
table = newGroupTable(v.GetLocalDB())
row, err := table.GetData([]byte(voteInfo.GroupID))
if err != nil {
elog.Error("execLocal createVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable save", err)
elog.Error("execLocal createVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable get", err)
return nil, err
}
dbSet.KV = kvs
groupInfo, _ := row.Data.(*vty.GroupInfo)
groupInfo.VoteNum++
kvs, err = v.updateAndSaveTable(table.Replace, table.Save, groupInfo, tx, vty.NameCreateVoteAction, "group")
if err != nil {
return nil, err
}
dbSet.KV = append(dbSet.KV, kvs...)
//auto gen for localdb auto rollback
return v.addAutoRollBack(tx, dbSet.KV), nil
}
......@@ -97,28 +92,15 @@ func (v *vote) ExecLocal_CommitVote(payload *vty.CommitVote, tx *types.Transacti
table := newVoteTable(v.GetLocalDB())
row, err := table.GetData([]byte(payload.GetVoteID()))
if err != nil {
elog.Error("execLocal commitVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable get", err)
elog.Error("execLocal commitVote", "txHash", hex.EncodeToString(tx.Hash()), "table get", err)
return nil, err
}
voteInfo, ok := row.Data.(*vty.VoteInfo)
if !ok {
elog.Error("execLocal commitVote", "txHash", hex.EncodeToString(tx.Hash()), "voteInfo type asset", err)
return nil, types.ErrTypeAsset
}
voteInfo, _ := row.Data.(*vty.VoteInfo)
voteInfo.CommitInfos = append(voteInfo.CommitInfos, commitInfo)
err = table.Replace(voteInfo)
if err != nil {
elog.Error("execLocal commitVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable replace", err)
return nil, err
}
kvs, err := table.Save()
dbSet.KV, err = v.updateAndSaveTable(table.Replace, table.Save, voteInfo, tx, vty.NameCommitVoteAction, "vote")
if err != nil {
elog.Error("execLocal commitVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable save", err)
return nil, err
}
dbSet.KV = kvs
//auto gen for localdb auto rollback
return v.addAutoRollBack(tx, dbSet.KV), nil
}
......@@ -128,7 +110,7 @@ func (v *vote) ExecLocal_CloseVote(payload *vty.CloseVote, tx *types.Transaction
table := newVoteTable(v.GetLocalDB())
row, err := table.GetData([]byte(payload.GetVoteID()))
if err != nil {
elog.Error("execLocal closeVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable get", err)
elog.Error("execLocal closeVote", "txHash", hex.EncodeToString(tx.Hash()), "table get", err)
return nil, err
}
voteInfo, ok := row.Data.(*vty.VoteInfo)
......@@ -139,17 +121,10 @@ func (v *vote) ExecLocal_CloseVote(payload *vty.CloseVote, tx *types.Transaction
}
voteInfo.Status = voteStatusClosed
err = table.Replace(voteInfo)
dbSet.KV, err = v.updateAndSaveTable(table.Replace, table.Save, voteInfo, tx, vty.NameCloseVoteAction, "vote")
if err != nil {
elog.Error("execLocal closeVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable replace", err)
return nil, err
}
kvs, err := table.Save()
if err != nil {
elog.Error("execLocal closeVote", "txHash", hex.EncodeToString(tx.Hash()), "voteTable save", err)
return nil, err
}
dbSet.KV = kvs
//auto gen for localdb auto rollback
return v.addAutoRollBack(tx, dbSet.KV), nil
}
......@@ -159,27 +134,15 @@ func (v *vote) ExecLocal_UpdateMember(payload *vty.UpdateMember, tx *types.Trans
table := newMemberTable(v.GetLocalDB())
row, err := table.GetData([]byte(tx.From()))
if err != nil {
elog.Error("execLocal updateMember", "txHash", hex.EncodeToString(tx.Hash()), "memberTable get", err)
elog.Error("execLocal updateMember", "txHash", hex.EncodeToString(tx.Hash()), "table get", err)
return nil, err
}
memberInfo, ok := row.Data.(*vty.MemberInfo)
if !ok {
elog.Error("execLocal updateMember", "txHash", hex.EncodeToString(tx.Hash()), "memberInfo type asset", err)
return nil, types.ErrTypeAsset
}
memberInfo, _ := row.Data.(*vty.MemberInfo)
memberInfo.Name = payload.GetName()
err = table.Replace(memberInfo)
if err != nil {
elog.Error("execLocal updateMember", "txHash", hex.EncodeToString(tx.Hash()), "memberTable replace", err)
return nil, err
}
kvs, err := table.Save()
dbSet.KV, err = v.updateAndSaveTable(table.Replace, table.Save, memberInfo, tx, vty.NameUpdateMemberAction, "member")
if err != nil {
elog.Error("execLocal updateMember", "txHash", hex.EncodeToString(tx.Hash()), "memberTable save", err)
return nil, err
}
dbSet.KV = kvs
//auto gen for localdb auto rollback
return v.addAutoRollBack(tx, dbSet.KV), nil
}
......@@ -192,6 +155,24 @@ func (v *vote) addAutoRollBack(tx *types.Transaction, kv []*types.KeyValue) *typ
return dbSet
}
type updateFunc func(message types.Message) error
type saveFunc func() ([]*types.KeyValue, error)
func (v *vote) updateAndSaveTable(update updateFunc, save saveFunc, data types.Message, tx *types.Transaction, actionName, tableName string) ([]*types.KeyValue, error) {
err := update(data)
if err != nil {
elog.Error("execLocal "+actionName, "txHash", hex.EncodeToString(tx.Hash()), tableName+" table update", err)
return nil, err
}
kvs, err := save()
if err != nil {
elog.Error("execLocal "+actionName, "txHash", hex.EncodeToString(tx.Hash()), tableName+" table save", err)
return nil, err
}
return kvs, nil
}
func (v *vote) addGroupMember(groupID string, members []*vty.GroupMember) ([]*types.KeyValue, error) {
table := newMemberTable(v.GetLocalDB())
......
......@@ -48,6 +48,7 @@ message GroupInfo {
repeated string admins = 5; //管理员列表
repeated GroupMember members = 6; //成员列表
string description = 7; //描述信息
uint32 voteNum = 8; //投票数量
}
message GroupInfos {
......
......@@ -370,6 +370,7 @@ type GroupInfo struct {
Admins []string `protobuf:"bytes,5,rep,name=admins,proto3" json:"admins,omitempty"`
Members []*GroupMember `protobuf:"bytes,6,rep,name=members,proto3" json:"members,omitempty"`
Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
VoteNum uint32 `protobuf:"varint,8,opt,name=voteNum,proto3" json:"voteNum,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -449,6 +450,13 @@ func (m *GroupInfo) GetDescription() string {
return ""
}
func (m *GroupInfo) GetVoteNum() uint32 {
if m != nil {
return m.VoteNum
}
return 0
}
type GroupInfos struct {
GroupList []*GroupInfo `protobuf:"bytes,1,rep,name=groupList,proto3" json:"groupList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -1259,61 +1267,62 @@ func init() {
}
var fileDescriptor_21d31c94b62a6ac7 = []byte{
// 893 bytes of a gzipped FileDescriptorProto
// 904 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xdd, 0x6e, 0xeb, 0x44,
0x10, 0x8e, 0x9d, 0x38, 0x89, 0xc7, 0x4d, 0x29, 0x0b, 0xaa, 0xac, 0xaa, 0x42, 0xd1, 0x82, 0x50,
0x05, 0x55, 0x04, 0x8d, 0x84, 0x0a, 0xe2, 0x82, 0x42, 0x05, 0x89, 0x44, 0x0b, 0x5a, 0xa0, 0x5c,
0x71, 0xe1, 0xda, 0x4b, 0x6a, 0x11, 0xdb, 0xa9, 0x77, 0x13, 0x35, 0x8f, 0xc0, 0x73, 0x71, 0xc7,
0xcd, 0x91, 0xce, 0x73, 0x9c, 0x87, 0x38, 0xda, 0x59, 0xff, 0xac, 0xf3, 0xa3, 0xd3, 0xde, 0x65,
0x66, 0xbf, 0x99, 0x9d, 0xfd, 0xbe, 0x6f, 0x37, 0x06, 0x58, 0x65, 0x92, 0x8f, 0x16, 0x79, 0x26,
0x33, 0xe2, 0xc8, 0xf5, 0x82, 0x0b, 0xfa, 0xc6, 0x06, 0xb8, 0xcb, 0x24, 0xbf, 0x0a, 0x65, 0x9c,
0xa5, 0xe4, 0x10, 0x6c, 0xb9, 0xf6, 0xad, 0xa1, 0x75, 0xe6, 0x30, 0x5b, 0xae, 0xc9, 0x57, 0xe0,
0x85, 0x39, 0x0f, 0x24, 0xff, 0x29, 0xcf, 0x96, 0x0b, 0xdf, 0x1e, 0x5a, 0x67, 0xde, 0x05, 0x19,
0x61, 0xed, 0xe8, 0x87, 0x7a, 0x65, 0xd2, 0x62, 0x26, 0x50, 0xd5, 0x2d, 0x17, 0x51, 0x55, 0xd7,
0x6e, 0xd4, 0xfd, 0x51, 0xaf, 0xa8, 0x3a, 0x03, 0x48, 0xc6, 0x00, 0xba, 0x8d, 0x9a, 0xc9, 0xef,
0x60, 0xd9, 0xfb, 0x8d, 0xed, 0xd4, 0xc2, 0xa4, 0xc5, 0x0c, 0x18, 0x16, 0x65, 0x49, 0x12, 0x4b,
0x2c, 0x72, 0x9a, 0x45, 0xd5, 0x02, 0x16, 0x55, 0x11, 0xf9, 0x02, 0xdc, 0x70, 0x9e, 0x09, 0xbd,
0x51, 0x17, 0x6b, 0x8e, 0xca, 0x9a, 0x32, 0x3f, 0x69, 0xb1, 0x1a, 0x44, 0xbe, 0x86, 0x03, 0x3d,
0xea, 0x0d, 0x4f, 0xee, 0x79, 0xee, 0xf7, 0xb0, 0xe8, 0x83, 0xc6, 0xa1, 0xf4, 0xd2, 0xa4, 0xc5,
0x1a, 0xd0, 0xef, 0x7b, 0xe0, 0xac, 0x82, 0xf9, 0x92, 0xd3, 0xbf, 0xc0, 0xc3, 0x83, 0xea, 0x3c,
0x21, 0xd0, 0x09, 0xa2, 0x28, 0x47, 0xc2, 0x5d, 0x86, 0xbf, 0xc9, 0x47, 0x5a, 0xa6, 0x3f, 0x79,
0x3c, 0x7b, 0x90, 0xc8, 0xf8, 0x80, 0x19, 0x19, 0x72, 0x02, 0xfd, 0x34, 0x0e, 0xff, 0xb9, 0x0d,
0x12, 0x8e, 0xbc, 0xba, 0xac, 0x8a, 0xe9, 0xbf, 0x16, 0x78, 0x86, 0x2a, 0xaa, 0x7f, 0xaa, 0x70,
0x45, 0x7f, 0xf5, 0x9b, 0x1c, 0x43, 0x37, 0x88, 0x92, 0x38, 0x15, 0xbe, 0x3d, 0x6c, 0x9f, 0xb9,
0xac, 0x88, 0xc8, 0x39, 0xf4, 0x12, 0x9c, 0x4a, 0xf8, 0xed, 0x61, 0xdb, 0x90, 0xcb, 0x18, 0x98,
0x95, 0x10, 0x32, 0x04, 0x2f, 0xe2, 0x22, 0xcc, 0xe3, 0x85, 0xf2, 0x0d, 0x2a, 0xe5, 0x32, 0x33,
0x45, 0xff, 0xb3, 0xc0, 0x33, 0x94, 0x26, 0x3e, 0xf4, 0x66, 0xea, 0xc7, 0xf4, 0xba, 0x18, 0xa7,
0x0c, 0xc9, 0x05, 0x40, 0x10, 0x45, 0x37, 0xc5, 0xe6, 0xf6, 0xde, 0xcd, 0x0d, 0x14, 0xf9, 0x04,
0x06, 0x39, 0x4f, 0xb2, 0x15, 0xbf, 0x31, 0x66, 0x76, 0x59, 0x33, 0x49, 0x4e, 0xc1, 0x0d, 0xa2,
0xe8, 0x4a, 0x1f, 0xb7, 0x83, 0x88, 0x3a, 0x41, 0x28, 0x1c, 0x68, 0x78, 0x01, 0x70, 0x10, 0xd0,
0xc8, 0xd1, 0x57, 0x16, 0xb8, 0x38, 0xc3, 0x34, 0xfd, 0x3b, 0x53, 0xd7, 0xa3, 0x1a, 0xdf, 0x9e,
0x5e, 0x57, 0xfc, 0xda, 0x06, 0xbf, 0xa7, 0xe0, 0x6a, 0x92, 0x6e, 0x97, 0x09, 0x0a, 0x34, 0x60,
0x75, 0x42, 0xb1, 0x80, 0xce, 0xcd, 0xf2, 0x82, 0xb3, 0x32, 0x34, 0x74, 0x71, 0xf6, 0xe9, 0xd2,
0x7d, 0xb1, 0x2e, 0xbd, 0x6d, 0x5d, 0xbe, 0x05, 0xa8, 0x0e, 0x24, 0xc8, 0x08, 0x5c, 0x94, 0xe1,
0xe7, 0x58, 0x48, 0xdf, 0xc2, 0xfe, 0x47, 0x66, 0x7f, 0x85, 0x62, 0x35, 0x84, 0x7e, 0xa3, 0x9f,
0x8b, 0x5f, 0xb0, 0x97, 0x9a, 0x39, 0xd3, 0x1b, 0x69, 0x4e, 0x8a, 0x88, 0x7c, 0x08, 0x8e, 0x08,
0xb3, 0x9c, 0x17, 0xf6, 0xd5, 0x01, 0xfd, 0xdf, 0x02, 0xa8, 0x2f, 0xf1, 0x4e, 0x73, 0x1a, 0x26,
0xb1, 0x9b, 0x26, 0x19, 0x82, 0xb7, 0xaa, 0x36, 0x2e, 0xe5, 0x36, 0x53, 0xe4, 0x53, 0x38, 0xbc,
0xe7, 0xb3, 0x38, 0xfd, 0x3d, 0x4e, 0xb8, 0x90, 0x41, 0xb2, 0x40, 0x86, 0xdb, 0x6c, 0x23, 0xab,
0x64, 0xe7, 0x69, 0x54, 0xa3, 0x1c, 0x44, 0x35, 0x72, 0x9b, 0x34, 0x76, 0xb7, 0x69, 0xfc, 0x11,
0xa0, 0x7e, 0x5b, 0x14, 0x11, 0x6a, 0x94, 0xca, 0x1c, 0x45, 0xa4, 0xfa, 0x68, 0x4a, 0xa6, 0x69,
0xc4, 0x9f, 0x0a, 0x3a, 0xcc, 0x14, 0xbd, 0x2c, 0xfb, 0xa0, 0xc1, 0x76, 0x3d, 0x08, 0xc7, 0xd0,
0x95, 0x4f, 0x93, 0x40, 0x3c, 0x14, 0x94, 0x14, 0x11, 0xfd, 0x18, 0xdc, 0xea, 0xa5, 0xda, 0x37,
0x00, 0xa5, 0x70, 0x60, 0xbe, 0x4c, 0xbb, 0x48, 0xa7, 0xaf, 0x6d, 0xe8, 0xab, 0x26, 0xcf, 0xb6,
0xb8, 0x61, 0xe2, 0x76, 0xd3, 0xc4, 0x86, 0x7e, 0x9d, 0xa6, 0x7e, 0xe3, 0xa6, 0x7e, 0x0e, 0x5a,
0xad, 0x7c, 0xa5, 0x6b, 0x4b, 0xbd, 0x4b, 0xd2, 0xee, 0xb3, 0x24, 0xed, 0xed, 0x90, 0x74, 0x0c,
0x5e, 0x58, 0x11, 0x2d, 0xfc, 0x7e, 0x63, 0x80, 0x5a, 0x02, 0x66, 0xa2, 0x36, 0x7d, 0xe0, 0x6e,
0xf9, 0x40, 0x11, 0x2f, 0x64, 0x20, 0x97, 0xc2, 0x07, 0x14, 0xb7, 0x88, 0xe8, 0x25, 0xb8, 0x25,
0xa7, 0x82, 0x7c, 0x0e, 0x7d, 0x75, 0x2c, 0xe3, 0x92, 0xbd, 0x67, 0x9c, 0x1c, 0xb7, 0xad, 0x00,
0xf4, 0x57, 0x00, 0x2d, 0xd6, 0x5e, 0x47, 0xec, 0xd2, 0xe4, 0x04, 0xfa, 0x05, 0xd5, 0xe5, 0xe5,
0xa8, 0x62, 0xfa, 0x1d, 0x78, 0x75, 0x47, 0x41, 0xbe, 0x04, 0xd0, 0xcf, 0x85, 0x31, 0x4f, 0x49,
0x44, 0x8d, 0x63, 0x06, 0x88, 0x52, 0x00, 0xc6, 0x1f, 0x7f, 0x93, 0x79, 0x9c, 0xce, 0x84, 0xba,
0xde, 0xb1, 0xe4, 0x89, 0xc0, 0x5a, 0x97, 0xe9, 0x80, 0x86, 0xe0, 0x31, 0xfe, 0xa8, 0xe0, 0x53,
0xc9, 0x13, 0x45, 0x9d, 0x90, 0x41, 0x8e, 0x41, 0xe5, 0x28, 0x33, 0xa5, 0xda, 0x84, 0xd9, 0x32,
0xd5, 0x7f, 0x72, 0x0e, 0xd3, 0x81, 0x7a, 0x3f, 0xa3, 0x38, 0xe7, 0xf8, 0x3d, 0x82, 0xf6, 0x72,
0x58, 0x9d, 0xa0, 0x49, 0xb5, 0x09, 0xda, 0x7e, 0xff, 0x9f, 0xca, 0x39, 0xf4, 0xe6, 0xb1, 0x90,
0x8c, 0x3f, 0x6e, 0x7c, 0xb5, 0x18, 0x33, 0xb2, 0x12, 0x62, 0xa8, 0xd8, 0x6e, 0xa8, 0xf8, 0x00,
0x03, 0xc6, 0x17, 0xf3, 0xf5, 0x5d, 0x21, 0xce, 0x8b, 0x94, 0x24, 0x9f, 0xc1, 0x51, 0xb8, 0xcc,
0x73, 0x9e, 0xca, 0xda, 0x9a, 0x36, 0x5a, 0x73, 0x2b, 0x7f, 0xdf, 0xc5, 0xcf, 0xb2, 0xf1, 0xdb,
0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0xe9, 0xb2, 0x15, 0xa4, 0x09, 0x00, 0x00,
0x10, 0x8e, 0x9d, 0xd8, 0x89, 0xc7, 0xcd, 0xa1, 0x2c, 0x28, 0xb2, 0x8e, 0x8e, 0x50, 0xb4, 0x20,
0x54, 0xc1, 0x51, 0x04, 0x8d, 0x84, 0x0a, 0xe2, 0x82, 0x42, 0x05, 0x89, 0x44, 0x0b, 0x5a, 0xa0,
0x5c, 0x71, 0xe1, 0xda, 0x4b, 0x6a, 0x11, 0xdb, 0xa9, 0x77, 0x13, 0x35, 0x8f, 0xc0, 0x73, 0x71,
0xc7, 0x25, 0x6f, 0x81, 0xc4, 0x43, 0xa0, 0x9d, 0xf5, 0xcf, 0x3a, 0x3f, 0x3a, 0xed, 0x5d, 0x66,
0xf6, 0x9b, 0x9d, 0xd9, 0xef, 0xfb, 0x76, 0x63, 0x80, 0x4d, 0x2e, 0xf9, 0x64, 0x55, 0xe4, 0x32,
0x27, 0x8e, 0xdc, 0xae, 0xb8, 0xa0, 0xff, 0xd9, 0x00, 0xb7, 0xb9, 0xe4, 0x97, 0x91, 0x4c, 0xf2,
0x8c, 0xbc, 0x00, 0x5b, 0x6e, 0x03, 0x6b, 0x6c, 0x9d, 0x39, 0xcc, 0x96, 0x5b, 0xf2, 0x19, 0xf8,
0x51, 0xc1, 0x43, 0xc9, 0xbf, 0x2b, 0xf2, 0xf5, 0x2a, 0xb0, 0xc7, 0xd6, 0x99, 0x7f, 0x4e, 0x26,
0x58, 0x3b, 0xf9, 0xa6, 0x59, 0x99, 0x75, 0x98, 0x09, 0x54, 0x75, 0xeb, 0x55, 0x5c, 0xd7, 0x75,
0x5b, 0x75, 0xbf, 0x34, 0x2b, 0xaa, 0xce, 0x00, 0x92, 0x29, 0x80, 0xde, 0x46, 0xcd, 0x14, 0xf4,
0xb0, 0xec, 0xed, 0x56, 0x3b, 0xb5, 0x30, 0xeb, 0x30, 0x03, 0x86, 0x45, 0x79, 0x9a, 0x26, 0x12,
0x8b, 0x9c, 0x76, 0x51, 0xbd, 0x80, 0x45, 0x75, 0x44, 0x3e, 0x01, 0x2f, 0x5a, 0xe6, 0x42, 0x37,
0x72, 0xb1, 0xe6, 0xb4, 0xaa, 0xa9, 0xf2, 0xb3, 0x0e, 0x6b, 0x40, 0xe4, 0x73, 0x38, 0xd1, 0xa3,
0x5e, 0xf3, 0xf4, 0x8e, 0x17, 0x41, 0x1f, 0x8b, 0xde, 0x69, 0x1d, 0x4a, 0x2f, 0xcd, 0x3a, 0xac,
0x05, 0xfd, 0xba, 0x0f, 0xce, 0x26, 0x5c, 0xae, 0x39, 0xfd, 0x0d, 0x7c, 0x3c, 0xa8, 0xce, 0x13,
0x02, 0xbd, 0x30, 0x8e, 0x0b, 0x24, 0xdc, 0x63, 0xf8, 0x9b, 0xbc, 0xa7, 0x65, 0xfa, 0x95, 0x27,
0x8b, 0x7b, 0x89, 0x8c, 0x0f, 0x99, 0x91, 0x21, 0x2f, 0x61, 0x90, 0x25, 0xd1, 0x1f, 0x37, 0x61,
0xca, 0x91, 0x57, 0x8f, 0xd5, 0x31, 0xfd, 0xd3, 0x02, 0xdf, 0x50, 0x45, 0xed, 0x9f, 0x29, 0x5c,
0xb9, 0xbf, 0xfa, 0x4d, 0x46, 0xe0, 0x86, 0x71, 0x9a, 0x64, 0x22, 0xb0, 0xc7, 0xdd, 0x33, 0x8f,
0x95, 0x11, 0x79, 0x0d, 0xfd, 0x14, 0xa7, 0x12, 0x41, 0x77, 0xdc, 0x35, 0xe4, 0x32, 0x06, 0x66,
0x15, 0x84, 0x8c, 0xc1, 0x8f, 0xb9, 0x88, 0x8a, 0x64, 0xa5, 0x7c, 0x83, 0x4a, 0x79, 0xcc, 0x4c,
0xd1, 0xbf, 0x2c, 0xf0, 0x0d, 0xa5, 0x49, 0x00, 0xfd, 0x85, 0xfa, 0x31, 0xbf, 0x2a, 0xc7, 0xa9,
0x42, 0x72, 0x0e, 0x10, 0xc6, 0xf1, 0x75, 0xd9, 0xdc, 0x3e, 0xda, 0xdc, 0x40, 0x91, 0x0f, 0x60,
0x58, 0xf0, 0x34, 0xdf, 0xf0, 0x6b, 0x63, 0x66, 0x8f, 0xb5, 0x93, 0xe4, 0x15, 0x78, 0x61, 0x1c,
0x5f, 0xea, 0xe3, 0xf6, 0x10, 0xd1, 0x24, 0x08, 0x85, 0x13, 0x0d, 0x2f, 0x01, 0x0e, 0x02, 0x5a,
0x39, 0xfa, 0xaf, 0x05, 0x1e, 0xce, 0x30, 0xcf, 0x7e, 0xcf, 0xd5, 0xf5, 0xa8, 0xc7, 0xb7, 0xe7,
0x57, 0x35, 0xbf, 0xb6, 0xc1, 0xef, 0x2b, 0xf0, 0x34, 0x49, 0x37, 0xeb, 0x14, 0x05, 0x1a, 0xb2,
0x26, 0xa1, 0x58, 0x40, 0xe7, 0xe6, 0x45, 0xc9, 0x59, 0x15, 0x1a, 0xba, 0x38, 0xc7, 0x74, 0x71,
0x9f, 0xad, 0x4b, 0x7f, 0x4f, 0x17, 0x35, 0x81, 0x72, 0x93, 0x9a, 0x6e, 0x80, 0xd3, 0x55, 0x21,
0xfd, 0x12, 0xa0, 0x3e, 0xaa, 0x20, 0x13, 0xf0, 0x50, 0xa0, 0xef, 0x13, 0x21, 0x03, 0x0b, 0x3b,
0x9f, 0x9a, 0x9d, 0x15, 0x8a, 0x35, 0x10, 0xfa, 0x85, 0x7e, 0x48, 0x7e, 0xd0, 0x5d, 0x46, 0xe0,
0xe6, 0x7a, 0x04, 0xcd, 0x56, 0x19, 0x91, 0x77, 0xc1, 0x11, 0x51, 0x5e, 0xf0, 0xd2, 0xd8, 0x3a,
0xa0, 0x7f, 0x5b, 0x00, 0xcd, 0xf5, 0x3e, 0x68, 0x5b, 0xc3, 0x3e, 0x76, 0xdb, 0x3e, 0x63, 0xf0,
0x37, 0x75, 0xe3, 0xca, 0x08, 0x66, 0x8a, 0x7c, 0x08, 0x2f, 0xee, 0xf8, 0x22, 0xc9, 0x7e, 0x4e,
0x52, 0x2e, 0x64, 0x98, 0xae, 0x90, 0xfb, 0x2e, 0xdb, 0xc9, 0x2a, 0x43, 0xf0, 0x2c, 0x6e, 0x50,
0x0e, 0xa2, 0x5a, 0xb9, 0x5d, 0x82, 0xdd, 0x7d, 0xe3, 0x7f, 0x0b, 0xd0, 0xbc, 0x3a, 0x8a, 0x08,
0x35, 0x4a, 0x6d, 0x9b, 0x32, 0x52, 0xfb, 0x68, 0x4a, 0xe6, 0x59, 0xcc, 0x1f, 0x4b, 0x3a, 0xcc,
0x14, 0xbd, 0xa8, 0xf6, 0x41, 0xeb, 0x1d, 0x7a, 0x2a, 0x46, 0xe0, 0xca, 0xc7, 0x59, 0x28, 0xee,
0x4b, 0x4a, 0xca, 0x88, 0xbe, 0x0f, 0x5e, 0xfd, 0x86, 0x1d, 0x1b, 0x80, 0x52, 0x38, 0x31, 0xdf,
0xac, 0x43, 0xa4, 0xd3, 0x7f, 0x6c, 0x18, 0xa8, 0x4d, 0x9e, 0x6c, 0x7e, 0xc3, 0xde, 0xdd, 0xb6,
0xbd, 0x0d, 0xfd, 0x7a, 0x6d, 0xfd, 0xa6, 0x6d, 0xfd, 0x1c, 0xb4, 0x5a, 0xf5, 0x7e, 0x37, 0x96,
0x7a, 0x93, 0xa4, 0xee, 0x93, 0x24, 0xed, 0x1f, 0x90, 0x74, 0x0a, 0x7e, 0x54, 0x13, 0x2d, 0x82,
0x41, 0x6b, 0x80, 0x46, 0x02, 0x66, 0xa2, 0x76, 0x7d, 0xe0, 0xed, 0x5f, 0xb4, 0x11, 0xb8, 0x42,
0x86, 0x72, 0x2d, 0x02, 0x40, 0x71, 0xcb, 0x88, 0x5e, 0x80, 0x57, 0x71, 0x2a, 0xc8, 0xc7, 0x30,
0x50, 0xc7, 0x32, 0x2e, 0xd9, 0x5b, 0xc6, 0xc9, 0xb1, 0x6d, 0x0d, 0xa0, 0x3f, 0x02, 0x68, 0xb1,
0x8e, 0x3a, 0xe2, 0x90, 0x26, 0x2f, 0x61, 0x50, 0x52, 0x5d, 0x5d, 0x8e, 0x3a, 0xa6, 0x5f, 0x81,
0xdf, 0xec, 0x28, 0xc8, 0xa7, 0x00, 0xfa, 0x21, 0x31, 0xe6, 0xa9, 0x88, 0x68, 0x70, 0xcc, 0x00,
0x51, 0x0a, 0xc0, 0xf8, 0xc3, 0x4f, 0xb2, 0x48, 0xb2, 0x85, 0x50, 0xd7, 0x3b, 0x91, 0x3c, 0x15,
0x58, 0xeb, 0x31, 0x1d, 0xd0, 0x08, 0x7c, 0xc6, 0x1f, 0x14, 0x7c, 0x2e, 0x79, 0xaa, 0xa8, 0x13,
0x32, 0x2c, 0x30, 0xa8, 0x1d, 0x65, 0xa6, 0xd4, 0x36, 0x51, 0xbe, 0xce, 0xf4, 0xdf, 0x9f, 0xc3,
0x74, 0xa0, 0x5e, 0xd6, 0x38, 0x29, 0x38, 0x7e, 0xa9, 0xa0, 0xbd, 0x1c, 0xd6, 0x24, 0x68, 0x5a,
0x37, 0x41, 0xdb, 0x1f, 0xff, 0xbb, 0x79, 0x0d, 0xfd, 0x65, 0x22, 0x24, 0xe3, 0x0f, 0x3b, 0xdf,
0x33, 0xc6, 0x8c, 0xac, 0x82, 0x18, 0x2a, 0x76, 0x5b, 0x2a, 0xde, 0xc3, 0x90, 0xf1, 0xd5, 0x72,
0x7b, 0x5b, 0x8a, 0xf3, 0x2c, 0x25, 0xc9, 0x47, 0x70, 0x1a, 0xad, 0x8b, 0x82, 0x67, 0xb2, 0xb1,
0xa6, 0x8d, 0xd6, 0xdc, 0xcb, 0xdf, 0xb9, 0xf8, 0xc1, 0x36, 0xfd, 0x3f, 0x00, 0x00, 0xff, 0xff,
0xd4, 0x6f, 0xb9, 0xbc, 0xbe, 0x09, 0x00, 0x00,
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment