Clear personal chat history

This commit is contained in:
wenxu12345
2022-05-31 19:16:29 +08:00
parent 4c305b7cc0
commit 2b4df5be16
9 changed files with 328 additions and 46 deletions
+181 -42
View File
@@ -37,7 +37,7 @@ func (m *MsgDataToMQ) Reset() { *m = MsgDataToMQ{} }
func (m *MsgDataToMQ) String() string { return proto.CompactTextString(m) }
func (*MsgDataToMQ) ProtoMessage() {}
func (*MsgDataToMQ) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_732204f30d7bcb33, []int{0}
return fileDescriptor_chat_9735d58eeaab60cd, []int{0}
}
func (m *MsgDataToMQ) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgDataToMQ.Unmarshal(m, b)
@@ -90,7 +90,7 @@ func (m *MsgDataToDB) Reset() { *m = MsgDataToDB{} }
func (m *MsgDataToDB) String() string { return proto.CompactTextString(m) }
func (*MsgDataToDB) ProtoMessage() {}
func (*MsgDataToDB) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_732204f30d7bcb33, []int{1}
return fileDescriptor_chat_9735d58eeaab60cd, []int{1}
}
func (m *MsgDataToDB) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgDataToDB.Unmarshal(m, b)
@@ -137,7 +137,7 @@ func (m *PushMsgDataToMQ) Reset() { *m = PushMsgDataToMQ{} }
func (m *PushMsgDataToMQ) String() string { return proto.CompactTextString(m) }
func (*PushMsgDataToMQ) ProtoMessage() {}
func (*PushMsgDataToMQ) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_732204f30d7bcb33, []int{2}
return fileDescriptor_chat_9735d58eeaab60cd, []int{2}
}
func (m *PushMsgDataToMQ) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PushMsgDataToMQ.Unmarshal(m, b)
@@ -210,7 +210,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} }
func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqReq) ProtoMessage() {}
func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_732204f30d7bcb33, []int{3}
return fileDescriptor_chat_9735d58eeaab60cd, []int{3}
}
func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b)
@@ -258,7 +258,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} }
func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqResp) ProtoMessage() {}
func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_732204f30d7bcb33, []int{4}
return fileDescriptor_chat_9735d58eeaab60cd, []int{4}
}
func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b)
@@ -319,7 +319,7 @@ func (m *SendMsgReq) Reset() { *m = SendMsgReq{} }
func (m *SendMsgReq) String() string { return proto.CompactTextString(m) }
func (*SendMsgReq) ProtoMessage() {}
func (*SendMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_732204f30d7bcb33, []int{5}
return fileDescriptor_chat_9735d58eeaab60cd, []int{5}
}
func (m *SendMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendMsgReq.Unmarshal(m, b)
@@ -375,7 +375,7 @@ func (m *SendMsgResp) Reset() { *m = SendMsgResp{} }
func (m *SendMsgResp) String() string { return proto.CompactTextString(m) }
func (*SendMsgResp) ProtoMessage() {}
func (*SendMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_732204f30d7bcb33, []int{6}
return fileDescriptor_chat_9735d58eeaab60cd, []int{6}
}
func (m *SendMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendMsgResp.Unmarshal(m, b)
@@ -430,6 +430,106 @@ func (m *SendMsgResp) GetSendTime() int64 {
return 0
}
type ClearMsgReq struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
OpUserID string `protobuf:"bytes,2,opt,name=opUserID" json:"opUserID,omitempty"`
OperationID string `protobuf:"bytes,3,opt,name=operationID" json:"operationID,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ClearMsgReq) Reset() { *m = ClearMsgReq{} }
func (m *ClearMsgReq) String() string { return proto.CompactTextString(m) }
func (*ClearMsgReq) ProtoMessage() {}
func (*ClearMsgReq) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_9735d58eeaab60cd, []int{7}
}
func (m *ClearMsgReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClearMsgReq.Unmarshal(m, b)
}
func (m *ClearMsgReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ClearMsgReq.Marshal(b, m, deterministic)
}
func (dst *ClearMsgReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_ClearMsgReq.Merge(dst, src)
}
func (m *ClearMsgReq) XXX_Size() int {
return xxx_messageInfo_ClearMsgReq.Size(m)
}
func (m *ClearMsgReq) XXX_DiscardUnknown() {
xxx_messageInfo_ClearMsgReq.DiscardUnknown(m)
}
var xxx_messageInfo_ClearMsgReq proto.InternalMessageInfo
func (m *ClearMsgReq) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *ClearMsgReq) GetOpUserID() string {
if m != nil {
return m.OpUserID
}
return ""
}
func (m *ClearMsgReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type ClearMsgResp struct {
ErrCode int32 `protobuf:"varint,1,opt,name=errCode" json:"errCode,omitempty"`
ErrMsg string `protobuf:"bytes,2,opt,name=errMsg" json:"errMsg,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ClearMsgResp) Reset() { *m = ClearMsgResp{} }
func (m *ClearMsgResp) String() string { return proto.CompactTextString(m) }
func (*ClearMsgResp) ProtoMessage() {}
func (*ClearMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_chat_9735d58eeaab60cd, []int{8}
}
func (m *ClearMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClearMsgResp.Unmarshal(m, b)
}
func (m *ClearMsgResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ClearMsgResp.Marshal(b, m, deterministic)
}
func (dst *ClearMsgResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_ClearMsgResp.Merge(dst, src)
}
func (m *ClearMsgResp) XXX_Size() int {
return xxx_messageInfo_ClearMsgResp.Size(m)
}
func (m *ClearMsgResp) XXX_DiscardUnknown() {
xxx_messageInfo_ClearMsgResp.DiscardUnknown(m)
}
var xxx_messageInfo_ClearMsgResp proto.InternalMessageInfo
func (m *ClearMsgResp) GetErrCode() int32 {
if m != nil {
return m.ErrCode
}
return 0
}
func (m *ClearMsgResp) GetErrMsg() string {
if m != nil {
return m.ErrMsg
}
return ""
}
func init() {
proto.RegisterType((*MsgDataToMQ)(nil), "pbChat.MsgDataToMQ")
proto.RegisterType((*MsgDataToDB)(nil), "pbChat.MsgDataToDB")
@@ -438,6 +538,8 @@ func init() {
proto.RegisterType((*GetMaxAndMinSeqResp)(nil), "pbChat.GetMaxAndMinSeqResp")
proto.RegisterType((*SendMsgReq)(nil), "pbChat.SendMsgReq")
proto.RegisterType((*SendMsgResp)(nil), "pbChat.SendMsgResp")
proto.RegisterType((*ClearMsgReq)(nil), "pbChat.ClearMsgReq")
proto.RegisterType((*ClearMsgResp)(nil), "pbChat.ClearMsgResp")
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -455,6 +557,7 @@ type ChatClient interface {
PullMessageBySeqList(ctx context.Context, in *sdk_ws.PullMessageBySeqListReq, opts ...grpc.CallOption) (*sdk_ws.PullMessageBySeqListResp, error)
SendMsg(ctx context.Context, in *SendMsgReq, opts ...grpc.CallOption) (*SendMsgResp, error)
DelMsgList(ctx context.Context, in *sdk_ws.DelMsgListReq, opts ...grpc.CallOption) (*sdk_ws.DelMsgListResp, error)
ClearMsg(ctx context.Context, in *ClearMsgReq, opts ...grpc.CallOption) (*ClearMsgResp, error)
}
type chatClient struct {
@@ -501,6 +604,15 @@ func (c *chatClient) DelMsgList(ctx context.Context, in *sdk_ws.DelMsgListReq, o
return out, nil
}
func (c *chatClient) ClearMsg(ctx context.Context, in *ClearMsgReq, opts ...grpc.CallOption) (*ClearMsgResp, error) {
out := new(ClearMsgResp)
err := grpc.Invoke(ctx, "/pbChat.Chat/ClearMsg", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for Chat service
type ChatServer interface {
@@ -508,6 +620,7 @@ type ChatServer interface {
PullMessageBySeqList(context.Context, *sdk_ws.PullMessageBySeqListReq) (*sdk_ws.PullMessageBySeqListResp, error)
SendMsg(context.Context, *SendMsgReq) (*SendMsgResp, error)
DelMsgList(context.Context, *sdk_ws.DelMsgListReq) (*sdk_ws.DelMsgListResp, error)
ClearMsg(context.Context, *ClearMsgReq) (*ClearMsgResp, error)
}
func RegisterChatServer(s *grpc.Server, srv ChatServer) {
@@ -586,6 +699,24 @@ func _Chat_DelMsgList_Handler(srv interface{}, ctx context.Context, dec func(int
return interceptor(ctx, in, info, handler)
}
func _Chat_ClearMsg_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ClearMsgReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ChatServer).ClearMsg(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pbChat.Chat/ClearMsg",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ChatServer).ClearMsg(ctx, req.(*ClearMsgReq))
}
return interceptor(ctx, in, info, handler)
}
var _Chat_serviceDesc = grpc.ServiceDesc{
ServiceName: "pbChat.Chat",
HandlerType: (*ChatServer)(nil),
@@ -606,45 +737,53 @@ var _Chat_serviceDesc = grpc.ServiceDesc{
MethodName: "DelMsgList",
Handler: _Chat_DelMsgList_Handler,
},
{
MethodName: "ClearMsg",
Handler: _Chat_ClearMsg_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "chat/chat.proto",
}
func init() { proto.RegisterFile("chat/chat.proto", fileDescriptor_chat_732204f30d7bcb33) }
func init() { proto.RegisterFile("chat/chat.proto", fileDescriptor_chat_9735d58eeaab60cd) }
var fileDescriptor_chat_732204f30d7bcb33 = []byte{
// 508 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x54, 0xdd, 0x6e, 0xda, 0x30,
0x14, 0x56, 0x68, 0x0b, 0xe3, 0xb0, 0x0a, 0xc9, 0xad, 0xa6, 0x88, 0xab, 0x34, 0xd2, 0x26, 0xb4,
0x49, 0x89, 0xc4, 0x76, 0xb7, 0xab, 0xd1, 0x54, 0x13, 0xd2, 0xbc, 0xb6, 0x81, 0xdd, 0xec, 0x86,
0xb9, 0xcd, 0x51, 0x88, 0x80, 0xc4, 0xf8, 0x84, 0xd1, 0x6d, 0xcf, 0xb0, 0x67, 0xd8, 0xab, 0xed,
0x51, 0xa6, 0xd8, 0x69, 0x09, 0x05, 0xa9, 0x5c, 0xed, 0x06, 0xe9, 0x7c, 0xfe, 0xfc, 0xfd, 0x18,
0xc7, 0xd0, 0xbe, 0x9d, 0x88, 0xdc, 0x2f, 0x7e, 0x3c, 0xa9, 0xb2, 0x3c, 0x63, 0x75, 0x79, 0x73,
0x3e, 0x11, 0x79, 0xe7, 0xec, 0x52, 0x62, 0x3a, 0x1e, 0x70, 0x5f, 0x4e, 0x63, 0x5f, 0x2f, 0xf9,
0x14, 0x4d, 0xc7, 0x2b, 0xf2, 0x57, 0x64, 0xa8, 0xee, 0x2f, 0x68, 0x71, 0x8a, 0x03, 0x91, 0x8b,
0x51, 0xc6, 0xaf, 0xd9, 0x29, 0x1c, 0xe5, 0xd9, 0x14, 0x53, 0xdb, 0x72, 0xac, 0x6e, 0x33, 0x34,
0x03, 0x73, 0xa0, 0x95, 0x49, 0x54, 0x22, 0x4f, 0xb2, 0x74, 0x10, 0xd8, 0x35, 0xbd, 0x56, 0x85,
0xd8, 0x3b, 0x68, 0xcc, 0x8d, 0x8c, 0x7d, 0xe0, 0x58, 0xdd, 0x56, 0xaf, 0xe3, 0x11, 0xaa, 0xef,
0xa8, 0xc6, 0x42, 0x26, 0x63, 0x29, 0x94, 0x98, 0x93, 0x57, 0x1a, 0x85, 0xf7, 0x54, 0x17, 0x2b,
0xe6, 0x41, 0xbf, 0x2a, 0x62, 0xed, 0x2d, 0xf2, 0x74, 0x38, 0xf7, 0xb7, 0x05, 0xed, 0xab, 0x25,
0x4d, 0xaa, 0x45, 0x1d, 0x68, 0x5d, 0x56, 0x76, 0x99, 0xba, 0x55, 0xa8, 0x9a, 0xa6, 0xb6, 0x7f,
0x1a, 0x17, 0x9e, 0xcb, 0x25, 0x4d, 0x46, 0xd9, 0x17, 0x42, 0x35, 0x08, 0xf4, 0x69, 0x34, 0xc3,
0x0d, 0xcc, 0xfd, 0x0c, 0xec, 0x23, 0xe6, 0x5c, 0xdc, 0x7d, 0x48, 0x23, 0x9e, 0xa4, 0x43, 0x5c,
0x84, 0xb8, 0x60, 0x2f, 0xa0, 0x5e, 0xee, 0x31, 0x61, 0xca, 0xe9, 0x71, 0xd2, 0xda, 0x56, 0x52,
0x77, 0x05, 0x27, 0x5b, 0x7a, 0x24, 0x99, 0x0d, 0x8d, 0x0b, 0xa5, 0xce, 0xb3, 0x08, 0xb5, 0xe2,
0x51, 0x78, 0x3f, 0x16, 0x56, 0x17, 0x4a, 0x71, 0x8a, 0x4b, 0xb5, 0x72, 0x2a, 0x70, 0x2e, 0xee,
0x86, 0xb8, 0xd0, 0xb1, 0x8f, 0xc3, 0x72, 0xd2, 0xb8, 0xd6, 0xb5, 0x0f, 0x4b, 0x5c, 0x4f, 0xee,
0x4f, 0x80, 0x21, 0xa6, 0x11, 0xa7, 0xb8, 0x28, 0xf0, 0x7f, 0xef, 0xce, 0x1f, 0x0b, 0x5a, 0x0f,
0xe6, 0xa6, 0x2d, 0x6e, 0xb6, 0xc5, 0x75, 0x5b, 0xdc, 0x68, 0x6b, 0xa6, 0x22, 0x99, 0xf1, 0xe1,
0x14, 0x0f, 0x02, 0x5d, 0xad, 0x19, 0x56, 0xa1, 0x82, 0x71, 0x3b, 0x4b, 0x30, 0xcd, 0x0d, 0xe3,
0xc8, 0x30, 0x2a, 0x10, 0xeb, 0xc0, 0x33, 0xc2, 0x34, 0x1a, 0x25, 0x73, 0xb4, 0xeb, 0x8e, 0xd5,
0x3d, 0x08, 0x1f, 0xe6, 0xde, 0xdf, 0x1a, 0x1c, 0x16, 0x9f, 0x21, 0xfb, 0x06, 0xed, 0x47, 0xff,
0x0f, 0x7b, 0xb9, 0xa3, 0xe2, 0xf6, 0x9d, 0xe8, 0xbc, 0xda, 0x87, 0x46, 0x92, 0x65, 0x70, 0x7a,
0xb5, 0x9c, 0xcd, 0x38, 0x12, 0x89, 0x18, 0xfb, 0x3f, 0x86, 0xb8, 0xf8, 0x94, 0x50, 0xce, 0x5e,
0xef, 0xd8, 0xbf, 0x8b, 0x58, 0x78, 0xbd, 0xd9, 0x9b, 0x4b, 0x92, 0xf5, 0xa0, 0x51, 0x1e, 0x3e,
0x63, 0x9e, 0x79, 0x6d, 0xbc, 0xf5, 0x55, 0xe8, 0x9c, 0x6c, 0x61, 0x24, 0xd9, 0x35, 0x40, 0x80,
0x33, 0x4e, 0xb1, 0x8e, 0xe6, 0xec, 0xb0, 0x5b, 0x2f, 0x17, 0x22, 0x67, 0x4f, 0x30, 0x48, 0xf6,
0xdb, 0x5f, 0x8f, 0x3d, 0xfd, 0xf0, 0xbd, 0x37, 0x7e, 0x37, 0x75, 0xfd, 0xaa, 0xbd, 0xfd, 0x17,
0x00, 0x00, 0xff, 0xff, 0x9f, 0xc6, 0xef, 0x8e, 0x13, 0x05, 0x00, 0x00,
var fileDescriptor_chat_9735d58eeaab60cd = []byte{
// 563 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x54, 0xc1, 0x6e, 0xda, 0x40,
0x10, 0x95, 0x43, 0x42, 0x92, 0x71, 0x22, 0xa4, 0x4d, 0x14, 0x59, 0x3e, 0x39, 0x96, 0x5a, 0xa1,
0x56, 0x32, 0x12, 0x6d, 0x4f, 0xbd, 0xb4, 0xe0, 0xa8, 0x42, 0xaa, 0x9b, 0xc4, 0xd0, 0x4b, 0x2f,
0x74, 0x03, 0x23, 0x63, 0x01, 0xf6, 0xe2, 0x31, 0x25, 0x6d, 0xbf, 0xa1, 0xe7, 0x1e, 0xfb, 0xab,
0x95, 0x77, 0x0d, 0x18, 0x8c, 0x14, 0xd4, 0x43, 0x2f, 0x96, 0xde, 0xdb, 0xf1, 0x7b, 0x6f, 0x76,
0x47, 0x03, 0xb5, 0xc1, 0x88, 0xa7, 0x8d, 0xec, 0xe3, 0x88, 0x24, 0x4e, 0x63, 0x56, 0x15, 0x0f,
0xed, 0x11, 0x4f, 0xcd, 0xeb, 0x5b, 0x81, 0x51, 0xbf, 0xe3, 0x35, 0xc4, 0x38, 0x68, 0xc8, 0xa3,
0x06, 0x0d, 0xc7, 0xfd, 0x05, 0x35, 0x16, 0xa4, 0x4a, 0xed, 0x9f, 0xa0, 0x7b, 0x14, 0xb8, 0x3c,
0xe5, 0xbd, 0xd8, 0xbb, 0x67, 0x97, 0x70, 0x94, 0xc6, 0x63, 0x8c, 0x0c, 0xcd, 0xd2, 0xea, 0xa7,
0xbe, 0x02, 0xcc, 0x02, 0x3d, 0x16, 0x98, 0xf0, 0x34, 0x8c, 0xa3, 0x8e, 0x6b, 0x1c, 0xc8, 0xb3,
0x22, 0xc5, 0x5e, 0xc3, 0xf1, 0x54, 0xc9, 0x18, 0x15, 0x4b, 0xab, 0xeb, 0x4d, 0xd3, 0x21, 0x4c,
0xbe, 0x61, 0xd2, 0xe7, 0x22, 0xec, 0x0b, 0x9e, 0xf0, 0x29, 0x39, 0xb9, 0x91, 0xbf, 0x2c, 0xb5,
0xb1, 0x60, 0xee, 0xb6, 0x8a, 0x22, 0xda, 0xde, 0x22, 0x4f, 0x87, 0xb3, 0x7f, 0x69, 0x50, 0xbb,
0x9b, 0xd3, 0xa8, 0xd8, 0xa8, 0x05, 0xfa, 0x6d, 0xe1, 0x2f, 0xd5, 0x6e, 0x91, 0x2a, 0xa6, 0x39,
0xd8, 0x3f, 0x8d, 0x0d, 0x67, 0x62, 0x4e, 0xa3, 0x5e, 0xfc, 0x99, 0x30, 0xe9, 0xb8, 0xf2, 0x36,
0x4e, 0xfd, 0x0d, 0xce, 0xfe, 0x04, 0xec, 0x03, 0xa6, 0x1e, 0x7f, 0x7c, 0x1f, 0x0d, 0xbd, 0x30,
0xea, 0xe2, 0xcc, 0xc7, 0x19, 0xbb, 0x82, 0x6a, 0xfe, 0x8f, 0x0a, 0x93, 0xa3, 0xed, 0xa4, 0x07,
0xa5, 0xa4, 0xf6, 0x02, 0x2e, 0x4a, 0x7a, 0x24, 0x98, 0x01, 0xc7, 0x37, 0x49, 0xd2, 0x8e, 0x87,
0x28, 0x15, 0x8f, 0xfc, 0x25, 0xcc, 0xac, 0x6e, 0x92, 0xc4, 0xa3, 0x20, 0x57, 0xcb, 0x51, 0xc6,
0x7b, 0xfc, 0xb1, 0x8b, 0x33, 0x19, 0xfb, 0xdc, 0xcf, 0x91, 0xe4, 0xa5, 0xae, 0x71, 0x98, 0xf3,
0x12, 0xd9, 0x3f, 0x00, 0xba, 0x18, 0x0d, 0x3d, 0x0a, 0xb2, 0x06, 0xfe, 0xef, 0xec, 0xfc, 0xd1,
0x40, 0x5f, 0x99, 0xab, 0x6e, 0x71, 0xb3, 0x5b, 0x5c, 0x77, 0x8b, 0x1b, 0xdd, 0x2a, 0x94, 0x25,
0x53, 0x3e, 0x1e, 0x05, 0x1d, 0x57, 0xb6, 0x76, 0xea, 0x17, 0xa9, 0xac, 0x62, 0x30, 0x09, 0x31,
0x4a, 0x55, 0xc5, 0x91, 0xaa, 0x28, 0x50, 0xcc, 0x84, 0x13, 0xc2, 0x68, 0xd8, 0x0b, 0xa7, 0x68,
0x54, 0x2d, 0xad, 0x5e, 0xf1, 0x57, 0xd8, 0x1e, 0x80, 0xde, 0x9e, 0x20, 0x4f, 0xf2, 0xeb, 0xb9,
0x82, 0xea, 0x7c, 0xe3, 0x7d, 0x15, 0xca, 0x24, 0x62, 0x91, 0xbf, 0xbc, 0x0a, 0xb8, 0xc2, 0xdb,
0x97, 0x57, 0x29, 0xcf, 0xf6, 0x3b, 0x38, 0x5b, 0x9b, 0xfc, 0xcb, 0x35, 0x34, 0x7f, 0x57, 0xe0,
0x30, 0xdb, 0x16, 0xec, 0x2b, 0xd4, 0xb6, 0xc6, 0x88, 0x3d, 0xdb, 0xf1, 0x12, 0xe5, 0xd1, 0x35,
0x9f, 0xef, 0x53, 0x46, 0x82, 0xc5, 0x70, 0x79, 0x37, 0x9f, 0x4c, 0x3c, 0x24, 0xe2, 0x01, 0xb6,
0xbe, 0x77, 0x71, 0xf6, 0x31, 0xa4, 0x94, 0xbd, 0xd8, 0xf1, 0xff, 0xae, 0xc2, 0xcc, 0xeb, 0xe5,
0xde, 0xb5, 0x24, 0x58, 0x13, 0x8e, 0xf3, 0x19, 0x61, 0xcc, 0x51, 0x4b, 0xd1, 0x59, 0x4f, 0xac,
0x79, 0x51, 0xe2, 0x48, 0xb0, 0x7b, 0x00, 0x17, 0x27, 0x1e, 0x05, 0x32, 0x9a, 0xb5, 0xc3, 0x6e,
0x7d, 0x9c, 0x89, 0x5c, 0x3f, 0x51, 0x41, 0x82, 0xbd, 0x81, 0x93, 0xe5, 0x23, 0xb1, 0x95, 0x67,
0x61, 0x36, 0xcc, 0xcb, 0x32, 0x49, 0xa2, 0x55, 0xfb, 0x72, 0xee, 0xc8, 0xb5, 0xfe, 0x56, 0x9d,
0x3e, 0x54, 0xe5, 0xce, 0x7e, 0xf5, 0x37, 0x00, 0x00, 0xff, 0xff, 0xee, 0x03, 0xc5, 0x33, 0xf1,
0x05, 0x00, 0x00,
}