add check user is registered

pull/131/head
Gordon 3 years ago
parent be94674507
commit f933abe48e

@ -32,6 +32,10 @@ type paramsGetUsersOnlineStatus struct {
OperationID string `json:"operationID" binding:"required"`
UserIDList []string `json:"userIDList" binding:"required,lte=200"`
}
type paramsAccountCheck struct {
OperationID string `json:"operationID" binding:"required"`
UserIDList []string `json:"userIDList" binding:"required,lte=100"`
}
func DeleteUser(c *gin.Context) {
params := paramsDeleteUsers{}
@ -87,6 +91,32 @@ func GetAllUsersUid(c *gin.Context) {
resp := gin.H{"errCode": RpcResp.CommonResp.ErrorCode, "errMsg": RpcResp.CommonResp.ErrorMsg, "uidList": RpcResp.UidList}
c.JSON(http.StatusOK, resp)
}
func AccountCheck(c *gin.Context) {
params := paramsAccountCheck{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return
}
log.InfoByKv("AccountCheck req come here", params.OperationID, params.UserIDList)
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
client := pbUser.NewUserClient(etcdConn)
//defer etcdConn.Close()
req := &pbUser.AccountCheckReq{
OperationID: params.OperationID,
Token: c.Request.Header.Get("token"),
UidList: params.UserIDList,
}
RpcResp, err := client.AccountCheck(context.Background(), req)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
return
}
log.InfoByKv("call AccountCheck rpc server is success", params.OperationID, "resp args", RpcResp.String())
resp := gin.H{"errCode": RpcResp.CommonResp.ErrorCode, "errMsg": RpcResp.CommonResp.ErrorMsg, "Result": RpcResp.Result}
c.JSON(http.StatusOK, resp)
}
func GetUsersOnlineStatus(c *gin.Context) {
params := paramsGetUsersOnlineStatus{}

@ -63,3 +63,34 @@ func (s *userServer) GetAllUsersUid(_ context.Context, req *pbUser.GetAllUsersUi
}
}
func (s *userServer) AccountCheck(_ context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) {
log.InfoByKv("rpc AccountCheck arrived server", req.OperationID, "args", req.String())
c, err := token_verify.ParseToken(req.Token)
if err != nil {
log.InfoByKv("parse token failed", req.OperationID, "err", err.Error())
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrorCode: constant.ErrParseToken.ErrCode, ErrorMsg: err.Error()}}, nil
}
if !utils.IsContain(c.UID, config.Config.Manager.AppManagerUid) {
log.ErrorByKv(" Authentication failed", req.OperationID, "args", c)
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrorCode: 401, ErrorMsg: "not authorized"}}, nil
}
uidList, err := im_mysql_model.SelectSomeUID(req.UidList)
if err != nil {
log.ErrorByKv("db get SelectSomeUID failed", req.OperationID, "err", err.Error())
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrorCode: constant.ErrMysql.ErrCode, ErrorMsg: err.Error()}}, nil
} else {
var r []*pbUser.AccountCheckResp_SingleUserStatus
for _, v := range req.UidList {
temp := new(pbUser.AccountCheckResp_SingleUserStatus)
temp.UserID = v
if utils.IsContain(v, uidList) {
temp.AccountStatus = constant.Registered
} else {
temp.AccountStatus = constant.UnRegistered
}
r = append(r, temp)
}
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrorCode: 0, ErrorMsg: ""}, Result: r}, nil
}
}

@ -87,6 +87,8 @@ const (
OnlineStatus = "online"
OfflineStatus = "offline"
Registered = "registered"
UnRegistered = "unregistered"
//MsgReceiveOpt
ReceiveMessage = 0

@ -133,6 +133,25 @@ func SelectAllUID() ([]string, error) {
}
return uid, nil
}
func SelectSomeUID(uids []string) ([]string, error) {
var uid []string
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return uid, err
}
rows, err := dbConn.Raw("select uid from user where uid in (" + sqlStringHandle(uids) + ")").Rows()
if err != nil {
return uid, err
}
defer rows.Close()
var strUID string
for rows.Next() {
rows.Scan(&strUID)
uid = append(uid, strUID)
}
return uid, nil
}
func IsExistUser(uid string) bool {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
@ -149,3 +168,12 @@ func IsExistUser(uid string) bool {
}
return true
}
func sqlStringHandle(ss []string) (s string) {
for i := 0; i < len(ss); i++ {
s += "'" + ss[i] + "'"
if i < len(ss)-1 {
s += ","
}
}
return s
}

@ -35,7 +35,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{0}
return fileDescriptor_user_04b52567a288fdb7, []int{0}
}
func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b)
@ -81,7 +81,7 @@ func (m *DeleteUsersResp) Reset() { *m = DeleteUsersResp{} }
func (m *DeleteUsersResp) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersResp) ProtoMessage() {}
func (*DeleteUsersResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{1}
return fileDescriptor_user_04b52567a288fdb7, []int{1}
}
func (m *DeleteUsersResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersResp.Unmarshal(m, b)
@ -128,7 +128,7 @@ func (m *DeleteUsersReq) Reset() { *m = DeleteUsersReq{} }
func (m *DeleteUsersReq) String() string { return proto.CompactTextString(m) }
func (*DeleteUsersReq) ProtoMessage() {}
func (*DeleteUsersReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{2}
return fileDescriptor_user_04b52567a288fdb7, []int{2}
}
func (m *DeleteUsersReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteUsersReq.Unmarshal(m, b)
@ -181,7 +181,7 @@ func (m *GetAllUsersUidReq) Reset() { *m = GetAllUsersUidReq{} }
func (m *GetAllUsersUidReq) String() string { return proto.CompactTextString(m) }
func (*GetAllUsersUidReq) ProtoMessage() {}
func (*GetAllUsersUidReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{3}
return fileDescriptor_user_04b52567a288fdb7, []int{3}
}
func (m *GetAllUsersUidReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUsersUidReq.Unmarshal(m, b)
@ -227,7 +227,7 @@ func (m *GetAllUsersUidResp) Reset() { *m = GetAllUsersUidResp{} }
func (m *GetAllUsersUidResp) String() string { return proto.CompactTextString(m) }
func (*GetAllUsersUidResp) ProtoMessage() {}
func (*GetAllUsersUidResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{4}
return fileDescriptor_user_04b52567a288fdb7, []int{4}
}
func (m *GetAllUsersUidResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllUsersUidResp.Unmarshal(m, b)
@ -261,6 +261,152 @@ func (m *GetAllUsersUidResp) GetUidList() []string {
return nil
}
type AccountCheckReq struct {
UidList []string `protobuf:"bytes,1,rep,name=uidList" json:"uidList,omitempty"`
Token string `protobuf:"bytes,2,opt,name=token" json:"token,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 *AccountCheckReq) Reset() { *m = AccountCheckReq{} }
func (m *AccountCheckReq) String() string { return proto.CompactTextString(m) }
func (*AccountCheckReq) ProtoMessage() {}
func (*AccountCheckReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_04b52567a288fdb7, []int{5}
}
func (m *AccountCheckReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckReq.Unmarshal(m, b)
}
func (m *AccountCheckReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AccountCheckReq.Marshal(b, m, deterministic)
}
func (dst *AccountCheckReq) XXX_Merge(src proto.Message) {
xxx_messageInfo_AccountCheckReq.Merge(dst, src)
}
func (m *AccountCheckReq) XXX_Size() int {
return xxx_messageInfo_AccountCheckReq.Size(m)
}
func (m *AccountCheckReq) XXX_DiscardUnknown() {
xxx_messageInfo_AccountCheckReq.DiscardUnknown(m)
}
var xxx_messageInfo_AccountCheckReq proto.InternalMessageInfo
func (m *AccountCheckReq) GetUidList() []string {
if m != nil {
return m.UidList
}
return nil
}
func (m *AccountCheckReq) GetToken() string {
if m != nil {
return m.Token
}
return ""
}
func (m *AccountCheckReq) GetOperationID() string {
if m != nil {
return m.OperationID
}
return ""
}
type AccountCheckResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
Result []*AccountCheckResp_SingleUserStatus `protobuf:"bytes,2,rep,name=result" json:"result,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AccountCheckResp) Reset() { *m = AccountCheckResp{} }
func (m *AccountCheckResp) String() string { return proto.CompactTextString(m) }
func (*AccountCheckResp) ProtoMessage() {}
func (*AccountCheckResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_04b52567a288fdb7, []int{6}
}
func (m *AccountCheckResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckResp.Unmarshal(m, b)
}
func (m *AccountCheckResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AccountCheckResp.Marshal(b, m, deterministic)
}
func (dst *AccountCheckResp) XXX_Merge(src proto.Message) {
xxx_messageInfo_AccountCheckResp.Merge(dst, src)
}
func (m *AccountCheckResp) XXX_Size() int {
return xxx_messageInfo_AccountCheckResp.Size(m)
}
func (m *AccountCheckResp) XXX_DiscardUnknown() {
xxx_messageInfo_AccountCheckResp.DiscardUnknown(m)
}
var xxx_messageInfo_AccountCheckResp proto.InternalMessageInfo
func (m *AccountCheckResp) GetCommonResp() *CommonResp {
if m != nil {
return m.CommonResp
}
return nil
}
func (m *AccountCheckResp) GetResult() []*AccountCheckResp_SingleUserStatus {
if m != nil {
return m.Result
}
return nil
}
type AccountCheckResp_SingleUserStatus struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
AccountStatus string `protobuf:"bytes,2,opt,name=accountStatus" json:"accountStatus,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AccountCheckResp_SingleUserStatus) Reset() { *m = AccountCheckResp_SingleUserStatus{} }
func (m *AccountCheckResp_SingleUserStatus) String() string { return proto.CompactTextString(m) }
func (*AccountCheckResp_SingleUserStatus) ProtoMessage() {}
func (*AccountCheckResp_SingleUserStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_user_04b52567a288fdb7, []int{6, 0}
}
func (m *AccountCheckResp_SingleUserStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Unmarshal(m, b)
}
func (m *AccountCheckResp_SingleUserStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Marshal(b, m, deterministic)
}
func (dst *AccountCheckResp_SingleUserStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_AccountCheckResp_SingleUserStatus.Merge(dst, src)
}
func (m *AccountCheckResp_SingleUserStatus) XXX_Size() int {
return xxx_messageInfo_AccountCheckResp_SingleUserStatus.Size(m)
}
func (m *AccountCheckResp_SingleUserStatus) XXX_DiscardUnknown() {
xxx_messageInfo_AccountCheckResp_SingleUserStatus.DiscardUnknown(m)
}
var xxx_messageInfo_AccountCheckResp_SingleUserStatus proto.InternalMessageInfo
func (m *AccountCheckResp_SingleUserStatus) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *AccountCheckResp_SingleUserStatus) GetAccountStatus() string {
if m != nil {
return m.AccountStatus
}
return ""
}
type GetUserInfoReq struct {
UserIDList []string `protobuf:"bytes,1,rep,name=userIDList" json:"userIDList,omitempty"`
Token string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
@ -274,7 +420,7 @@ func (m *GetUserInfoReq) Reset() { *m = GetUserInfoReq{} }
func (m *GetUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoReq) ProtoMessage() {}
func (*GetUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{5}
return fileDescriptor_user_04b52567a288fdb7, []int{7}
}
func (m *GetUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoReq.Unmarshal(m, b)
@ -328,7 +474,7 @@ func (m *GetUserInfoResp) Reset() { *m = GetUserInfoResp{} }
func (m *GetUserInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetUserInfoResp) ProtoMessage() {}
func (*GetUserInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{6}
return fileDescriptor_user_04b52567a288fdb7, []int{8}
}
func (m *GetUserInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserInfoResp.Unmarshal(m, b)
@ -387,7 +533,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} }
func (m *UserInfo) String() string { return proto.CompactTextString(m) }
func (*UserInfo) ProtoMessage() {}
func (*UserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{7}
return fileDescriptor_user_04b52567a288fdb7, []int{9}
}
func (m *UserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfo.Unmarshal(m, b)
@ -475,7 +621,7 @@ func (m *LogoutReq) Reset() { *m = LogoutReq{} }
func (m *LogoutReq) String() string { return proto.CompactTextString(m) }
func (*LogoutReq) ProtoMessage() {}
func (*LogoutReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{8}
return fileDescriptor_user_04b52567a288fdb7, []int{10}
}
func (m *LogoutReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LogoutReq.Unmarshal(m, b)
@ -529,7 +675,7 @@ func (m *UpdateUserInfoReq) Reset() { *m = UpdateUserInfoReq{} }
func (m *UpdateUserInfoReq) String() string { return proto.CompactTextString(m) }
func (*UpdateUserInfoReq) ProtoMessage() {}
func (*UpdateUserInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{9}
return fileDescriptor_user_04b52567a288fdb7, []int{11}
}
func (m *UpdateUserInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateUserInfoReq.Unmarshal(m, b)
@ -633,7 +779,7 @@ func (m *SetReceiveMessageOptReq) Reset() { *m = SetReceiveMessageOptReq
func (m *SetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) }
func (*SetReceiveMessageOptReq) ProtoMessage() {}
func (*SetReceiveMessageOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{10}
return fileDescriptor_user_04b52567a288fdb7, []int{12}
}
func (m *SetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetReceiveMessageOptReq.Unmarshal(m, b)
@ -694,7 +840,7 @@ func (m *SetReceiveMessageOptResp) Reset() { *m = SetReceiveMessageOptRe
func (m *SetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) }
func (*SetReceiveMessageOptResp) ProtoMessage() {}
func (*SetReceiveMessageOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{11}
return fileDescriptor_user_04b52567a288fdb7, []int{13}
}
func (m *SetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetReceiveMessageOptResp.Unmarshal(m, b)
@ -748,7 +894,7 @@ func (m *GetReceiveMessageOptReq) Reset() { *m = GetReceiveMessageOptReq
func (m *GetReceiveMessageOptReq) String() string { return proto.CompactTextString(m) }
func (*GetReceiveMessageOptReq) ProtoMessage() {}
func (*GetReceiveMessageOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{12}
return fileDescriptor_user_04b52567a288fdb7, []int{14}
}
func (m *GetReceiveMessageOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReceiveMessageOptReq.Unmarshal(m, b)
@ -801,7 +947,7 @@ func (m *OptResult) Reset() { *m = OptResult{} }
func (m *OptResult) String() string { return proto.CompactTextString(m) }
func (*OptResult) ProtoMessage() {}
func (*OptResult) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{13}
return fileDescriptor_user_04b52567a288fdb7, []int{15}
}
func (m *OptResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OptResult.Unmarshal(m, b)
@ -848,7 +994,7 @@ func (m *GetReceiveMessageOptResp) Reset() { *m = GetReceiveMessageOptRe
func (m *GetReceiveMessageOptResp) String() string { return proto.CompactTextString(m) }
func (*GetReceiveMessageOptResp) ProtoMessage() {}
func (*GetReceiveMessageOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{14}
return fileDescriptor_user_04b52567a288fdb7, []int{16}
}
func (m *GetReceiveMessageOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetReceiveMessageOptResp.Unmarshal(m, b)
@ -901,7 +1047,7 @@ func (m *GetAllConversationMsgOptReq) Reset() { *m = GetAllConversationM
func (m *GetAllConversationMsgOptReq) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationMsgOptReq) ProtoMessage() {}
func (*GetAllConversationMsgOptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{15}
return fileDescriptor_user_04b52567a288fdb7, []int{17}
}
func (m *GetAllConversationMsgOptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationMsgOptReq.Unmarshal(m, b)
@ -948,7 +1094,7 @@ func (m *GetAllConversationMsgOptResp) Reset() { *m = GetAllConversation
func (m *GetAllConversationMsgOptResp) String() string { return proto.CompactTextString(m) }
func (*GetAllConversationMsgOptResp) ProtoMessage() {}
func (*GetAllConversationMsgOptResp) Descriptor() ([]byte, []int) {
return fileDescriptor_user_2aac409c3ed42d0b, []int{16}
return fileDescriptor_user_04b52567a288fdb7, []int{18}
}
func (m *GetAllConversationMsgOptResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetAllConversationMsgOptResp.Unmarshal(m, b)
@ -995,6 +1141,9 @@ func init() {
proto.RegisterType((*DeleteUsersReq)(nil), "user.DeleteUsersReq")
proto.RegisterType((*GetAllUsersUidReq)(nil), "user.GetAllUsersUidReq")
proto.RegisterType((*GetAllUsersUidResp)(nil), "user.GetAllUsersUidResp")
proto.RegisterType((*AccountCheckReq)(nil), "user.AccountCheckReq")
proto.RegisterType((*AccountCheckResp)(nil), "user.AccountCheckResp")
proto.RegisterType((*AccountCheckResp_SingleUserStatus)(nil), "user.AccountCheckResp.SingleUserStatus")
proto.RegisterType((*GetUserInfoReq)(nil), "user.GetUserInfoReq")
proto.RegisterType((*GetUserInfoResp)(nil), "user.GetUserInfoResp")
proto.RegisterType((*UserInfo)(nil), "user.UserInfo")
@ -1027,6 +1176,7 @@ type UserClient interface {
SetReceiveMessageOpt(ctx context.Context, in *SetReceiveMessageOptReq, opts ...grpc.CallOption) (*SetReceiveMessageOptResp, error)
GetReceiveMessageOpt(ctx context.Context, in *GetReceiveMessageOptReq, opts ...grpc.CallOption) (*GetReceiveMessageOptResp, error)
GetAllConversationMsgOpt(ctx context.Context, in *GetAllConversationMsgOptReq, opts ...grpc.CallOption) (*GetAllConversationMsgOptResp, error)
AccountCheck(ctx context.Context, in *AccountCheckReq, opts ...grpc.CallOption) (*AccountCheckResp, error)
}
type userClient struct {
@ -1100,6 +1250,15 @@ func (c *userClient) GetAllConversationMsgOpt(ctx context.Context, in *GetAllCon
return out, nil
}
func (c *userClient) AccountCheck(ctx context.Context, in *AccountCheckReq, opts ...grpc.CallOption) (*AccountCheckResp, error) {
out := new(AccountCheckResp)
err := grpc.Invoke(ctx, "/user.user/AccountCheck", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for User service
type UserServer interface {
@ -1110,6 +1269,7 @@ type UserServer interface {
SetReceiveMessageOpt(context.Context, *SetReceiveMessageOptReq) (*SetReceiveMessageOptResp, error)
GetReceiveMessageOpt(context.Context, *GetReceiveMessageOptReq) (*GetReceiveMessageOptResp, error)
GetAllConversationMsgOpt(context.Context, *GetAllConversationMsgOptReq) (*GetAllConversationMsgOptResp, error)
AccountCheck(context.Context, *AccountCheckReq) (*AccountCheckResp, error)
}
func RegisterUserServer(s *grpc.Server, srv UserServer) {
@ -1242,6 +1402,24 @@ func _User_GetAllConversationMsgOpt_Handler(srv interface{}, ctx context.Context
return interceptor(ctx, in, info, handler)
}
func _User_AccountCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AccountCheckReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(UserServer).AccountCheck(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/user.user/AccountCheck",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(UserServer).AccountCheck(ctx, req.(*AccountCheckReq))
}
return interceptor(ctx, in, info, handler)
}
var _User_serviceDesc = grpc.ServiceDesc{
ServiceName: "user.user",
HandlerType: (*UserServer)(nil),
@ -1274,63 +1452,73 @@ var _User_serviceDesc = grpc.ServiceDesc{
MethodName: "GetAllConversationMsgOpt",
Handler: _User_GetAllConversationMsgOpt_Handler,
},
{
MethodName: "AccountCheck",
Handler: _User_AccountCheck_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "user/user.proto",
}
func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_2aac409c3ed42d0b) }
var fileDescriptor_user_2aac409c3ed42d0b = []byte{
// 796 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcb, 0x6e, 0xdb, 0x3a,
0x10, 0x85, 0xfc, 0x8a, 0x35, 0x46, 0xec, 0x84, 0xc8, 0x83, 0xf0, 0xcd, 0x0d, 0x7c, 0x89, 0x8b,
0xc2, 0x9b, 0xa6, 0x45, 0xba, 0x6b, 0x56, 0xad, 0xdd, 0x1a, 0x46, 0x12, 0x18, 0x55, 0xe1, 0x4d,
0x57, 0x55, 0xac, 0x89, 0x23, 0xd4, 0x16, 0x55, 0x49, 0x0e, 0x02, 0xf4, 0x03, 0xba, 0x2e, 0xba,
0xe8, 0x6f, 0xf4, 0xd7, 0xfa, 0x07, 0x05, 0x49, 0xcb, 0xa2, 0x1e, 0x76, 0x82, 0xb6, 0x40, 0x37,
0x02, 0xe7, 0x90, 0x3c, 0xc3, 0x33, 0x33, 0xe4, 0x08, 0x5a, 0x8b, 0x10, 0x83, 0x27, 0xe2, 0x73,
0xe2, 0x07, 0x3c, 0xe2, 0xa4, 0x22, 0xc6, 0xec, 0x35, 0x40, 0x8f, 0xcf, 0xe7, 0xdc, 0xb3, 0x30,
0xf4, 0xc9, 0x11, 0x98, 0x18, 0x04, 0x3c, 0xe8, 0x71, 0x07, 0xa9, 0xd1, 0x31, 0xba, 0x55, 0x2b,
0x01, 0x48, 0x1b, 0xea, 0xd2, 0xb8, 0x0c, 0xa7, 0xb4, 0xd4, 0x31, 0xba, 0xa6, 0xb5, 0xb2, 0x99,
0x0b, 0xad, 0x3e, 0xce, 0x30, 0xc2, 0x71, 0x88, 0x41, 0x28, 0xc9, 0x9e, 0x02, 0x4c, 0x56, 0xd4,
0x92, 0xad, 0x71, 0xba, 0x73, 0x22, 0x4f, 0x90, 0xb8, 0xb4, 0xb4, 0x35, 0xe4, 0x7f, 0xd8, 0xbe,
0xb6, 0xdd, 0x19, 0x3a, 0x63, 0xd7, 0xb9, 0x70, 0xc3, 0x88, 0x96, 0x3a, 0xe5, 0xae, 0x69, 0xa5,
0x41, 0xe6, 0x41, 0x33, 0xe5, 0xea, 0xa3, 0xd8, 0xe7, 0x28, 0x24, 0xbd, 0x2f, 0x05, 0x92, 0x3d,
0xa8, 0x46, 0xfc, 0x03, 0x7a, 0xb4, 0x2c, 0xcf, 0xae, 0x0c, 0xd2, 0x81, 0xc6, 0xc8, 0xc7, 0xc0,
0x8e, 0x5c, 0xee, 0x0d, 0xfb, 0xb4, 0x22, 0xe7, 0x74, 0x88, 0x9d, 0xc3, 0xee, 0x00, 0xa3, 0x17,
0xb3, 0x99, 0xf4, 0x37, 0x76, 0x1d, 0xe1, 0x72, 0x45, 0x56, 0xca, 0x90, 0x71, 0x8d, 0x4c, 0x39,
0xd2, 0x21, 0xf6, 0x1e, 0x48, 0x96, 0xec, 0x97, 0x42, 0x45, 0x61, 0x6b, 0x91, 0x12, 0x1b, 0x9b,
0xec, 0x06, 0x9a, 0x03, 0x8c, 0x04, 0xfd, 0xd0, 0xbb, 0xe6, 0xe2, 0xac, 0xc7, 0x00, 0x82, 0x6a,
0xd8, 0x97, 0xcb, 0x0d, 0xb9, 0x5c, 0x43, 0xd6, 0x6b, 0x19, 0xe5, 0xb5, 0xe8, 0x81, 0xe1, 0xd0,
0x4a, 0x79, 0xfa, 0x9d, 0x02, 0x22, 0x0c, 0x2a, 0x7d, 0x3b, 0xb2, 0x69, 0xb9, 0x53, 0xee, 0x36,
0x4e, 0x9b, 0x4a, 0xfc, 0x8a, 0x5b, 0xce, 0xb1, 0xef, 0x06, 0xd4, 0x63, 0x88, 0xec, 0x40, 0x79,
0xe1, 0x3a, 0xd2, 0x89, 0x69, 0x89, 0x21, 0x21, 0x50, 0xf1, 0xec, 0x39, 0x2e, 0xa9, 0xe5, 0x58,
0x60, 0xee, 0x84, 0xc7, 0x39, 0x97, 0x63, 0x72, 0x00, 0xb5, 0x29, 0x7a, 0x0e, 0x06, 0x32, 0xdb,
0x55, 0x6b, 0x69, 0x09, 0x7c, 0xce, 0xaf, 0xdc, 0x19, 0xd2, 0xaa, 0x5c, 0xbd, 0xb4, 0x44, 0x7c,
0xae, 0xdc, 0x20, 0xba, 0xa1, 0x35, 0x15, 0x1f, 0x69, 0x08, 0x14, 0xe7, 0xb6, 0x3b, 0xa3, 0x5b,
0x0a, 0x95, 0x06, 0x69, 0x42, 0x09, 0xef, 0x68, 0x5d, 0x42, 0x25, 0xbc, 0x63, 0x3d, 0x30, 0x2f,
0xf8, 0x94, 0x2f, 0x22, 0x91, 0x88, 0x4c, 0x48, 0x8d, 0x5c, 0x48, 0x8b, 0x53, 0xc1, 0x7e, 0x18,
0xb0, 0x3b, 0xf6, 0x1d, 0x5b, 0x95, 0x7c, 0x9c, 0xd6, 0x58, 0x9a, 0xa1, 0x49, 0x2b, 0x0a, 0x41,
0x22, 0xb7, 0xbc, 0x46, 0x6e, 0xa5, 0x58, 0x6e, 0xb5, 0x50, 0x6e, 0x2d, 0x2f, 0x77, 0x2b, 0x96,
0x9b, 0x9c, 0xbf, 0xbe, 0xa1, 0x94, 0xcc, 0xbc, 0xee, 0x1d, 0x28, 0x8f, 0x5d, 0x87, 0x82, 0x4a,
0xe6, 0xd8, 0x75, 0xd8, 0x67, 0x03, 0x0e, 0xdf, 0x62, 0x64, 0xe1, 0x04, 0xdd, 0x5b, 0xbc, 0xc4,
0x30, 0xb4, 0xa7, 0x38, 0xf2, 0x65, 0x1c, 0x45, 0xea, 0x87, 0x49, 0xea, 0x87, 0x8e, 0x40, 0xb8,
0x1f, 0x49, 0xd9, 0x55, 0x4b, 0x0c, 0xc9, 0x23, 0x68, 0x4e, 0xb8, 0x77, 0x8b, 0x41, 0xa8, 0x7c,
0x38, 0xb2, 0xb2, 0x4c, 0x2b, 0x83, 0x66, 0xaf, 0x6c, 0x25, 0x7f, 0x65, 0x3f, 0x01, 0x2d, 0x3e,
0x88, 0xba, 0x86, 0x18, 0xe8, 0xd5, 0x1e, 0x9b, 0x22, 0xba, 0x18, 0x68, 0x95, 0xbe, 0xb4, 0xc8,
0x63, 0x30, 0xb9, 0xdc, 0xbc, 0x98, 0x45, 0xcb, 0x62, 0x6f, 0xa9, 0x62, 0x1f, 0xc5, 0xb0, 0x95,
0xac, 0x60, 0x0b, 0x38, 0x1c, 0x3c, 0x38, 0x0a, 0x79, 0xcd, 0xa5, 0x87, 0x68, 0x2e, 0x78, 0xa6,
0xce, 0xc1, 0x5c, 0x1d, 0xa7, 0x80, 0x56, 0xf9, 0xcc, 0xd2, 0x1e, 0x40, 0x2d, 0x50, 0xba, 0x54,
0x1e, 0x96, 0x16, 0xfb, 0x6a, 0x00, 0x1d, 0xfc, 0xb9, 0x08, 0xbe, 0x82, 0x7d, 0xdd, 0xf1, 0xe8,
0xbe, 0x68, 0x16, 0xaf, 0x66, 0x6f, 0xe0, 0x1f, 0xf5, 0x12, 0xf7, 0xb4, 0xe9, 0xcb, 0x70, 0xba,
0x36, 0xba, 0x99, 0xa8, 0x95, 0xf2, 0x51, 0xfb, 0x66, 0xc0, 0xd1, 0x7a, 0xce, 0xbf, 0x28, 0xf6,
0xf4, 0x4b, 0x05, 0x64, 0xbf, 0x27, 0xcf, 0xa1, 0x31, 0x4d, 0xde, 0x6c, 0xb2, 0xa7, 0xf6, 0xa7,
0x1b, 0x46, 0x7b, 0xbf, 0x00, 0x0d, 0x7d, 0x72, 0x06, 0xcd, 0xf4, 0x2b, 0x44, 0x0e, 0x97, 0xcf,
0x74, 0xf6, 0x6d, 0x6a, 0xe7, 0x9a, 0x97, 0x70, 0xac, 0x75, 0xed, 0xd8, 0x71, 0xba, 0x91, 0xc7,
0x8e, 0xb3, 0x7f, 0x12, 0x3d, 0xd9, 0xd2, 0xb4, 0xa6, 0x19, 0x3b, 0xce, 0xf5, 0xe5, 0x36, 0x2d,
0x9e, 0x08, 0x7d, 0x32, 0x86, 0xbd, 0xa2, 0x6b, 0x4c, 0xfe, 0x55, 0x3b, 0xd6, 0xbc, 0x35, 0xed,
0xe3, 0x4d, 0xd3, 0x8a, 0x76, 0xb0, 0x81, 0x76, 0xb0, 0x99, 0x76, 0xed, 0xb5, 0xb0, 0xe5, 0x95,
0x29, 0xac, 0x24, 0xf2, 0x9f, 0xae, 0xb1, 0xb0, 0x7a, 0xdb, 0xec, 0xbe, 0x25, 0xa1, 0xff, 0x72,
0xfb, 0x5d, 0xe3, 0x44, 0xfe, 0x10, 0x9e, 0x89, 0xcf, 0x55, 0x4d, 0xfe, 0x16, 0x3e, 0xfb, 0x19,
0x00, 0x00, 0xff, 0xff, 0xac, 0xcf, 0xd3, 0x1b, 0x29, 0x0a, 0x00, 0x00,
func init() { proto.RegisterFile("user/user.proto", fileDescriptor_user_04b52567a288fdb7) }
var fileDescriptor_user_04b52567a288fdb7 = []byte{
// 896 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xdd, 0x6e, 0xdb, 0x36,
0x14, 0x86, 0xfc, 0x17, 0xeb, 0x78, 0xb1, 0x1d, 0x22, 0x3f, 0x82, 0x96, 0x05, 0x1e, 0x31, 0x6c,
0xb9, 0x99, 0x37, 0x64, 0x77, 0x0b, 0x86, 0x21, 0xb5, 0x5b, 0xc3, 0x48, 0x02, 0xb7, 0x0a, 0x7c,
0xd3, 0xab, 0x2a, 0x12, 0xe3, 0x08, 0x91, 0x45, 0x45, 0x3f, 0x41, 0x80, 0x3e, 0x40, 0x1f, 0xa0,
0x17, 0x7d, 0x8d, 0x3e, 0x4a, 0xef, 0xfa, 0x1c, 0x7d, 0x83, 0x82, 0xa4, 0x64, 0x53, 0x3f, 0x76,
0x82, 0xb4, 0x40, 0x6f, 0x04, 0x9e, 0x43, 0xf2, 0x3b, 0xfc, 0x3e, 0x1e, 0x1e, 0x1d, 0xe8, 0xc4,
0x21, 0x09, 0xfe, 0x62, 0x9f, 0xbe, 0x1f, 0xd0, 0x88, 0xa2, 0x1a, 0x1b, 0xe3, 0x17, 0x00, 0x03,
0x3a, 0x9f, 0x53, 0xcf, 0x20, 0xa1, 0x8f, 0xf6, 0x41, 0x25, 0x41, 0x40, 0x83, 0x01, 0xb5, 0x89,
0xa6, 0xf4, 0x94, 0xc3, 0xba, 0xb1, 0x74, 0x20, 0x1d, 0x9a, 0xdc, 0x38, 0x0f, 0x67, 0x5a, 0xa5,
0xa7, 0x1c, 0xaa, 0xc6, 0xc2, 0xc6, 0x0e, 0x74, 0x86, 0xc4, 0x25, 0x11, 0x99, 0x86, 0x24, 0x08,
0x39, 0xd8, 0xdf, 0x00, 0xd6, 0x02, 0x9a, 0xa3, 0xb5, 0x8e, 0xba, 0x7d, 0x7e, 0x82, 0x65, 0x48,
0x43, 0x5a, 0x83, 0x7e, 0x83, 0xcd, 0x2b, 0xd3, 0x71, 0x89, 0x3d, 0x75, 0xec, 0x33, 0x27, 0x8c,
0xb4, 0x4a, 0xaf, 0x7a, 0xa8, 0x1a, 0x59, 0x27, 0xf6, 0xa0, 0x9d, 0x09, 0x75, 0xcb, 0xf6, 0xd9,
0xc2, 0x93, 0xdd, 0x97, 0x71, 0xa2, 0x6d, 0xa8, 0x47, 0xf4, 0x86, 0x78, 0x5a, 0x95, 0x9f, 0x5d,
0x18, 0xa8, 0x07, 0xad, 0x89, 0x4f, 0x02, 0x33, 0x72, 0xa8, 0x37, 0x1e, 0x6a, 0x35, 0x3e, 0x27,
0xbb, 0xf0, 0x29, 0x6c, 0x8d, 0x48, 0x74, 0xe2, 0xba, 0x3c, 0xde, 0xd4, 0xb1, 0x59, 0xc8, 0x05,
0x58, 0x25, 0x07, 0x46, 0x25, 0x30, 0x11, 0x48, 0x76, 0xe1, 0x37, 0x80, 0xf2, 0x60, 0x4f, 0x92,
0x4a, 0x83, 0x8d, 0x38, 0x43, 0x36, 0x35, 0xb1, 0x05, 0x9d, 0x13, 0xcb, 0xa2, 0xb1, 0x17, 0x0d,
0xae, 0x89, 0x75, 0xc3, 0x0e, 0x2b, 0x2d, 0x56, 0x32, 0x8b, 0x9f, 0x4c, 0xe3, 0xb3, 0x02, 0xdd,
0x6c, 0x94, 0x27, 0xb1, 0xf8, 0x1f, 0x1a, 0x01, 0x09, 0x63, 0x57, 0x90, 0x68, 0x1d, 0xfd, 0x21,
0x56, 0xe7, 0x91, 0xfb, 0x17, 0x8e, 0x37, 0x73, 0xf9, 0x7d, 0x5f, 0x44, 0x66, 0x14, 0x87, 0x46,
0xb2, 0x4d, 0x7f, 0x09, 0xdd, 0xfc, 0x1c, 0xda, 0x85, 0x06, 0x43, 0x19, 0x0f, 0xf9, 0x11, 0x54,
0x23, 0xb1, 0x58, 0x96, 0x98, 0x02, 0x58, 0x2c, 0x4c, 0x38, 0x67, 0x9d, 0xf8, 0x1a, 0xda, 0x23,
0x12, 0x31, 0xb8, 0xb1, 0x77, 0x45, 0x99, 0x7a, 0x07, 0x00, 0x02, 0x41, 0x12, 0x50, 0xf2, 0xac,
0xd6, 0x70, 0x52, 0xd4, 0x50, 0xce, 0x2b, 0x0a, 0x9d, 0x4c, 0xa4, 0x6f, 0x79, 0x7f, 0x08, 0x43,
0x6d, 0x68, 0x46, 0xa6, 0x56, 0xe5, 0x3a, 0xb6, 0x85, 0x8e, 0x0b, 0x6c, 0x3e, 0x87, 0x3f, 0x2a,
0xd0, 0x4c, 0x5d, 0xa8, 0x0b, 0xd5, 0xd8, 0xb1, 0x13, 0x89, 0xd8, 0x10, 0x21, 0xa8, 0x79, 0xe6,
0x9c, 0x24, 0xd0, 0x7c, 0xcc, 0x7c, 0x8e, 0x45, 0xd3, 0x27, 0xc3, 0xc7, 0x4c, 0xdf, 0x19, 0xf1,
0x6c, 0x12, 0xf0, 0xc7, 0x52, 0x37, 0x12, 0x8b, 0xf9, 0xe7, 0xf4, 0xd2, 0x71, 0x89, 0x56, 0x17,
0xba, 0x0b, 0x8b, 0xe9, 0x73, 0xe9, 0x04, 0xd1, 0xb5, 0xd6, 0x10, 0xfa, 0x70, 0x83, 0x79, 0xc9,
0xdc, 0x74, 0x5c, 0x6d, 0x43, 0x78, 0xb9, 0x81, 0xda, 0x50, 0x21, 0xf7, 0x5a, 0x93, 0xbb, 0x2a,
0xe4, 0x1e, 0x0f, 0x40, 0x3d, 0xa3, 0x33, 0x1a, 0x47, 0xec, 0x22, 0x72, 0x92, 0x2a, 0x05, 0x49,
0xcb, 0xaf, 0x02, 0x7f, 0x51, 0x60, 0x6b, 0xea, 0xdb, 0xa6, 0xa8, 0x18, 0xe9, 0xb5, 0xa6, 0xd4,
0x14, 0x89, 0x5a, 0x99, 0x04, 0x4b, 0xba, 0xd5, 0x15, 0x74, 0x6b, 0xe5, 0x74, 0xeb, 0xa5, 0x74,
0x1b, 0x45, 0xba, 0x1b, 0x29, 0xdd, 0xe5, 0xf9, 0x9b, 0x6b, 0x52, 0x49, 0x2d, 0xf2, 0xee, 0x42,
0x75, 0xea, 0xd8, 0x1a, 0x88, 0xcb, 0x9c, 0x3a, 0x36, 0x7e, 0xa7, 0xc0, 0xde, 0x05, 0x89, 0x0c,
0x62, 0x11, 0xe7, 0x8e, 0x9c, 0x93, 0x30, 0x34, 0x67, 0x64, 0xe2, 0x73, 0x1d, 0xd9, 0xd5, 0x8f,
0x97, 0x57, 0x3f, 0xb6, 0x99, 0x87, 0xfa, 0x11, 0xa7, 0x5d, 0x37, 0xd8, 0x10, 0xfd, 0x0e, 0x6d,
0x8b, 0x7a, 0x77, 0x24, 0x08, 0x45, 0x0c, 0x9b, 0x67, 0x96, 0x6a, 0xe4, 0xbc, 0xf9, 0x52, 0x51,
0x2b, 0x96, 0x8a, 0xb7, 0xa0, 0x95, 0x1f, 0x44, 0x54, 0x31, 0x12, 0xc8, 0xd9, 0x9e, 0x9a, 0x4c,
0x5d, 0x12, 0x48, 0x99, 0x9e, 0x58, 0xe8, 0x4f, 0x50, 0x29, 0xdf, 0xcc, 0x8a, 0x86, 0x48, 0xf6,
0x8e, 0x48, 0xf6, 0x49, 0xea, 0x36, 0x96, 0x2b, 0x70, 0x0c, 0x7b, 0xa3, 0x47, 0xab, 0x50, 0xe4,
0x5c, 0x79, 0x0c, 0xe7, 0x92, 0xf2, 0x78, 0x0a, 0xea, 0xe2, 0x38, 0x25, 0xb0, 0x22, 0x66, 0x1e,
0x76, 0x57, 0x2a, 0x86, 0x3c, 0xd1, 0x84, 0x85, 0xdf, 0x2b, 0xa0, 0x8d, 0xbe, 0x9f, 0x82, 0xcf,
0x61, 0x47, 0x0e, 0x3c, 0x79, 0x48, 0xcd, 0xf2, 0xd5, 0xf8, 0x15, 0xfc, 0x2c, 0x7e, 0x64, 0x03,
0x69, 0xfa, 0x3c, 0x9c, 0xad, 0x54, 0x37, 0xa7, 0x5a, 0xa5, 0xa8, 0xda, 0x07, 0x05, 0xf6, 0x57,
0x63, 0xfe, 0x40, 0xb2, 0x47, 0x9f, 0x6a, 0xc0, 0xdb, 0x25, 0xf4, 0x2f, 0xb4, 0x66, 0xcb, 0x9a,
0x8d, 0xb6, 0xc5, 0xfe, 0xec, 0x0f, 0x43, 0xdf, 0x29, 0xf1, 0x86, 0x3e, 0x3a, 0x86, 0x76, 0xb6,
0x0a, 0xa1, 0xbd, 0xa4, 0x4c, 0xe7, 0x6b, 0x93, 0x5e, 0xf8, 0x6b, 0xb2, 0xc0, 0x52, 0xd3, 0x93,
0x06, 0xce, 0xf6, 0x41, 0x69, 0xe0, 0x7c, 0x23, 0x36, 0xe0, 0xbf, 0x34, 0xa9, 0xe7, 0x48, 0x03,
0x17, 0xda, 0x1a, 0x5d, 0x2b, 0x9f, 0x08, 0x7d, 0x34, 0x85, 0xed, 0xb2, 0x67, 0x8c, 0x7e, 0x11,
0x3b, 0x56, 0xd4, 0x1a, 0xfd, 0x60, 0xdd, 0xb4, 0x80, 0x1d, 0xad, 0x81, 0x1d, 0xad, 0x87, 0x5d,
0xf9, 0x2c, 0x4c, 0xfe, 0x64, 0x4a, 0x33, 0x09, 0xfd, 0x2a, 0x73, 0x2c, 0xcd, 0x5e, 0x1d, 0x3f,
0xb4, 0x24, 0xf4, 0xd1, 0x7f, 0xf0, 0x93, 0xdc, 0xa7, 0xa0, 0x9d, 0xb2, 0xde, 0xe5, 0x56, 0xdf,
0x2d, 0x6f, 0x69, 0x9e, 0x6d, 0xbe, 0x6e, 0xf5, 0x79, 0x3b, 0x7e, 0xcc, 0x3e, 0x97, 0x0d, 0xde,
0x94, 0xff, 0xf3, 0x35, 0x00, 0x00, 0xff, 0xff, 0x24, 0xd7, 0xfe, 0x0d, 0xa7, 0x0b, 0x00, 0x00,
}

Loading…
Cancel
Save