Merge branch 'errcode' of github.com:OpenIMSDK/Open-IM-Server into errcode

 Conflicts:
	pkg/common/db/controller/group.go
test-errcode
wangchuxiao 2 years ago
commit d6edb4aa8c

@ -18,7 +18,6 @@ import (
cp "Open_IM/internal/utils"
"Open_IM/pkg/getcdv3"
pbCache "Open_IM/pkg/proto/cache"
pbConversation "Open_IM/pkg/proto/conversation"
pbGroup "Open_IM/pkg/proto/group"
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
@ -226,47 +225,41 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJoinedGroupListReq) (*pbGroup.GetJoinedGroupListResp, error) {
resp := &pbGroup.GetJoinedGroupListResp{}
if err := token_verify.CheckAccessV3(ctx, req.FromUserID); err != nil {
return nil, err
}
joinedGroupList, err := rocksCache.GetJoinedGroupIDListFromCache(ctx, req.FromUserID)
groups, err := s.GroupInterface.GetJoinedGroupList(ctx, req.FromUserID)
if err != nil {
return nil, err
}
for _, groupID := range joinedGroupList {
var groupNode open_im_sdk.GroupInfo
num, err := rocksCache.GetGroupMemberNumFromCache(ctx, groupID)
if err != nil {
log.NewError(tools.OperationID(ctx), utils.GetSelfFuncName(), err.Error(), groupID)
continue
}
owner, err := (*relation.GroupMember)(nil).TakeOwnerInfo(ctx, groupID)
//owner, err2 := relation.GetGroupOwnerInfoByGroupID(groupID)
if err != nil {
continue
}
group, err := rocksCache.GetGroupInfoFromCache(ctx, groupID)
if err != nil {
continue
}
if group.GroupType == constant.SuperGroup {
continue
}
if group.Status == constant.GroupStatusDismissed {
if len(groups) == 0 {
return resp, nil
}
var groupIDs []string
for _, group := range groups {
groupIDs = append(groupIDs, group.GroupID)
}
groupMemberNum, err := s.GroupInterface.GetGroupMemberNum(ctx, groupIDs)
if err != nil {
return nil, err
}
groupOwnerUserID, err := s.GroupInterface.GetGroupOwnerUserID(ctx, groupIDs)
if err != nil {
return nil, err
}
for _, group := range groups {
if group.Status == constant.GroupStatusDismissed || group.GroupType == constant.SuperGroup {
continue
}
var groupNode open_im_sdk.GroupInfo
utils.CopyStructFields(&groupNode, group)
groupNode.CreateTime = uint32(group.CreateTime.Unix())
groupNode.NotificationUpdateTime = uint32(group.NotificationUpdateTime.Unix())
if group.NotificationUpdateTime.Unix() < 0 {
groupNode.NotificationUpdateTime = 0
}
groupNode.MemberCount = uint32(num)
groupNode.OwnerUserID = owner.UserID
groupNode.MemberCount = uint32(groupMemberNum[group.GroupID])
groupNode.OwnerUserID = groupOwnerUserID[group.GroupID]
groupNode.CreateTime = group.CreateTime.UnixMilli()
groupNode.NotificationUpdateTime = group.NotificationUpdateTime.UnixMilli()
resp.GroupList = append(resp.GroupList, &groupNode)
}
resp.Total = uint32(len(resp.GroupList))
return resp, nil
}

@ -9,6 +9,7 @@ import (
"Open_IM/pkg/common/log"
promePkg "Open_IM/pkg/common/prometheus"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/common/tools"
"Open_IM/pkg/getcdv3"
pbConversation "Open_IM/pkg/proto/conversation"
pbFriend "Open_IM/pkg/proto/friend"
@ -138,22 +139,6 @@ func syncPeerUserConversation(conversation *pbConversation.Conversation, operati
return nil
}
func (s *userServer) GetUserInfo(ctx context.Context, req *pbUser.GetUserInfoReq) (*pbUser.GetUserInfoResp, error) {
resp := &pbUser.GetUserInfoResp{}
users, err := s.Find(ctx, req.UserIDList)
if err != nil {
return nil, err
}
for _, v := range users {
n, err := utils2.NewDBUser(v).Convert()
if err != nil {
return nil, err
}
resp.UserInfoList = append(resp.UserInfoList, n)
}
return resp, nil
}
func (s *userServer) BatchSetConversations(ctx context.Context, req *pbUser.BatchSetConversationsReq) (*pbUser.BatchSetConversationsResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
if req.NotificationType == 0 {
@ -373,34 +358,87 @@ func (s *userServer) GetAllUserID(_ context.Context, req *pbUser.GetAllUserIDReq
}
}
func (s *userServer) AccountCheck(_ context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) {
log.NewInfo(req.OperationID, "AccountCheck args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
log.NewError(req.OperationID, "IsManagerUserID false ", req.OpUserID)
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) {
joinedGroupIDList, err := rocksCache.GetJoinedGroupIDListFromCache(userID)
if err != nil {
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
}
for _, groupID := range joinedGroupIDList {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: groupID, FaceURL: faceURL}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(groupID); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(groupID, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID, userID)
continue
}
chat.GroupMemberInfoSetNotification(operationID, opUserID, groupID, userID)
}
uidList, err := imdb.SelectSomeUserID(req.CheckUserIDList)
log.NewDebug(req.OperationID, "from db uid list is:", uidList)
}
func (s *userServer) SyncJoinedGroupMemberNickname(userID string, newNickname, oldNickname string, operationID string, opUserID string) {
joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID)
if err != nil {
log.NewError(req.OperationID, "SelectSomeUserID failed ", err.Error(), req.CheckUserIDList)
return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
} else {
var r []*pbUser.AccountCheckResp_SingleUserStatus
for _, v := range req.CheckUserIDList {
temp := new(pbUser.AccountCheckResp_SingleUserStatus)
temp.UserID = v
if utils.IsContain(v, uidList) {
temp.AccountStatus = constant.Registered
} else {
temp.AccountStatus = constant.UnRegistered
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
}
for _, v := range joinedGroupIDList {
member, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(v, userID)
if err != nil {
log.NewWarn(operationID, "GetGroupMemberInfoByGroupIDAndUserID failed ", err.Error(), v, userID)
continue
}
if member.Nickname == oldNickname {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: v, Nickname: newNickname}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(v); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(v, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
}
r = append(r, temp)
chat.GroupMemberInfoSetNotification(operationID, opUserID, v, userID)
}
resp := pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: 0, ErrMsg: ""}, ResultList: r}
log.NewInfo(req.OperationID, "AccountCheck rpc return ", resp.String())
return &resp, nil
}
}
func (s *userServer) AddUser(ctx context.Context, req *pbUser.AddUserReq) (*pbUser.AddUserResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
resp := &pbUser.AddUserResp{CommonResp: &pbUser.CommonResp{}}
err := imdb.AddUser(req.UserInfo.UserID, req.UserInfo.PhoneNumber, req.UserInfo.Nickname, req.UserInfo.Email, req.UserInfo.Gender, req.UserInfo.FaceURL, req.UserInfo.BirthStr)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "AddUser", err.Error(), req.String())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = err.Error()
return resp, nil
}
return resp, nil
}
func (s *userServer) GetUsersInfo(ctx context.Context, req *pbUser.GetUsersInfoReq) (*pbUser.GetUsersInfoResp, error) {
resp := &pbUser.GetUsersInfoResp{}
users, err := s.Find(ctx, req.UserIDs)
if err != nil {
return nil, err
}
for _, v := range users {
n, err := utils2.NewDBUser(v).Convert()
if err != nil {
return nil, err
}
resp.UsersInfo = append(resp.UsersInfo, n)
}
return resp, nil
}
func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserInfoReq) (*pbUser.UpdateUserInfoResp, error) {
@ -462,106 +500,65 @@ func (s *userServer) UpdateUserInfo(ctx context.Context, req *pbUser.UpdateUserI
}
return &pbUser.UpdateUserInfoResp{CommonResp: &pbUser.CommonResp{}}, nil
}
func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.SetGlobalRecvMessageOptReq) (*pbUser.SetGlobalRecvMessageOptResp, error) {
log.NewInfo(req.OperationID, "SetGlobalRecvMessageOpt args ", req.String())
var user imdb.User
user.UserID = req.UserID
func (s *userServer) SetGlobalRecvMessageOpt(ctx context.Context, req *pbUser.SetGlobalRecvMessageOptReq) (*pbUser.SetGlobalRecvMessageOptResp, error) {
resp := pbUser.SetGlobalRecvMessageOptResp{}
m := make(map[string]interface{}, 1)
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.GlobalRecvMsgOpt, "set GlobalRecvMsgOpt")
m["global_recv_msg_opt"] = req.GlobalRecvMsgOpt
err := db.DB.SetUserGlobalMsgRecvOpt(user.UserID, req.GlobalRecvMsgOpt)
err := s.UpdateByMap(ctx, req.UserID, m)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetGlobalRecvMessageOpt failed ", err.Error(), user)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
err = imdb.UpdateUserInfoByMap(user, m)
if err != nil {
log.NewError(req.OperationID, "SetGlobalRecvMessageOpt failed ", err.Error(), user)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
}
if err := rocksCache.DelUserInfoFromCache(user.UserID); err != nil {
log.NewError(req.OperationID, "DelUserInfoFromCache failed ", err.Error(), req.String())
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil
return nil, err
}
chat.UserInfoUpdatedNotification(req.OperationID, req.UserID, req.UserID)
return &pbUser.SetGlobalRecvMessageOptResp{CommonResp: &pbUser.CommonResp{}}, nil
chat.UserInfoUpdatedNotification(tools.OperationID(ctx), req.UserID, req.UserID)
return &resp, nil
}
func (s *userServer) SyncJoinedGroupMemberFaceURL(userID string, faceURL string, operationID string, opUserID string) {
joinedGroupIDList, err := rocksCache.GetJoinedGroupIDListFromCache(userID)
func (s *userServer) AccountCheck(ctx context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) {
resp := pbUser.AccountCheckResp{}
err := token_verify.CheckManagerUserID(ctx, tools.OpUserID(ctx))
if err != nil {
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
}
for _, groupID := range joinedGroupIDList {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: groupID, FaceURL: faceURL}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(groupID); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(groupID, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupID, userID)
continue
}
chat.GroupMemberInfoSetNotification(operationID, opUserID, groupID, userID)
return nil, err
}
}
func (s *userServer) SyncJoinedGroupMemberNickname(userID string, newNickname, oldNickname string, operationID string, opUserID string) {
joinedGroupIDList, err := imdb.GetJoinedGroupIDListByUserID(userID)
user, err := s.Find(ctx, req.CheckUserIDs)
if err != nil {
log.NewWarn(operationID, "GetJoinedGroupIDListByUserID failed ", userID, err.Error())
return
return nil, err
}
for _, v := range joinedGroupIDList {
member, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(v, userID)
if err != nil {
log.NewWarn(operationID, "GetGroupMemberInfoByGroupIDAndUserID failed ", err.Error(), v, userID)
continue
}
if member.Nickname == oldNickname {
groupMemberInfo := imdb.GroupMember{UserID: userID, GroupID: v, Nickname: newNickname}
if err := imdb.UpdateGroupMemberInfo(groupMemberInfo); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), groupMemberInfo)
continue
}
//if err := rocksCache.DelAllGroupMembersInfoFromCache(v); err != nil {
// log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
// continue
//}
if err := rocksCache.DelGroupMemberInfoFromCache(v, userID); err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error(), v)
}
chat.GroupMemberInfoSetNotification(operationID, opUserID, v, userID)
uidList := make([]string, 0)
for _, v := range user {
uidList = append(uidList, v.UserID)
}
var r []*pbUser.AccountCheckResp_SingleUserStatus
for _, v := range req.CheckUserIDs {
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 &resp, nil
}
func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pbUser.GetUsersResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
var usersDB []imdb.User
resp := pbUser.GetUsersResp{}
var err error
resp := &pbUser.GetUsersResp{CommonResp: &pbUser.CommonResp{}, Pagination: &sdkws.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber}}
if req.UserID != "" {
userDB, err := imdb.GetUserByUserID(req.UserID)
u, err := s.Take(ctx, req.UserID)
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return resp, nil
}
log.NewError(req.OperationID, utils.GetSelfFuncName(), req.UserID, err.Error())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg
return resp, nil
return nil, err
}
usersDB = append(usersDB, *userDB)
resp.TotalNums = 1
} else if req.UserName != "" {
resp.Total = 1
u1, err := utils2.NewDBUser(u).Convert()
if err != nil {
return nil, err
}
resp.Users = append(resp.Users, u1)
return &resp, nil
}
if req.UserName != "" {
usersDB, err = imdb.GetUserByName(req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber, err.Error())
@ -587,7 +584,9 @@ func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pb
return resp, nil
}
resp.TotalNums = int32(count)
} else {
}
else {
usersDB, err = imdb.GetUsers(req.Pagination.ShowNumber, req.Pagination.PageNumber)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUsers failed", req.Pagination.ShowNumber, req.Pagination.PageNumber, err.Error())
@ -631,16 +630,3 @@ func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pb
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
return resp, nil
}
func (s *userServer) AddUser(ctx context.Context, req *pbUser.AddUserReq) (*pbUser.AddUserResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
resp := &pbUser.AddUserResp{CommonResp: &pbUser.CommonResp{}}
err := imdb.AddUser(req.UserInfo.UserID, req.UserInfo.PhoneNumber, req.UserInfo.Nickname, req.UserInfo.Email, req.UserInfo.Gender, req.UserInfo.FaceURL, req.UserInfo.BirthStr)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "AddUser", err.Error(), req.String())
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
resp.CommonResp.ErrMsg = err.Error()
return resp, nil
}
return resp, nil
}

@ -23,10 +23,18 @@ type DBFriend struct {
*relation.Friend
}
func NewDBFriend(friend *relation.Friend) *DBFriend {
return &DBFriend{Friend: friend}
}
type PBFriend struct {
*sdk.FriendInfo
}
func NewPBFriend(friendInfo *sdk.FriendInfo) *PBFriend {
return &PBFriend{FriendInfo: friendInfo}
}
func (db *DBFriend) convert() (*sdk.FriendInfo, error) {
pbFriend := &sdk.FriendInfo{FriendUser: &sdk.UserInfo{}}
utils.CopyStructFields(pbFriend, db)
@ -53,10 +61,18 @@ type DBFriendRequest struct {
*relation.FriendRequest
}
func NewDBFriendRequest(friendRequest *relation.FriendRequest) *DBFriendRequest {
return &DBFriendRequest{FriendRequest: friendRequest}
}
type PBFriendRequest struct {
*sdk.FriendRequest
}
func NewPBFriendRequest(friendRequest *sdk.FriendRequest) *PBFriendRequest {
return &PBFriendRequest{FriendRequest: friendRequest}
}
func (pb *PBFriendRequest) Convert() (*relation.FriendRequest, error) {
dbFriendRequest := &relation.FriendRequest{}
utils.CopyStructFields(dbFriendRequest, pb)
@ -90,10 +106,18 @@ type DBBlack struct {
*relation.Black
}
func NewDBBlack(black *relation.Black) *DBBlack {
return &DBBlack{Black: black}
}
type PBBlack struct {
*sdk.BlackInfo
}
func NewPBBlack(blackInfo *sdk.BlackInfo) *PBBlack {
return &PBBlack{BlackInfo: blackInfo}
}
func (pb *PBBlack) Convert() (*relation.Black, error) {
dbBlack := &relation.Black{}
dbBlack.BlockUserID = pb.BlackUserInfo.UserID
@ -116,10 +140,18 @@ type DBGroup struct {
*relation.Group
}
func NewDBGroup(group *relation.Group) *DBGroup {
return &DBGroup{Group: group}
}
type PBGroup struct {
*sdk.GroupInfo
}
func NewPBGroup(groupInfo *sdk.GroupInfo) *PBGroup {
return &PBGroup{GroupInfo: groupInfo}
}
func (pb *PBGroup) Convert() *relation.Group {
dst := &relation.Group{}
_ = utils.CopyStructFields(dst, pb)
@ -151,10 +183,18 @@ type DBGroupMember struct {
*relation.GroupMember
}
func NewDBGroupMember(groupMember *relation.GroupMember) *DBGroupMember {
return &DBGroupMember{GroupMember: groupMember}
}
type PBGroupMember struct {
*sdk.GroupMemberFullInfo
}
func NewPBGroupMember(groupMemberFullInfo *sdk.GroupMemberFullInfo) *PBGroupMember {
return &PBGroupMember{GroupMemberFullInfo: groupMemberFullInfo}
}
func (pb *PBGroupMember) Convert() (*relation.GroupMember, error) {
dst := &relation.GroupMember{}
utils.CopyStructFields(dst, pb)
@ -187,10 +227,18 @@ type DBGroupRequest struct {
*relation.GroupRequest
}
func NewDBGroupRequest(groupRequest *relation.GroupRequest) *DBGroupRequest {
return &DBGroupRequest{GroupRequest: groupRequest}
}
type PBGroupRequest struct {
*sdk.GroupRequest
}
func NewPBGroupRequest(groupRequest *sdk.GroupRequest) *PBGroupRequest {
return &PBGroupRequest{GroupRequest: groupRequest}
}
func (pb *PBGroupRequest) Convert() (*relation.GroupRequest, error) {
dst := &relation.GroupRequest{}
utils.CopyStructFields(dst, pb)
@ -210,10 +258,18 @@ type DBUser struct {
*relation.User
}
func NewDBUser(user *relation.User) *DBUser {
return &DBUser{User: user}
}
type PBUser struct {
*sdk.UserInfo
}
func NewPBUser(userInfo *sdk.UserInfo) *PBUser {
return &PBUser{UserInfo: userInfo}
}
func (pb *PBUser) Convert() (*relation.User, error) {
dst := &relation.User{}
utils.CopyStructFields(dst, pb)

@ -17,7 +17,9 @@ type GroupInterface interface {
CreateGroup(ctx context.Context, groups []*relation.Group, groupMember []*relation.GroupMember) error
DeleteGroupByIDs(ctx context.Context, groupIDs []string) error
TakeGroupByID(ctx context.Context, groupID string) (group *relation.Group, err error)
GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error)
GetGroupMemberNum(ctx context.Context, groupIDs []string) (map[string]int, error)
GetGroupOwnerUserID(ctx context.Context, groupIDs []string) (map[string]string, error)
//mongo
CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error
GetSuperGroupByID(ctx context.Context, groupID string) (superGroup *unrelation.SuperGroup, err error)
@ -146,6 +148,11 @@ func (g *GroupDataBase) Update(ctx context.Context, groups []*relation.Group) er
})
}
func (g *GroupDataBase) GetJoinedGroupList(ctx context.Context, userID string) ([]*relation.Group, error) {
return nil, nil
}
func (g *GroupDataBase) CreateSuperGroup(ctx context.Context, groupID string, initMemberIDList []string) error {
sess, err := g.mongoDB.MgoClient.StartSession()
if err != nil {

@ -11,6 +11,8 @@ type UserInterface interface {
Create(ctx context.Context, users []*relation.User) error
Take(ctx context.Context, userID string) (user *relation.User, err error)
Update(ctx context.Context, users []*relation.User) (err error)
UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error)
GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error)
}
type UserController struct {
@ -29,6 +31,12 @@ func (u *UserController) Take(ctx context.Context, userID string) (user *relatio
func (u *UserController) Update(ctx context.Context, users []*relation.User) (err error) {
return u.database.Update(ctx, users)
}
func (u *UserController) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
return u.database.UpdateByMap(ctx, userID, args)
}
func (u *UserController) GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error) {
return u.database.GetByName(ctx, userName, showNumber, pageNumber)
}
func NewUserController(db *gorm.DB) UserInterface {
controller := &UserController{database: newUserDatabase(db)}
@ -40,6 +48,8 @@ type UserDatabaseInterface interface {
Create(ctx context.Context, users []*relation.User) error
Take(ctx context.Context, userID string) (user *relation.User, err error)
Update(ctx context.Context, users []*relation.User) (err error)
UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error)
GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error)
}
type UserDatabase struct {
@ -67,3 +77,9 @@ func (u *UserDatabase) Take(ctx context.Context, userID string) (user *relation.
func (u *UserDatabase) Update(ctx context.Context, users []*relation.User) (err error) {
return u.sqlDB.Update(ctx, users)
}
func (u *UserDatabase) UpdateByMap(ctx context.Context, userID string, args map[string]interface{}) (err error) {
return u.sqlDB.UpdateByMap(ctx, userID, args)
}
func (u *UserDatabase) GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*relation.User, err error) {
return u.sqlDB.GetByName(ctx, userName, showNumber, pageNumber)
}

@ -4,6 +4,7 @@ import (
"Open_IM/pkg/common/trace_log"
"Open_IM/pkg/utils"
"context"
"fmt"
"gorm.io/gorm"
"time"
)
@ -69,3 +70,11 @@ func (u *User) Take(ctx context.Context, userID string) (user *User, err error)
err = utils.Wrap(u.DB.Where("user_id = ?", userID).Take(&user).Error, "")
return user, err
}
func (u *User) GetByName(ctx context.Context, userName string, showNumber, pageNumber int32) (users []*User, err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetFuncName(1), err, "userName", userName, "showNumber", showNumber, "pageNumber", pageNumber, "users", users)
}()
err = u.DB.Where(" name like ?", fmt.Sprintf("%%%s%%", userName)).Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&users).Error
return users, utils.Wrap(err, "")
}

@ -159,15 +159,15 @@ func CheckAccess(ctx context.Context, OpUserID string, OwnerUserID string) bool
return false
}
func CheckAccessV3(ctx context.Context, OwnerUserID string) (err error) {
func CheckAccessV3(ctx context.Context, ownerUserID string) (err error) {
opUserID := tools.OpUserID(ctx)
defer func() {
trace_log.SetCtxInfo(ctx, utils.GetFuncName(1), err, "OpUserID", opUserID, "OwnerUserID", OwnerUserID)
trace_log.SetCtxInfo(ctx, utils.GetFuncName(1), err, "OpUserID", opUserID, "ownerUserID", ownerUserID)
}()
if utils.IsContain(opUserID, config.Config.Manager.AppManagerUid) {
return nil
}
if opUserID == OwnerUserID {
if opUserID == ownerUserID {
return nil
}
return constant.ErrIdentity.Wrap(utils.GetSelfFuncName())

@ -39,7 +39,7 @@ func (m *CreateGroupReq) Reset() { *m = CreateGroupReq{} }
func (m *CreateGroupReq) String() string { return proto.CompactTextString(m) }
func (*CreateGroupReq) ProtoMessage() {}
func (*CreateGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{0}
return fileDescriptor_group_0c9461c2b49843c3, []int{0}
}
func (m *CreateGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupReq.Unmarshal(m, b)
@ -98,7 +98,7 @@ func (m *CreateGroupResp) Reset() { *m = CreateGroupResp{} }
func (m *CreateGroupResp) String() string { return proto.CompactTextString(m) }
func (*CreateGroupResp) ProtoMessage() {}
func (*CreateGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{1}
return fileDescriptor_group_0c9461c2b49843c3, []int{1}
}
func (m *CreateGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateGroupResp.Unmarshal(m, b)
@ -136,7 +136,7 @@ func (m *GetGroupsInfoReq) Reset() { *m = GetGroupsInfoReq{} }
func (m *GetGroupsInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupsInfoReq) ProtoMessage() {}
func (*GetGroupsInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{2}
return fileDescriptor_group_0c9461c2b49843c3, []int{2}
}
func (m *GetGroupsInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsInfoReq.Unmarshal(m, b)
@ -174,7 +174,7 @@ func (m *GetGroupsInfoResp) Reset() { *m = GetGroupsInfoResp{} }
func (m *GetGroupsInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupsInfoResp) ProtoMessage() {}
func (*GetGroupsInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{3}
return fileDescriptor_group_0c9461c2b49843c3, []int{3}
}
func (m *GetGroupsInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsInfoResp.Unmarshal(m, b)
@ -212,7 +212,7 @@ func (m *SetGroupInfoReq) Reset() { *m = SetGroupInfoReq{} }
func (m *SetGroupInfoReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupInfoReq) ProtoMessage() {}
func (*SetGroupInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{4}
return fileDescriptor_group_0c9461c2b49843c3, []int{4}
}
func (m *SetGroupInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupInfoReq.Unmarshal(m, b)
@ -249,7 +249,7 @@ func (m *SetGroupInfoResp) Reset() { *m = SetGroupInfoResp{} }
func (m *SetGroupInfoResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupInfoResp) ProtoMessage() {}
func (*SetGroupInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{5}
return fileDescriptor_group_0c9461c2b49843c3, []int{5}
}
func (m *SetGroupInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupInfoResp.Unmarshal(m, b)
@ -281,7 +281,7 @@ func (m *GetGroupApplicationListReq) Reset() { *m = GetGroupApplicationL
func (m *GetGroupApplicationListReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupApplicationListReq) ProtoMessage() {}
func (*GetGroupApplicationListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{6}
return fileDescriptor_group_0c9461c2b49843c3, []int{6}
}
func (m *GetGroupApplicationListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupApplicationListReq.Unmarshal(m, b)
@ -327,7 +327,7 @@ func (m *GetGroupApplicationListResp) Reset() { *m = GetGroupApplication
func (m *GetGroupApplicationListResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupApplicationListResp) ProtoMessage() {}
func (*GetGroupApplicationListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{7}
return fileDescriptor_group_0c9461c2b49843c3, []int{7}
}
func (m *GetGroupApplicationListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupApplicationListResp.Unmarshal(m, b)
@ -373,7 +373,7 @@ func (m *GetUserReqApplicationListReq) Reset() { *m = GetUserReqApplicat
func (m *GetUserReqApplicationListReq) String() string { return proto.CompactTextString(m) }
func (*GetUserReqApplicationListReq) ProtoMessage() {}
func (*GetUserReqApplicationListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{8}
return fileDescriptor_group_0c9461c2b49843c3, []int{8}
}
func (m *GetUserReqApplicationListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserReqApplicationListReq.Unmarshal(m, b)
@ -419,7 +419,7 @@ func (m *GetUserReqApplicationListResp) Reset() { *m = GetUserReqApplica
func (m *GetUserReqApplicationListResp) String() string { return proto.CompactTextString(m) }
func (*GetUserReqApplicationListResp) ProtoMessage() {}
func (*GetUserReqApplicationListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{9}
return fileDescriptor_group_0c9461c2b49843c3, []int{9}
}
func (m *GetUserReqApplicationListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetUserReqApplicationListResp.Unmarshal(m, b)
@ -466,7 +466,7 @@ func (m *TransferGroupOwnerReq) Reset() { *m = TransferGroupOwnerReq{} }
func (m *TransferGroupOwnerReq) String() string { return proto.CompactTextString(m) }
func (*TransferGroupOwnerReq) ProtoMessage() {}
func (*TransferGroupOwnerReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{10}
return fileDescriptor_group_0c9461c2b49843c3, []int{10}
}
func (m *TransferGroupOwnerReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransferGroupOwnerReq.Unmarshal(m, b)
@ -517,7 +517,7 @@ func (m *TransferGroupOwnerResp) Reset() { *m = TransferGroupOwnerResp{}
func (m *TransferGroupOwnerResp) String() string { return proto.CompactTextString(m) }
func (*TransferGroupOwnerResp) ProtoMessage() {}
func (*TransferGroupOwnerResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{11}
return fileDescriptor_group_0c9461c2b49843c3, []int{11}
}
func (m *TransferGroupOwnerResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransferGroupOwnerResp.Unmarshal(m, b)
@ -551,7 +551,7 @@ func (m *JoinGroupReq) Reset() { *m = JoinGroupReq{} }
func (m *JoinGroupReq) String() string { return proto.CompactTextString(m) }
func (*JoinGroupReq) ProtoMessage() {}
func (*JoinGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{12}
return fileDescriptor_group_0c9461c2b49843c3, []int{12}
}
func (m *JoinGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupReq.Unmarshal(m, b)
@ -609,7 +609,7 @@ func (m *JoinGroupResp) Reset() { *m = JoinGroupResp{} }
func (m *JoinGroupResp) String() string { return proto.CompactTextString(m) }
func (*JoinGroupResp) ProtoMessage() {}
func (*JoinGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{13}
return fileDescriptor_group_0c9461c2b49843c3, []int{13}
}
func (m *JoinGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupResp.Unmarshal(m, b)
@ -643,7 +643,7 @@ func (m *GroupApplicationResponseReq) Reset() { *m = GroupApplicationRes
func (m *GroupApplicationResponseReq) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationResponseReq) ProtoMessage() {}
func (*GroupApplicationResponseReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{14}
return fileDescriptor_group_0c9461c2b49843c3, []int{14}
}
func (m *GroupApplicationResponseReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationResponseReq.Unmarshal(m, b)
@ -701,7 +701,7 @@ func (m *GroupApplicationResponseResp) Reset() { *m = GroupApplicationRe
func (m *GroupApplicationResponseResp) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationResponseResp) ProtoMessage() {}
func (*GroupApplicationResponseResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{15}
return fileDescriptor_group_0c9461c2b49843c3, []int{15}
}
func (m *GroupApplicationResponseResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationResponseResp.Unmarshal(m, b)
@ -732,7 +732,7 @@ func (m *QuitGroupReq) Reset() { *m = QuitGroupReq{} }
func (m *QuitGroupReq) String() string { return proto.CompactTextString(m) }
func (*QuitGroupReq) ProtoMessage() {}
func (*QuitGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{16}
return fileDescriptor_group_0c9461c2b49843c3, []int{16}
}
func (m *QuitGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QuitGroupReq.Unmarshal(m, b)
@ -769,7 +769,7 @@ func (m *QuitGroupResp) Reset() { *m = QuitGroupResp{} }
func (m *QuitGroupResp) String() string { return proto.CompactTextString(m) }
func (*QuitGroupResp) ProtoMessage() {}
func (*QuitGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{17}
return fileDescriptor_group_0c9461c2b49843c3, []int{17}
}
func (m *QuitGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QuitGroupResp.Unmarshal(m, b)
@ -802,7 +802,7 @@ func (m *GetGroupMemberListReq) Reset() { *m = GetGroupMemberListReq{} }
func (m *GetGroupMemberListReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberListReq) ProtoMessage() {}
func (*GetGroupMemberListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{18}
return fileDescriptor_group_0c9461c2b49843c3, []int{18}
}
func (m *GetGroupMemberListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberListReq.Unmarshal(m, b)
@ -855,7 +855,7 @@ func (m *GetGroupMemberListResp) Reset() { *m = GetGroupMemberListResp{}
func (m *GetGroupMemberListResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberListResp) ProtoMessage() {}
func (*GetGroupMemberListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{19}
return fileDescriptor_group_0c9461c2b49843c3, []int{19}
}
func (m *GetGroupMemberListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberListResp.Unmarshal(m, b)
@ -901,7 +901,7 @@ func (m *GetGroupMembersInfoReq) Reset() { *m = GetGroupMembersInfoReq{}
func (m *GetGroupMembersInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersInfoReq) ProtoMessage() {}
func (*GetGroupMembersInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{20}
return fileDescriptor_group_0c9461c2b49843c3, []int{20}
}
func (m *GetGroupMembersInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersInfoReq.Unmarshal(m, b)
@ -946,7 +946,7 @@ func (m *GetGroupMembersInfoResp) Reset() { *m = GetGroupMembersInfoResp
func (m *GetGroupMembersInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersInfoResp) ProtoMessage() {}
func (*GetGroupMembersInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{21}
return fileDescriptor_group_0c9461c2b49843c3, []int{21}
}
func (m *GetGroupMembersInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersInfoResp.Unmarshal(m, b)
@ -986,7 +986,7 @@ func (m *KickGroupMemberReq) Reset() { *m = KickGroupMemberReq{} }
func (m *KickGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*KickGroupMemberReq) ProtoMessage() {}
func (*KickGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{22}
return fileDescriptor_group_0c9461c2b49843c3, []int{22}
}
func (m *KickGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickGroupMemberReq.Unmarshal(m, b)
@ -1027,64 +1027,17 @@ func (m *KickGroupMemberReq) GetReason() string {
return ""
}
type Id2Result struct {
UserID string `protobuf:"bytes,1,opt,name=userID" json:"userID,omitempty"`
Result int32 `protobuf:"varint,2,opt,name=result" json:"result,omitempty"`
type KickGroupMemberResp struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Id2Result) Reset() { *m = Id2Result{} }
func (m *Id2Result) String() string { return proto.CompactTextString(m) }
func (*Id2Result) ProtoMessage() {}
func (*Id2Result) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{23}
}
func (m *Id2Result) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Id2Result.Unmarshal(m, b)
}
func (m *Id2Result) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Id2Result.Marshal(b, m, deterministic)
}
func (dst *Id2Result) XXX_Merge(src proto.Message) {
xxx_messageInfo_Id2Result.Merge(dst, src)
}
func (m *Id2Result) XXX_Size() int {
return xxx_messageInfo_Id2Result.Size(m)
}
func (m *Id2Result) XXX_DiscardUnknown() {
xxx_messageInfo_Id2Result.DiscardUnknown(m)
}
var xxx_messageInfo_Id2Result proto.InternalMessageInfo
func (m *Id2Result) GetUserID() string {
if m != nil {
return m.UserID
}
return ""
}
func (m *Id2Result) GetResult() int32 {
if m != nil {
return m.Result
}
return 0
}
type KickGroupMemberResp struct {
Id2ResultList []*Id2Result `protobuf:"bytes,3,rep,name=id2ResultList" json:"id2ResultList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *KickGroupMemberResp) Reset() { *m = KickGroupMemberResp{} }
func (m *KickGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*KickGroupMemberResp) ProtoMessage() {}
func (*KickGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{24}
return fileDescriptor_group_0c9461c2b49843c3, []int{23}
}
func (m *KickGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_KickGroupMemberResp.Unmarshal(m, b)
@ -1104,13 +1057,6 @@ func (m *KickGroupMemberResp) XXX_DiscardUnknown() {
var xxx_messageInfo_KickGroupMemberResp proto.InternalMessageInfo
func (m *KickGroupMemberResp) GetId2ResultList() []*Id2Result {
if m != nil {
return m.Id2ResultList
}
return nil
}
type GetJoinedGroupListReq struct {
FromUserID string `protobuf:"bytes,1,opt,name=fromUserID" json:"fromUserID,omitempty"`
Pagination *sdk_ws.RequestPagination `protobuf:"bytes,2,opt,name=pagination" json:"pagination,omitempty"`
@ -1123,7 +1069,7 @@ func (m *GetJoinedGroupListReq) Reset() { *m = GetJoinedGroupListReq{} }
func (m *GetJoinedGroupListReq) String() string { return proto.CompactTextString(m) }
func (*GetJoinedGroupListReq) ProtoMessage() {}
func (*GetJoinedGroupListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{25}
return fileDescriptor_group_0c9461c2b49843c3, []int{24}
}
func (m *GetJoinedGroupListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedGroupListReq.Unmarshal(m, b)
@ -1169,7 +1115,7 @@ func (m *GetJoinedGroupListResp) Reset() { *m = GetJoinedGroupListResp{}
func (m *GetJoinedGroupListResp) String() string { return proto.CompactTextString(m) }
func (*GetJoinedGroupListResp) ProtoMessage() {}
func (*GetJoinedGroupListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{26}
return fileDescriptor_group_0c9461c2b49843c3, []int{25}
}
func (m *GetJoinedGroupListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedGroupListResp.Unmarshal(m, b)
@ -1216,7 +1162,7 @@ func (m *InviteUserToGroupReq) Reset() { *m = InviteUserToGroupReq{} }
func (m *InviteUserToGroupReq) String() string { return proto.CompactTextString(m) }
func (*InviteUserToGroupReq) ProtoMessage() {}
func (*InviteUserToGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{27}
return fileDescriptor_group_0c9461c2b49843c3, []int{26}
}
func (m *InviteUserToGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InviteUserToGroupReq.Unmarshal(m, b)
@ -1258,17 +1204,16 @@ func (m *InviteUserToGroupReq) GetInvitedUserIDList() []string {
}
type InviteUserToGroupResp struct {
Id2ResultList []*Id2Result `protobuf:"bytes,3,rep,name=id2ResultList" json:"id2ResultList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InviteUserToGroupResp) Reset() { *m = InviteUserToGroupResp{} }
func (m *InviteUserToGroupResp) String() string { return proto.CompactTextString(m) }
func (*InviteUserToGroupResp) ProtoMessage() {}
func (*InviteUserToGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{28}
return fileDescriptor_group_0c9461c2b49843c3, []int{27}
}
func (m *InviteUserToGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InviteUserToGroupResp.Unmarshal(m, b)
@ -1288,13 +1233,6 @@ func (m *InviteUserToGroupResp) XXX_DiscardUnknown() {
var xxx_messageInfo_InviteUserToGroupResp proto.InternalMessageInfo
func (m *InviteUserToGroupResp) GetId2ResultList() []*Id2Result {
if m != nil {
return m.Id2ResultList
}
return nil
}
type GetGroupAllMemberReq struct {
GroupID string `protobuf:"bytes,1,opt,name=groupID" json:"groupID,omitempty"`
Offset int32 `protobuf:"varint,4,opt,name=offset" json:"offset,omitempty"`
@ -1308,7 +1246,7 @@ func (m *GetGroupAllMemberReq) Reset() { *m = GetGroupAllMemberReq{} }
func (m *GetGroupAllMemberReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupAllMemberReq) ProtoMessage() {}
func (*GetGroupAllMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{29}
return fileDescriptor_group_0c9461c2b49843c3, []int{28}
}
func (m *GetGroupAllMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAllMemberReq.Unmarshal(m, b)
@ -1360,7 +1298,7 @@ func (m *GetGroupAllMemberResp) Reset() { *m = GetGroupAllMemberResp{} }
func (m *GetGroupAllMemberResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupAllMemberResp) ProtoMessage() {}
func (*GetGroupAllMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{30}
return fileDescriptor_group_0c9461c2b49843c3, []int{29}
}
func (m *GetGroupAllMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAllMemberResp.Unmarshal(m, b)
@ -1400,7 +1338,7 @@ func (m *CMSGroup) Reset() { *m = CMSGroup{} }
func (m *CMSGroup) String() string { return proto.CompactTextString(m) }
func (*CMSGroup) ProtoMessage() {}
func (*CMSGroup) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{31}
return fileDescriptor_group_0c9461c2b49843c3, []int{30}
}
func (m *CMSGroup) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CMSGroup.Unmarshal(m, b)
@ -1454,7 +1392,7 @@ func (m *GetGroupsReq) Reset() { *m = GetGroupsReq{} }
func (m *GetGroupsReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupsReq) ProtoMessage() {}
func (*GetGroupsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{32}
return fileDescriptor_group_0c9461c2b49843c3, []int{31}
}
func (m *GetGroupsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsReq.Unmarshal(m, b)
@ -1507,7 +1445,7 @@ func (m *GetGroupsResp) Reset() { *m = GetGroupsResp{} }
func (m *GetGroupsResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupsResp) ProtoMessage() {}
func (*GetGroupsResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{33}
return fileDescriptor_group_0c9461c2b49843c3, []int{32}
}
func (m *GetGroupsResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupsResp.Unmarshal(m, b)
@ -1552,7 +1490,7 @@ func (m *GetGroupMemberReq) Reset() { *m = GetGroupMemberReq{} }
func (m *GetGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMemberReq) ProtoMessage() {}
func (*GetGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{34}
return fileDescriptor_group_0c9461c2b49843c3, []int{33}
}
func (m *GetGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMemberReq.Unmarshal(m, b)
@ -1592,7 +1530,7 @@ func (m *GetGroupMembersCMSReq) Reset() { *m = GetGroupMembersCMSReq{} }
func (m *GetGroupMembersCMSReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersCMSReq) ProtoMessage() {}
func (*GetGroupMembersCMSReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{35}
return fileDescriptor_group_0c9461c2b49843c3, []int{34}
}
func (m *GetGroupMembersCMSReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersCMSReq.Unmarshal(m, b)
@ -1646,7 +1584,7 @@ func (m *GetGroupMembersCMSResp) Reset() { *m = GetGroupMembersCMSResp{}
func (m *GetGroupMembersCMSResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupMembersCMSResp) ProtoMessage() {}
func (*GetGroupMembersCMSResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{36}
return fileDescriptor_group_0c9461c2b49843c3, []int{35}
}
func (m *GetGroupMembersCMSResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupMembersCMSResp.Unmarshal(m, b)
@ -1698,7 +1636,7 @@ func (m *DismissGroupReq) Reset() { *m = DismissGroupReq{} }
func (m *DismissGroupReq) String() string { return proto.CompactTextString(m) }
func (*DismissGroupReq) ProtoMessage() {}
func (*DismissGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{37}
return fileDescriptor_group_0c9461c2b49843c3, []int{36}
}
func (m *DismissGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DismissGroupReq.Unmarshal(m, b)
@ -1735,7 +1673,7 @@ func (m *DismissGroupResp) Reset() { *m = DismissGroupResp{} }
func (m *DismissGroupResp) String() string { return proto.CompactTextString(m) }
func (*DismissGroupResp) ProtoMessage() {}
func (*DismissGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{38}
return fileDescriptor_group_0c9461c2b49843c3, []int{37}
}
func (m *DismissGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DismissGroupResp.Unmarshal(m, b)
@ -1768,7 +1706,7 @@ func (m *MuteGroupMemberReq) Reset() { *m = MuteGroupMemberReq{} }
func (m *MuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*MuteGroupMemberReq) ProtoMessage() {}
func (*MuteGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{39}
return fileDescriptor_group_0c9461c2b49843c3, []int{38}
}
func (m *MuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupMemberReq.Unmarshal(m, b)
@ -1819,7 +1757,7 @@ func (m *MuteGroupMemberResp) Reset() { *m = MuteGroupMemberResp{} }
func (m *MuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*MuteGroupMemberResp) ProtoMessage() {}
func (*MuteGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{40}
return fileDescriptor_group_0c9461c2b49843c3, []int{39}
}
func (m *MuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupMemberResp.Unmarshal(m, b)
@ -1851,7 +1789,7 @@ func (m *CancelMuteGroupMemberReq) Reset() { *m = CancelMuteGroupMemberR
func (m *CancelMuteGroupMemberReq) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupMemberReq) ProtoMessage() {}
func (*CancelMuteGroupMemberReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{41}
return fileDescriptor_group_0c9461c2b49843c3, []int{40}
}
func (m *CancelMuteGroupMemberReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupMemberReq.Unmarshal(m, b)
@ -1895,7 +1833,7 @@ func (m *CancelMuteGroupMemberResp) Reset() { *m = CancelMuteGroupMember
func (m *CancelMuteGroupMemberResp) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupMemberResp) ProtoMessage() {}
func (*CancelMuteGroupMemberResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{42}
return fileDescriptor_group_0c9461c2b49843c3, []int{41}
}
func (m *CancelMuteGroupMemberResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupMemberResp.Unmarshal(m, b)
@ -1926,7 +1864,7 @@ func (m *MuteGroupReq) Reset() { *m = MuteGroupReq{} }
func (m *MuteGroupReq) String() string { return proto.CompactTextString(m) }
func (*MuteGroupReq) ProtoMessage() {}
func (*MuteGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{43}
return fileDescriptor_group_0c9461c2b49843c3, []int{42}
}
func (m *MuteGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupReq.Unmarshal(m, b)
@ -1963,7 +1901,7 @@ func (m *MuteGroupResp) Reset() { *m = MuteGroupResp{} }
func (m *MuteGroupResp) String() string { return proto.CompactTextString(m) }
func (*MuteGroupResp) ProtoMessage() {}
func (*MuteGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{44}
return fileDescriptor_group_0c9461c2b49843c3, []int{43}
}
func (m *MuteGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MuteGroupResp.Unmarshal(m, b)
@ -1994,7 +1932,7 @@ func (m *CancelMuteGroupReq) Reset() { *m = CancelMuteGroupReq{} }
func (m *CancelMuteGroupReq) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupReq) ProtoMessage() {}
func (*CancelMuteGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{45}
return fileDescriptor_group_0c9461c2b49843c3, []int{44}
}
func (m *CancelMuteGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupReq.Unmarshal(m, b)
@ -2031,7 +1969,7 @@ func (m *CancelMuteGroupResp) Reset() { *m = CancelMuteGroupResp{} }
func (m *CancelMuteGroupResp) String() string { return proto.CompactTextString(m) }
func (*CancelMuteGroupResp) ProtoMessage() {}
func (*CancelMuteGroupResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{46}
return fileDescriptor_group_0c9461c2b49843c3, []int{45}
}
func (m *CancelMuteGroupResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CancelMuteGroupResp.Unmarshal(m, b)
@ -2064,7 +2002,7 @@ func (m *SetGroupMemberNicknameReq) Reset() { *m = SetGroupMemberNicknam
func (m *SetGroupMemberNicknameReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberNicknameReq) ProtoMessage() {}
func (*SetGroupMemberNicknameReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{47}
return fileDescriptor_group_0c9461c2b49843c3, []int{46}
}
func (m *SetGroupMemberNicknameReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberNicknameReq.Unmarshal(m, b)
@ -2115,7 +2053,7 @@ func (m *SetGroupMemberNicknameResp) Reset() { *m = SetGroupMemberNickna
func (m *SetGroupMemberNicknameResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberNicknameResp) ProtoMessage() {}
func (*SetGroupMemberNicknameResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{48}
return fileDescriptor_group_0c9461c2b49843c3, []int{47}
}
func (m *SetGroupMemberNicknameResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberNicknameResp.Unmarshal(m, b)
@ -2147,7 +2085,7 @@ func (m *GetJoinedSuperGroupListReq) Reset() { *m = GetJoinedSuperGroupL
func (m *GetJoinedSuperGroupListReq) String() string { return proto.CompactTextString(m) }
func (*GetJoinedSuperGroupListReq) ProtoMessage() {}
func (*GetJoinedSuperGroupListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{49}
return fileDescriptor_group_0c9461c2b49843c3, []int{48}
}
func (m *GetJoinedSuperGroupListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedSuperGroupListReq.Unmarshal(m, b)
@ -2193,7 +2131,7 @@ func (m *GetJoinedSuperGroupListResp) Reset() { *m = GetJoinedSuperGroup
func (m *GetJoinedSuperGroupListResp) String() string { return proto.CompactTextString(m) }
func (*GetJoinedSuperGroupListResp) ProtoMessage() {}
func (*GetJoinedSuperGroupListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{50}
return fileDescriptor_group_0c9461c2b49843c3, []int{49}
}
func (m *GetJoinedSuperGroupListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetJoinedSuperGroupListResp.Unmarshal(m, b)
@ -2238,7 +2176,7 @@ func (m *GetSuperGroupsInfoReq) Reset() { *m = GetSuperGroupsInfoReq{} }
func (m *GetSuperGroupsInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetSuperGroupsInfoReq) ProtoMessage() {}
func (*GetSuperGroupsInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{51}
return fileDescriptor_group_0c9461c2b49843c3, []int{50}
}
func (m *GetSuperGroupsInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSuperGroupsInfoReq.Unmarshal(m, b)
@ -2276,7 +2214,7 @@ func (m *GetSuperGroupsInfoResp) Reset() { *m = GetSuperGroupsInfoResp{}
func (m *GetSuperGroupsInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetSuperGroupsInfoResp) ProtoMessage() {}
func (*GetSuperGroupsInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{52}
return fileDescriptor_group_0c9461c2b49843c3, []int{51}
}
func (m *GetSuperGroupsInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetSuperGroupsInfoResp.Unmarshal(m, b)
@ -2319,7 +2257,7 @@ func (m *SetGroupMemberInfoReq) Reset() { *m = SetGroupMemberInfoReq{} }
func (m *SetGroupMemberInfoReq) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberInfoReq) ProtoMessage() {}
func (*SetGroupMemberInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{53}
return fileDescriptor_group_0c9461c2b49843c3, []int{52}
}
func (m *SetGroupMemberInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberInfoReq.Unmarshal(m, b)
@ -2391,7 +2329,7 @@ func (m *SetGroupMemberInfoResp) Reset() { *m = SetGroupMemberInfoResp{}
func (m *SetGroupMemberInfoResp) String() string { return proto.CompactTextString(m) }
func (*SetGroupMemberInfoResp) ProtoMessage() {}
func (*SetGroupMemberInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{54}
return fileDescriptor_group_0c9461c2b49843c3, []int{53}
}
func (m *SetGroupMemberInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SetGroupMemberInfoResp.Unmarshal(m, b)
@ -2422,7 +2360,7 @@ func (m *GetGroupAbstractInfoReq) Reset() { *m = GetGroupAbstractInfoReq
func (m *GetGroupAbstractInfoReq) String() string { return proto.CompactTextString(m) }
func (*GetGroupAbstractInfoReq) ProtoMessage() {}
func (*GetGroupAbstractInfoReq) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{55}
return fileDescriptor_group_0c9461c2b49843c3, []int{54}
}
func (m *GetGroupAbstractInfoReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAbstractInfoReq.Unmarshal(m, b)
@ -2462,7 +2400,7 @@ func (m *GroupAbstractInfo) Reset() { *m = GroupAbstractInfo{} }
func (m *GroupAbstractInfo) String() string { return proto.CompactTextString(m) }
func (*GroupAbstractInfo) ProtoMessage() {}
func (*GroupAbstractInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{56}
return fileDescriptor_group_0c9461c2b49843c3, []int{55}
}
func (m *GroupAbstractInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupAbstractInfo.Unmarshal(m, b)
@ -2514,7 +2452,7 @@ func (m *GetGroupAbstractInfoResp) Reset() { *m = GetGroupAbstractInfoRe
func (m *GetGroupAbstractInfoResp) String() string { return proto.CompactTextString(m) }
func (*GetGroupAbstractInfoResp) ProtoMessage() {}
func (*GetGroupAbstractInfoResp) Descriptor() ([]byte, []int) {
return fileDescriptor_group_4fa7763fd681832d, []int{57}
return fileDescriptor_group_0c9461c2b49843c3, []int{56}
}
func (m *GetGroupAbstractInfoResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetGroupAbstractInfoResp.Unmarshal(m, b)
@ -2565,7 +2503,6 @@ func init() {
proto.RegisterType((*GetGroupMembersInfoReq)(nil), "group.GetGroupMembersInfoReq")
proto.RegisterType((*GetGroupMembersInfoResp)(nil), "group.GetGroupMembersInfoResp")
proto.RegisterType((*KickGroupMemberReq)(nil), "group.KickGroupMemberReq")
proto.RegisterType((*Id2Result)(nil), "group.Id2Result")
proto.RegisterType((*KickGroupMemberResp)(nil), "group.KickGroupMemberResp")
proto.RegisterType((*GetJoinedGroupListReq)(nil), "group.GetJoinedGroupListReq")
proto.RegisterType((*GetJoinedGroupListResp)(nil), "group.GetJoinedGroupListResp")
@ -3547,128 +3484,125 @@ var _Group_serviceDesc = grpc.ServiceDesc{
Metadata: "group/group.proto",
}
func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_4fa7763fd681832d) }
var fileDescriptor_group_4fa7763fd681832d = []byte{
// 1907 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x73, 0xdb, 0xc6,
0x11, 0x1f, 0x50, 0xa6, 0x2c, 0xad, 0xa5, 0x50, 0x3e, 0x99, 0x32, 0x0d, 0xcb, 0xb6, 0x72, 0x71,
0x53, 0x4d, 0x6b, 0x53, 0x1d, 0xa5, 0xcd, 0x34, 0x4d, 0x67, 0xd2, 0xc4, 0xae, 0x1d, 0x35, 0xa2,
0x54, 0x83, 0x4e, 0x33, 0x93, 0x69, 0xab, 0x42, 0xe4, 0x11, 0x81, 0x45, 0x02, 0x27, 0x1c, 0x20,
0x67, 0x3a, 0xed, 0x4c, 0xdb, 0x87, 0x3e, 0xf5, 0xcf, 0x43, 0x1f, 0xfb, 0xd6, 0xe9, 0xa7, 0xe8,
0x5b, 0xbf, 0x59, 0x07, 0x77, 0x87, 0xe3, 0x01, 0x77, 0x20, 0x25, 0x97, 0x79, 0xe1, 0x0c, 0xf6,
0x76, 0xef, 0xf6, 0xf6, 0xdf, 0xfd, 0x76, 0x09, 0x37, 0x83, 0x24, 0xce, 0xe8, 0x1e, 0xff, 0xed,
0xd2, 0x24, 0x4e, 0x63, 0xd4, 0xe4, 0x1f, 0xee, 0xee, 0x31, 0x25, 0xd1, 0xe3, 0x83, 0xde, 0xe3,
0x3e, 0x49, 0x2e, 0x48, 0xb2, 0x47, 0xcf, 0x82, 0x3d, 0xce, 0xb0, 0xc7, 0x86, 0x67, 0x27, 0xaf,
0xd9, 0xde, 0x6b, 0x26, 0x04, 0xdc, 0xee, 0x5c, 0xce, 0xc4, 0xa7, 0x94, 0x24, 0x92, 0x1f, 0xff,
0xc7, 0x81, 0xb7, 0x9e, 0x24, 0xc4, 0x4f, 0xc9, 0xf3, 0xfc, 0x24, 0x8f, 0x9c, 0xa3, 0x77, 0xe1,
0xad, 0x30, 0x0a, 0xd3, 0x1e, 0x99, 0x9c, 0x92, 0xe4, 0x30, 0x64, 0x69, 0xc7, 0xd9, 0x59, 0xda,
0x5d, 0xf5, 0x2a, 0x54, 0xf4, 0x23, 0x58, 0xe5, 0xda, 0x1d, 0x44, 0xa3, 0xb8, 0xd3, 0xd8, 0x71,
0x76, 0x6f, 0xec, 0x6f, 0x77, 0x19, 0x3f, 0xf6, 0xc4, 0xa7, 0xe1, 0x09, 0xf5, 0x13, 0x7f, 0xc2,
0xba, 0xcf, 0x0b, 0x1e, 0x6f, 0xca, 0x8e, 0x30, 0xac, 0xf9, 0xc3, 0x49, 0x18, 0x7d, 0xce, 0x48,
0x72, 0xf0, 0x94, 0x75, 0x96, 0xf8, 0x09, 0x25, 0x1a, 0xda, 0x81, 0x1b, 0xf1, 0xeb, 0x88, 0x24,
0xe2, 0xbb, 0xd3, 0xdc, 0x71, 0x76, 0x57, 0x3d, 0x9d, 0x84, 0x7b, 0xd0, 0x2a, 0xe9, 0xce, 0x68,
0x59, 0xa9, 0xa5, 0x2b, 0x29, 0x85, 0xbf, 0x0f, 0x1b, 0xcf, 0x49, 0xca, 0x97, 0x18, 0x5f, 0x23,
0xe7, 0xb9, 0x12, 0x82, 0xe1, 0xa9, 0x66, 0x09, 0x9d, 0x84, 0xbf, 0x80, 0x9b, 0x15, 0x29, 0x46,
0xd1, 0x27, 0xb0, 0xae, 0xf6, 0xe5, 0x82, 0xf9, 0x05, 0xe7, 0xa9, 0x52, 0x16, 0xc1, 0x27, 0xd0,
0xea, 0xcb, 0x8d, 0x0b, 0x6d, 0x0e, 0xa1, 0xa5, 0x78, 0x9e, 0xc5, 0x49, 0x9f, 0xe4, 0x1a, 0xe5,
0x77, 0xc4, 0xb3, 0x36, 0x16, 0x9c, 0x5e, 0x55, 0x14, 0x23, 0xd8, 0x28, 0x1f, 0xc0, 0x28, 0xfe,
0x93, 0x03, 0x6e, 0x71, 0x9d, 0x8f, 0x29, 0x1d, 0x87, 0x03, 0x3f, 0x0d, 0xe3, 0x28, 0x57, 0x28,
0x57, 0xe0, 0x29, 0x00, 0xf5, 0x83, 0x30, 0xe2, 0x44, 0x79, 0xf6, 0x43, 0xcb, 0xd9, 0x1e, 0x39,
0xcf, 0x08, 0x4b, 0x7f, 0xae, 0x78, 0x3d, 0x4d, 0x0e, 0xdd, 0x07, 0x18, 0x25, 0xf1, 0x44, 0x3a,
0x76, 0x89, 0x3b, 0x56, 0xa3, 0xe0, 0x3f, 0x38, 0x70, 0xb7, 0x56, 0x09, 0x46, 0xd1, 0x2d, 0x68,
0xa6, 0x71, 0xea, 0x8f, 0xb9, 0x02, 0x4d, 0x4f, 0x7c, 0xa0, 0xcf, 0x60, 0x23, 0x90, 0x31, 0x9c,
0x9f, 0xad, 0x99, 0xfd, 0x41, 0x9d, 0x75, 0x24, 0xab, 0x67, 0x08, 0xe2, 0xdf, 0xc1, 0xf6, 0x73,
0x92, 0xe6, 0xfa, 0x78, 0xe4, 0xdc, 0x62, 0x88, 0x2d, 0x58, 0xce, 0x84, 0xfa, 0x0e, 0x57, 0x5f,
0x7e, 0x55, 0x0c, 0xd4, 0x78, 0x33, 0x03, 0xe5, 0x5e, 0xb8, 0x37, 0xe3, 0xf8, 0x2b, 0x99, 0xa0,
0xf1, 0xa6, 0x26, 0xf8, 0xa3, 0x03, 0xed, 0x97, 0x89, 0x1f, 0xb1, 0x11, 0x49, 0x38, 0xeb, 0x71,
0x9e, 0x7a, 0xf9, 0xe5, 0x3b, 0x70, 0x5d, 0x66, 0x80, 0xbc, 0x7d, 0xf1, 0x99, 0xd7, 0x8e, 0x78,
0x3c, 0x3c, 0xd6, 0xd2, 0xb6, 0xc1, 0x19, 0x2a, 0xd4, 0x9c, 0x2f, 0x22, 0xaf, 0x75, 0x3e, 0x11,
0x05, 0x15, 0x2a, 0xee, 0xc0, 0x96, 0x4d, 0x05, 0x46, 0xf1, 0xdf, 0x1c, 0x58, 0xfb, 0x59, 0x1c,
0x46, 0xaa, 0x6c, 0xd5, 0x2b, 0x75, 0x1f, 0x20, 0x21, 0xe7, 0x3d, 0xc2, 0x98, 0x1f, 0x10, 0xa9,
0x90, 0x46, 0xc9, 0xd7, 0x5f, 0xc5, 0x61, 0xd4, 0x8f, 0xb3, 0x64, 0x40, 0x78, 0x9d, 0x69, 0x7a,
0x1a, 0x05, 0x3d, 0x84, 0xf5, 0x30, 0xba, 0x08, 0x53, 0xa5, 0xeb, 0x32, 0xdf, 0xa2, 0x4c, 0xc4,
0x2d, 0x58, 0xd7, 0xf4, 0x61, 0x14, 0xff, 0x33, 0x8f, 0xe2, 0x4a, 0x08, 0xe7, 0x0b, 0x71, 0xc4,
0x48, 0x45, 0xe1, 0x25, 0x43, 0x61, 0x2d, 0x3f, 0xae, 0x55, 0xf3, 0x23, 0x5f, 0xff, 0xca, 0x8f,
0x86, 0x63, 0x32, 0xec, 0xb1, 0x40, 0x16, 0x46, 0x8d, 0x92, 0x57, 0x57, 0xf1, 0xe5, 0x11, 0x96,
0x8d, 0x53, 0xae, 0x6f, 0xd3, 0x2b, 0xd1, 0xf0, 0x7d, 0xd8, 0xae, 0x57, 0x8e, 0x51, 0xbc, 0x0b,
0x6b, 0x2f, 0xb2, 0x30, 0x9d, 0x6f, 0xde, 0xfc, 0xe2, 0x1a, 0x27, 0xa3, 0xf8, 0xef, 0x0e, 0xb4,
0x8b, 0xf4, 0x9d, 0xbe, 0x17, 0xb3, 0x7d, 0xb4, 0x05, 0xcb, 0xa3, 0x70, 0x9c, 0x92, 0x84, 0x5f,
0xb7, 0xe9, 0xc9, 0xaf, 0x05, 0xe5, 0xd3, 0x05, 0x6c, 0xd9, 0x14, 0xaa, 0xcd, 0xa3, 0x67, 0x00,
0x93, 0xe9, 0xf3, 0x27, 0x8a, 0xc8, 0xbb, 0x75, 0x19, 0x24, 0x76, 0x7c, 0x96, 0x8d, 0xc7, 0xbc,
0x8a, 0x6a, 0x92, 0xd8, 0xab, 0x9e, 0xab, 0xde, 0x95, 0x99, 0xd1, 0xaa, 0x9d, 0xdd, 0xe0, 0x0f,
0x8e, 0xbe, 0xa7, 0x0f, 0xb7, 0xad, 0x7b, 0x32, 0xba, 0x30, 0xb5, 0x13, 0x40, 0x9f, 0x85, 0x83,
0x33, 0x8d, 0x6d, 0xb6, 0xca, 0xdf, 0x81, 0x8d, 0xb3, 0x70, 0x70, 0x46, 0x86, 0x22, 0x3e, 0x35,
0xc5, 0x0d, 0x7a, 0xee, 0xe8, 0x84, 0xf8, 0x2c, 0x8e, 0x64, 0xd0, 0xcb, 0x2f, 0xfc, 0x21, 0xac,
0x1e, 0x0c, 0xf7, 0x45, 0x70, 0xd6, 0x56, 0x57, 0x2e, 0xcc, 0x43, 0xba, 0x21, 0xa2, 0x44, 0x7c,
0xe1, 0x1e, 0x6c, 0x1a, 0x0a, 0x33, 0x8a, 0xde, 0x87, 0xf5, 0xb0, 0xd8, 0x53, 0x33, 0xc9, 0x46,
0x57, 0x40, 0x2c, 0x75, 0x9e, 0x57, 0x66, 0xc3, 0xbf, 0xe7, 0xf1, 0x9b, 0x67, 0x33, 0x19, 0xf2,
0x3d, 0x8b, 0xf8, 0x2d, 0x27, 0xa6, 0x63, 0x24, 0xe6, 0x62, 0xa2, 0xf5, 0x15, 0x8f, 0x1a, 0xe3,
0xf8, 0xda, 0x68, 0x2d, 0x30, 0xcf, 0xa5, 0x81, 0xc6, 0x94, 0x1d, 0x5f, 0xc0, 0xad, 0x03, 0x5e,
0xc6, 0xf2, 0x1b, 0xbc, 0x8c, 0x6d, 0xe9, 0xbe, 0x64, 0x64, 0xaa, 0x74, 0xe0, 0x35, 0xdd, 0x81,
0xe8, 0x11, 0xdc, 0x14, 0x05, 0x51, 0x8f, 0x82, 0x26, 0x8f, 0x02, 0x73, 0x01, 0x1f, 0x43, 0xdb,
0x72, 0xee, 0xff, 0xe1, 0xb3, 0x5f, 0xc3, 0x2d, 0x05, 0x19, 0xc6, 0xe3, 0xcb, 0x44, 0xed, 0x16,
0x2c, 0xc7, 0xa3, 0x11, 0x23, 0x69, 0x51, 0x72, 0xc4, 0x57, 0x6e, 0xe4, 0x41, 0x9c, 0x45, 0xa9,
0x7c, 0x09, 0xc4, 0x07, 0x3e, 0x99, 0xd6, 0x34, 0x6d, 0xff, 0x05, 0x26, 0xdd, 0xbf, 0x1c, 0x58,
0x79, 0xd2, 0xeb, 0x73, 0xb6, 0x32, 0x8c, 0x75, 0xae, 0x86, 0xad, 0xbb, 0x80, 0x02, 0xf5, 0x56,
0xe6, 0xe6, 0x3d, 0xf2, 0x27, 0xc5, 0xb3, 0x67, 0x59, 0xc9, 0xb3, 0xb7, 0x4c, 0x55, 0x3e, 0x37,
0xe8, 0xf8, 0x2f, 0x0e, 0xac, 0x29, 0xb4, 0xbb, 0x38, 0x40, 0xb8, 0x2d, 0xaf, 0xab, 0x69, 0x3a,
0x25, 0xd4, 0xc7, 0x22, 0x7e, 0x09, 0xeb, 0x9a, 0x36, 0x8c, 0xa2, 0x6f, 0xc3, 0x32, 0x5f, 0x63,
0x1c, 0xa9, 0xdf, 0xd8, 0x6f, 0xc9, 0xb0, 0x29, 0x0c, 0xeb, 0xc9, 0x65, 0xe4, 0xc2, 0x0a, 0x27,
0x1c, 0x65, 0x13, 0xbe, 0x69, 0xd3, 0x53, 0xdf, 0xf8, 0xf1, 0x14, 0xd1, 0x5f, 0x22, 0x8e, 0xf0,
0x3f, 0x8c, 0xe7, 0x8e, 0x3d, 0xe9, 0xf5, 0x67, 0xc7, 0x9e, 0x0b, 0x2b, 0x59, 0xd9, 0x33, 0xea,
0xbb, 0x62, 0xd2, 0xa5, 0x37, 0x2c, 0x22, 0xff, 0x75, 0x8c, 0xb7, 0x87, 0x6b, 0xc5, 0x28, 0xfa,
0x09, 0x5c, 0x17, 0x71, 0x57, 0x58, 0xe9, 0xb2, 0xe1, 0x5a, 0x88, 0xa1, 0x9f, 0x5a, 0xea, 0xdc,
0xb7, 0xac, 0x2a, 0x0a, 0x44, 0x51, 0xdf, 0x07, 0x88, 0x1d, 0x8f, 0xb2, 0x09, 0x93, 0x6e, 0xd0,
0x28, 0xf8, 0xbb, 0xd0, 0x7a, 0x1a, 0xb2, 0x49, 0xc8, 0xd8, 0xfc, 0xba, 0x94, 0x77, 0x33, 0x65,
0x66, 0x46, 0xf1, 0x2b, 0x40, 0xbd, 0x4c, 0xb6, 0x87, 0x56, 0x57, 0x9a, 0xb5, 0x2d, 0xd3, 0x41,
0x57, 0xf1, 0xee, 0x60, 0x58, 0x9b, 0x64, 0x29, 0x19, 0xf6, 0xc9, 0x20, 0x8e, 0x86, 0x8c, 0x57,
0x86, 0x75, 0xaf, 0x44, 0xc3, 0x6d, 0xd8, 0x34, 0xce, 0x62, 0x14, 0x1f, 0x42, 0xe7, 0x89, 0x1f,
0x0d, 0xc8, 0x78, 0x11, 0x8a, 0xe0, 0xbb, 0x70, 0xa7, 0x66, 0x37, 0x01, 0xd9, 0x14, 0x79, 0xb6,
0xad, 0x5a, 0xb0, 0xae, 0x71, 0x32, 0x8a, 0xbb, 0x80, 0x2a, 0xfb, 0xce, 0xde, 0xa0, 0x0d, 0x9b,
0x06, 0x3f, 0xa3, 0x38, 0x84, 0x3b, 0xfd, 0x52, 0xcc, 0x1d, 0x85, 0x83, 0xb3, 0xc8, 0x9f, 0x90,
0xb9, 0xd9, 0x10, 0x49, 0xc6, 0x22, 0x1b, 0x8a, 0x6f, 0xcd, 0x12, 0xcd, 0x92, 0x25, 0xb6, 0xc1,
0xad, 0x3b, 0x8a, 0x51, 0xfc, 0x5b, 0xde, 0xc5, 0x8a, 0x27, 0xb4, 0x9f, 0x51, 0xd9, 0x3d, 0x2c,
0xb6, 0x8b, 0x9d, 0x6a, 0xd6, 0x28, 0x69, 0x16, 0xf3, 0xe6, 0xd5, 0x7e, 0xf6, 0x37, 0xf2, 0x86,
0x7f, 0xc0, 0xeb, 0xcf, 0xf4, 0xa8, 0x2b, 0x0c, 0x2f, 0x7e, 0xc9, 0x8b, 0x84, 0x21, 0xba, 0xa0,
0x09, 0xc6, 0xbf, 0x1b, 0xd0, 0x2e, 0x3b, 0x69, 0x3e, 0xfc, 0xad, 0xb1, 0x2a, 0xfa, 0xa1, 0x16,
0x23, 0x4d, 0xf9, 0x20, 0x06, 0x71, 0x1c, 0x8c, 0x89, 0x98, 0x64, 0x9d, 0x66, 0xa3, 0x6e, 0x3f,
0x4d, 0xc2, 0x28, 0xf8, 0x85, 0x3f, 0xce, 0x88, 0x16, 0x41, 0xef, 0xc3, 0xf5, 0x91, 0x3f, 0x20,
0x9f, 0x7b, 0x87, 0xbc, 0x11, 0x9a, 0x27, 0x58, 0x30, 0xa3, 0x0f, 0x60, 0x35, 0x89, 0xc7, 0xe4,
0x90, 0x5c, 0x90, 0x71, 0xe7, 0x3a, 0x97, 0xbc, 0x6b, 0x48, 0x1e, 0x44, 0xe9, 0x7b, 0xfb, 0x42,
0x70, 0xca, 0x8d, 0x1e, 0x41, 0x83, 0x7c, 0xdd, 0x59, 0xb9, 0xc4, 0x69, 0x0d, 0xf2, 0x75, 0xde,
0xe4, 0xda, 0xac, 0xc4, 0x28, 0xfe, 0xc1, 0x14, 0xeb, 0x7f, 0x7c, 0xca, 0xd2, 0xc4, 0x1f, 0xa4,
0x85, 0x05, 0x5d, 0x58, 0x91, 0x26, 0x63, 0xd2, 0xb1, 0xea, 0x1b, 0xff, 0xd5, 0x81, 0x9b, 0x86,
0xd0, 0x0c, 0x9b, 0x3f, 0x92, 0xa3, 0xc7, 0x5e, 0x51, 0x7a, 0x4f, 0x49, 0x22, 0x11, 0xb6, 0xb9,
0x80, 0xbe, 0x07, 0x9b, 0x41, 0xb9, 0x93, 0xfa, 0xd4, 0x67, 0x5f, 0xf1, 0x0a, 0x71, 0xcd, 0xb3,
0x2d, 0xe1, 0x21, 0x74, 0xec, 0xd7, 0x60, 0x14, 0x7d, 0x2a, 0xd1, 0x8a, 0xbe, 0x50, 0xbc, 0x4b,
0x1d, 0xf9, 0x7a, 0x9b, 0x92, 0x16, 0x99, 0xfd, 0x3f, 0x6f, 0x80, 0x18, 0x97, 0xa2, 0x1f, 0xc3,
0x8d, 0xc1, 0x74, 0x2e, 0x88, 0xda, 0x05, 0x08, 0x28, 0xcd, 0x39, 0xdd, 0x2d, 0x1b, 0x99, 0x23,
0xd0, 0xd5, 0x57, 0x45, 0x23, 0x8f, 0x36, 0x25, 0x93, 0x3e, 0x6a, 0x70, 0x6f, 0x99, 0x44, 0x21,
0x77, 0x5e, 0xf4, 0xc1, 0x4a, 0x4e, 0xef, 0xa1, 0x95, 0x5c, 0xa9, 0x5d, 0xe6, 0x99, 0xa6, 0x0f,
0x10, 0xd1, 0xed, 0xe2, 0xda, 0x95, 0x61, 0xa4, 0xdb, 0xb1, 0x2f, 0x30, 0x8a, 0x3e, 0x82, 0x35,
0xa6, 0x8d, 0xf2, 0x50, 0x71, 0xb7, 0xca, 0x00, 0xd1, 0xbd, 0x6d, 0xa5, 0x33, 0x8a, 0x7e, 0x03,
0xb7, 0x03, 0xfb, 0xc4, 0x0d, 0xbd, 0x5d, 0x39, 0xd5, 0x9c, 0x86, 0xb9, 0x78, 0x1e, 0x0b, 0xa3,
0x68, 0x04, 0x77, 0x82, 0xba, 0x91, 0x16, 0x7a, 0x67, 0xba, 0x41, 0xed, 0xcc, 0xcd, 0x7d, 0x38,
0x9f, 0x89, 0x51, 0xf4, 0x02, 0x50, 0x6a, 0x8c, 0x8c, 0xd0, 0xb6, 0x94, 0xb5, 0x0e, 0xb4, 0xdc,
0x7b, 0x33, 0x56, 0x19, 0x45, 0x03, 0xe8, 0x04, 0x35, 0xb3, 0x12, 0x84, 0x4b, 0x31, 0x6a, 0x9d,
0xf4, 0xb8, 0xef, 0xcc, 0xe5, 0x11, 0x7a, 0x07, 0xc6, 0x8c, 0x42, 0xe9, 0x6d, 0x9d, 0xa7, 0x28,
0xbd, 0x6b, 0x86, 0x1b, 0x2f, 0x61, 0x33, 0x30, 0x47, 0x05, 0xc8, 0x2e, 0xa5, 0xa2, 0xec, 0xfe,
0xac, 0x65, 0x9e, 0xb1, 0xad, 0xb3, 0x72, 0xb3, 0x8d, 0xee, 0x48, 0x11, 0x73, 0x6a, 0xe0, 0xba,
0x75, 0x4b, 0xea, 0xca, 0x95, 0x46, 0x57, 0xbf, 0xb2, 0xd9, 0x82, 0xeb, 0x57, 0xb6, 0x75, 0xc8,
0x47, 0x45, 0x17, 0xaa, 0xf5, 0x95, 0xe8, 0x6e, 0xd1, 0x3c, 0x5a, 0x3a, 0x5d, 0x77, 0xbb, 0x7e,
0x51, 0x24, 0xb5, 0xca, 0x36, 0x95, 0xd4, 0x7a, 0x07, 0xa4, 0x92, 0xba, 0xdc, 0x88, 0xbc, 0x00,
0x64, 0xa2, 0xef, 0x1a, 0x6f, 0xca, 0x76, 0xa1, 0xc6, 0x9b, 0x0a, 0xb6, 0x7f, 0x04, 0x6b, 0x3a,
0xc0, 0x55, 0x39, 0x5e, 0x81, 0xc8, 0x2a, 0xc7, 0xab, 0x68, 0x38, 0x77, 0x5c, 0x05, 0x36, 0x2a,
0xc7, 0x99, 0xe0, 0x54, 0x39, 0xce, 0x82, 0x34, 0xd1, 0x97, 0xd0, 0xb6, 0xc2, 0x50, 0xf4, 0xa0,
0xa8, 0xa9, 0x35, 0x90, 0xd7, 0xdd, 0x99, 0xcd, 0x20, 0x2c, 0xae, 0xc8, 0xca, 0xe2, 0x3a, 0x2c,
0x55, 0x16, 0x2f, 0x61, 0xcf, 0xfc, 0x76, 0x95, 0x4d, 0xd5, 0xed, 0x4c, 0x68, 0xab, 0x6e, 0x67,
0x41, 0xb1, 0x79, 0x2d, 0xac, 0x01, 0x70, 0x7a, 0x2d, 0xac, 0x01, 0x97, 0x7a, 0x2d, 0xac, 0xc5,
0x80, 0x22, 0x3a, 0x2a, 0xb0, 0x4b, 0x8f, 0x0e, 0x13, 0xcc, 0xe9, 0xd1, 0x61, 0xc3, 0x6b, 0xbf,
0xaa, 0x82, 0x88, 0x02, 0x0f, 0xa3, 0x9d, 0x4a, 0xcd, 0x37, 0x90, 0xb9, 0xfb, 0xf6, 0x1c, 0x0e,
0xa1, 0xb1, 0x89, 0x51, 0x94, 0xc6, 0x56, 0x90, 0xa7, 0x34, 0xb6, 0x83, 0x1b, 0xf4, 0x85, 0x36,
0xb1, 0xd1, 0x71, 0x4a, 0xb5, 0xfe, 0x54, 0x90, 0x8f, 0xfb, 0x60, 0xe6, 0x3a, 0xa3, 0x9f, 0x3c,
0xf8, 0xf2, 0xde, 0x31, 0x25, 0xd1, 0xc9, 0x41, 0x4f, 0xfb, 0xfb, 0x93, 0xcb, 0x7c, 0xc8, 0x7f,
0x4f, 0x97, 0x39, 0xe9, 0xbd, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x06, 0xa5, 0xc5, 0x9c, 0x71,
0x1d, 0x00, 0x00,
func init() { proto.RegisterFile("group/group.proto", fileDescriptor_group_0c9461c2b49843c3) }
var fileDescriptor_group_0c9461c2b49843c3 = []byte{
// 1871 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x59, 0x5f, 0x6f, 0x1b, 0xb9,
0x11, 0xc7, 0xca, 0x91, 0x63, 0x4f, 0xec, 0x93, 0x43, 0x47, 0xb6, 0xb2, 0x71, 0x12, 0x1f, 0x2f,
0xbd, 0x1a, 0x6d, 0x22, 0x17, 0xb9, 0xf6, 0xd0, 0x6b, 0x0b, 0x5c, 0xef, 0x92, 0x26, 0xe7, 0x9e,
0xe5, 0x34, 0xab, 0x5c, 0x0f, 0x38, 0xb4, 0x75, 0xd7, 0x12, 0xb5, 0xb7, 0xb1, 0xb4, 0x4b, 0x2f,
0x77, 0xed, 0xa0, 0x68, 0x81, 0xb6, 0x0f, 0x7d, 0xea, 0x9f, 0x87, 0x3e, 0xf6, 0xad, 0xe8, 0xa7,
0xe8, 0x5b, 0xbf, 0x59, 0x41, 0x2e, 0x97, 0xe2, 0x2e, 0xb9, 0x92, 0x1d, 0xe8, 0x5e, 0x04, 0xec,
0x70, 0x86, 0xfc, 0x71, 0x38, 0x33, 0xfc, 0x0d, 0x05, 0x37, 0x83, 0x24, 0xce, 0xe8, 0xbe, 0xf8,
0xed, 0xd2, 0x24, 0x4e, 0x63, 0xd4, 0x14, 0x1f, 0xee, 0xde, 0x0b, 0x4a, 0xa2, 0x47, 0x07, 0xbd,
0x47, 0x7d, 0x92, 0x9c, 0x93, 0x64, 0x9f, 0x9e, 0x06, 0xfb, 0x42, 0x61, 0x9f, 0x0d, 0x4f, 0x8f,
0x2f, 0xd8, 0xfe, 0x05, 0xcb, 0x0d, 0xdc, 0xee, 0x5c, 0xcd, 0xc4, 0xa7, 0x94, 0x24, 0x52, 0x1f,
0xff, 0xd7, 0x81, 0x77, 0x9e, 0x24, 0xc4, 0x4f, 0xc9, 0x73, 0xbe, 0x92, 0x47, 0xce, 0xd0, 0xfb,
0xf0, 0x4e, 0x18, 0x85, 0x69, 0x8f, 0x4c, 0x4e, 0x48, 0x72, 0x18, 0xb2, 0xb4, 0xe3, 0xec, 0x2e,
0xed, 0xad, 0x7a, 0x15, 0x29, 0xfa, 0x11, 0xac, 0x0a, 0x74, 0x07, 0xd1, 0x28, 0xee, 0x34, 0x76,
0x9d, 0xbd, 0x1b, 0x8f, 0x77, 0xba, 0x4c, 0x2c, 0x7b, 0xec, 0xd3, 0xf0, 0x98, 0xfa, 0x89, 0x3f,
0x61, 0xdd, 0xe7, 0x85, 0x8e, 0x37, 0x55, 0x47, 0x18, 0xd6, 0xfc, 0xe1, 0x24, 0x8c, 0xbe, 0x60,
0x24, 0x39, 0x78, 0xca, 0x3a, 0x4b, 0x62, 0x85, 0x92, 0x0c, 0xed, 0xc2, 0x8d, 0xf8, 0x22, 0x22,
0x49, 0xfe, 0xdd, 0x69, 0xee, 0x3a, 0x7b, 0xab, 0x9e, 0x2e, 0xc2, 0x3d, 0x68, 0x95, 0xb0, 0x33,
0x5a, 0x06, 0xb5, 0x74, 0x25, 0x50, 0xf8, 0xfb, 0xb0, 0xf1, 0x9c, 0xa4, 0x62, 0x88, 0x89, 0x31,
0x72, 0xc6, 0x41, 0xe4, 0x0a, 0x4f, 0x35, 0x4f, 0xe8, 0x22, 0xfc, 0x25, 0xdc, 0xac, 0x58, 0x31,
0x8a, 0x3e, 0x85, 0x75, 0x35, 0xaf, 0x30, 0xe4, 0x1b, 0x9c, 0x07, 0xa5, 0x6c, 0x82, 0x8f, 0xa1,
0xd5, 0x97, 0x13, 0x17, 0x68, 0x0e, 0xa1, 0xa5, 0x74, 0x9e, 0xc5, 0x49, 0x9f, 0x70, 0x44, 0x7c,
0x8f, 0x78, 0xd6, 0xc4, 0xb9, 0xa6, 0x57, 0x35, 0xc5, 0x08, 0x36, 0xca, 0x0b, 0x30, 0x8a, 0xff,
0xec, 0x80, 0x5b, 0x6c, 0xe7, 0x13, 0x4a, 0xc7, 0xe1, 0xc0, 0x4f, 0xc3, 0x38, 0xe2, 0x80, 0x38,
0x80, 0xa7, 0x00, 0xd4, 0x0f, 0xc2, 0x48, 0x08, 0xe5, 0xda, 0x0f, 0x2c, 0x6b, 0x7b, 0xe4, 0x2c,
0x23, 0x2c, 0xfd, 0x85, 0xd2, 0xf5, 0x34, 0x3b, 0x74, 0x0f, 0x60, 0x94, 0xc4, 0x13, 0x79, 0xb0,
0x4b, 0xe2, 0x60, 0x35, 0x09, 0xfe, 0xa3, 0x03, 0x77, 0x6a, 0x41, 0x30, 0x8a, 0x6e, 0x41, 0x33,
0x8d, 0x53, 0x7f, 0x2c, 0x00, 0x34, 0xbd, 0xfc, 0x03, 0x7d, 0x0e, 0x1b, 0x81, 0x8c, 0x61, 0xbe,
0xb6, 0xe6, 0xf6, 0xfb, 0x75, 0xde, 0x91, 0xaa, 0x9e, 0x61, 0x88, 0x7f, 0x0f, 0x3b, 0xcf, 0x49,
0xca, 0xf1, 0x78, 0xe4, 0xcc, 0xe2, 0x88, 0x2d, 0x58, 0xce, 0x72, 0xf8, 0x8e, 0x80, 0x2f, 0xbf,
0x2a, 0x0e, 0x6a, 0xbc, 0x9d, 0x83, 0xf8, 0x29, 0xdc, 0x9d, 0xb1, 0xfc, 0x95, 0x5c, 0xd0, 0x78,
0x5b, 0x17, 0xfc, 0xc9, 0x81, 0xf6, 0xab, 0xc4, 0x8f, 0xd8, 0x88, 0x24, 0x42, 0xf5, 0x05, 0x4f,
0x3d, 0xbe, 0xf9, 0x0e, 0x5c, 0x97, 0x19, 0x20, 0x77, 0x5f, 0x7c, 0xf2, 0xda, 0x11, 0x8f, 0x87,
0x2f, 0xb4, 0xb4, 0x6d, 0x08, 0x85, 0x8a, 0x94, 0xeb, 0x45, 0xe4, 0x42, 0xd7, 0xcb, 0xa3, 0xa0,
0x22, 0xc5, 0x1d, 0xd8, 0xb2, 0x41, 0x60, 0x14, 0xff, 0xdd, 0x81, 0xb5, 0x9f, 0xc7, 0x61, 0xa4,
0xca, 0x56, 0x3d, 0xa8, 0x7b, 0x00, 0x09, 0x39, 0xeb, 0x11, 0xc6, 0xfc, 0x80, 0x48, 0x40, 0x9a,
0x84, 0x8f, 0xbf, 0x8e, 0xc3, 0xa8, 0x1f, 0x67, 0xc9, 0x80, 0x88, 0x3a, 0xd3, 0xf4, 0x34, 0x09,
0x7a, 0x00, 0xeb, 0x61, 0x74, 0x1e, 0xa6, 0x0a, 0xeb, 0xb2, 0x98, 0xa2, 0x2c, 0xc4, 0x2d, 0x58,
0xd7, 0xf0, 0x30, 0x8a, 0xff, 0xc5, 0xa3, 0xb8, 0x12, 0xc2, 0x7c, 0x20, 0x8e, 0x18, 0xa9, 0x00,
0x5e, 0x32, 0x00, 0x6b, 0xf9, 0x71, 0xad, 0x9a, 0x1f, 0x7c, 0xfc, 0x6b, 0x3f, 0x1a, 0x8e, 0xc9,
0xb0, 0xc7, 0x02, 0x59, 0x18, 0x35, 0x09, 0xaf, 0xae, 0xf9, 0x97, 0x47, 0x58, 0x36, 0x4e, 0x05,
0xde, 0xa6, 0x57, 0x92, 0xe1, 0x7b, 0xb0, 0x53, 0x0f, 0x8e, 0x51, 0xbc, 0x07, 0x6b, 0x2f, 0xb3,
0x30, 0x9d, 0xef, 0x5e, 0xbe, 0x71, 0x4d, 0x93, 0x51, 0xfc, 0x0f, 0x07, 0xda, 0x45, 0xfa, 0x4e,
0xef, 0x8b, 0xd9, 0x67, 0xb4, 0x05, 0xcb, 0xa3, 0x70, 0x9c, 0x92, 0x44, 0x6c, 0xb7, 0xe9, 0xc9,
0xaf, 0x05, 0xe5, 0xd3, 0x39, 0x6c, 0xd9, 0x00, 0xd5, 0xe6, 0xd1, 0x33, 0x80, 0xc9, 0xf4, 0xfa,
0xcb, 0x8b, 0xc8, 0xfb, 0x75, 0x19, 0x94, 0xcf, 0xf8, 0x2c, 0x1b, 0x8f, 0x45, 0x15, 0xd5, 0x2c,
0xb1, 0x57, 0x5d, 0x57, 0xdd, 0x2b, 0x33, 0xa3, 0x55, 0x5b, 0xbb, 0x21, 0x2e, 0x1c, 0x7d, 0x4e,
0x1f, 0xb6, 0xad, 0x73, 0x32, 0xba, 0x30, 0xd8, 0x09, 0xa0, 0xcf, 0xc3, 0xc1, 0xa9, 0xa6, 0x36,
0x1b, 0xf2, 0x77, 0x60, 0xe3, 0x34, 0x1c, 0x9c, 0x92, 0x61, 0x1e, 0x9f, 0x1a, 0x70, 0x43, 0xce,
0x0f, 0x3a, 0x21, 0x3e, 0x8b, 0x23, 0x19, 0xf4, 0xf2, 0x0b, 0xb7, 0x61, 0xd3, 0x58, 0x93, 0x51,
0xfc, 0x07, 0x11, 0x4a, 0x3c, 0xb1, 0xc8, 0x50, 0x8c, 0x15, 0xa1, 0x54, 0xce, 0x11, 0xc7, 0xc8,
0x91, 0xc5, 0x04, 0xce, 0x6b, 0x71, 0x80, 0xc6, 0xf2, 0xb5, 0x81, 0x53, 0xd0, 0x8f, 0x4b, 0xdf,
0xf9, 0x53, 0x75, 0x7c, 0x0e, 0xb7, 0x0e, 0x44, 0x45, 0xe1, 0x3b, 0x78, 0x15, 0xdb, 0x32, 0x6f,
0xc9, 0x48, 0x1a, 0xe9, 0xcb, 0x6b, 0xba, 0x2f, 0xd1, 0x43, 0xb8, 0x99, 0xd7, 0x26, 0xfd, 0x40,
0x9a, 0xe2, 0x40, 0xcc, 0x01, 0xbc, 0x0d, 0x6d, 0xcb, 0xba, 0x8c, 0xe2, 0xdf, 0xc0, 0x2d, 0x75,
0x0b, 0x8f, 0xc7, 0x97, 0x09, 0x84, 0x2d, 0x58, 0x8e, 0x47, 0x23, 0x46, 0xd2, 0x22, 0x8b, 0xf3,
0x2f, 0xee, 0xac, 0x41, 0x9c, 0x45, 0xa9, 0x2c, 0xae, 0xf9, 0x07, 0x3e, 0x9e, 0x96, 0x09, 0x6d,
0xfe, 0x05, 0xc6, 0xf1, 0xbf, 0x1d, 0x58, 0x79, 0xd2, 0xeb, 0x0b, 0xb5, 0x32, 0x33, 0x74, 0xae,
0x46, 0x57, 0xbb, 0x80, 0x02, 0x75, 0xfd, 0x70, 0x37, 0x1d, 0xf9, 0x93, 0xe2, 0x26, 0xb1, 0x8c,
0xf0, 0x84, 0x28, 0x4b, 0xd5, 0xd9, 0x19, 0x72, 0xfc, 0x57, 0x07, 0xd6, 0x14, 0x81, 0x5c, 0x1c,
0xc7, 0xda, 0x91, 0xdb, 0xd5, 0x90, 0x4e, 0x05, 0xf5, 0x31, 0x85, 0x5f, 0xc1, 0xba, 0x86, 0x86,
0x51, 0xf4, 0x6d, 0x58, 0x16, 0x63, 0x4c, 0x90, 0xdf, 0x1b, 0x8f, 0x5b, 0xdd, 0xbc, 0x41, 0x29,
0x1c, 0xeb, 0xc9, 0x61, 0xe4, 0xc2, 0x8a, 0x10, 0x1c, 0x65, 0x13, 0x31, 0x69, 0xd3, 0x53, 0xdf,
0xf8, 0xd1, 0x94, 0x24, 0x5f, 0x22, 0x8e, 0xf0, 0x3f, 0x8d, 0x1b, 0x84, 0x3d, 0xe9, 0xf5, 0x67,
0xc7, 0x9e, 0x0b, 0x2b, 0x59, 0xf9, 0x64, 0xd4, 0x77, 0xc5, 0xa5, 0x4b, 0x6f, 0x59, 0x0c, 0xfe,
0xe7, 0x18, 0xe5, 0x5c, 0xa0, 0x62, 0x14, 0xfd, 0x14, 0xae, 0xe7, 0x71, 0x57, 0x78, 0xe9, 0xb2,
0xe1, 0x5a, 0x98, 0xa1, 0x9f, 0x59, 0xea, 0xd5, 0xb7, 0xac, 0x10, 0xf3, 0x4b, 0xba, 0x9e, 0x5a,
0xe7, 0x33, 0x1e, 0x65, 0x13, 0x26, 0x8f, 0x41, 0x93, 0xe0, 0xef, 0x42, 0xeb, 0x69, 0xc8, 0x26,
0x21, 0x63, 0xf3, 0xeb, 0x0b, 0x6f, 0x10, 0xca, 0xca, 0x8c, 0xe2, 0xd7, 0x80, 0x7a, 0x99, 0xec,
0xb8, 0xac, 0x47, 0x69, 0xd6, 0xa8, 0x4c, 0xe7, 0x31, 0x05, 0x51, 0xc6, 0xb0, 0x36, 0xc9, 0x52,
0x32, 0xec, 0x93, 0x41, 0x1c, 0x0d, 0x99, 0xa8, 0x0c, 0xeb, 0x5e, 0x49, 0xc6, 0xef, 0x04, 0x63,
0x2d, 0x46, 0xf1, 0x21, 0x74, 0x9e, 0xf8, 0xd1, 0x80, 0x8c, 0x17, 0x01, 0x04, 0xdf, 0x81, 0xdb,
0x35, 0xb3, 0xe5, 0x2c, 0x48, 0x89, 0x67, 0xfb, 0xaa, 0x05, 0xeb, 0x9a, 0x26, 0xa3, 0xb8, 0x0b,
0xa8, 0x32, 0xef, 0xec, 0x09, 0xda, 0xb0, 0x69, 0xe8, 0x33, 0x8a, 0x43, 0xb8, 0xdd, 0x2f, 0xc5,
0xdc, 0x51, 0x38, 0x38, 0x8d, 0xfc, 0x09, 0x99, 0x9b, 0x0d, 0x91, 0x54, 0x2c, 0xb2, 0xa1, 0xf8,
0xd6, 0x3c, 0xd1, 0x2c, 0x79, 0x62, 0x07, 0xdc, 0xba, 0xa5, 0x18, 0xc5, 0xbf, 0x13, 0x8d, 0x61,
0x7e, 0x15, 0xf6, 0x33, 0x2a, 0x09, 0xf9, 0x62, 0x1b, 0xc3, 0x29, 0xb2, 0x46, 0x09, 0x59, 0x2c,
0xfa, 0x41, 0xfb, 0xda, 0xdf, 0xc8, 0x5d, 0xfc, 0x91, 0xa8, 0x3f, 0xd3, 0xa5, 0xae, 0xf0, 0x1e,
0xf0, 0x2b, 0x51, 0x24, 0x0c, 0xd3, 0x05, 0x3d, 0x0a, 0xfc, 0xa7, 0x01, 0xed, 0xf2, 0x21, 0xcd,
0x67, 0x94, 0x35, 0x5e, 0x45, 0x3f, 0xd4, 0x62, 0xa4, 0x29, 0x2f, 0xc4, 0x20, 0x8e, 0x83, 0x31,
0xc9, 0x1f, 0x87, 0x4e, 0xb2, 0x51, 0xb7, 0x9f, 0x26, 0x61, 0x14, 0xfc, 0xd2, 0x1f, 0x67, 0x44,
0x8b, 0xa0, 0x0f, 0xe1, 0xfa, 0xc8, 0x1f, 0x90, 0x2f, 0xbc, 0x43, 0xd1, 0x5b, 0xcc, 0x33, 0x2c,
0x94, 0xd1, 0x47, 0xb0, 0x9a, 0xc4, 0x63, 0x72, 0x48, 0xce, 0xc9, 0xb8, 0x73, 0x5d, 0x58, 0xde,
0x31, 0x2c, 0x0f, 0xa2, 0xf4, 0x83, 0xc7, 0xb9, 0xe1, 0x54, 0x1b, 0x3d, 0x84, 0x06, 0x79, 0xd3,
0x59, 0xb9, 0xc4, 0x6a, 0x0d, 0xf2, 0x86, 0xf7, 0x8d, 0x36, 0x2f, 0x31, 0x8a, 0x7f, 0x30, 0xa5,
0xcf, 0x9f, 0x9c, 0xb0, 0x34, 0xf1, 0x07, 0x69, 0xe1, 0x41, 0x17, 0x56, 0xa4, 0xcb, 0x98, 0x3c,
0x58, 0xf5, 0x8d, 0xff, 0xe6, 0xc0, 0x4d, 0xc3, 0x68, 0x86, 0xcf, 0x1f, 0xca, 0xd7, 0xbc, 0x5e,
0x51, 0x7a, 0x4f, 0x48, 0x22, 0xdc, 0xdf, 0xf4, 0xcc, 0x01, 0xf4, 0x3d, 0xd8, 0x0c, 0xca, 0xcd,
0xc9, 0x67, 0x3e, 0xfb, 0x5a, 0x54, 0x88, 0x6b, 0x9e, 0x6d, 0x08, 0x0f, 0xa1, 0x63, 0xdf, 0x06,
0xa3, 0xe8, 0x33, 0xc9, 0x56, 0xf4, 0x81, 0xe2, 0x5e, 0xea, 0xc8, 0xdb, 0xdb, 0xb4, 0xb4, 0xd8,
0x3c, 0xfe, 0xcb, 0x06, 0xe4, 0x2f, 0x90, 0xe8, 0x27, 0x70, 0x63, 0x30, 0x7d, 0x6a, 0x43, 0xed,
0x82, 0x04, 0x94, 0x9e, 0x0e, 0xdd, 0x2d, 0x9b, 0x98, 0x51, 0xf4, 0x21, 0xac, 0xbe, 0x2e, 0x7a,
0x63, 0xb4, 0x29, 0x95, 0xf4, 0xee, 0xdd, 0xbd, 0x65, 0x0a, 0x73, 0xbb, 0xb3, 0xa2, 0xb5, 0x54,
0x76, 0x7a, 0x5b, 0xaa, 0xec, 0x4a, 0x1d, 0xa8, 0xc8, 0x34, 0xfd, 0x4d, 0x0e, 0x6d, 0x17, 0xdb,
0xae, 0xbc, 0xef, 0xb9, 0x1d, 0xfb, 0x00, 0xa3, 0xe8, 0x63, 0x58, 0x63, 0xda, 0xeb, 0x18, 0x2a,
0xf6, 0x56, 0x79, 0x93, 0x73, 0xb7, 0xad, 0x72, 0x46, 0xd1, 0x6f, 0x61, 0x3b, 0xb0, 0x3f, 0x62,
0xa1, 0x77, 0x2b, 0xab, 0x9a, 0x0f, 0x4c, 0x2e, 0x9e, 0xa7, 0xc2, 0x28, 0x1a, 0xc1, 0xed, 0xa0,
0xee, 0x95, 0x08, 0xbd, 0x37, 0x9d, 0xa0, 0xf6, 0x19, 0xcb, 0x7d, 0x30, 0x5f, 0x89, 0x51, 0xf4,
0x12, 0x50, 0x6a, 0xbc, 0xc2, 0xa0, 0x1d, 0x69, 0x6b, 0x7d, 0x23, 0x72, 0xef, 0xce, 0x18, 0x65,
0x14, 0x0d, 0xa0, 0x13, 0xd4, 0x3c, 0x3f, 0x20, 0x5c, 0x8a, 0x51, 0xeb, 0xe3, 0x89, 0xfb, 0xde,
0x5c, 0x9d, 0x1c, 0x77, 0x60, 0xb4, 0xfd, 0x0a, 0xb7, 0xf5, 0x89, 0x42, 0xe1, 0xae, 0x79, 0x2f,
0x78, 0x05, 0x9b, 0x81, 0xd9, 0x7d, 0x23, 0xbb, 0x95, 0x8a, 0xb2, 0x7b, 0xb3, 0x86, 0x45, 0xc6,
0xb6, 0x4e, 0xcb, 0xcd, 0x2f, 0xba, 0x2d, 0x4d, 0xcc, 0x46, 0xdc, 0x75, 0xeb, 0x86, 0xd4, 0x96,
0x2b, 0x0d, 0xab, 0xbe, 0x65, 0xb3, 0x95, 0xd6, 0xb7, 0x6c, 0xeb, 0x74, 0x8f, 0x8a, 0x6e, 0x52,
0xeb, 0x0f, 0xd1, 0x1d, 0x69, 0x63, 0xeb, 0x58, 0xdd, 0x9d, 0xfa, 0xc1, 0x3c, 0xa9, 0x55, 0xb6,
0xa9, 0xa4, 0xd6, 0x3b, 0x20, 0x95, 0xd4, 0xe5, 0x46, 0xe4, 0x25, 0x20, 0x93, 0x7d, 0xd7, 0x9c,
0xa6, 0x6c, 0x17, 0x6a, 0x4e, 0x53, 0xd1, 0xf6, 0x8f, 0x61, 0x4d, 0x27, 0xb8, 0x2a, 0xc7, 0x2b,
0x14, 0x59, 0xe5, 0x78, 0x95, 0x0d, 0xf3, 0x83, 0xab, 0xd0, 0x46, 0x75, 0x70, 0x26, 0x39, 0x55,
0x07, 0x67, 0x61, 0x9a, 0xe8, 0x2b, 0x68, 0x5b, 0x69, 0x28, 0xba, 0x5f, 0xd4, 0xd4, 0x1a, 0xca,
0xeb, 0xee, 0xce, 0x56, 0xc8, 0x3d, 0xae, 0xc4, 0xca, 0xe3, 0x3a, 0x2d, 0x55, 0x1e, 0x2f, 0x71,
0x4f, 0xbe, 0xbb, 0xca, 0xa4, 0x6a, 0x77, 0x26, 0xb5, 0x55, 0xbb, 0xb3, 0xb0, 0x58, 0x5e, 0x0b,
0x6b, 0x08, 0x9c, 0x5e, 0x0b, 0x6b, 0xc8, 0xa5, 0x5e, 0x0b, 0x6b, 0x39, 0x60, 0x1e, 0x1d, 0x15,
0xda, 0xa5, 0x47, 0x87, 0x49, 0xe6, 0xf4, 0xe8, 0xb0, 0xf1, 0xb5, 0x5f, 0x57, 0x49, 0x44, 0xc1,
0x87, 0xd1, 0x6e, 0xa5, 0xe6, 0x1b, 0xcc, 0xdc, 0x7d, 0x77, 0x8e, 0x46, 0x8e, 0xd8, 0xe4, 0x28,
0x0a, 0xb1, 0x95, 0xe4, 0x29, 0xc4, 0x76, 0x72, 0x83, 0xbe, 0xd4, 0x5e, 0x6c, 0x74, 0x9e, 0x52,
0xad, 0x3f, 0x15, 0xe6, 0xe3, 0xde, 0x9f, 0x39, 0xce, 0xe8, 0xa7, 0xf7, 0xbf, 0xba, 0xfb, 0x82,
0x92, 0xe8, 0xf8, 0xa0, 0xa7, 0xfd, 0xa3, 0x28, 0x6c, 0x7e, 0x2c, 0x7e, 0x4f, 0x96, 0x85, 0xe8,
0x83, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x22, 0x4e, 0x92, 0x9d, 0xc4, 0x1c, 0x00, 0x00,
}

@ -118,13 +118,8 @@ message KickGroupMemberReq {
string reason = 3;
}
message Id2Result {
string userID = 1;
int32 result = 2; //0 ok; -1 error
}
message KickGroupMemberResp {
repeated Id2Result id2ResultList = 3;
}
@ -144,7 +139,7 @@ message InviteUserToGroupReq {
repeated string invitedUserIDList = 5;
}
message InviteUserToGroupResp {
repeated Id2Result id2ResultList = 3; // 0 ok, -1 error
}

File diff suppressed because it is too large Load Diff

@ -13,16 +13,16 @@ message GroupInfo{
string introduction = 4;
string faceURL = 5;
string ownerUserID = 6;
uint32 createTime = 7;
int64 createTime = 7;
uint32 memberCount = 8;
string ex = 9;
int32 status = 10;
string creatorUserID = 11;
int32 groupType = 12;
int32 needVerification = 13;
int32 lookMemberInfo =14;
int32 lookMemberInfo = 14;
int32 applyMemberFriend = 15;
uint32 notificationUpdateTime = 16;
int64 notificationUpdateTime = 16;
string notificationUserID = 17;
}
@ -33,9 +33,9 @@ message GroupInfoForSet{
string introduction = 4;
string faceURL = 5;
string ex = 6;
google.protobuf.Int32Value needVerification = 7;
google.protobuf.Int32Value lookMemberInfo = 8;
google.protobuf.Int32Value applyMemberFriend = 9;
google.protobuf.Int32Value needVerification = 7;
google.protobuf.Int32Value lookMemberInfo = 8;
google.protobuf.Int32Value applyMemberFriend = 9;
}
@ -43,14 +43,14 @@ message GroupMemberFullInfo {
string groupID = 1 ;
string userID = 2 ;
int32 roleLevel = 3;
int32 joinTime = 4;
int64 joinTime = 4;
string nickname = 5;
string faceURL = 6;
int32 appMangerLevel = 7; //if >0
int32 joinSource = 8;
string operatorUserID = 9;
string ex = 10;
uint32 muteEndTime = 11;
int64 muteEndTime = 11;
string inviterUserID = 12;
}
@ -71,7 +71,7 @@ message UserInfo{
uint32 birth = 6;
string email = 7;
string ex = 8;
uint32 createTime = 9;
int64 createTime = 9;
int32 appMangerLevel = 10;
int32 globalRecvMsgOpt = 11;
int64 birthday = 13;
@ -80,7 +80,7 @@ message UserInfo{
message FriendInfo{
string ownerUserID = 1;
string remark = 2;
uint32 createTime = 3;
int64 createTime = 3;
UserInfo friendUser = 4;
int32 addSource = 5;
string operatorUserID = 6;
@ -89,7 +89,7 @@ message FriendInfo{
message BlackInfo{
string ownerUserID = 1;
uint32 createTime = 2;
int64 createTime = 2;
PublicUserInfo blackUserInfo = 3;
int32 addSource = 4;
string operatorUserID = 5;
@ -102,9 +102,9 @@ message GroupRequest{
int32 handleResult = 3;
string reqMsg = 4;
string handleMsg = 5;
uint32 reqTime = 6;
int64 reqTime = 6;
string handleUserID = 7;
uint32 handleTime = 8;
int64 handleTime = 8;
string ex = 9;
int32 joinSource = 10;
string inviterUserID = 11;
@ -121,13 +121,76 @@ message FriendRequest{
int32 toGender = 8;
int32 handleResult = 9;
string reqMsg = 10;
uint32 createTime = 11;
int64 createTime = 11;
string handlerUserID = 12;
string handleMsg = 13;
uint32 handleTime = 14;
int64 handleTime = 14;
string ex = 15;
}
///////////////////////////////////organization/////////////////////////////////////
message Department {
string departmentID = 1;
string faceURL = 2;
string name = 3;
string parentID = 4;
int32 order = 5;
int32 departmentType = 6;
int64 createTime = 7;
uint32 subDepartmentNum = 8;
uint32 memberNum = 9;
string ex = 10;
}
message OrganizationUser {
string userID = 1;
string nickname = 2;
string englishName = 3;
string faceURL = 4;
int32 gender = 5;
string mobile = 6;
string telephone = 7;
uint32 birth = 8;
string email = 9;
int64 createTime = 10;
string ex = 11;
string birthStr = 12;
}
message DepartmentMember {
string userID = 1;
string departmentID = 2;
int32 order = 3;
string position = 4;
int32 leader = 5;
int32 status = 6;
string ex = 7;
}
message UserDepartmentMember {
OrganizationUser organizationUser = 1;
DepartmentMember departmentMember = 2;
}
message UserInDepartment {
OrganizationUser organizationUser = 1;
repeated DepartmentMember departmentMemberList = 2;
}
///////////////////////////////////organization end//////////////////////////////////
///////////////////////////////////base end/////////////////////////////////////
@ -139,12 +202,12 @@ message PullMessageBySeqListReq{
}
message seqList {
repeated uint32 seqList = 1;
repeated uint32 seqList = 1;
}
message MsgDataList {
repeated MsgData msgDataList = 1;
repeated MsgData msgDataList = 1;
}
message PullMessageBySeqListResp {
@ -157,9 +220,9 @@ message PullMessageBySeqListResp {
message GetMaxAndMinSeqReq {
repeated string groupIDList = 1;
string userID = 2;
string operationID =3;
repeated string groupIDList = 1;
string userID = 2;
string operationID = 3;
}
message MaxAndMinSeq{
uint32 maxSeq = 1;
@ -389,7 +452,7 @@ message FriendApplicationApprovedTips{
//FromUserID accept or reject ToUserID
message FriendApplicationRejectedTips{
FromToUserID fromToUserID = 1;
string handleMsg = 2;
string handleMsg = 2;
}
@ -426,23 +489,23 @@ message UserInfoUpdatedTips{
//////////////////////conversation/////////////////////
message ConversationUpdateTips{
string UserID = 1;
repeated string conversationIDList = 2;
int64 updateUnreadCountTime = 3;
string UserID = 1;
repeated string conversationIDList = 2;
int64 updateUnreadCountTime = 3;
}
message ConversationSetPrivateTips{
string recvID = 1;
string sendID = 2;
bool isPrivate = 3;
string recvID = 1;
string sendID = 2;
bool isPrivate = 3;
}
////////////////////message///////////////////////
message DeleteMessageTips{
string opUserID = 1;
string userID =2;
string userID = 2;
repeated uint32 seqList = 3;
}
///cms
@ -456,24 +519,24 @@ message RequestPagination {
///////////////////signal//////////////
message SignalReq {
oneof payload {
SignalInviteReq invite = 1;
SignalInviteInGroupReq inviteInGroup= 2;
SignalCancelReq cancel = 3;
SignalAcceptReq accept = 4;
SignalHungUpReq hungUp = 5;
SignalRejectReq reject = 6;
SignalGetRoomByGroupIDReq getRoomByGroupID = 7;
SignalOnRoomParticipantConnectedReq onRoomParticipantConnectedReq = 8;
SignalOnRoomParticipantDisconnectedReq onRoomParticipantDisconnectedReq = 9;
SignalGetTokenByRoomIDReq getTokenByRoomID = 10;
SignalInviteReq invite = 1;
SignalInviteInGroupReq inviteInGroup = 2;
SignalCancelReq cancel = 3;
SignalAcceptReq accept = 4;
SignalHungUpReq hungUp = 5;
SignalRejectReq reject = 6;
SignalGetRoomByGroupIDReq getRoomByGroupID = 7;
SignalOnRoomParticipantConnectedReq onRoomParticipantConnectedReq = 8;
SignalOnRoomParticipantDisconnectedReq onRoomParticipantDisconnectedReq = 9;
SignalGetTokenByRoomIDReq getTokenByRoomID = 10;
}
}
message SignalResp {
oneof payload {
SignalInviteReply invite = 1;
SignalInviteInGroupReply inviteInGroup= 2;
SignalInviteInGroupReply inviteInGroup = 2;
SignalCancelReply cancel = 3;
SignalAcceptReply accept = 4;
SignalHungUpReply hungUp = 5;
@ -485,30 +548,30 @@ message SignalResp {
message InvitationInfo {
string inviterUserID = 1;
repeated string inviteeUserIDList = 2;
string customData = 3;
string groupID = 4;
string roomID = 5;
int32 timeout = 6;
string mediaType = 7;
int32 platformID = 8;
int32 sessionType = 9;
int32 initiateTime = 10;
repeated string busyLineUserIDList = 11;
string inviterUserID = 1;
repeated string inviteeUserIDList = 2;
string customData = 3;
string groupID = 4;
string roomID = 5;
int32 timeout = 6;
string mediaType = 7;
int32 platformID = 8;
int32 sessionType = 9;
int32 initiateTime = 10;
repeated string busyLineUserIDList = 11;
}
message ParticipantMetaData{
GroupInfo groupInfo = 1;
GroupMemberFullInfo groupMemberInfo = 2;
PublicUserInfo userInfo = 3;
GroupInfo groupInfo = 1;
GroupMemberFullInfo groupMemberInfo = 2;
PublicUserInfo userInfo = 3;
}
message SignalInviteReq {
string opUserID = 1;
InvitationInfo invitation = 2;
OfflinePushInfo offlinePushInfo = 3;
ParticipantMetaData participant = 4;
string opUserID = 1;
InvitationInfo invitation = 2;
OfflinePushInfo offlinePushInfo = 3;
ParticipantMetaData participant = 4;
}
@ -522,7 +585,7 @@ message SignalInviteReply {
message SignalInviteInGroupReq {
string opUserID = 1;
InvitationInfo invitation = 2;
OfflinePushInfo offlinePushInfo = 3;
OfflinePushInfo offlinePushInfo = 3;
ParticipantMetaData participant = 4;
}
@ -536,7 +599,7 @@ message SignalInviteInGroupReply {
message SignalCancelReq {
string opUserID = 1;
InvitationInfo invitation = 2;
OfflinePushInfo offlinePushInfo = 3;
OfflinePushInfo offlinePushInfo = 3;
ParticipantMetaData participant = 4;
}
@ -547,7 +610,7 @@ message SignalCancelReply {
message SignalAcceptReq {
string opUserID = 1;
InvitationInfo invitation = 2;
OfflinePushInfo offlinePushInfo = 3;
OfflinePushInfo offlinePushInfo = 3;
ParticipantMetaData participant = 4;
int32 opUserPlatformID = 5;
}
@ -561,7 +624,7 @@ message SignalAcceptReply {
message SignalHungUpReq {
string opUserID = 1;
InvitationInfo invitation = 2;
OfflinePushInfo offlinePushInfo = 3;
OfflinePushInfo offlinePushInfo = 3;
}
message SignalHungUpReply {
@ -572,7 +635,7 @@ message SignalHungUpReply {
message SignalRejectReq {
string opUserID = 1;
InvitationInfo invitation = 2;
OfflinePushInfo offlinePushInfo = 3;
OfflinePushInfo offlinePushInfo = 3;
ParticipantMetaData participant = 4;
int32 opUserPlatformID = 5;
}
@ -619,10 +682,10 @@ message SignalGetTokenByRoomIDReply {
message DelMsgListReq{
string opUserID = 1;
string userID = 2;
repeated uint32 seqList = 3;
string operationID = 4;
string opUserID = 1;
string userID = 2;
repeated uint32 seqList = 3;
string operationID = 4;
}
message DelMsgListResp{
@ -664,4 +727,8 @@ message KeyValue {
}
message ResponsePagination {
int32 CurrentPage = 5;
int32 ShowNumber = 6;
}

File diff suppressed because it is too large Load Diff

@ -124,33 +124,6 @@ message GetUsersResp{
repeated server_api_params.UserInfo users = 2;
}
message AddUserReq{
server_api_params.UserInfo userInfo = 1;
string operationID = 2;
}
message AddUserResp{
}
message GetBlockUsersReq{
server_api_params.RequestPagination pagination = 1;
string operationID = 2;
string userID = 3;
int32 totalBlockUserNum = 4;
}
message BlockUser {
server_api_params.UserInfo UserInfo = 1;
string BeginDisableTime = 2;
string EndDisableTime = 3;
}
message GetBlockUsersResp{
repeated BlockUser BlockUsers = 2;
server_api_params.ResponsePagination Pagination = 3;
int32 UserNums = 4;
}
service user {
//

Loading…
Cancel
Save