organization

This commit is contained in:
skiffer-git 2022-04-16 20:10:10 +08:00
parent c65f5b7279
commit cc405b83e2
19 changed files with 670 additions and 333 deletions

@ -1 +1 @@
Subproject commit a4b710de8df31fe570fd90895887edef30f3a64c Subproject commit 3ecd23203cd6bd746b1fcb0c70755bd2cbf5361c

View File

@ -152,7 +152,7 @@ func main() {
{ {
organizationGroup.POST("/create_department", organization.CreateDepartment) organizationGroup.POST("/create_department", organization.CreateDepartment)
organizationGroup.POST("/update_department", organization.UpdateDepartment) organizationGroup.POST("/update_department", organization.UpdateDepartment)
organizationGroup.POST("/get_department", organization.GetDepartment) organizationGroup.POST("/get_department", organization.GetSubDepartment)
organizationGroup.POST("/delete_department", organization.DeleteDepartment) organizationGroup.POST("/delete_department", organization.DeleteDepartment)
organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser) organizationGroup.POST("/create_organization_user", organization.CreateOrganizationUser)
organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser) organizationGroup.POST("/update_organization_user", organization.UpdateOrganizationUser)
@ -161,6 +161,7 @@ func main() {
organizationGroup.POST("/update_user_In_department", organization.UpdateUserInDepartment) organizationGroup.POST("/update_user_In_department", organization.UpdateUserInDepartment)
organizationGroup.POST("/delete_organization_user", organization.DeleteOrganizationUser) organizationGroup.POST("/delete_organization_user", organization.DeleteOrganizationUser)
organizationGroup.POST("/get_department_member", organization.GetDepartmentMember) organizationGroup.POST("/get_department_member", organization.GetDepartmentMember)
organizationGroup.POST("/delete_user_in_department", organization.DeleteUserInDepartment)
} }
go apiThird.MinioInit() go apiThird.MinioInit()

View File

@ -0,0 +1,25 @@
.PHONY: all build run gotool install clean help
BINARY_NAME=open_im_organization
BIN_DIR=../../../bin/
all: gotool build
build:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s"
run:
@go run ./
gotool:
go fmt ./
go vet ./
install:
make build
mv ${BINARY_NAME} ${BIN_DIR}
clean:
@if [ -f ${BINARY_NAME} ] ; then rm ${BINARY_NAME} ; fi

View File

@ -0,0 +1,15 @@
package main
import (
"Open_IM/internal/rpc/group"
"flag"
"fmt"
)
func main() {
rpcPort := flag.Int("port", 10100, "get RpcOrganizationPort from cmd,default 10100 as port")
flag.Parse()
fmt.Println("start organization rpc server, port: ", *rpcPort)
rpcServer := group.NewGroupServer(*rpcPort)
rpcServer.Run()
}

View File

@ -84,14 +84,14 @@ func UpdateDepartment(c *gin.Context) {
c.JSON(http.StatusOK, apiResp) c.JSON(http.StatusOK, apiResp)
} }
func GetDepartment(c *gin.Context) { func GetSubDepartment(c *gin.Context) {
params := api.GetDepartmentReq{} params := api.GetDepartmentReq{}
if err := c.BindJSON(&params); err != nil { if err := c.BindJSON(&params); err != nil {
log.NewError("0", "BindJSON failed ", err.Error()) log.NewError("0", "BindJSON failed ", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return return
} }
req := &rpc.GetDepartmentReq{} req := &rpc.GetSubDepartmentReq{}
utils.CopyStructFields(req, &params) utils.CopyStructFields(req, &params)
err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID) err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID)
req.OpUserID = opUserID req.OpUserID = opUserID
@ -105,7 +105,7 @@ func GetDepartment(c *gin.Context) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName) etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
client := rpc.NewOrganizationClient(etcdConn) client := rpc.NewOrganizationClient(etcdConn)
RpcResp, err := client.GetDepartment(context.Background(), req) RpcResp, err := client.GetSubDepartment(context.Background(), req)
if err != nil { if err != nil {
errMsg := "rpc GetDepartment failed " + err.Error() + req.String() errMsg := "rpc GetDepartment failed " + err.Error() + req.String()
log.NewError(req.OperationID, errMsg) log.NewError(req.OperationID, errMsg)
@ -398,3 +398,37 @@ func GetDepartmentMember(c *gin.Context) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp)
c.JSON(http.StatusOK, apiResp) c.JSON(http.StatusOK, apiResp)
} }
func DeleteUserInDepartment(c *gin.Context) {
params := api.DeleteUserInDepartmentReq{}
if err := c.BindJSON(&params); err != nil {
log.NewError("0", "BindJSON failed ", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return
}
req := &rpc.DeleteUserInDepartmentReq{}
utils.CopyStructFields(req, &params)
err, opUserID := token_verify.ParseTokenGetUserID(c.Request.Header.Get("token"), req.OperationID)
req.OpUserID = opUserID
if err != nil {
errMsg := "ParseTokenGetUserID failed " + err.Error() + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api args ", req.String())
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
client := rpc.NewOrganizationClient(etcdConn)
RpcResp, err := client.DeleteUserInDepartment(context.Background(), req)
if err != nil {
errMsg := "rpc DeleteUserInDepartment failed " + err.Error() + req.String()
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
apiResp := api.GetDepartmentMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "api return ", apiResp)
c.JSON(http.StatusOK, apiResp)
}

View File

@ -101,7 +101,7 @@ func (r *RPCServer) OnlinePushMsg(_ context.Context, in *pbRelay.OnlinePushMsgRe
} }
func (r *RPCServer) GetUsersOnlineStatus(_ context.Context, req *pbRelay.GetUsersOnlineStatusReq) (*pbRelay.GetUsersOnlineStatusResp, error) { func (r *RPCServer) GetUsersOnlineStatus(_ context.Context, req *pbRelay.GetUsersOnlineStatusReq) (*pbRelay.GetUsersOnlineStatusResp, error) {
log.NewInfo(req.OperationID, "rpc GetUsersOnlineStatus arrived server", req.String()) log.NewInfo(req.OperationID, "rpc GetUsersOnlineStatus arrived server", req.String())
if !token_verify.IsMangerUserID(req.OpUserID) { if !token_verify.IsManagerUserID(req.OpUserID) {
log.NewError(req.OperationID, "no permission GetUsersOnlineStatus ", req.OpUserID) log.NewError(req.OperationID, "no permission GetUsersOnlineStatus ", req.OpUserID)
return &pbRelay.GetUsersOnlineStatusResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil return &pbRelay.GetUsersOnlineStatusResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
} }

View File

@ -202,7 +202,7 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbGroup.GetJo
func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.InviteUserToGroupReq) (*pbGroup.InviteUserToGroupResp, error) { func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.InviteUserToGroupReq) (*pbGroup.InviteUserToGroupResp, error) {
log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String()) log.NewInfo(req.OperationID, "InviteUserToGroup args ", req.String())
if !imdb.IsExistGroupMember(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { if !imdb.IsExistGroupMember(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) {
log.NewError(req.OperationID, "no permission InviteUserToGroup ", req.GroupID, req.OpUserID) log.NewError(req.OperationID, "no permission InviteUserToGroup ", req.GroupID, req.OpUserID)
return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil return &pbGroup.InviteUserToGroupResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
} }
@ -331,7 +331,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou
//op is app manager //op is app manager
if flag != 1 { if flag != 1 {
if token_verify.IsMangerUserID(req.OpUserID) { if token_verify.IsManagerUserID(req.OpUserID) {
flag = 1 flag = 1
log.NewDebug(req.OperationID, "is app manager ", req.OpUserID) log.NewDebug(req.OperationID, "is app manager ", req.OpUserID)
} }
@ -467,8 +467,8 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G
groupRequest.UserID = req.FromUserID groupRequest.UserID = req.FromUserID
groupRequest.HandleUserID = req.OpUserID groupRequest.HandleUserID = req.OpUserID
groupRequest.HandledTime = time.Now() groupRequest.HandledTime = time.Now()
if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { if !token_verify.IsManagerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) {
log.NewError(req.OperationID, "IsMangerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID) log.NewError(req.OperationID, "IsManagerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID)
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }
err := imdb.UpdateGroupRequest(groupRequest) err := imdb.UpdateGroupRequest(groupRequest)
@ -948,7 +948,7 @@ func (s *groupServer) GetUserReqApplicationList(_ context.Context, req *pbGroup.
func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (*pbGroup.DismissGroupResp, error) { func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (*pbGroup.DismissGroupResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String())
if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) { if !token_verify.IsManagerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) {
log.NewError(req.OperationID, "verify failed ", req.OpUserID, req.GroupID) log.NewError(req.OperationID, "verify failed ", req.OpUserID, req.GroupID)
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }
@ -977,7 +977,7 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou
func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (*pbGroup.MuteGroupMemberResp, error) { func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (*pbGroup.MuteGroupMemberResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String())
if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) {
log.Error(req.OperationID, "verify failed ", req.GroupID, req.UserID) log.Error(req.OperationID, "verify failed ", req.GroupID, req.UserID)
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }
@ -996,7 +996,7 @@ func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGrou
func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) { func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String())
if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) {
log.Error(req.OperationID, "verify failed ", req.OpUserID, req.GroupID) log.Error(req.OperationID, "verify failed ", req.OpUserID, req.GroupID)
return &pbGroup.CancelMuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil return &pbGroup.CancelMuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }
@ -1014,7 +1014,7 @@ func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.Ca
func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) (*pbGroup.MuteGroupResp, error) { func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq) (*pbGroup.MuteGroupResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String())
if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) {
log.Error(req.OperationID, "verify failed ", req.GroupID, req.GroupID) log.Error(req.OperationID, "verify failed ", req.GroupID, req.GroupID)
return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil return &pbGroup.MuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }
@ -1030,7 +1030,7 @@ func (s *groupServer) MuteGroup(ctx context.Context, req *pbGroup.MuteGroupReq)
func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMuteGroupReq) (*pbGroup.CancelMuteGroupResp, error) { func (s *groupServer) CancelMuteGroup(ctx context.Context, req *pbGroup.CancelMuteGroupReq) (*pbGroup.CancelMuteGroupResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String())
if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsMangerUserID(req.OpUserID) { if !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) && !token_verify.IsManagerUserID(req.OpUserID) {
log.Error(req.OperationID, "verify failed ", req.OpUserID, req.GroupID) log.Error(req.OperationID, "verify failed ", req.OpUserID, req.GroupID)
return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil return &pbGroup.CancelMuteGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }

View File

@ -22,7 +22,7 @@ import (
//} creator->group //} creator->group
func setOpUserInfo(opUserID, groupID string, groupMemberInfo *open_im_sdk.GroupMemberFullInfo) error { func setOpUserInfo(opUserID, groupID string, groupMemberInfo *open_im_sdk.GroupMemberFullInfo) error {
if token_verify.IsMangerUserID(opUserID) { if token_verify.IsManagerUserID(opUserID) {
u, err := imdb.GetUserByUserID(opUserID) u, err := imdb.GetUserByUserID(opUserID)
if err != nil { if err != nil {
return utils.Wrap(err, "GetUserByUserID failed") return utils.Wrap(err, "GetUserByUserID failed")

View File

@ -69,9 +69,9 @@ func (s *organizationServer) Run() {
} }
func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.CreateDepartmentReq) (*rpc.CreateDepartmentResp, error) { func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.CreateDepartmentReq) (*rpc.CreateDepartmentResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String()) log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsMangerUserID(req.OpUserID) { if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := "is not app manger " + req.OpUserID + " " + req.OperationID errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg) log.Error(req.OperationID, errMsg)
return &rpc.CreateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil return &rpc.CreateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
} }
@ -81,58 +81,268 @@ func (s *organizationServer) CreateDepartment(ctx context.Context, req *rpc.Crea
if department.DepartmentID == "" { if department.DepartmentID == "" {
department.DepartmentID = utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10)) department.DepartmentID = utils.Md5(strconv.FormatInt(time.Now().UnixNano(), 10))
} }
if imdb.CreateDepartment(&department) != nil { log.Debug(req.OperationID, "dst ", department, "src ", req.DepartmentInfo)
if err := imdb.CreateDepartment(&department); err != nil {
errMsg := req.OperationID + " " + "CreateDepartment failed " + err.Error()
log.Error(req.OperationID, errMsg)
return &rpc.CreateDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
} }
err, createdDepartment := imdb.GetDepartment(department.DepartmentID) err, createdDepartment := imdb.GetDepartment(department.DepartmentID)
if err != nil { if err != nil {
errMsg := req.OperationID + " " + "GetDepartment failed " + err.Error() + department.DepartmentID
log.Error(req.OperationID, errMsg)
return &rpc.CreateDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
} }
log.Debug(req.OperationID, "GetDepartment ", department.DepartmentID, *createdDepartment)
resp := &rpc.CreateDepartmentResp{DepartmentInfo: &open_im_sdk.Department{}} resp := &rpc.CreateDepartmentResp{DepartmentInfo: &open_im_sdk.Department{}}
utils.CopyStructFields(resp.DepartmentInfo, createdDepartment) utils.CopyStructFields(resp.DepartmentInfo, createdDepartment)
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", resp)
return resp, nil return resp, nil
} }
func (s *organizationServer) UpdateDepartment(ctx context.Context, req *rpc.UpdateDepartmentReq) (*rpc.UpdateDepartmentResp, error) { func (s *organizationServer) UpdateDepartment(ctx context.Context, req *rpc.UpdateDepartmentReq) (*rpc.UpdateDepartmentResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.UpdateDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
department := db.Department{}
utils.CopyStructFields(&department, req.DepartmentInfo)
log.Debug(req.OperationID, "dst ", department, "src ", req.DepartmentInfo)
if err := imdb.UpdateDepartment(&department, nil); err != nil {
errMsg := req.OperationID + " " + "UpdateDepartment failed " + err.Error()
log.Error(req.OperationID, errMsg)
return &rpc.UpdateDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
resp := &rpc.UpdateDepartmentResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
return resp, nil
} }
func (s *organizationServer) GetDepartment(ctx context.Context, req *rpc.GetDepartmentReq) (*rpc.GetDepartmentResp, error) { func (s *organizationServer) GetSubDepartment(ctx context.Context, req *rpc.GetSubDepartmentReq) (*rpc.GetSubDepartmentResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
err, departmentList := imdb.GetSubDepartmentList(req.DepartmentID)
if err != nil {
errMsg := req.OperationID + " " + "GetDepartment failed " + err.Error()
log.Error(req.OperationID, errMsg)
return &rpc.GetSubDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "GetSubDepartmentList ", req.DepartmentID, departmentList)
resp := &rpc.GetSubDepartmentResp{}
for _, v := range departmentList {
v1 := open_im_sdk.Department{}
utils.CopyStructFields(&v1, v)
log.Debug(req.OperationID, "src ", v, "dst ", v1)
resp.DepartmentList = append(resp.DepartmentList, &v1)
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
return resp, nil
} }
func (s *organizationServer) DeleteDepartment(ctx context.Context, req *rpc.DeleteDepartmentReq) (*rpc.DeleteDepartmentResp, error) { func (s *organizationServer) DeleteDepartment(ctx context.Context, req *rpc.DeleteDepartmentReq) (*rpc.DeleteDepartmentResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.DeleteDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
err := imdb.DeleteDepartment(req.DepartmentID)
if err != nil {
errMsg := req.OperationID + " " + "DeleteDepartment failed " + err.Error()
log.Error(req.OperationID, errMsg, req.DepartmentID)
return &rpc.DeleteDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "DeleteDepartment ", req.DepartmentID)
resp := &rpc.DeleteDepartmentResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp)
return resp, nil
} }
func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rpc.CreateOrganizationUserReq) (*rpc.CreateOrganizationUserResp, error) { func (s *organizationServer) CreateOrganizationUser(ctx context.Context, req *rpc.CreateOrganizationUserReq) (*rpc.CreateOrganizationUserResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
organizationUser := db.OrganizationUser{}
utils.CopyStructFields(&organizationUser, req.OrganizationUser)
log.Debug(req.OperationID, "src ", *req.OrganizationUser, "dst ", organizationUser)
err := imdb.CreateOrganizationUser(&organizationUser)
if err != nil {
errMsg := req.OperationID + " " + "CreateOrganizationUser failed " + err.Error()
log.Error(req.OperationID, errMsg, organizationUser)
return &rpc.CreateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "CreateOrganizationUser ", organizationUser)
resp := &rpc.CreateOrganizationUserResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
return resp, nil
} }
func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rpc.UpdateOrganizationUserReq) (*rpc.UpdateOrganizationUserResp, error) { func (s *organizationServer) UpdateOrganizationUser(ctx context.Context, req *rpc.UpdateOrganizationUserReq) (*rpc.UpdateOrganizationUserResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
organizationUser := db.OrganizationUser{}
utils.CopyStructFields(&organizationUser, req.OrganizationUser)
log.Debug(req.OperationID, "src ", *req.OrganizationUser, "dst ", organizationUser)
err := imdb.UpdateOrganizationUser(&organizationUser, nil)
if err != nil {
errMsg := req.OperationID + " " + "CreateOrganizationUser failed " + err.Error()
log.Error(req.OperationID, errMsg, organizationUser)
return &rpc.UpdateOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "UpdateOrganizationUser ", organizationUser)
resp := &rpc.UpdateOrganizationUserResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp)
return resp, nil
} }
func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rpc.CreateDepartmentMemberReq) (*rpc.CreateDepartmentMemberResp, error) { func (s *organizationServer) CreateDepartmentMember(ctx context.Context, req *rpc.CreateDepartmentMemberReq) (*rpc.CreateDepartmentMemberResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
departmentMember := db.DepartmentMember{}
utils.CopyStructFields(&departmentMember, req.UserInDepartment)
log.Debug(req.OperationID, "src ", *req.UserInDepartment, "dst ", departmentMember)
err := imdb.CreateDepartmentMember(&departmentMember)
if err != nil {
errMsg := req.OperationID + " " + "CreateDepartmentMember failed " + err.Error()
log.Error(req.OperationID, errMsg, departmentMember)
return &rpc.CreateDepartmentMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "UpdateOrganizationUser ", departmentMember)
resp := &rpc.CreateDepartmentMemberResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
return resp, nil
}
func (s *organizationServer) GetUserInDepartmentByUserID(userID string) (*open_im_sdk.UserInDepartment, error) {
err, organizationUser := imdb.GetOrganizationUser(userID)
if err != nil {
return nil, utils.Wrap(err, "GetOrganizationUser failed")
}
err, departmentMemberList := imdb.GetUserInDepartment(userID)
if err != nil {
return nil, utils.Wrap(err, "GetUserInDepartment failed")
}
resp := &open_im_sdk.UserInDepartment{OrganizationUser: &open_im_sdk.OrganizationUser{}}
utils.CopyStructFields(resp.OrganizationUser, organizationUser)
for _, v := range departmentMemberList {
v1 := open_im_sdk.DepartmentMember{}
utils.CopyStructFields(&v1, v)
resp.DepartmentMemberList = append(resp.DepartmentMemberList, &v1)
}
return resp, nil
} }
func (s *organizationServer) GetUserInDepartment(ctx context.Context, req *rpc.GetUserInDepartmentReq) (*rpc.GetUserInDepartmentResp, error) { func (s *organizationServer) GetUserInDepartment(ctx context.Context, req *rpc.GetUserInDepartmentReq) (*rpc.GetUserInDepartmentResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
r, err := s.GetUserInDepartmentByUserID(req.UserID)
if err != nil {
errMsg := req.OperationID + " " + "GetUserInDepartmentByUserID failed " + err.Error()
log.Error(req.OperationID, errMsg, req.UserID)
return &rpc.GetUserInDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", req.UserID, r)
resp := rpc.GetUserInDepartmentResp{UserInDepartment: &open_im_sdk.UserInDepartment{OrganizationUser: &open_im_sdk.OrganizationUser{}}}
resp.UserInDepartment.DepartmentMemberList = r.DepartmentMemberList
resp.UserInDepartment.OrganizationUser = r.OrganizationUser
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp)
return &resp, nil
} }
func (s *organizationServer) UpdateUserInDepartment(ctx context.Context, req *rpc.UpdateUserInDepartmentReq) (*rpc.UpdateUserInDepartmentResp, error) { func (s *organizationServer) UpdateUserInDepartment(ctx context.Context, req *rpc.UpdateUserInDepartmentReq) (*rpc.UpdateUserInDepartmentResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.UpdateUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
departmentMember := &db.DepartmentMember{}
utils.CopyStructFields(departmentMember, req.DepartmentMember)
log.Debug(req.OperationID, "dst ", departmentMember, "src ", req.DepartmentMember)
err := imdb.UpdateUserInDepartment(departmentMember, nil)
if err != nil {
errMsg := req.OperationID + " " + "UpdateUserInDepartment failed " + err.Error()
log.Error(req.OperationID, errMsg, *departmentMember)
return &rpc.UpdateUserInDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
resp := &rpc.UpdateUserInDepartmentResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
return resp, nil
}
func (s *organizationServer) DeleteUserInDepartment(ctx context.Context, req *rpc.DeleteUserInDepartmentReq) (*rpc.DeleteUserInDepartmentResp, error) {
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.DeleteUserInDepartmentResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
err := imdb.DeleteUserInDepartment(req.DepartmentID, req.UserID)
if err != nil {
errMsg := req.OperationID + " " + "DeleteUserInDepartment failed " + err.Error()
log.Error(req.OperationID, errMsg, req.DepartmentID, req.UserID)
return &rpc.DeleteUserInDepartmentResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "DeleteUserInDepartment success ", req.DepartmentID, req.UserID)
resp := &rpc.DeleteUserInDepartmentResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
return resp, nil
} }
func (s *organizationServer) DeleteOrganizationUser(ctx context.Context, req *rpc.DeleteOrganizationUserReq) (*rpc.DeleteOrganizationUserResp, error) { func (s *organizationServer) DeleteOrganizationUser(ctx context.Context, req *rpc.DeleteOrganizationUserReq) (*rpc.DeleteOrganizationUserResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
if !token_verify.IsManagerUserID(req.OpUserID) {
errMsg := req.OperationID + "" + req.OpUserID + " is not app manager"
log.Error(req.OperationID, errMsg)
return &rpc.DeleteOrganizationUserResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
}
err := imdb.DeleteOrganizationUser(req.UserID)
if err != nil {
errMsg := req.OperationID + " " + "DeleteOrganizationUser failed " + err.Error()
log.Error(req.OperationID, errMsg, req.UserID)
return &rpc.DeleteOrganizationUserResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
log.Debug(req.OperationID, "DeleteOrganizationUser success ", req.UserID)
resp := &rpc.DeleteOrganizationUserResp{}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", *resp)
return resp, nil
} }
func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.GetDepartmentMemberReq) (*rpc.GetDepartmentMemberResp, error) { func (s *organizationServer) GetDepartmentMember(ctx context.Context, req *rpc.GetDepartmentMemberReq) (*rpc.GetDepartmentMemberResp, error) {
return nil, nil log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc args ", req.String())
err, departmentMemberUserIDList := imdb.GetDepartmentMemberUserIDList(req.DepartmentID)
if err != nil {
errMsg := req.OperationID + " " + "GetDepartmentMemberUserIDList failed " + err.Error()
log.Error(req.OperationID, errMsg, req.DepartmentID)
return &rpc.GetDepartmentMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: errMsg}, nil
}
resp := rpc.GetDepartmentMemberResp{}
for _, v := range departmentMemberUserIDList {
r, err := s.GetUserInDepartmentByUserID(v)
if err != nil {
log.Error(req.OperationID, "GetUserInDepartmentByUserID failed ", err.Error())
continue
}
log.Debug(req.OperationID, "GetUserInDepartmentByUserID success ", *r)
resp.UserInDepartmentList = append(resp.UserInDepartmentList, r)
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), " rpc return ", resp)
return &resp, nil
} }

View File

@ -278,8 +278,8 @@ func (s *userServer) SetRecvMsgOpt(ctx context.Context, req *pbUser.SetRecvMsgOp
func (s *userServer) DeleteUsers(_ context.Context, req *pbUser.DeleteUsersReq) (*pbUser.DeleteUsersResp, error) { func (s *userServer) DeleteUsers(_ context.Context, req *pbUser.DeleteUsersReq) (*pbUser.DeleteUsersResp, error) {
log.NewInfo(req.OperationID, "DeleteUsers args ", req.String()) log.NewInfo(req.OperationID, "DeleteUsers args ", req.String())
if !token_verify.IsMangerUserID(req.OpUserID) { if !token_verify.IsManagerUserID(req.OpUserID) {
log.NewError(req.OperationID, "IsMangerUserID false ", req.OpUserID) log.NewError(req.OperationID, "IsManagerUserID false ", req.OpUserID)
return &pbUser.DeleteUsersResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, FailedUserIDList: req.DeleteUserIDList}, nil return &pbUser.DeleteUsersResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, FailedUserIDList: req.DeleteUserIDList}, nil
} }
var common pbUser.CommonResp var common pbUser.CommonResp
@ -299,8 +299,8 @@ func (s *userServer) DeleteUsers(_ context.Context, req *pbUser.DeleteUsersReq)
func (s *userServer) GetAllUserID(_ context.Context, req *pbUser.GetAllUserIDReq) (*pbUser.GetAllUserIDResp, error) { func (s *userServer) GetAllUserID(_ context.Context, req *pbUser.GetAllUserIDReq) (*pbUser.GetAllUserIDResp, error) {
log.NewInfo(req.OperationID, "GetAllUserID args ", req.String()) log.NewInfo(req.OperationID, "GetAllUserID args ", req.String())
if !token_verify.IsMangerUserID(req.OpUserID) { if !token_verify.IsManagerUserID(req.OpUserID) {
log.NewError(req.OperationID, "IsMangerUserID false ", req.OpUserID) log.NewError(req.OperationID, "IsManagerUserID false ", req.OpUserID)
return &pbUser.GetAllUserIDResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil return &pbUser.GetAllUserIDResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }
uidList, err := imdb.SelectAllUserID() uidList, err := imdb.SelectAllUserID()
@ -315,8 +315,8 @@ func (s *userServer) GetAllUserID(_ context.Context, req *pbUser.GetAllUserIDReq
func (s *userServer) AccountCheck(_ context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) { func (s *userServer) AccountCheck(_ context.Context, req *pbUser.AccountCheckReq) (*pbUser.AccountCheckResp, error) {
log.NewInfo(req.OperationID, "AccountCheck args ", req.String()) log.NewInfo(req.OperationID, "AccountCheck args ", req.String())
if !token_verify.IsMangerUserID(req.OpUserID) { if !token_verify.IsManagerUserID(req.OpUserID) {
log.NewError(req.OperationID, "IsMangerUserID false ", 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 return &pbUser.AccountCheckResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
} }
uidList, err := imdb.SelectSomeUserID(req.CheckUserIDList) uidList, err := imdb.SelectSomeUserID(req.CheckUserIDList)

View File

@ -99,3 +99,12 @@ type GetDepartmentMemberResp struct {
UserInDepartmentList []*open_im_sdk.UserInDepartment `json:"-"` UserInDepartmentList []*open_im_sdk.UserInDepartment `json:"-"`
Data []map[string]interface{} `json:"data"` Data []map[string]interface{} `json:"data"`
} }
type DeleteUserInDepartmentReq struct {
DepartmentID string `json:"departmentID" binding:"required"`
UserID string `json:"userID" binding:"required"`
OperationID string `json:"operationID" binding:"required"`
}
type DeleteUserInDepartmentResp struct {
CommResp
}

View File

@ -227,9 +227,9 @@ type Department struct {
DepartmentID string `gorm:"column:department_id;primary_key;size:64" json:"departmentID"` DepartmentID string `gorm:"column:department_id;primary_key;size:64" json:"departmentID"`
FaceURL string `gorm:"column:face_url;size:255" json:"faceURL"` FaceURL string `gorm:"column:face_url;size:255" json:"faceURL"`
Name string `gorm:"column:name;size:256" json:"name" binding:"required"` Name string `gorm:"column:name;size:256" json:"name" binding:"required"`
ParentID string `gorm:"column:parent_id;size:64" json:"parentID" binding:"required"` ParentID string `gorm:"column:parent_id;size:64" json:"parentID" binding:"required"` // "0" or Real parent id
Order int32 `gorm:"column:order" json:"order" ` Order int32 `gorm:"column:order" json:"order" ` // 1, 2, ...
DepartmentType int32 `gorm:"column:department_type" json:"departmentType"` DepartmentType int32 `gorm:"column:department_type" json:"departmentType"` //1, 2...
CreateTime time.Time `gorm:"column:create_time" json:"createTime"` CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"`
} }
@ -243,7 +243,7 @@ type OrganizationUser struct {
Nickname string `gorm:"column:nickname;size:256"` Nickname string `gorm:"column:nickname;size:256"`
EnglishName string `gorm:"column:english_name;size:256"` EnglishName string `gorm:"column:english_name;size:256"`
FaceURL string `gorm:"column:face_url;size:256"` FaceURL string `gorm:"column:face_url;size:256"`
Gender int32 `gorm:"column:gender"` Gender int32 `gorm:"column:gender"` //1 ,2
Mobile string `gorm:"column:mobile;size:32"` Mobile string `gorm:"column:mobile;size:32"`
Telephone string `gorm:"column:telephone;size:32"` Telephone string `gorm:"column:telephone;size:32"`
Birth time.Time `gorm:"column:birth"` Birth time.Time `gorm:"column:birth"`
@ -259,10 +259,10 @@ func (OrganizationUser) TableName() string {
type DepartmentMember struct { type DepartmentMember struct {
UserID string `gorm:"column:user_id;primary_key;size:64"` UserID string `gorm:"column:user_id;primary_key;size:64"`
DepartmentID string `gorm:"column:department_id;primary_key;size:64"` DepartmentID string `gorm:"column:department_id;primary_key;size:64"`
Order int32 `gorm:"column:order" json:"order"` Order int32 `gorm:"column:order" json:"order"` //1,2
Position string `gorm:"column:position;size:256" json:"position"` Position string `gorm:"column:position;size:256" json:"position"`
Leader int32 `gorm:"column:leader" json:"leader"` Leader int32 `gorm:"column:leader" json:"leader"` //-1, 1
Status int32 `gorm:"column:status" json:"status"` Status int32 `gorm:"column:status" json:"status"` //-1, 1
CreateTime time.Time `gorm:"column:create_time"` CreateTime time.Time `gorm:"column:create_time"`
Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"`
} }

View File

@ -2,7 +2,6 @@ package im_mysql_model
import ( import (
"Open_IM/pkg/common/db" "Open_IM/pkg/common/db"
"errors"
"time" "time"
) )
@ -72,6 +71,16 @@ func CreateOrganizationUser(organizationUser *db.OrganizationUser) error {
return dbConn.Table("organization_users").Create(organizationUser).Error return dbConn.Table("organization_users").Create(organizationUser).Error
} }
func GetOrganizationUser(userID string) (error, *db.OrganizationUser) {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err, nil
}
organizationUser := db.OrganizationUser{}
err = dbConn.Table("organization_users").Where("user_id=?", userID).Take(&organizationUser).Error
return err, &organizationUser
}
func UpdateOrganizationUser(organizationUser *db.OrganizationUser, args map[string]interface{}) error { func UpdateOrganizationUser(organizationUser *db.OrganizationUser, args map[string]interface{}) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB() dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil { if err != nil {
@ -101,25 +110,34 @@ func GetUserInDepartment(userID string) (error, []db.DepartmentMember) {
return err, nil return err, nil
} }
var departmentMemberList []db.DepartmentMember var departmentMemberList []db.DepartmentMember
err = dbConn.Table("department_members").Where("user_id=?", userID).Find(&departmentMemberList).Error err = dbConn.Table("department_members").Where("user_id=?", userID).Take(&departmentMemberList).Error
return err, departmentMemberList return err, departmentMemberList
} }
func UpdateUserInDepartment(userInDepartmentList []db.DepartmentMember) error { func UpdateUserInDepartment(departmentMember *db.DepartmentMember, args map[string]interface{}) error {
if len(userInDepartmentList) == 0 { dbConn, err := db.DB.MysqlDB.DefaultGormDB()
return errors.New("args failed") if err != nil {
}
if err := DeleteUserInAllDepartment(userInDepartmentList[0].UserID); err != nil {
return err return err
} }
for _, v := range userInDepartmentList { if err = dbConn.Table("department_members").Where("department_id=? ADN user_id=?", departmentMember.DepartmentID, departmentMember.UserID).
if err := CreateDepartmentMember(&v); err != nil { Updates(departmentMember).Error; err != nil {
return err return err
} }
if args != nil {
return dbConn.Table("department_members").Where("department_id=? ADN user_id=?", departmentMember.DepartmentID, departmentMember.UserID).
Updates(args).Error
} }
return nil return nil
} }
func DeleteUserInDepartment(departmentID, userID string) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
return dbConn.Table("department_members").Where("department_id=? ADN user_id=?", departmentID, userID).Delete(db.DepartmentMember{}).Error
}
func DeleteUserInAllDepartment(userID string) error { func DeleteUserInAllDepartment(userID string) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB() dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil { if err != nil {
@ -140,13 +158,21 @@ func DeleteOrganizationUser(OrganizationUserID string) error {
} }
func GetDepartmentMemberUserIDList(departmentID string) (error, []string) { func GetDepartmentMemberUserIDList(departmentID string) (error, []string) {
//dbConn, err := db.DB.MysqlDB.DefaultGormDB()
//if err != nil {
// return err
//}
//return dbConn.Table("department_members").Where("user_id=?", userID).Delete(db.DepartmentMember{}).Error
dbConn, err := db.DB.MysqlDB.DefaultGormDB() dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil { if err != nil {
return err, nil return err, nil
} }
var departmentMemberList []db.DepartmentMember var departmentMemberList []db.DepartmentMember
err = dbConn.Table("department_members").Where("department_id=?", departmentID).Find(&departmentMemberList).Error err = dbConn.Table("department_members").Where("department_id=?", departmentID).Take(&departmentMemberList).Error
if err != nil {
return err, nil
}
var userIDList []string = make([]string, 0) var userIDList []string = make([]string, 0)
for _, v := range departmentMemberList { for _, v := range departmentMemberList {
userIDList = append(userIDList, v.UserID) userIDList = append(userIDList, v.UserID)

View File

@ -111,7 +111,7 @@ func IsAppManagerAccess(token string, OpUserID string) bool {
return false return false
} }
func IsMangerUserID(OpUserID string) bool { func IsManagerUserID(OpUserID string) bool {
if utils.IsContain(OpUserID, config.Config.Manager.AppManagerUid) { if utils.IsContain(OpUserID, config.Config.Manager.AppManagerUid) {
return true return true
} else { } else {

View File

@ -107,7 +107,7 @@ func GroupMemberOpenIMCopyDB(dst *db.GroupMember, src *open_im_sdk.GroupMemberFu
func GroupMemberDBCopyOpenIM(dst *open_im_sdk.GroupMemberFullInfo, src *db.GroupMember) error { func GroupMemberDBCopyOpenIM(dst *open_im_sdk.GroupMemberFullInfo, src *db.GroupMember) error {
utils.CopyStructFields(dst, src) utils.CopyStructFields(dst, src)
if token_verify.IsMangerUserID(src.UserID) { if token_verify.IsManagerUserID(src.UserID) {
u, err := imdb.GetUserByUserID(src.UserID) u, err := imdb.GetUserByUserID(src.UserID)
if err != nil { if err != nil {
return utils.Wrap(err, "") return utils.Wrap(err, "")

View File

@ -28,13 +28,13 @@ message UpdateDepartmentResp{
} }
message GetDepartmentReq{ message GetSubDepartmentReq{
string departmentID = 1; string departmentID = 1;
string operationID = 2; string operationID = 2;
string opUserID = 3; string opUserID = 3;
} }
message GetDepartmentResp{ message GetSubDepartmentResp{
int32 errCode = 1; int32 errCode = 1;
string errMsg = 2; string errMsg = 2;
repeated server_api_params.Department departmentList = 3; repeated server_api_params.Department departmentList = 3;
@ -104,7 +104,7 @@ message GetUserInDepartmentResp{
message UpdateUserInDepartmentReq{ message UpdateUserInDepartmentReq{
server_api_params.UserInDepartment userInDepartment = 1; server_api_params.DepartmentMember departmentMember = 1;
string operationID = 2; string operationID = 2;
string opUserID = 3; string opUserID = 3;
} }
@ -114,6 +114,17 @@ message UpdateUserInDepartmentResp{
} }
message DeleteUserInDepartmentReq{
string userID = 1;
string operationID = 2;
string opUserID = 3;
string departmentID = 4;
}
message DeleteUserInDepartmentResp{
int32 errCode = 1;
string errMsg = 2;
}
message DeleteOrganizationUserReq{ message DeleteOrganizationUserReq{
string userID = 1; string userID = 1;
string operationID = 2; string operationID = 2;
@ -141,14 +152,18 @@ message GetDepartmentMemberResp{
service organization{ service organization{
rpc CreateDepartment(CreateDepartmentReq) returns(CreateDepartmentResp); rpc CreateDepartment(CreateDepartmentReq) returns(CreateDepartmentResp);
rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp); rpc UpdateDepartment(UpdateDepartmentReq) returns(UpdateDepartmentResp);
rpc GetDepartment(GetDepartmentReq) returns(GetDepartmentResp); rpc GetSubDepartment(GetSubDepartmentReq) returns(GetSubDepartmentResp);
rpc DeleteDepartment(DeleteDepartmentReq) returns(DeleteDepartmentResp); rpc DeleteDepartment(DeleteDepartmentReq) returns(DeleteDepartmentResp);
rpc CreateOrganizationUser(CreateOrganizationUserReq) returns(CreateOrganizationUserResp); rpc CreateOrganizationUser(CreateOrganizationUserReq) returns(CreateOrganizationUserResp);
rpc UpdateOrganizationUser(UpdateOrganizationUserReq) returns(UpdateOrganizationUserResp); rpc UpdateOrganizationUser(UpdateOrganizationUserReq) returns(UpdateOrganizationUserResp);
rpc DeleteOrganizationUser(DeleteOrganizationUserReq) returns(DeleteOrganizationUserResp);
rpc CreateDepartmentMember(CreateDepartmentMemberReq) returns(CreateDepartmentMemberResp); rpc CreateDepartmentMember(CreateDepartmentMemberReq) returns(CreateDepartmentMemberResp);
rpc GetUserInDepartment(GetUserInDepartmentReq) returns(GetUserInDepartmentResp); rpc GetUserInDepartment(GetUserInDepartmentReq) returns(GetUserInDepartmentResp);
rpc DeleteUserInDepartment(DeleteUserInDepartmentReq) returns(DeleteUserInDepartmentResp);
rpc UpdateUserInDepartment(UpdateUserInDepartmentReq) returns(UpdateUserInDepartmentResp); rpc UpdateUserInDepartment(UpdateUserInDepartmentReq) returns(UpdateUserInDepartmentResp);
rpc DeleteOrganizationUser(DeleteOrganizationUserReq) returns(DeleteOrganizationUserResp);
rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp); rpc GetDepartmentMember(GetDepartmentMemberReq) returns(GetDepartmentMemberResp);
} }

View File

@ -40,7 +40,7 @@ func (m *GroupInfo) Reset() { *m = GroupInfo{} }
func (m *GroupInfo) String() string { return proto.CompactTextString(m) } func (m *GroupInfo) String() string { return proto.CompactTextString(m) }
func (*GroupInfo) ProtoMessage() {} func (*GroupInfo) ProtoMessage() {}
func (*GroupInfo) Descriptor() ([]byte, []int) { func (*GroupInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{0} return fileDescriptor_ws_822d08ca95807876, []int{0}
} }
func (m *GroupInfo) XXX_Unmarshal(b []byte) error { func (m *GroupInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfo.Unmarshal(m, b) return xxx_messageInfo_GroupInfo.Unmarshal(m, b)
@ -165,7 +165,7 @@ func (m *GroupMemberFullInfo) Reset() { *m = GroupMemberFullInfo{} }
func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) } func (m *GroupMemberFullInfo) String() string { return proto.CompactTextString(m) }
func (*GroupMemberFullInfo) ProtoMessage() {} func (*GroupMemberFullInfo) ProtoMessage() {}
func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) { func (*GroupMemberFullInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{1} return fileDescriptor_ws_822d08ca95807876, []int{1}
} }
func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error { func (m *GroupMemberFullInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b) return xxx_messageInfo_GroupMemberFullInfo.Unmarshal(m, b)
@ -277,7 +277,7 @@ func (m *PublicUserInfo) Reset() { *m = PublicUserInfo{} }
func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) } func (m *PublicUserInfo) String() string { return proto.CompactTextString(m) }
func (*PublicUserInfo) ProtoMessage() {} func (*PublicUserInfo) ProtoMessage() {}
func (*PublicUserInfo) Descriptor() ([]byte, []int) { func (*PublicUserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{2} return fileDescriptor_ws_822d08ca95807876, []int{2}
} }
func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error { func (m *PublicUserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b) return xxx_messageInfo_PublicUserInfo.Unmarshal(m, b)
@ -352,7 +352,7 @@ func (m *UserInfo) Reset() { *m = UserInfo{} }
func (m *UserInfo) String() string { return proto.CompactTextString(m) } func (m *UserInfo) String() string { return proto.CompactTextString(m) }
func (*UserInfo) ProtoMessage() {} func (*UserInfo) ProtoMessage() {}
func (*UserInfo) Descriptor() ([]byte, []int) { func (*UserInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{3} return fileDescriptor_ws_822d08ca95807876, []int{3}
} }
func (m *UserInfo) XXX_Unmarshal(b []byte) error { func (m *UserInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfo.Unmarshal(m, b) return xxx_messageInfo_UserInfo.Unmarshal(m, b)
@ -459,7 +459,7 @@ func (m *FriendInfo) Reset() { *m = FriendInfo{} }
func (m *FriendInfo) String() string { return proto.CompactTextString(m) } func (m *FriendInfo) String() string { return proto.CompactTextString(m) }
func (*FriendInfo) ProtoMessage() {} func (*FriendInfo) ProtoMessage() {}
func (*FriendInfo) Descriptor() ([]byte, []int) { func (*FriendInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{4} return fileDescriptor_ws_822d08ca95807876, []int{4}
} }
func (m *FriendInfo) XXX_Unmarshal(b []byte) error { func (m *FriendInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendInfo.Unmarshal(m, b) return xxx_messageInfo_FriendInfo.Unmarshal(m, b)
@ -544,7 +544,7 @@ func (m *BlackInfo) Reset() { *m = BlackInfo{} }
func (m *BlackInfo) String() string { return proto.CompactTextString(m) } func (m *BlackInfo) String() string { return proto.CompactTextString(m) }
func (*BlackInfo) ProtoMessage() {} func (*BlackInfo) ProtoMessage() {}
func (*BlackInfo) Descriptor() ([]byte, []int) { func (*BlackInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{5} return fileDescriptor_ws_822d08ca95807876, []int{5}
} }
func (m *BlackInfo) XXX_Unmarshal(b []byte) error { func (m *BlackInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackInfo.Unmarshal(m, b) return xxx_messageInfo_BlackInfo.Unmarshal(m, b)
@ -625,7 +625,7 @@ func (m *GroupRequest) Reset() { *m = GroupRequest{} }
func (m *GroupRequest) String() string { return proto.CompactTextString(m) } func (m *GroupRequest) String() string { return proto.CompactTextString(m) }
func (*GroupRequest) ProtoMessage() {} func (*GroupRequest) ProtoMessage() {}
func (*GroupRequest) Descriptor() ([]byte, []int) { func (*GroupRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{6} return fileDescriptor_ws_822d08ca95807876, []int{6}
} }
func (m *GroupRequest) XXX_Unmarshal(b []byte) error { func (m *GroupRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupRequest.Unmarshal(m, b) return xxx_messageInfo_GroupRequest.Unmarshal(m, b)
@ -733,7 +733,7 @@ func (m *FriendRequest) Reset() { *m = FriendRequest{} }
func (m *FriendRequest) String() string { return proto.CompactTextString(m) } func (m *FriendRequest) String() string { return proto.CompactTextString(m) }
func (*FriendRequest) ProtoMessage() {} func (*FriendRequest) ProtoMessage() {}
func (*FriendRequest) Descriptor() ([]byte, []int) { func (*FriendRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{7} return fileDescriptor_ws_822d08ca95807876, []int{7}
} }
func (m *FriendRequest) XXX_Unmarshal(b []byte) error { func (m *FriendRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendRequest.Unmarshal(m, b) return xxx_messageInfo_FriendRequest.Unmarshal(m, b)
@ -878,7 +878,7 @@ func (m *Department) Reset() { *m = Department{} }
func (m *Department) String() string { return proto.CompactTextString(m) } func (m *Department) String() string { return proto.CompactTextString(m) }
func (*Department) ProtoMessage() {} func (*Department) ProtoMessage() {}
func (*Department) Descriptor() ([]byte, []int) { func (*Department) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{8} return fileDescriptor_ws_822d08ca95807876, []int{8}
} }
func (m *Department) XXX_Unmarshal(b []byte) error { func (m *Department) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Department.Unmarshal(m, b) return xxx_messageInfo_Department.Unmarshal(m, b)
@ -989,7 +989,7 @@ func (m *OrganizationUser) Reset() { *m = OrganizationUser{} }
func (m *OrganizationUser) String() string { return proto.CompactTextString(m) } func (m *OrganizationUser) String() string { return proto.CompactTextString(m) }
func (*OrganizationUser) ProtoMessage() {} func (*OrganizationUser) ProtoMessage() {}
func (*OrganizationUser) Descriptor() ([]byte, []int) { func (*OrganizationUser) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{9} return fileDescriptor_ws_822d08ca95807876, []int{9}
} }
func (m *OrganizationUser) XXX_Unmarshal(b []byte) error { func (m *OrganizationUser) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OrganizationUser.Unmarshal(m, b) return xxx_messageInfo_OrganizationUser.Unmarshal(m, b)
@ -1103,7 +1103,7 @@ func (m *DepartmentMember) Reset() { *m = DepartmentMember{} }
func (m *DepartmentMember) String() string { return proto.CompactTextString(m) } func (m *DepartmentMember) String() string { return proto.CompactTextString(m) }
func (*DepartmentMember) ProtoMessage() {} func (*DepartmentMember) ProtoMessage() {}
func (*DepartmentMember) Descriptor() ([]byte, []int) { func (*DepartmentMember) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{10} return fileDescriptor_ws_822d08ca95807876, []int{10}
} }
func (m *DepartmentMember) XXX_Unmarshal(b []byte) error { func (m *DepartmentMember) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DepartmentMember.Unmarshal(m, b) return xxx_messageInfo_DepartmentMember.Unmarshal(m, b)
@ -1173,7 +1173,7 @@ func (m *DepartmentMember) GetEx() string {
} }
type UserInDepartment struct { type UserInDepartment struct {
DepartmentUser *OrganizationUser `protobuf:"bytes,1,opt,name=departmentUser" json:"departmentUser,omitempty"` OrganizationUser *OrganizationUser `protobuf:"bytes,1,opt,name=organizationUser" json:"organizationUser,omitempty"`
DepartmentMemberList []*DepartmentMember `protobuf:"bytes,2,rep,name=departmentMemberList" json:"departmentMemberList,omitempty"` DepartmentMemberList []*DepartmentMember `protobuf:"bytes,2,rep,name=departmentMemberList" json:"departmentMemberList,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
@ -1184,7 +1184,7 @@ func (m *UserInDepartment) Reset() { *m = UserInDepartment{} }
func (m *UserInDepartment) String() string { return proto.CompactTextString(m) } func (m *UserInDepartment) String() string { return proto.CompactTextString(m) }
func (*UserInDepartment) ProtoMessage() {} func (*UserInDepartment) ProtoMessage() {}
func (*UserInDepartment) Descriptor() ([]byte, []int) { func (*UserInDepartment) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{11} return fileDescriptor_ws_822d08ca95807876, []int{11}
} }
func (m *UserInDepartment) XXX_Unmarshal(b []byte) error { func (m *UserInDepartment) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInDepartment.Unmarshal(m, b) return xxx_messageInfo_UserInDepartment.Unmarshal(m, b)
@ -1204,9 +1204,9 @@ func (m *UserInDepartment) XXX_DiscardUnknown() {
var xxx_messageInfo_UserInDepartment proto.InternalMessageInfo var xxx_messageInfo_UserInDepartment proto.InternalMessageInfo
func (m *UserInDepartment) GetDepartmentUser() *OrganizationUser { func (m *UserInDepartment) GetOrganizationUser() *OrganizationUser {
if m != nil { if m != nil {
return m.DepartmentUser return m.OrganizationUser
} }
return nil return nil
} }
@ -1231,7 +1231,7 @@ func (m *PullMessageBySeqListResp) Reset() { *m = PullMessageBySeqListRe
func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListResp) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListResp) ProtoMessage() {} func (*PullMessageBySeqListResp) ProtoMessage() {}
func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{12} return fileDescriptor_ws_822d08ca95807876, []int{12}
} }
func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListResp.Unmarshal(m, b)
@ -1285,7 +1285,7 @@ func (m *PullMessageBySeqListReq) Reset() { *m = PullMessageBySeqListReq
func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) } func (m *PullMessageBySeqListReq) String() string { return proto.CompactTextString(m) }
func (*PullMessageBySeqListReq) ProtoMessage() {} func (*PullMessageBySeqListReq) ProtoMessage() {}
func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) { func (*PullMessageBySeqListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{13} return fileDescriptor_ws_822d08ca95807876, []int{13}
} }
func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error { func (m *PullMessageBySeqListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b) return xxx_messageInfo_PullMessageBySeqListReq.Unmarshal(m, b)
@ -1336,7 +1336,7 @@ func (m *GetMaxAndMinSeqReq) Reset() { *m = GetMaxAndMinSeqReq{} }
func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqReq) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqReq) ProtoMessage() {} func (*GetMaxAndMinSeqReq) ProtoMessage() {}
func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{14} return fileDescriptor_ws_822d08ca95807876, []int{14}
} }
func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqReq.Unmarshal(m, b)
@ -1368,7 +1368,7 @@ func (m *GetMaxAndMinSeqResp) Reset() { *m = GetMaxAndMinSeqResp{} }
func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) } func (m *GetMaxAndMinSeqResp) String() string { return proto.CompactTextString(m) }
func (*GetMaxAndMinSeqResp) ProtoMessage() {} func (*GetMaxAndMinSeqResp) ProtoMessage() {}
func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) { func (*GetMaxAndMinSeqResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{15} return fileDescriptor_ws_822d08ca95807876, []int{15}
} }
func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error { func (m *GetMaxAndMinSeqResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b) return xxx_messageInfo_GetMaxAndMinSeqResp.Unmarshal(m, b)
@ -1415,7 +1415,7 @@ func (m *UserSendMsgResp) Reset() { *m = UserSendMsgResp{} }
func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) } func (m *UserSendMsgResp) String() string { return proto.CompactTextString(m) }
func (*UserSendMsgResp) ProtoMessage() {} func (*UserSendMsgResp) ProtoMessage() {}
func (*UserSendMsgResp) Descriptor() ([]byte, []int) { func (*UserSendMsgResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{16} return fileDescriptor_ws_822d08ca95807876, []int{16}
} }
func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error { func (m *UserSendMsgResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b) return xxx_messageInfo_UserSendMsgResp.Unmarshal(m, b)
@ -1484,7 +1484,7 @@ func (m *MsgData) Reset() { *m = MsgData{} }
func (m *MsgData) String() string { return proto.CompactTextString(m) } func (m *MsgData) String() string { return proto.CompactTextString(m) }
func (*MsgData) ProtoMessage() {} func (*MsgData) ProtoMessage() {}
func (*MsgData) Descriptor() ([]byte, []int) { func (*MsgData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{17} return fileDescriptor_ws_822d08ca95807876, []int{17}
} }
func (m *MsgData) XXX_Unmarshal(b []byte) error { func (m *MsgData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MsgData.Unmarshal(m, b) return xxx_messageInfo_MsgData.Unmarshal(m, b)
@ -1645,7 +1645,7 @@ func (m *OfflinePushInfo) Reset() { *m = OfflinePushInfo{} }
func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) } func (m *OfflinePushInfo) String() string { return proto.CompactTextString(m) }
func (*OfflinePushInfo) ProtoMessage() {} func (*OfflinePushInfo) ProtoMessage() {}
func (*OfflinePushInfo) Descriptor() ([]byte, []int) { func (*OfflinePushInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{18} return fileDescriptor_ws_822d08ca95807876, []int{18}
} }
func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error { func (m *OfflinePushInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b) return xxx_messageInfo_OfflinePushInfo.Unmarshal(m, b)
@ -1713,7 +1713,7 @@ func (m *TipsComm) Reset() { *m = TipsComm{} }
func (m *TipsComm) String() string { return proto.CompactTextString(m) } func (m *TipsComm) String() string { return proto.CompactTextString(m) }
func (*TipsComm) ProtoMessage() {} func (*TipsComm) ProtoMessage() {}
func (*TipsComm) Descriptor() ([]byte, []int) { func (*TipsComm) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{19} return fileDescriptor_ws_822d08ca95807876, []int{19}
} }
func (m *TipsComm) XXX_Unmarshal(b []byte) error { func (m *TipsComm) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TipsComm.Unmarshal(m, b) return xxx_messageInfo_TipsComm.Unmarshal(m, b)
@ -1770,7 +1770,7 @@ func (m *GroupCreatedTips) Reset() { *m = GroupCreatedTips{} }
func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) } func (m *GroupCreatedTips) String() string { return proto.CompactTextString(m) }
func (*GroupCreatedTips) ProtoMessage() {} func (*GroupCreatedTips) ProtoMessage() {}
func (*GroupCreatedTips) Descriptor() ([]byte, []int) { func (*GroupCreatedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{20} return fileDescriptor_ws_822d08ca95807876, []int{20}
} }
func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error { func (m *GroupCreatedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b) return xxx_messageInfo_GroupCreatedTips.Unmarshal(m, b)
@ -1839,7 +1839,7 @@ func (m *GroupInfoSetTips) Reset() { *m = GroupInfoSetTips{} }
func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) } func (m *GroupInfoSetTips) String() string { return proto.CompactTextString(m) }
func (*GroupInfoSetTips) ProtoMessage() {} func (*GroupInfoSetTips) ProtoMessage() {}
func (*GroupInfoSetTips) Descriptor() ([]byte, []int) { func (*GroupInfoSetTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{21} return fileDescriptor_ws_822d08ca95807876, []int{21}
} }
func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error { func (m *GroupInfoSetTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b) return xxx_messageInfo_GroupInfoSetTips.Unmarshal(m, b)
@ -1894,7 +1894,7 @@ func (m *JoinGroupApplicationTips) Reset() { *m = JoinGroupApplicationTi
func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) } func (m *JoinGroupApplicationTips) String() string { return proto.CompactTextString(m) }
func (*JoinGroupApplicationTips) ProtoMessage() {} func (*JoinGroupApplicationTips) ProtoMessage() {}
func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) { func (*JoinGroupApplicationTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{22} return fileDescriptor_ws_822d08ca95807876, []int{22}
} }
func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error { func (m *JoinGroupApplicationTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b) return xxx_messageInfo_JoinGroupApplicationTips.Unmarshal(m, b)
@ -1950,7 +1950,7 @@ func (m *MemberQuitTips) Reset() { *m = MemberQuitTips{} }
func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) } func (m *MemberQuitTips) String() string { return proto.CompactTextString(m) }
func (*MemberQuitTips) ProtoMessage() {} func (*MemberQuitTips) ProtoMessage() {}
func (*MemberQuitTips) Descriptor() ([]byte, []int) { func (*MemberQuitTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{23} return fileDescriptor_ws_822d08ca95807876, []int{23}
} }
func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error { func (m *MemberQuitTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b) return xxx_messageInfo_MemberQuitTips.Unmarshal(m, b)
@ -2005,7 +2005,7 @@ func (m *GroupApplicationAcceptedTips) Reset() { *m = GroupApplicationAc
func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) } func (m *GroupApplicationAcceptedTips) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationAcceptedTips) ProtoMessage() {} func (*GroupApplicationAcceptedTips) ProtoMessage() {}
func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) { func (*GroupApplicationAcceptedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{24} return fileDescriptor_ws_822d08ca95807876, []int{24}
} }
func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationAcceptedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b) return xxx_messageInfo_GroupApplicationAcceptedTips.Unmarshal(m, b)
@ -2060,7 +2060,7 @@ func (m *GroupApplicationRejectedTips) Reset() { *m = GroupApplicationRe
func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (m *GroupApplicationRejectedTips) String() string { return proto.CompactTextString(m) }
func (*GroupApplicationRejectedTips) ProtoMessage() {} func (*GroupApplicationRejectedTips) ProtoMessage() {}
func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) { func (*GroupApplicationRejectedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{25} return fileDescriptor_ws_822d08ca95807876, []int{25}
} }
func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error { func (m *GroupApplicationRejectedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b) return xxx_messageInfo_GroupApplicationRejectedTips.Unmarshal(m, b)
@ -2116,7 +2116,7 @@ func (m *GroupOwnerTransferredTips) Reset() { *m = GroupOwnerTransferred
func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) } func (m *GroupOwnerTransferredTips) String() string { return proto.CompactTextString(m) }
func (*GroupOwnerTransferredTips) ProtoMessage() {} func (*GroupOwnerTransferredTips) ProtoMessage() {}
func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) { func (*GroupOwnerTransferredTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{26} return fileDescriptor_ws_822d08ca95807876, []int{26}
} }
func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error { func (m *GroupOwnerTransferredTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b) return xxx_messageInfo_GroupOwnerTransferredTips.Unmarshal(m, b)
@ -2179,7 +2179,7 @@ func (m *MemberKickedTips) Reset() { *m = MemberKickedTips{} }
func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) } func (m *MemberKickedTips) String() string { return proto.CompactTextString(m) }
func (*MemberKickedTips) ProtoMessage() {} func (*MemberKickedTips) ProtoMessage() {}
func (*MemberKickedTips) Descriptor() ([]byte, []int) { func (*MemberKickedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{27} return fileDescriptor_ws_822d08ca95807876, []int{27}
} }
func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error { func (m *MemberKickedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b) return xxx_messageInfo_MemberKickedTips.Unmarshal(m, b)
@ -2242,7 +2242,7 @@ func (m *MemberInvitedTips) Reset() { *m = MemberInvitedTips{} }
func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) } func (m *MemberInvitedTips) String() string { return proto.CompactTextString(m) }
func (*MemberInvitedTips) ProtoMessage() {} func (*MemberInvitedTips) ProtoMessage() {}
func (*MemberInvitedTips) Descriptor() ([]byte, []int) { func (*MemberInvitedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{28} return fileDescriptor_ws_822d08ca95807876, []int{28}
} }
func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error { func (m *MemberInvitedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b) return xxx_messageInfo_MemberInvitedTips.Unmarshal(m, b)
@ -2304,7 +2304,7 @@ func (m *MemberEnterTips) Reset() { *m = MemberEnterTips{} }
func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) } func (m *MemberEnterTips) String() string { return proto.CompactTextString(m) }
func (*MemberEnterTips) ProtoMessage() {} func (*MemberEnterTips) ProtoMessage() {}
func (*MemberEnterTips) Descriptor() ([]byte, []int) { func (*MemberEnterTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{29} return fileDescriptor_ws_822d08ca95807876, []int{29}
} }
func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error { func (m *MemberEnterTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b) return xxx_messageInfo_MemberEnterTips.Unmarshal(m, b)
@ -2358,7 +2358,7 @@ func (m *GroupDismissedTips) Reset() { *m = GroupDismissedTips{} }
func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) } func (m *GroupDismissedTips) String() string { return proto.CompactTextString(m) }
func (*GroupDismissedTips) ProtoMessage() {} func (*GroupDismissedTips) ProtoMessage() {}
func (*GroupDismissedTips) Descriptor() ([]byte, []int) { func (*GroupDismissedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{30} return fileDescriptor_ws_822d08ca95807876, []int{30}
} }
func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error { func (m *GroupDismissedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b) return xxx_messageInfo_GroupDismissedTips.Unmarshal(m, b)
@ -2414,7 +2414,7 @@ func (m *GroupMemberMutedTips) Reset() { *m = GroupMemberMutedTips{} }
func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMemberMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMemberMutedTips) ProtoMessage() {} func (*GroupMemberMutedTips) ProtoMessage() {}
func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) { func (*GroupMemberMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{31} return fileDescriptor_ws_822d08ca95807876, []int{31}
} }
func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMemberMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMemberMutedTips.Unmarshal(m, b)
@ -2483,7 +2483,7 @@ func (m *GroupMemberCancelMutedTips) Reset() { *m = GroupMemberCancelMut
func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMemberCancelMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMemberCancelMutedTips) ProtoMessage() {} func (*GroupMemberCancelMutedTips) ProtoMessage() {}
func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) { func (*GroupMemberCancelMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{32} return fileDescriptor_ws_822d08ca95807876, []int{32}
} }
func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMemberCancelMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMemberCancelMutedTips.Unmarshal(m, b)
@ -2544,7 +2544,7 @@ func (m *GroupMutedTips) Reset() { *m = GroupMutedTips{} }
func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupMutedTips) ProtoMessage() {} func (*GroupMutedTips) ProtoMessage() {}
func (*GroupMutedTips) Descriptor() ([]byte, []int) { func (*GroupMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{33} return fileDescriptor_ws_822d08ca95807876, []int{33}
} }
func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupMutedTips.Unmarshal(m, b)
@ -2598,7 +2598,7 @@ func (m *GroupCancelMutedTips) Reset() { *m = GroupCancelMutedTips{} }
func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) } func (m *GroupCancelMutedTips) String() string { return proto.CompactTextString(m) }
func (*GroupCancelMutedTips) ProtoMessage() {} func (*GroupCancelMutedTips) ProtoMessage() {}
func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) { func (*GroupCancelMutedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{34} return fileDescriptor_ws_822d08ca95807876, []int{34}
} }
func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error { func (m *GroupCancelMutedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b) return xxx_messageInfo_GroupCancelMutedTips.Unmarshal(m, b)
@ -2652,7 +2652,7 @@ func (m *FriendApplication) Reset() { *m = FriendApplication{} }
func (m *FriendApplication) String() string { return proto.CompactTextString(m) } func (m *FriendApplication) String() string { return proto.CompactTextString(m) }
func (*FriendApplication) ProtoMessage() {} func (*FriendApplication) ProtoMessage() {}
func (*FriendApplication) Descriptor() ([]byte, []int) { func (*FriendApplication) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{35} return fileDescriptor_ws_822d08ca95807876, []int{35}
} }
func (m *FriendApplication) XXX_Unmarshal(b []byte) error { func (m *FriendApplication) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplication.Unmarshal(m, b) return xxx_messageInfo_FriendApplication.Unmarshal(m, b)
@ -2705,7 +2705,7 @@ func (m *FromToUserID) Reset() { *m = FromToUserID{} }
func (m *FromToUserID) String() string { return proto.CompactTextString(m) } func (m *FromToUserID) String() string { return proto.CompactTextString(m) }
func (*FromToUserID) ProtoMessage() {} func (*FromToUserID) ProtoMessage() {}
func (*FromToUserID) Descriptor() ([]byte, []int) { func (*FromToUserID) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{36} return fileDescriptor_ws_822d08ca95807876, []int{36}
} }
func (m *FromToUserID) XXX_Unmarshal(b []byte) error { func (m *FromToUserID) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FromToUserID.Unmarshal(m, b) return xxx_messageInfo_FromToUserID.Unmarshal(m, b)
@ -2751,7 +2751,7 @@ func (m *FriendApplicationTips) Reset() { *m = FriendApplicationTips{} }
func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationTips) ProtoMessage() {} func (*FriendApplicationTips) ProtoMessage() {}
func (*FriendApplicationTips) Descriptor() ([]byte, []int) { func (*FriendApplicationTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{37} return fileDescriptor_ws_822d08ca95807876, []int{37}
} }
func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationTips.Unmarshal(m, b)
@ -2791,7 +2791,7 @@ func (m *FriendApplicationApprovedTips) Reset() { *m = FriendApplication
func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationApprovedTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationApprovedTips) ProtoMessage() {} func (*FriendApplicationApprovedTips) ProtoMessage() {}
func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) { func (*FriendApplicationApprovedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{38} return fileDescriptor_ws_822d08ca95807876, []int{38}
} }
func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationApprovedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationApprovedTips.Unmarshal(m, b)
@ -2838,7 +2838,7 @@ func (m *FriendApplicationRejectedTips) Reset() { *m = FriendApplication
func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) } func (m *FriendApplicationRejectedTips) String() string { return proto.CompactTextString(m) }
func (*FriendApplicationRejectedTips) ProtoMessage() {} func (*FriendApplicationRejectedTips) ProtoMessage() {}
func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) { func (*FriendApplicationRejectedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{39} return fileDescriptor_ws_822d08ca95807876, []int{39}
} }
func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error { func (m *FriendApplicationRejectedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b) return xxx_messageInfo_FriendApplicationRejectedTips.Unmarshal(m, b)
@ -2886,7 +2886,7 @@ func (m *FriendAddedTips) Reset() { *m = FriendAddedTips{} }
func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) } func (m *FriendAddedTips) String() string { return proto.CompactTextString(m) }
func (*FriendAddedTips) ProtoMessage() {} func (*FriendAddedTips) ProtoMessage() {}
func (*FriendAddedTips) Descriptor() ([]byte, []int) { func (*FriendAddedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{40} return fileDescriptor_ws_822d08ca95807876, []int{40}
} }
func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error { func (m *FriendAddedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b) return xxx_messageInfo_FriendAddedTips.Unmarshal(m, b)
@ -2939,7 +2939,7 @@ func (m *FriendDeletedTips) Reset() { *m = FriendDeletedTips{} }
func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) } func (m *FriendDeletedTips) String() string { return proto.CompactTextString(m) }
func (*FriendDeletedTips) ProtoMessage() {} func (*FriendDeletedTips) ProtoMessage() {}
func (*FriendDeletedTips) Descriptor() ([]byte, []int) { func (*FriendDeletedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{41} return fileDescriptor_ws_822d08ca95807876, []int{41}
} }
func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error { func (m *FriendDeletedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b) return xxx_messageInfo_FriendDeletedTips.Unmarshal(m, b)
@ -2977,7 +2977,7 @@ func (m *BlackAddedTips) Reset() { *m = BlackAddedTips{} }
func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) } func (m *BlackAddedTips) String() string { return proto.CompactTextString(m) }
func (*BlackAddedTips) ProtoMessage() {} func (*BlackAddedTips) ProtoMessage() {}
func (*BlackAddedTips) Descriptor() ([]byte, []int) { func (*BlackAddedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{42} return fileDescriptor_ws_822d08ca95807876, []int{42}
} }
func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error { func (m *BlackAddedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b) return xxx_messageInfo_BlackAddedTips.Unmarshal(m, b)
@ -3015,7 +3015,7 @@ func (m *BlackDeletedTips) Reset() { *m = BlackDeletedTips{} }
func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) } func (m *BlackDeletedTips) String() string { return proto.CompactTextString(m) }
func (*BlackDeletedTips) ProtoMessage() {} func (*BlackDeletedTips) ProtoMessage() {}
func (*BlackDeletedTips) Descriptor() ([]byte, []int) { func (*BlackDeletedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{43} return fileDescriptor_ws_822d08ca95807876, []int{43}
} }
func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error { func (m *BlackDeletedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b) return xxx_messageInfo_BlackDeletedTips.Unmarshal(m, b)
@ -3053,7 +3053,7 @@ func (m *FriendInfoChangedTips) Reset() { *m = FriendInfoChangedTips{} }
func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) } func (m *FriendInfoChangedTips) String() string { return proto.CompactTextString(m) }
func (*FriendInfoChangedTips) ProtoMessage() {} func (*FriendInfoChangedTips) ProtoMessage() {}
func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) { func (*FriendInfoChangedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{44} return fileDescriptor_ws_822d08ca95807876, []int{44}
} }
func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error { func (m *FriendInfoChangedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b) return xxx_messageInfo_FriendInfoChangedTips.Unmarshal(m, b)
@ -3092,7 +3092,7 @@ func (m *UserInfoUpdatedTips) Reset() { *m = UserInfoUpdatedTips{} }
func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) } func (m *UserInfoUpdatedTips) String() string { return proto.CompactTextString(m) }
func (*UserInfoUpdatedTips) ProtoMessage() {} func (*UserInfoUpdatedTips) ProtoMessage() {}
func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) { func (*UserInfoUpdatedTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{45} return fileDescriptor_ws_822d08ca95807876, []int{45}
} }
func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error { func (m *UserInfoUpdatedTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b) return xxx_messageInfo_UserInfoUpdatedTips.Unmarshal(m, b)
@ -3131,7 +3131,7 @@ func (m *ConversationUpdateTips) Reset() { *m = ConversationUpdateTips{}
func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) } func (m *ConversationUpdateTips) String() string { return proto.CompactTextString(m) }
func (*ConversationUpdateTips) ProtoMessage() {} func (*ConversationUpdateTips) ProtoMessage() {}
func (*ConversationUpdateTips) Descriptor() ([]byte, []int) { func (*ConversationUpdateTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{46} return fileDescriptor_ws_822d08ca95807876, []int{46}
} }
func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error { func (m *ConversationUpdateTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b) return xxx_messageInfo_ConversationUpdateTips.Unmarshal(m, b)
@ -3171,7 +3171,7 @@ func (m *ConversationSetPrivateTips) Reset() { *m = ConversationSetPriva
func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) } func (m *ConversationSetPrivateTips) String() string { return proto.CompactTextString(m) }
func (*ConversationSetPrivateTips) ProtoMessage() {} func (*ConversationSetPrivateTips) ProtoMessage() {}
func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) { func (*ConversationSetPrivateTips) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{47} return fileDescriptor_ws_822d08ca95807876, []int{47}
} }
func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error { func (m *ConversationSetPrivateTips) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b) return xxx_messageInfo_ConversationSetPrivateTips.Unmarshal(m, b)
@ -3225,7 +3225,7 @@ func (m *RequestPagination) Reset() { *m = RequestPagination{} }
func (m *RequestPagination) String() string { return proto.CompactTextString(m) } func (m *RequestPagination) String() string { return proto.CompactTextString(m) }
func (*RequestPagination) ProtoMessage() {} func (*RequestPagination) ProtoMessage() {}
func (*RequestPagination) Descriptor() ([]byte, []int) { func (*RequestPagination) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{48} return fileDescriptor_ws_822d08ca95807876, []int{48}
} }
func (m *RequestPagination) XXX_Unmarshal(b []byte) error { func (m *RequestPagination) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RequestPagination.Unmarshal(m, b) return xxx_messageInfo_RequestPagination.Unmarshal(m, b)
@ -3271,7 +3271,7 @@ func (m *ResponsePagination) Reset() { *m = ResponsePagination{} }
func (m *ResponsePagination) String() string { return proto.CompactTextString(m) } func (m *ResponsePagination) String() string { return proto.CompactTextString(m) }
func (*ResponsePagination) ProtoMessage() {} func (*ResponsePagination) ProtoMessage() {}
func (*ResponsePagination) Descriptor() ([]byte, []int) { func (*ResponsePagination) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{49} return fileDescriptor_ws_822d08ca95807876, []int{49}
} }
func (m *ResponsePagination) XXX_Unmarshal(b []byte) error { func (m *ResponsePagination) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResponsePagination.Unmarshal(m, b) return xxx_messageInfo_ResponsePagination.Unmarshal(m, b)
@ -3324,7 +3324,7 @@ func (m *SignalReq) Reset() { *m = SignalReq{} }
func (m *SignalReq) String() string { return proto.CompactTextString(m) } func (m *SignalReq) String() string { return proto.CompactTextString(m) }
func (*SignalReq) ProtoMessage() {} func (*SignalReq) ProtoMessage() {}
func (*SignalReq) Descriptor() ([]byte, []int) { func (*SignalReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{50} return fileDescriptor_ws_822d08ca95807876, []int{50}
} }
func (m *SignalReq) XXX_Unmarshal(b []byte) error { func (m *SignalReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalReq.Unmarshal(m, b) return xxx_messageInfo_SignalReq.Unmarshal(m, b)
@ -3591,7 +3591,7 @@ func (m *SignalResp) Reset() { *m = SignalResp{} }
func (m *SignalResp) String() string { return proto.CompactTextString(m) } func (m *SignalResp) String() string { return proto.CompactTextString(m) }
func (*SignalResp) ProtoMessage() {} func (*SignalResp) ProtoMessage() {}
func (*SignalResp) Descriptor() ([]byte, []int) { func (*SignalResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{51} return fileDescriptor_ws_822d08ca95807876, []int{51}
} }
func (m *SignalResp) XXX_Unmarshal(b []byte) error { func (m *SignalResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalResp.Unmarshal(m, b) return xxx_messageInfo_SignalResp.Unmarshal(m, b)
@ -3859,7 +3859,7 @@ func (m *InvitationInfo) Reset() { *m = InvitationInfo{} }
func (m *InvitationInfo) String() string { return proto.CompactTextString(m) } func (m *InvitationInfo) String() string { return proto.CompactTextString(m) }
func (*InvitationInfo) ProtoMessage() {} func (*InvitationInfo) ProtoMessage() {}
func (*InvitationInfo) Descriptor() ([]byte, []int) { func (*InvitationInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{52} return fileDescriptor_ws_822d08ca95807876, []int{52}
} }
func (m *InvitationInfo) XXX_Unmarshal(b []byte) error { func (m *InvitationInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvitationInfo.Unmarshal(m, b) return xxx_messageInfo_InvitationInfo.Unmarshal(m, b)
@ -3955,7 +3955,7 @@ func (m *ParticipantMetaData) Reset() { *m = ParticipantMetaData{} }
func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) } func (m *ParticipantMetaData) String() string { return proto.CompactTextString(m) }
func (*ParticipantMetaData) ProtoMessage() {} func (*ParticipantMetaData) ProtoMessage() {}
func (*ParticipantMetaData) Descriptor() ([]byte, []int) { func (*ParticipantMetaData) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{53} return fileDescriptor_ws_822d08ca95807876, []int{53}
} }
func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error { func (m *ParticipantMetaData) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b) return xxx_messageInfo_ParticipantMetaData.Unmarshal(m, b)
@ -4010,7 +4010,7 @@ func (m *SignalInviteReq) Reset() { *m = SignalInviteReq{} }
func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) } func (m *SignalInviteReq) String() string { return proto.CompactTextString(m) }
func (*SignalInviteReq) ProtoMessage() {} func (*SignalInviteReq) ProtoMessage() {}
func (*SignalInviteReq) Descriptor() ([]byte, []int) { func (*SignalInviteReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{54} return fileDescriptor_ws_822d08ca95807876, []int{54}
} }
func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error { func (m *SignalInviteReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b) return xxx_messageInfo_SignalInviteReq.Unmarshal(m, b)
@ -4071,7 +4071,7 @@ func (m *SignalInviteReply) Reset() { *m = SignalInviteReply{} }
func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) } func (m *SignalInviteReply) String() string { return proto.CompactTextString(m) }
func (*SignalInviteReply) ProtoMessage() {} func (*SignalInviteReply) ProtoMessage() {}
func (*SignalInviteReply) Descriptor() ([]byte, []int) { func (*SignalInviteReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{55} return fileDescriptor_ws_822d08ca95807876, []int{55}
} }
func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error { func (m *SignalInviteReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b) return xxx_messageInfo_SignalInviteReply.Unmarshal(m, b)
@ -4126,7 +4126,7 @@ func (m *SignalInviteInGroupReq) Reset() { *m = SignalInviteInGroupReq{}
func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) } func (m *SignalInviteInGroupReq) String() string { return proto.CompactTextString(m) }
func (*SignalInviteInGroupReq) ProtoMessage() {} func (*SignalInviteInGroupReq) ProtoMessage() {}
func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) { func (*SignalInviteInGroupReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{56} return fileDescriptor_ws_822d08ca95807876, []int{56}
} }
func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error { func (m *SignalInviteInGroupReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b) return xxx_messageInfo_SignalInviteInGroupReq.Unmarshal(m, b)
@ -4187,7 +4187,7 @@ func (m *SignalInviteInGroupReply) Reset() { *m = SignalInviteInGroupRep
func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) } func (m *SignalInviteInGroupReply) String() string { return proto.CompactTextString(m) }
func (*SignalInviteInGroupReply) ProtoMessage() {} func (*SignalInviteInGroupReply) ProtoMessage() {}
func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) { func (*SignalInviteInGroupReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{57} return fileDescriptor_ws_822d08ca95807876, []int{57}
} }
func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error { func (m *SignalInviteInGroupReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b) return xxx_messageInfo_SignalInviteInGroupReply.Unmarshal(m, b)
@ -4242,7 +4242,7 @@ func (m *SignalCancelReq) Reset() { *m = SignalCancelReq{} }
func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) } func (m *SignalCancelReq) String() string { return proto.CompactTextString(m) }
func (*SignalCancelReq) ProtoMessage() {} func (*SignalCancelReq) ProtoMessage() {}
func (*SignalCancelReq) Descriptor() ([]byte, []int) { func (*SignalCancelReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{58} return fileDescriptor_ws_822d08ca95807876, []int{58}
} }
func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error { func (m *SignalCancelReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b) return xxx_messageInfo_SignalCancelReq.Unmarshal(m, b)
@ -4300,7 +4300,7 @@ func (m *SignalCancelReply) Reset() { *m = SignalCancelReply{} }
func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) } func (m *SignalCancelReply) String() string { return proto.CompactTextString(m) }
func (*SignalCancelReply) ProtoMessage() {} func (*SignalCancelReply) ProtoMessage() {}
func (*SignalCancelReply) Descriptor() ([]byte, []int) { func (*SignalCancelReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{59} return fileDescriptor_ws_822d08ca95807876, []int{59}
} }
func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error { func (m *SignalCancelReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b) return xxx_messageInfo_SignalCancelReply.Unmarshal(m, b)
@ -4335,7 +4335,7 @@ func (m *SignalAcceptReq) Reset() { *m = SignalAcceptReq{} }
func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) } func (m *SignalAcceptReq) String() string { return proto.CompactTextString(m) }
func (*SignalAcceptReq) ProtoMessage() {} func (*SignalAcceptReq) ProtoMessage() {}
func (*SignalAcceptReq) Descriptor() ([]byte, []int) { func (*SignalAcceptReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{60} return fileDescriptor_ws_822d08ca95807876, []int{60}
} }
func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error { func (m *SignalAcceptReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b) return xxx_messageInfo_SignalAcceptReq.Unmarshal(m, b)
@ -4403,7 +4403,7 @@ func (m *SignalAcceptReply) Reset() { *m = SignalAcceptReply{} }
func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) } func (m *SignalAcceptReply) String() string { return proto.CompactTextString(m) }
func (*SignalAcceptReply) ProtoMessage() {} func (*SignalAcceptReply) ProtoMessage() {}
func (*SignalAcceptReply) Descriptor() ([]byte, []int) { func (*SignalAcceptReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{61} return fileDescriptor_ws_822d08ca95807876, []int{61}
} }
func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error { func (m *SignalAcceptReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b) return xxx_messageInfo_SignalAcceptReply.Unmarshal(m, b)
@ -4457,7 +4457,7 @@ func (m *SignalHungUpReq) Reset() { *m = SignalHungUpReq{} }
func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) } func (m *SignalHungUpReq) String() string { return proto.CompactTextString(m) }
func (*SignalHungUpReq) ProtoMessage() {} func (*SignalHungUpReq) ProtoMessage() {}
func (*SignalHungUpReq) Descriptor() ([]byte, []int) { func (*SignalHungUpReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{62} return fileDescriptor_ws_822d08ca95807876, []int{62}
} }
func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error { func (m *SignalHungUpReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b) return xxx_messageInfo_SignalHungUpReq.Unmarshal(m, b)
@ -4508,7 +4508,7 @@ func (m *SignalHungUpReply) Reset() { *m = SignalHungUpReply{} }
func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) } func (m *SignalHungUpReply) String() string { return proto.CompactTextString(m) }
func (*SignalHungUpReply) ProtoMessage() {} func (*SignalHungUpReply) ProtoMessage() {}
func (*SignalHungUpReply) Descriptor() ([]byte, []int) { func (*SignalHungUpReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{63} return fileDescriptor_ws_822d08ca95807876, []int{63}
} }
func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error { func (m *SignalHungUpReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b) return xxx_messageInfo_SignalHungUpReply.Unmarshal(m, b)
@ -4543,7 +4543,7 @@ func (m *SignalRejectReq) Reset() { *m = SignalRejectReq{} }
func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) } func (m *SignalRejectReq) String() string { return proto.CompactTextString(m) }
func (*SignalRejectReq) ProtoMessage() {} func (*SignalRejectReq) ProtoMessage() {}
func (*SignalRejectReq) Descriptor() ([]byte, []int) { func (*SignalRejectReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{64} return fileDescriptor_ws_822d08ca95807876, []int{64}
} }
func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error { func (m *SignalRejectReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b) return xxx_messageInfo_SignalRejectReq.Unmarshal(m, b)
@ -4608,7 +4608,7 @@ func (m *SignalRejectReply) Reset() { *m = SignalRejectReply{} }
func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) } func (m *SignalRejectReply) String() string { return proto.CompactTextString(m) }
func (*SignalRejectReply) ProtoMessage() {} func (*SignalRejectReply) ProtoMessage() {}
func (*SignalRejectReply) Descriptor() ([]byte, []int) { func (*SignalRejectReply) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{65} return fileDescriptor_ws_822d08ca95807876, []int{65}
} }
func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error { func (m *SignalRejectReply) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b) return xxx_messageInfo_SignalRejectReply.Unmarshal(m, b)
@ -4642,7 +4642,7 @@ func (m *DelMsgListReq) Reset() { *m = DelMsgListReq{} }
func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) } func (m *DelMsgListReq) String() string { return proto.CompactTextString(m) }
func (*DelMsgListReq) ProtoMessage() {} func (*DelMsgListReq) ProtoMessage() {}
func (*DelMsgListReq) Descriptor() ([]byte, []int) { func (*DelMsgListReq) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{66} return fileDescriptor_ws_822d08ca95807876, []int{66}
} }
func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error { func (m *DelMsgListReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b) return xxx_messageInfo_DelMsgListReq.Unmarshal(m, b)
@ -4702,7 +4702,7 @@ func (m *DelMsgListResp) Reset() { *m = DelMsgListResp{} }
func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) } func (m *DelMsgListResp) String() string { return proto.CompactTextString(m) }
func (*DelMsgListResp) ProtoMessage() {} func (*DelMsgListResp) ProtoMessage() {}
func (*DelMsgListResp) Descriptor() ([]byte, []int) { func (*DelMsgListResp) Descriptor() ([]byte, []int) {
return fileDescriptor_ws_966fa482a95c53be, []int{67} return fileDescriptor_ws_822d08ca95807876, []int{67}
} }
func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error { func (m *DelMsgListResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b) return xxx_messageInfo_DelMsgListResp.Unmarshal(m, b)
@ -4808,195 +4808,195 @@ func init() {
proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp") proto.RegisterType((*DelMsgListResp)(nil), "server_api_params.DelMsgListResp")
} }
func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_966fa482a95c53be) } func init() { proto.RegisterFile("sdk_ws/ws.proto", fileDescriptor_ws_822d08ca95807876) }
var fileDescriptor_ws_966fa482a95c53be = []byte{ var fileDescriptor_ws_822d08ca95807876 = []byte{
// 2988 bytes of a gzipped FileDescriptorProto // 2985 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x6f, 0x24, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcd, 0x6f, 0x24, 0x47,
0xd1, 0xff, 0xaa, 0xda, 0xdd, 0x76, 0x47, 0xbb, 0xfd, 0xa8, 0x99, 0xcf, 0x34, 0x66, 0x76, 0x30, 0x15, 0xa7, 0x7b, 0x3c, 0x63, 0xcf, 0x1b, 0x8f, 0x3f, 0x7a, 0x17, 0x33, 0x98, 0xcd, 0x62, 0x1a,
0x85, 0xb5, 0x2c, 0x0b, 0xcc, 0xa2, 0x45, 0x48, 0xb0, 0x0b, 0x83, 0xfc, 0x9a, 0xc7, 0xae, 0xdb, 0x2b, 0x84, 0x00, 0x1b, 0x14, 0x84, 0x04, 0x09, 0x2c, 0xf2, 0xd7, 0x7e, 0x04, 0x8f, 0xed, 0xf4,
0xf6, 0x56, 0xcf, 0xb0, 0x08, 0x90, 0x56, 0xe5, 0xae, 0x74, 0xbb, 0xd6, 0xd5, 0x55, 0xd5, 0xf5, 0xec, 0x12, 0x04, 0x48, 0x51, 0x7b, 0xba, 0x3c, 0xee, 0xb8, 0xa7, 0xab, 0xa7, 0x3f, 0xbc, 0x6b,
0xf0, 0x8c, 0x11, 0x12, 0x12, 0x48, 0x88, 0x1b, 0x27, 0x38, 0x70, 0x41, 0xe2, 0x82, 0x40, 0xab, 0x84, 0x84, 0x04, 0x12, 0xe2, 0xc6, 0x09, 0x0e, 0x5c, 0x90, 0xb8, 0x20, 0x50, 0x14, 0x45, 0x08,
0xd5, 0x0a, 0x81, 0xc4, 0x01, 0x21, 0x0e, 0xfc, 0x03, 0x1c, 0x11, 0x37, 0xce, 0x5c, 0x39, 0x20, 0x6e, 0x11, 0xe2, 0xc0, 0x3f, 0xc0, 0x11, 0x71, 0xe3, 0xcc, 0x95, 0x03, 0x12, 0x12, 0xa8, 0xea,
0x21, 0x81, 0x32, 0x22, 0xab, 0x2a, 0xb3, 0xaa, 0xdb, 0xee, 0xb5, 0xac, 0x9d, 0x59, 0x0d, 0x37, 0x55, 0x57, 0x57, 0x75, 0xcf, 0xd8, 0x13, 0xcb, 0xca, 0x6e, 0xb4, 0xdc, 0xfc, 0xde, 0xd4, 0x7b,
0x47, 0x74, 0x46, 0x64, 0xe4, 0x2f, 0x22, 0x23, 0x22, 0x33, 0xcb, 0xb0, 0x18, 0x3b, 0x27, 0x6f, 0xf5, 0xea, 0xf7, 0x5e, 0xbd, 0xf7, 0xaa, 0xaa, 0x0d, 0x8b, 0x89, 0x77, 0xf2, 0xe6, 0xa3, 0xe4,
0x3d, 0x8a, 0x5f, 0x7a, 0x14, 0xdf, 0x0a, 0xa3, 0x20, 0x09, 0x8c, 0xe5, 0x98, 0x45, 0xa7, 0x2c, 0xa5, 0x47, 0xc9, 0xad, 0x28, 0xa6, 0x29, 0xb5, 0x96, 0x13, 0x12, 0x9f, 0x92, 0xf8, 0x4d, 0x37,
0x7a, 0xcb, 0x0e, 0xdd, 0xb7, 0x42, 0x3b, 0xb2, 0x87, 0xb1, 0xf9, 0x4f, 0x1d, 0x9a, 0x77, 0xa3, 0xf2, 0xdf, 0x8c, 0xdc, 0xd8, 0x1d, 0x26, 0xf6, 0xbf, 0x4c, 0x68, 0xde, 0x8d, 0x69, 0x16, 0xdd,
0x20, 0x0d, 0xef, 0xfb, 0x47, 0x81, 0xd1, 0x81, 0xd9, 0x01, 0x12, 0xdb, 0x1d, 0x6d, 0x4d, 0x7b, 0x0f, 0x8f, 0xa8, 0xd5, 0x81, 0xd9, 0x01, 0x27, 0xb6, 0x3b, 0xc6, 0x9a, 0xf1, 0x42, 0xd3, 0xc9,
0xa1, 0x69, 0x65, 0xa4, 0x71, 0x03, 0x9a, 0xf8, 0xe7, 0x9e, 0x3d, 0x64, 0x1d, 0x1d, 0x7f, 0x2b, 0x49, 0xeb, 0x06, 0x34, 0xf9, 0x9f, 0x7b, 0xee, 0x90, 0x74, 0x4c, 0xfe, 0x5b, 0xc1, 0xb0, 0x6c,
0x18, 0x86, 0x09, 0xf3, 0x7e, 0x90, 0xb8, 0x47, 0x6e, 0xdf, 0x4e, 0xdc, 0xc0, 0xef, 0xd4, 0x70, 0x98, 0x0f, 0x69, 0xea, 0x1f, 0xf9, 0x7d, 0x37, 0xf5, 0x69, 0xd8, 0xa9, 0xf1, 0x01, 0x1a, 0x8f,
0x80, 0xc2, 0xe3, 0x63, 0x5c, 0x3f, 0x89, 0x02, 0x27, 0xed, 0xe3, 0x98, 0x19, 0x1a, 0x23, 0xf3, 0x8d, 0xf1, 0xc3, 0x34, 0xa6, 0x5e, 0xd6, 0xe7, 0x63, 0x66, 0x70, 0x8c, 0xca, 0x63, 0xf3, 0x1f,
0xf8, 0xfc, 0x47, 0x76, 0x9f, 0x3d, 0xb4, 0x76, 0x3b, 0x75, 0x9a, 0x5f, 0x90, 0xc6, 0x1a, 0xb4, 0xb9, 0x7d, 0xf2, 0xd0, 0xd9, 0xed, 0xd4, 0x71, 0x7e, 0x41, 0x5a, 0x6b, 0xd0, 0xa2, 0x8f, 0x42,
0x82, 0x47, 0x3e, 0x8b, 0x1e, 0xc6, 0x2c, 0xba, 0xbf, 0xdd, 0x69, 0xe0, 0xaf, 0x32, 0xcb, 0xb8, 0x12, 0x3f, 0x4c, 0x48, 0x7c, 0x7f, 0xbb, 0xd3, 0xe0, 0xbf, 0xaa, 0x2c, 0xeb, 0x26, 0x40, 0x3f,
0x09, 0xd0, 0x8f, 0x98, 0x9d, 0xb0, 0x07, 0xee, 0x90, 0x75, 0x66, 0xd7, 0xb4, 0x17, 0xda, 0x96, 0x26, 0x6e, 0x4a, 0x1e, 0xf8, 0x43, 0xd2, 0x99, 0x5d, 0x33, 0x5e, 0x68, 0x3b, 0x0a, 0x87, 0x69,
0xc4, 0xe1, 0x1a, 0x86, 0x6c, 0x78, 0xc8, 0xa2, 0xad, 0x20, 0xf5, 0x93, 0xce, 0x1c, 0x0e, 0x90, 0x18, 0x92, 0xe1, 0x21, 0x89, 0xb7, 0x68, 0x16, 0xa6, 0x9d, 0x39, 0x3e, 0x40, 0x65, 0x59, 0x0b,
0x59, 0xc6, 0x02, 0xe8, 0xec, 0x71, 0xa7, 0x89, 0xaa, 0x75, 0xf6, 0xd8, 0x58, 0x81, 0x46, 0x9c, 0x60, 0x92, 0xc7, 0x9d, 0x26, 0x57, 0x6d, 0x92, 0xc7, 0xd6, 0x0a, 0x34, 0x92, 0xd4, 0x4d, 0xb3,
0xd8, 0x49, 0x1a, 0x77, 0x60, 0x4d, 0x7b, 0xa1, 0x6e, 0x09, 0xca, 0x58, 0x87, 0x36, 0xea, 0x0d, 0xa4, 0x03, 0x6b, 0xc6, 0x0b, 0x75, 0x47, 0x50, 0xd6, 0x3a, 0xb4, 0xb9, 0x5e, 0x9a, 0x5b, 0xd3,
0x32, 0x6b, 0x5a, 0x28, 0xa2, 0x32, 0x73, 0xc4, 0x1e, 0x9c, 0x85, 0xac, 0x33, 0x8f, 0x0a, 0x0a, 0xe2, 0x22, 0x3a, 0x53, 0x22, 0xf6, 0xe0, 0x2c, 0x22, 0x9d, 0x79, 0xae, 0xa0, 0x60, 0xd8, 0x7f,
0x86, 0xf9, 0x57, 0x1d, 0xae, 0x21, 0xee, 0x5d, 0x34, 0xe0, 0x4e, 0xea, 0x79, 0x17, 0x78, 0x60, 0x33, 0xe1, 0x1a, 0xc7, 0xbd, 0xcb, 0x0d, 0xb8, 0x93, 0x05, 0xc1, 0x05, 0x1e, 0x58, 0x81, 0x46,
0x05, 0x1a, 0x29, 0x4d, 0x47, 0xf0, 0x0b, 0x8a, 0xcf, 0x13, 0x05, 0x1e, 0xdb, 0x65, 0xa7, 0xcc, 0x86, 0xd3, 0x21, 0xfc, 0x82, 0x62, 0xf3, 0xc4, 0x34, 0x20, 0xbb, 0xe4, 0x94, 0x04, 0x1c, 0xf8,
0x43, 0xe0, 0xeb, 0x56, 0xc1, 0x30, 0x56, 0x61, 0xee, 0xed, 0xc0, 0xf5, 0x11, 0x93, 0x19, 0xfc, 0xba, 0x53, 0x30, 0xac, 0x55, 0x98, 0x7b, 0x8b, 0xfa, 0x21, 0xc7, 0x64, 0x86, 0xff, 0x28, 0x69,
0x31, 0xa7, 0xf9, 0x6f, 0xbe, 0xdb, 0x3f, 0xf1, 0xb9, 0x4b, 0x09, 0xee, 0x9c, 0x96, 0x3d, 0xd1, 0xf6, 0x5b, 0xe8, 0xf7, 0x4f, 0x42, 0xe6, 0x52, 0x84, 0x5b, 0xd2, 0xaa, 0x27, 0x1a, 0xba, 0x27,
0x50, 0x3d, 0xf1, 0x3c, 0x2c, 0xd8, 0x61, 0xd8, 0xb5, 0xfd, 0x01, 0x8b, 0x68, 0xd2, 0x59, 0xd4, 0x9e, 0x87, 0x05, 0x37, 0x8a, 0xba, 0x6e, 0x38, 0x20, 0x31, 0x4e, 0x3a, 0xcb, 0xf5, 0x96, 0xb8,
0x5b, 0xe2, 0x72, 0x7f, 0xf0, 0x99, 0x7a, 0x41, 0x1a, 0xf5, 0x19, 0xc2, 0x5d, 0xb7, 0x24, 0x0e, 0xcc, 0x1f, 0x6c, 0xa6, 0x1e, 0xcd, 0xe2, 0x3e, 0xe1, 0x70, 0xd7, 0x1d, 0x85, 0xc3, 0xf4, 0xd0,
0xd7, 0x13, 0x84, 0x2c, 0x92, 0x60, 0x24, 0xe4, 0x4b, 0x5c, 0xe1, 0x15, 0xc8, 0xbd, 0xc2, 0xfd, 0x88, 0xc4, 0x0a, 0x8c, 0x88, 0x7c, 0x89, 0x2b, 0xbc, 0x02, 0xd2, 0x2b, 0xcc, 0x8f, 0x59, 0x4a,
0x98, 0x26, 0x6c, 0xc7, 0x77, 0x70, 0x51, 0x2d, 0xe1, 0xc7, 0x82, 0x65, 0xfe, 0x50, 0x83, 0x85, 0x76, 0x42, 0x8f, 0x2f, 0xaa, 0x25, 0xfc, 0x58, 0xb0, 0xec, 0x9f, 0x18, 0xb0, 0x70, 0x90, 0x1d,
0x83, 0xf4, 0xd0, 0x73, 0xfb, 0xa8, 0x82, 0xc3, 0x5a, 0x80, 0xa7, 0x29, 0xe0, 0xc9, 0x10, 0xe8, 0x06, 0x7e, 0x9f, 0xab, 0x60, 0xb0, 0x16, 0xe0, 0x19, 0x1a, 0x78, 0x2a, 0x04, 0xe6, 0x64, 0x08,
0x93, 0x21, 0xa8, 0xa9, 0x10, 0xac, 0x40, 0x63, 0xc0, 0x7c, 0x87, 0x45, 0x02, 0x52, 0x41, 0x09, 0x6a, 0x3a, 0x04, 0x2b, 0xd0, 0x18, 0x90, 0xd0, 0x23, 0xb1, 0x80, 0x54, 0x50, 0xc2, 0xd4, 0x7a,
0x53, 0xeb, 0x99, 0xa9, 0xe6, 0x4f, 0x75, 0x98, 0xfb, 0x80, 0x4d, 0x58, 0x83, 0x56, 0x78, 0x1c, 0x6e, 0xaa, 0xfd, 0x0b, 0x13, 0xe6, 0x3e, 0x60, 0x13, 0xd6, 0xa0, 0x15, 0x1d, 0xd3, 0x90, 0xec,
0xf8, 0x6c, 0x2f, 0xe5, 0x61, 0x25, 0x6c, 0x91, 0x59, 0xc6, 0x75, 0xa8, 0x1f, 0xba, 0x51, 0x72, 0x65, 0x2c, 0xac, 0x84, 0x2d, 0x2a, 0xcb, 0xba, 0x0e, 0xf5, 0x43, 0x3f, 0x4e, 0x8f, 0xb9, 0x5f,
0x8c, 0x7e, 0x6d, 0x5b, 0x44, 0x70, 0x2e, 0x1b, 0xda, 0x2e, 0x39, 0xb3, 0x69, 0x11, 0x21, 0x16, 0xdb, 0x0e, 0x12, 0x8c, 0x4b, 0x86, 0xae, 0x8f, 0xce, 0x6c, 0x3a, 0x48, 0x88, 0x05, 0xcd, 0x49,
0x34, 0x97, 0x63, 0xaf, 0xee, 0xb1, 0x66, 0x65, 0x8f, 0x55, 0x63, 0x03, 0xc6, 0xc5, 0x86, 0xf9, 0xec, 0xf5, 0x3d, 0xd6, 0xac, 0xec, 0xb1, 0x6a, 0x6c, 0xc0, 0xb8, 0xd8, 0xb0, 0xff, 0x6d, 0x00,
0x2f, 0x0d, 0xe0, 0x4e, 0xe4, 0x32, 0xdf, 0x41, 0x68, 0x4a, 0x9b, 0x5b, 0xab, 0x6e, 0xee, 0x15, 0xdc, 0x89, 0x7d, 0x12, 0x7a, 0x1c, 0x9a, 0xd2, 0xe6, 0x36, 0xaa, 0x9b, 0x7b, 0x05, 0x1a, 0x31,
0x68, 0x44, 0x6c, 0x68, 0x47, 0x27, 0x59, 0xf0, 0x13, 0x55, 0x32, 0xa8, 0x56, 0x31, 0xe8, 0x55, 0x19, 0xba, 0xf1, 0x49, 0x1e, 0xfc, 0x48, 0x95, 0x0c, 0xaa, 0x55, 0x0c, 0x7a, 0x15, 0xe0, 0x88,
0x80, 0x23, 0x9c, 0x87, 0xeb, 0x41, 0xa8, 0x5a, 0x2f, 0x7f, 0xec, 0x56, 0x25, 0x0d, 0xde, 0xca, 0xcf, 0xc3, 0xf4, 0x70, 0xa8, 0x5a, 0x2f, 0x7f, 0xe2, 0x56, 0x25, 0x0d, 0xde, 0xca, 0xbd, 0xe4,
0xbc, 0x64, 0x49, 0xc3, 0xf9, 0xce, 0xb2, 0x1d, 0x47, 0x04, 0x70, 0x9d, 0x76, 0x56, 0xce, 0x18, 0x28, 0xc3, 0xd9, 0xce, 0x72, 0x3d, 0x4f, 0x04, 0x70, 0x1d, 0x77, 0x96, 0x64, 0x8c, 0x89, 0xdf,
0x13, 0xbf, 0x8d, 0x73, 0xe2, 0x77, 0x36, 0x0f, 0x8a, 0x7f, 0x68, 0xd0, 0xdc, 0xf4, 0xec, 0xfe, 0xc6, 0x39, 0xf1, 0x3b, 0x2b, 0x83, 0xe2, 0x9f, 0x06, 0x34, 0x37, 0x03, 0xb7, 0x7f, 0x32, 0xe5,
0xc9, 0x94, 0x4b, 0x57, 0x97, 0xa8, 0x57, 0x96, 0x78, 0x17, 0xda, 0x87, 0x5c, 0x5d, 0xb6, 0x04, 0xd2, 0xf5, 0x25, 0x9a, 0x95, 0x25, 0xde, 0x85, 0xf6, 0x21, 0x53, 0x97, 0x2f, 0x81, 0xa3, 0xd0,
0x44, 0xa1, 0xf5, 0xf2, 0x27, 0xc6, 0xac, 0x52, 0xdd, 0x14, 0x96, 0x2a, 0xa7, 0x2e, 0x77, 0xe6, 0x7a, 0xf9, 0x53, 0x63, 0x56, 0xa9, 0x6f, 0x0a, 0x47, 0x97, 0xd3, 0x97, 0x3b, 0x73, 0xf1, 0x72,
0xe2, 0xe5, 0xd6, 0xcf, 0x59, 0x6e, 0x23, 0x5f, 0xee, 0x5f, 0x74, 0x98, 0xc7, 0x44, 0x67, 0xb1, 0xeb, 0xe7, 0x2c, 0xb7, 0x21, 0x97, 0xfb, 0x57, 0x13, 0xe6, 0x79, 0xa2, 0x73, 0xc8, 0x28, 0x23,
0x51, 0xca, 0xe2, 0xc4, 0xf8, 0x2a, 0xcc, 0xa5, 0x99, 0xa9, 0xda, 0xb4, 0xa6, 0xe6, 0x22, 0xc6, 0x49, 0x6a, 0x7d, 0x1d, 0xe6, 0xb2, 0xdc, 0x54, 0x63, 0x5a, 0x53, 0xa5, 0x88, 0xf5, 0x8a, 0x48,
0x2b, 0x22, 0xad, 0xa2, 0xbc, 0x8e, 0xf2, 0x37, 0xc6, 0xc8, 0xe7, 0x35, 0xcd, 0x2a, 0x86, 0xf3, 0xab, 0x5c, 0xde, 0xe4, 0xf2, 0x37, 0xc6, 0xc8, 0xcb, 0x9a, 0xe6, 0x14, 0xc3, 0x59, 0x09, 0x3a,
0x12, 0x74, 0x6c, 0xfb, 0x8e, 0xc7, 0x2c, 0x16, 0xa7, 0x5e, 0x22, 0xb2, 0xa5, 0xc2, 0xa3, 0x48, 0x76, 0x43, 0x2f, 0x20, 0x0e, 0x49, 0xb2, 0x20, 0x15, 0xd9, 0x52, 0xe3, 0x61, 0xa4, 0x8d, 0xba,
0x1b, 0x75, 0xe3, 0x81, 0x28, 0x50, 0x82, 0xe2, 0xe8, 0xd0, 0x38, 0xfe, 0x13, 0x2d, 0xbd, 0x60, 0xc9, 0x40, 0x14, 0x28, 0x41, 0x31, 0x74, 0x70, 0x1c, 0xfb, 0x09, 0x97, 0x5e, 0x30, 0xd8, 0x46,
0xf0, 0x8d, 0x1a, 0xb1, 0x11, 0x7a, 0x88, 0xb6, 0x55, 0x46, 0x16, 0x73, 0x0a, 0xd4, 0x28, 0x10, 0x8d, 0xc9, 0x88, 0x7b, 0x08, 0xb7, 0x55, 0x4e, 0x16, 0x73, 0x0a, 0xd4, 0x30, 0x10, 0x34, 0x1e,
0x14, 0x1e, 0x77, 0x31, 0xd1, 0xa8, 0x80, 0x2a, 0x93, 0xc4, 0x29, 0x17, 0x26, 0xf3, 0x6f, 0x35, 0x73, 0x31, 0xd2, 0x5c, 0x01, 0x56, 0x26, 0x85, 0x53, 0x2e, 0x4c, 0xf6, 0xdf, 0x6b, 0xd0, 0xc6,
0x68, 0xd3, 0xf6, 0xc9, 0x40, 0xbd, 0xc9, 0xe3, 0x3c, 0x18, 0x2a, 0x51, 0x24, 0x71, 0xb8, 0x15, 0xed, 0x93, 0x83, 0x7a, 0x93, 0xc5, 0x39, 0x1d, 0x6a, 0x51, 0xa4, 0x70, 0x98, 0x15, 0x8c, 0xda,
0x9c, 0xda, 0x53, 0x13, 0x8d, 0xc2, 0xe3, 0xa1, 0xc8, 0xe9, 0x3b, 0x4a, 0xc2, 0x91, 0x59, 0xd9, 0xd3, 0x13, 0x8d, 0xc6, 0x63, 0xa1, 0xc8, 0xe8, 0x3b, 0x5a, 0xc2, 0x51, 0x59, 0xf9, 0x2c, 0x77,
0x2c, 0x77, 0xe5, 0xc4, 0x23, 0x71, 0x78, 0x2a, 0x4b, 0x02, 0x25, 0x3a, 0x72, 0x9a, 0xcb, 0x26, 0xd5, 0xc4, 0xa3, 0x70, 0x58, 0x2a, 0x4b, 0xa9, 0x16, 0x1d, 0x92, 0x66, 0xb2, 0x29, 0x95, 0xf3,
0x41, 0x3e, 0x3f, 0xc5, 0x87, 0xc4, 0xe1, 0xf8, 0x26, 0x41, 0x36, 0x37, 0x81, 0x54, 0x30, 0x48, 0x63, 0x7c, 0x28, 0x1c, 0x86, 0x6f, 0x4a, 0xf3, 0xb9, 0x11, 0xa4, 0x82, 0x81, 0x9a, 0xc5, 0xbc,
0xb3, 0x98, 0x97, 0x4a, 0x49, 0x4e, 0x57, 0xbc, 0xda, 0x3c, 0xd7, 0xab, 0xa0, 0x78, 0x55, 0xdd, 0x58, 0x4a, 0x24, 0x5d, 0xf1, 0x6a, 0xf3, 0x5c, 0xaf, 0x82, 0xe6, 0x55, 0x7d, 0x73, 0xb5, 0x2a,
0x5c, 0xad, 0xca, 0xe6, 0x5a, 0x87, 0x36, 0xe9, 0xc9, 0x82, 0x7e, 0x9e, 0x4a, 0xbd, 0xc2, 0x54, 0x9b, 0x6b, 0x1d, 0xda, 0xa8, 0x27, 0x0f, 0xfa, 0x79, 0x2c, 0xf5, 0x1a, 0x53, 0x8f, 0x8d, 0x76,
0x63, 0xa3, 0x5d, 0x8e, 0x0d, 0xd5, 0xbb, 0x0b, 0x13, 0xbc, 0xbb, 0x98, 0x7b, 0xf7, 0x37, 0x3a, 0x39, 0x36, 0x74, 0xef, 0x2e, 0x4c, 0xf0, 0xee, 0xa2, 0xf4, 0xee, 0xef, 0x4d, 0x80, 0x6d, 0x12,
0xc0, 0x36, 0x0b, 0xed, 0x28, 0x19, 0x32, 0x3f, 0xe1, 0xcb, 0x73, 0x72, 0x2a, 0x77, 0xae, 0xc2, 0xb9, 0x71, 0x3a, 0x24, 0x61, 0xca, 0x96, 0xe7, 0x49, 0x4a, 0x3a, 0x57, 0xe3, 0xa9, 0x75, 0xc2,
0x93, 0xeb, 0x84, 0xae, 0xd6, 0x09, 0x03, 0x66, 0x10, 0x70, 0xf2, 0x26, 0xfe, 0xcd, 0xc1, 0x0c, 0xd4, 0xeb, 0x84, 0x05, 0x33, 0x1c, 0x70, 0xf4, 0x26, 0xff, 0x9b, 0x81, 0x19, 0xb9, 0x31, 0x6a,
0xed, 0x88, 0xb4, 0x51, 0x90, 0xe7, 0x34, 0xaf, 0x03, 0x41, 0xe4, 0x88, 0xca, 0x51, 0xb7, 0x88, 0xc3, 0x20, 0x97, 0x34, 0xab, 0x03, 0x34, 0xf6, 0x44, 0xe5, 0xa8, 0x3b, 0x48, 0xb0, 0xcd, 0x5f,
0xe0, 0x9b, 0xbf, 0x98, 0x0f, 0x1b, 0x9a, 0x06, 0xe5, 0x75, 0x95, 0x7b, 0x61, 0x0f, 0xf6, 0x22, 0xcc, 0xc7, 0x1b, 0x9a, 0x06, 0xe6, 0x75, 0x9d, 0x7b, 0x61, 0x0f, 0xf6, 0x22, 0x2c, 0x25, 0xd9,
0x2c, 0xc5, 0xe9, 0x61, 0xb1, 0xb8, 0xbd, 0x74, 0x28, 0xc2, 0xbd, 0xc2, 0xe7, 0xa0, 0x52, 0x73, 0x61, 0xb1, 0xb8, 0xbd, 0x6c, 0x28, 0xc2, 0xbd, 0xc2, 0x67, 0xa0, 0x62, 0x73, 0xc6, 0x06, 0x61,
0xc6, 0x07, 0x51, 0xa9, 0x29, 0x18, 0xe5, 0xae, 0xc0, 0x7c, 0x47, 0x87, 0xa5, 0xfd, 0x68, 0x60, 0xa9, 0x29, 0x18, 0xe5, 0xae, 0xc0, 0x7e, 0xdb, 0x84, 0xa5, 0xfd, 0x78, 0xe0, 0x86, 0xfe, 0xf7,
0xfb, 0xee, 0x77, 0xb0, 0xdd, 0xc4, 0x04, 0x7e, 0x99, 0x92, 0xbb, 0x06, 0x2d, 0xe6, 0x0f, 0x3c, 0x79, 0xbb, 0xc9, 0x13, 0xf8, 0x65, 0x4a, 0xee, 0x1a, 0xb4, 0x48, 0x38, 0x08, 0xfc, 0xe4, 0x78,
0x37, 0x3e, 0xde, 0x2b, 0x70, 0x93, 0x59, 0x32, 0xd8, 0x33, 0x93, 0x8a, 0x72, 0x5d, 0x29, 0xca, 0xaf, 0xc0, 0x4d, 0x65, 0xa9, 0x60, 0xcf, 0x4c, 0x2a, 0xca, 0x75, 0xad, 0x28, 0xaf, 0x40, 0x63,
0x2b, 0xd0, 0x18, 0x06, 0x87, 0xae, 0x97, 0xc5, 0xbd, 0xa0, 0x30, 0xe6, 0x99, 0xc7, 0xb0, 0x3a, 0x48, 0x0f, 0xfd, 0x20, 0x8f, 0x7b, 0x41, 0xf1, 0x98, 0x27, 0x01, 0xe1, 0xd5, 0x59, 0xc6, 0x7c,
0xe7, 0x31, 0x9f, 0x31, 0x8a, 0x42, 0x3d, 0x37, 0xb6, 0x50, 0x37, 0xe5, 0x42, 0xad, 0x02, 0x0f, 0xce, 0x28, 0x0a, 0xf5, 0xdc, 0xd8, 0x42, 0xdd, 0x54, 0x0b, 0xb5, 0x0e, 0x3c, 0x54, 0x80, 0x47,
0x15, 0xe0, 0x09, 0xae, 0x56, 0x0e, 0xd7, 0x9f, 0x34, 0x58, 0x2a, 0xe0, 0xa6, 0x1e, 0x74, 0x22, 0xb8, 0x5a, 0x12, 0xae, 0x3f, 0x1b, 0xb0, 0x54, 0xc0, 0x8d, 0x3d, 0xe8, 0x44, 0xb8, 0x6c, 0x98,
0x5c, 0x26, 0xcc, 0x6f, 0xcb, 0x11, 0x28, 0x92, 0x87, 0xcc, 0xe3, 0x66, 0xed, 0x63, 0xdc, 0x50, 0xdf, 0x56, 0x23, 0x50, 0x24, 0x0f, 0x95, 0xc7, 0xcc, 0xda, 0xe7, 0x71, 0x83, 0x39, 0x15, 0x09,
0x4e, 0x25, 0x82, 0x03, 0x7d, 0x10, 0xc4, 0xae, 0xd4, 0xef, 0xe7, 0x34, 0x9f, 0x6d, 0x97, 0xd9, 0x06, 0xf4, 0x01, 0x4d, 0x7c, 0xa5, 0xdf, 0x97, 0x34, 0x9b, 0x6d, 0x97, 0xb8, 0x0a, 0x58, 0x48,
0x12, 0x58, 0x44, 0x71, 0x7e, 0x8f, 0xba, 0x6e, 0x8a, 0x31, 0x41, 0xf1, 0x25, 0xec, 0xe4, 0x75, 0x31, 0x7e, 0x0f, 0xbb, 0x6e, 0x8c, 0x31, 0x41, 0xb1, 0x25, 0xec, 0xc8, 0x3a, 0xba, 0xf3, 0xd8,
0x74, 0xe7, 0xb1, 0xf9, 0x7b, 0x0d, 0x96, 0xa8, 0x3e, 0x48, 0x9b, 0xe5, 0x75, 0x39, 0x50, 0xb1, 0x7e, 0xcf, 0x80, 0x25, 0xac, 0x0f, 0xca, 0x66, 0xd9, 0x87, 0x25, 0x5a, 0x8a, 0x02, 0x51, 0x64,
0xe6, 0x53, 0x89, 0xf9, 0xe4, 0x98, 0x12, 0x51, 0x0e, 0x17, 0xab, 0x24, 0x6a, 0xbc, 0x09, 0xd7, 0x3e, 0x3d, 0xa6, 0x48, 0x94, 0x03, 0xc6, 0xa9, 0x08, 0x5b, 0x6f, 0xc0, 0x75, 0xaf, 0x84, 0xd3,
0x9d, 0x12, 0x46, 0xbb, 0x6e, 0x9c, 0x74, 0xf4, 0xb5, 0xda, 0x04, 0x95, 0x65, 0x48, 0xad, 0xb1, 0xae, 0x9f, 0xa4, 0x1d, 0x73, 0xad, 0x36, 0x41, 0x69, 0x19, 0x56, 0x67, 0xac, 0x02, 0xfb, 0x07,
0x0a, 0xcc, 0xef, 0x42, 0xe7, 0x20, 0xf5, 0xbc, 0x2e, 0x8b, 0x63, 0x7b, 0xc0, 0x36, 0xcf, 0x7a, 0xd0, 0x39, 0xc8, 0x82, 0xa0, 0x4b, 0x92, 0xc4, 0x1d, 0x90, 0xcd, 0xb3, 0x1e, 0x19, 0x31, 0xbe,
0x6c, 0xc4, 0xf9, 0x16, 0x8b, 0x43, 0x1e, 0x5d, 0x2c, 0x8a, 0xb6, 0x02, 0x87, 0xa1, 0xe9, 0x75, 0x43, 0x92, 0x88, 0x45, 0x18, 0x89, 0xe3, 0x2d, 0xea, 0x11, 0x6e, 0x7c, 0xdd, 0xc9, 0x49, 0x06,
0x2b, 0x23, 0x39, 0x30, 0x2c, 0x8a, 0x78, 0x8a, 0x11, 0x3d, 0x10, 0x51, 0xc6, 0x2d, 0x98, 0xf1, 0x0e, 0x89, 0x63, 0x96, 0x66, 0x44, 0x1f, 0x84, 0x94, 0x75, 0x0b, 0x66, 0x02, 0x66, 0x56, 0x8d,
0xb8, 0x59, 0x35, 0x34, 0x6b, 0x75, 0x8c, 0x59, 0xdd, 0x78, 0xb0, 0x6d, 0x27, 0xb6, 0x85, 0xe3, 0x9b, 0xb5, 0x3a, 0xc6, 0xac, 0x6e, 0x32, 0xd8, 0x76, 0x53, 0xd7, 0xe1, 0xe3, 0xec, 0x21, 0x7c,
0xcc, 0x21, 0x7c, 0x64, 0xfc, 0xec, 0xa3, 0x89, 0x11, 0xc0, 0xbb, 0x14, 0x2c, 0xf3, 0x6e, 0xe0, 0x6c, 0xfc, 0xec, 0xa3, 0x89, 0x51, 0xc0, 0x3a, 0x15, 0x5e, 0xea, 0x7d, 0x1a, 0xca, 0x20, 0x50,
0xe7, 0x01, 0x20, 0xb3, 0xb8, 0xd9, 0x31, 0xe9, 0x41, 0x3b, 0xda, 0x56, 0x46, 0x9a, 0xd7, 0xc1, 0x59, 0xcc, 0xec, 0x04, 0xf5, 0x70, 0x3b, 0xda, 0x4e, 0x4e, 0xda, 0xd7, 0xc1, 0xba, 0x4b, 0xd2,
0xb8, 0xcb, 0x92, 0xae, 0xfd, 0x78, 0xc3, 0x77, 0xba, 0xae, 0xdf, 0x63, 0x23, 0x8b, 0x8d, 0xcc, 0xae, 0xfb, 0x78, 0x23, 0xf4, 0xba, 0x7e, 0xd8, 0x23, 0x23, 0x87, 0x8c, 0xec, 0x1d, 0xb8, 0x56,
0x1d, 0xb8, 0x56, 0xe1, 0xc6, 0x21, 0xee, 0x14, 0xfb, 0x71, 0x8f, 0x8d, 0xd0, 0x80, 0xb6, 0x25, 0xe1, 0x26, 0x11, 0xdf, 0x2d, 0xee, 0xe3, 0x1e, 0x19, 0x71, 0x03, 0xda, 0x8e, 0xa0, 0x38, 0x9f,
0x28, 0xe4, 0xe3, 0x28, 0xd1, 0x00, 0x09, 0xca, 0x1c, 0xc1, 0x22, 0x77, 0x55, 0x8f, 0xf9, 0x4e, 0x8f, 0x12, 0x4d, 0x90, 0xa0, 0xec, 0x11, 0x2c, 0x32, 0x57, 0xf5, 0x48, 0xe8, 0x75, 0x93, 0x01,
0x37, 0x1e, 0xa0, 0x8a, 0x35, 0x68, 0x11, 0x02, 0xdd, 0x78, 0x50, 0x74, 0x54, 0x12, 0x8b, 0x8f, 0x57, 0xb1, 0x06, 0x2d, 0x44, 0xa0, 0x9b, 0x0c, 0x8a, 0xae, 0x4a, 0x61, 0xb1, 0x11, 0xfd, 0xc0,
0xe8, 0x7b, 0x2e, 0x77, 0x09, 0x8e, 0x10, 0xab, 0x91, 0x58, 0x3c, 0x6e, 0x63, 0x26, 0x0e, 0x18, 0x67, 0x2e, 0xe1, 0x23, 0xc4, 0x6a, 0x14, 0x16, 0x8b, 0xdd, 0x84, 0x88, 0x43, 0x06, 0x0b, 0xea,
0x3c, 0xa0, 0x6b, 0x56, 0x4e, 0x9b, 0x7f, 0xa8, 0xc3, 0xac, 0x00, 0x14, 0x4f, 0x88, 0xbc, 0x89, 0x9a, 0x23, 0x69, 0xfb, 0xbd, 0x3a, 0xcc, 0x0a, 0x40, 0xf9, 0x29, 0x91, 0x35, 0xb2, 0x12, 0x2f,
0xcd, 0xf1, 0x22, 0x8a, 0xca, 0x4d, 0xff, 0xb4, 0x38, 0xab, 0x11, 0x25, 0x9f, 0xee, 0x6a, 0xea, 0xa4, 0xb0, 0xe4, 0xf4, 0x4f, 0x8b, 0xf3, 0x1a, 0x52, 0xea, 0x09, 0xaf, 0xa6, 0x9f, 0xf0, 0x4a,
0xe9, 0xae, 0x64, 0xd3, 0x4c, 0xd5, 0xa6, 0xd2, 0xba, 0xea, 0xd5, 0x75, 0xf1, 0xec, 0x8a, 0x09, 0x36, 0xcd, 0x54, 0x6d, 0x2a, 0xad, 0xab, 0x5e, 0x5d, 0x17, 0xcb, 0xb0, 0x3c, 0xe9, 0x1c, 0x04,
0xe7, 0xc0, 0xb3, 0x93, 0xa3, 0x20, 0x1a, 0x8a, 0x9e, 0xb4, 0x6e, 0x55, 0xf8, 0x3c, 0xa3, 0x13, 0x6e, 0x7a, 0x44, 0xe3, 0xa1, 0xe8, 0x4b, 0xeb, 0x4e, 0x85, 0xcf, 0xb2, 0x3a, 0xf2, 0x64, 0x59,
0x2f, 0x2f, 0xc9, 0xb4, 0xb3, 0x4a, 0x5c, 0x5e, 0x00, 0x89, 0x93, 0x95, 0x66, 0x3a, 0x0c, 0xa8, 0xc6, 0xdd, 0x55, 0xe2, 0xb2, 0x22, 0x88, 0x9c, 0xbc, 0x3c, 0xe3, 0x81, 0x40, 0x67, 0xa2, 0x6d,
0x4c, 0xb2, 0x2d, 0x8e, 0xdd, 0xc0, 0xc7, 0xe2, 0x40, 0x15, 0x58, 0x66, 0xf1, 0x95, 0x0f, 0xe3, 0x49, 0xe2, 0xd3, 0x90, 0x17, 0x08, 0xac, 0xc2, 0x2a, 0x8b, 0xad, 0x7c, 0x98, 0x0c, 0xee, 0xc4,
0xc1, 0x9d, 0x28, 0x18, 0x8a, 0x23, 0x41, 0x46, 0xe2, 0xca, 0x03, 0x3f, 0xc9, 0x0a, 0x4b, 0x8b, 0x74, 0x28, 0x8e, 0x05, 0x39, 0xc9, 0x57, 0x4e, 0xc3, 0x34, 0x2f, 0x2e, 0x2d, 0x94, 0x55, 0x58,
0x64, 0x25, 0x16, 0x97, 0x15, 0x24, 0x96, 0xdf, 0x79, 0x2b, 0x23, 0x8d, 0x25, 0xa8, 0xc5, 0x6c, 0x4c, 0x56, 0x90, 0xbc, 0x04, 0xcf, 0x3b, 0x39, 0x69, 0x2d, 0x41, 0x2d, 0x21, 0x23, 0x51, 0x57,
0x24, 0x6a, 0x2a, 0xff, 0x53, 0xf1, 0xdc, 0xa2, 0xea, 0xb9, 0x52, 0x92, 0x5c, 0xc2, 0x5f, 0xe5, 0xd9, 0x9f, 0x9a, 0xe7, 0x16, 0x75, 0xcf, 0x95, 0x12, 0xe5, 0x12, 0xff, 0x55, 0x4d, 0x94, 0xc5,
0x24, 0x59, 0x9c, 0xf7, 0x97, 0x95, 0xf3, 0xfe, 0x06, 0xcc, 0x06, 0x21, 0x8f, 0xf3, 0xb8, 0x63, 0x99, 0x7f, 0x59, 0x3b, 0xf3, 0x6f, 0xc0, 0x2c, 0x8d, 0x58, 0x9c, 0x27, 0x1d, 0x8b, 0xef, 0xb1,
0xe0, 0x1e, 0xfb, 0xd4, 0xe4, 0x3d, 0x76, 0x6b, 0x9f, 0x46, 0xee, 0xf8, 0x49, 0x74, 0x66, 0x65, 0xcf, 0x4c, 0xde, 0x63, 0xb7, 0xf6, 0x71, 0xe4, 0x4e, 0x98, 0xc6, 0x67, 0x4e, 0x2e, 0x67, 0xed,
0x72, 0xc6, 0x2e, 0x2c, 0x06, 0x47, 0x47, 0x9e, 0xeb, 0xb3, 0x83, 0x34, 0x3e, 0xc6, 0xde, 0xf5, 0xc2, 0x22, 0x3d, 0x3a, 0x0a, 0xfc, 0x90, 0x1c, 0x64, 0xc9, 0x31, 0xef, 0x5f, 0xaf, 0xf1, 0xd4,
0x1a, 0x26, 0x26, 0x73, 0x5c, 0x62, 0x52, 0x47, 0x5a, 0x65, 0xd1, 0xd5, 0x57, 0x60, 0x5e, 0x9e, 0x64, 0x8f, 0x4b, 0x4d, 0xfa, 0x48, 0xa7, 0x2c, 0xba, 0xfa, 0x0a, 0xcc, 0xab, 0xd3, 0x30, 0x18,
0x86, 0xc3, 0x70, 0xc2, 0xce, 0x44, 0x0c, 0xf2, 0x3f, 0x79, 0x3a, 0x3e, 0xb5, 0xbd, 0x94, 0xca, 0x4e, 0xc8, 0x99, 0x88, 0x41, 0xf6, 0x27, 0x4b, 0xc9, 0xa7, 0x6e, 0x90, 0x61, 0x89, 0x9b, 0x73,
0xdb, 0x9c, 0x45, 0xc4, 0x2b, 0xfa, 0x97, 0x34, 0xf3, 0x27, 0x1a, 0x2c, 0x96, 0x26, 0xe0, 0xa3, 0x90, 0x78, 0xc5, 0xfc, 0x8a, 0x61, 0xff, 0xdc, 0x80, 0xc5, 0xd2, 0x04, 0x6c, 0x74, 0xea, 0xa7,
0x13, 0x37, 0xf1, 0x98, 0xd0, 0x40, 0x04, 0x6f, 0x1d, 0x1c, 0x16, 0xf7, 0x45, 0x08, 0xe3, 0xdf, 0x01, 0x11, 0x1a, 0x90, 0x60, 0xed, 0x83, 0x47, 0x92, 0xbe, 0x08, 0x61, 0xfe, 0xb7, 0xa8, 0x25,
0xa2, 0x8e, 0xd4, 0xf2, 0x03, 0xa1, 0x09, 0xf3, 0xee, 0x7e, 0x8f, 0x2b, 0xea, 0x05, 0xa9, 0xef, 0x35, 0x79, 0x28, 0xb4, 0x61, 0xde, 0xdf, 0xef, 0x31, 0x45, 0x3d, 0x9a, 0x85, 0x9e, 0xbc, 0xd8,
0xe4, 0x97, 0x3a, 0x12, 0x8f, 0x87, 0x90, 0xbb, 0xdf, 0xdb, 0xb4, 0x9d, 0x01, 0xa3, 0xab, 0x97, 0x51, 0x78, 0x2c, 0x84, 0xfc, 0xfd, 0xde, 0xa6, 0xeb, 0x0d, 0x08, 0x5e, 0xbf, 0xd4, 0xb9, 0x4d,
0x3a, 0xda, 0xa4, 0x32, 0x4d, 0x07, 0xe6, 0x1e, 0xb8, 0x61, 0xbc, 0x15, 0x0c, 0x87, 0xdc, 0x11, 0x3a, 0xd3, 0xf6, 0x60, 0xee, 0x81, 0x1f, 0x25, 0x5b, 0x74, 0x38, 0x64, 0x8e, 0xf0, 0x48, 0xca,
0x0e, 0x4b, 0x78, 0x91, 0xd3, 0xd0, 0xdf, 0x82, 0xe2, 0xa1, 0xe2, 0xb0, 0x23, 0x3b, 0xf5, 0x12, 0x0a, 0x9d, 0xc1, 0xfd, 0x2d, 0x28, 0x16, 0x2a, 0x1e, 0x39, 0x72, 0xb3, 0x20, 0x65, 0x43, 0xf3,
0x3e, 0x34, 0xdb, 0xb8, 0x12, 0x0b, 0x2f, 0x1d, 0xe2, 0xc0, 0xdf, 0x26, 0x69, 0xb2, 0x53, 0xe2, 0x8d, 0xab, 0xb0, 0xf8, 0xc5, 0x43, 0x42, 0xc3, 0x6d, 0x94, 0x46, 0x3b, 0x15, 0x8e, 0xfd, 0x17,
0x98, 0x7f, 0xd6, 0x61, 0x09, 0x8f, 0x06, 0x5b, 0xe8, 0x76, 0x07, 0x85, 0x5e, 0x86, 0x3a, 0x6e, 0x13, 0x96, 0xf8, 0xf1, 0x60, 0x8b, 0xbb, 0xdd, 0xe3, 0x42, 0x2f, 0x43, 0x9d, 0x6f, 0x43, 0x51,
0x43, 0x51, 0x2b, 0xce, 0x3f, 0x4e, 0xd0, 0x50, 0xe3, 0x36, 0x34, 0x82, 0x10, 0x0b, 0x0c, 0x9d, 0x2d, 0xce, 0x3f, 0x52, 0xe0, 0x50, 0xeb, 0x36, 0x34, 0x68, 0xc4, 0x4b, 0x0c, 0x9e, 0x43, 0x9e,
0x41, 0x9e, 0x9f, 0x24, 0xa4, 0xde, 0xef, 0x58, 0x42, 0xca, 0xb8, 0x03, 0x30, 0x2c, 0x2a, 0x0a, 0x9f, 0x24, 0xa4, 0xdf, 0xf1, 0x38, 0x42, 0xca, 0xba, 0x03, 0x30, 0x2c, 0x2a, 0x0a, 0xa6, 0xee,
0xa5, 0xee, 0x69, 0x75, 0x48, 0x92, 0x1c, 0xdc, 0x3c, 0x0d, 0xe7, 0x97, 0x3c, 0x35, 0x4b, 0x65, 0x69, 0x75, 0x28, 0x92, 0x0c, 0x5c, 0x99, 0x86, 0xe5, 0x45, 0x4f, 0xcd, 0xd1, 0x99, 0xd6, 0x1e,
0x1a, 0x7b, 0xb0, 0x80, 0x66, 0xef, 0x67, 0xe7, 0x4a, 0xf4, 0xc1, 0xf4, 0x33, 0x96, 0xa4, 0xcd, 0x2c, 0x70, 0xb3, 0xf7, 0xf3, 0xb3, 0x25, 0xf7, 0xc1, 0xf4, 0x33, 0x96, 0xa4, 0xed, 0x5f, 0x1b,
0x5f, 0x68, 0x02, 0x46, 0xfe, 0x6b, 0x8f, 0x11, 0xf6, 0x05, 0x24, 0xda, 0xa5, 0x20, 0x59, 0x85, 0x02, 0x46, 0xf6, 0x6b, 0x8f, 0x20, 0xf6, 0x05, 0x24, 0xc6, 0xa5, 0x20, 0x59, 0x85, 0xb9, 0x61,
0xb9, 0x61, 0x2a, 0x1d, 0x73, 0x6b, 0x56, 0x4e, 0x17, 0x2e, 0xaa, 0x4d, 0xed, 0x22, 0xf3, 0x97, 0xa6, 0x1c, 0x75, 0x6b, 0x8e, 0xa4, 0x0b, 0x17, 0xd5, 0xa6, 0x76, 0x91, 0xfd, 0x1b, 0x03, 0x3a,
0x1a, 0x74, 0x5e, 0x0b, 0x5c, 0x1f, 0x7f, 0xd8, 0x08, 0x43, 0x4f, 0xdc, 0x44, 0x5e, 0xda, 0xe7, 0xaf, 0x51, 0x3f, 0xe4, 0x3f, 0x6c, 0x44, 0x51, 0x20, 0x6e, 0x23, 0x2f, 0xed, 0xf3, 0x6f, 0x40,
0x5f, 0x83, 0xa6, 0x4d, 0x6a, 0xfc, 0x44, 0xb8, 0x7d, 0x8a, 0xa3, 0x6b, 0x21, 0x23, 0x9d, 0x42, 0xd3, 0x45, 0x35, 0x61, 0x2a, 0xdc, 0x3e, 0xc5, 0xf1, 0xb5, 0x90, 0x51, 0x4e, 0x22, 0x35, 0xf5,
0x6a, 0xf2, 0x29, 0xc4, 0x7c, 0x57, 0x83, 0x05, 0x02, 0xe5, 0x8d, 0xd4, 0x4d, 0x2e, 0x6d, 0xdf, 0x24, 0x62, 0xbf, 0x63, 0xc0, 0x02, 0x82, 0xf2, 0x7a, 0xe6, 0xa7, 0x97, 0xb6, 0x6f, 0x13, 0xe6,
0x26, 0xcc, 0x8d, 0x52, 0x37, 0xb9, 0x44, 0x54, 0xe6, 0x72, 0xd5, 0x78, 0xaa, 0x8d, 0x89, 0x27, 0x46, 0x99, 0x9f, 0x5e, 0x22, 0x2a, 0xa5, 0x5c, 0x35, 0x9e, 0x6a, 0x63, 0xe2, 0xc9, 0x7e, 0xd7,
0xf3, 0x3d, 0x0d, 0x6e, 0x94, 0x61, 0xdd, 0xe8, 0xf7, 0x59, 0xf8, 0x24, 0xb7, 0x94, 0x72, 0x0a, 0x80, 0x1b, 0x65, 0x58, 0x37, 0xfa, 0x7d, 0x12, 0x3d, 0xc9, 0x2d, 0xa5, 0x9d, 0xc4, 0x66, 0x4a,
0x9b, 0x29, 0x9d, 0xc2, 0xc6, 0x9a, 0x6c, 0xb1, 0xb7, 0x59, 0xff, 0xe9, 0x35, 0xf9, 0x07, 0x3a, 0x27, 0xb1, 0xb1, 0x26, 0x3b, 0xe4, 0x2d, 0xd2, 0x7f, 0x7a, 0x4d, 0xfe, 0xb1, 0x09, 0x1f, 0xbf,
0x7c, 0xf4, 0x6e, 0xbe, 0xf1, 0x1e, 0x44, 0xb6, 0x1f, 0x1f, 0xb1, 0x28, 0x7a, 0x82, 0xf6, 0xee, 0x2b, 0x37, 0xde, 0x83, 0xd8, 0x0d, 0x93, 0x23, 0x12, 0xc7, 0x4f, 0xd0, 0xde, 0x5d, 0x68, 0x87,
0x42, 0xdb, 0x67, 0x8f, 0x0a, 0x9b, 0xc4, 0x76, 0x9c, 0x56, 0x8d, 0x2a, 0x3c, 0x5d, 0xee, 0x32, 0xe4, 0x51, 0x61, 0x93, 0xd8, 0x8e, 0xd3, 0xaa, 0xd1, 0x85, 0xa7, 0xcb, 0x5d, 0xf6, 0x7f, 0x0c,
0xff, 0xad, 0xc1, 0x12, 0xe9, 0x79, 0xdd, 0xed, 0x9f, 0x3c, 0xc1, 0xc5, 0xef, 0xc1, 0xc2, 0x09, 0x58, 0x42, 0x3d, 0xdf, 0xf4, 0xfb, 0x27, 0x4f, 0x70, 0xf1, 0x7b, 0xb0, 0x70, 0xc2, 0x2d, 0x60,
0x5a, 0xc0, 0xa9, 0x4b, 0xa4, 0xed, 0x92, 0xf4, 0x94, 0xcb, 0xff, 0x8f, 0x06, 0xcb, 0xa4, 0xe8, 0xd4, 0x25, 0xd2, 0x76, 0x49, 0x7a, 0xca, 0xe5, 0xff, 0xd7, 0x80, 0x65, 0x54, 0x74, 0x3f, 0x3c,
0xbe, 0x7f, 0xea, 0x3e, 0xc9, 0x60, 0x3d, 0x80, 0x45, 0x97, 0x4c, 0xb8, 0x24, 0x00, 0x65, 0xf1, 0xf5, 0x9f, 0x64, 0xb0, 0x1e, 0xc0, 0xa2, 0x8f, 0x26, 0x5c, 0x12, 0x80, 0xb2, 0xf8, 0x94, 0x08,
0x29, 0x11, 0xf8, 0x9d, 0x06, 0x8b, 0xa4, 0x69, 0xc7, 0x4f, 0x58, 0x74, 0xe9, 0xf5, 0xdf, 0xe3, 0xfc, 0xd1, 0x80, 0x45, 0xd4, 0xb4, 0x13, 0xa6, 0x24, 0xbe, 0xf4, 0xfa, 0xef, 0xb1, 0xd3, 0x7d,
0x27, 0xfb, 0x24, 0xb2, 0xfd, 0xcb, 0x64, 0x48, 0x59, 0x74, 0xca, 0x24, 0xf9, 0xae, 0x06, 0x06, 0x1a, 0xbb, 0xe1, 0x65, 0x32, 0xa4, 0x2a, 0x3a, 0x65, 0x92, 0x7c, 0xc7, 0x00, 0x8b, 0xab, 0xda,
0xaa, 0xda, 0x76, 0xe3, 0xa1, 0x1b, 0xc7, 0x4f, 0xd0, 0x75, 0xd3, 0x19, 0xfc, 0x33, 0x1d, 0xae, 0xf6, 0x93, 0xa1, 0x9f, 0x24, 0x4f, 0xd0, 0x75, 0xd3, 0x19, 0xfc, 0x4b, 0x13, 0xae, 0x2b, 0x5a,
0x4b, 0x5a, 0xba, 0x69, 0xf2, 0xb4, 0x9b, 0x6c, 0x6c, 0x43, 0x93, 0xf7, 0x08, 0xf2, 0xf5, 0xfe, 0xba, 0x59, 0xfa, 0xb4, 0x9b, 0x6c, 0x6d, 0x43, 0x93, 0xf5, 0x08, 0xea, 0x15, 0xff, 0xb4, 0x13,
0xb4, 0x13, 0x15, 0x82, 0xbc, 0x8b, 0x45, 0xa2, 0xc7, 0xfa, 0x81, 0xef, 0xc4, 0xd8, 0x1c, 0xb5, 0x15, 0x82, 0xac, 0x8b, 0xe5, 0x44, 0x8f, 0xf4, 0x69, 0xe8, 0x25, 0xbc, 0x39, 0x6a, 0x3b, 0x1a,
0x2d, 0x85, 0xc7, 0xd3, 0xd0, 0xaa, 0xa4, 0x66, 0xcb, 0xf6, 0xfb, 0xcc, 0x7b, 0x66, 0x20, 0x32, 0x8f, 0xa5, 0xa1, 0x55, 0x45, 0xcd, 0x96, 0x1b, 0xf6, 0x49, 0xf0, 0xcc, 0x40, 0x64, 0xff, 0xce,
0x7f, 0xad, 0xc1, 0x02, 0x0d, 0x79, 0xfa, 0x97, 0xcc, 0x6b, 0x3d, 0x05, 0xf2, 0x87, 0xc6, 0x4b, 0x80, 0x05, 0x1c, 0xf2, 0xf4, 0x2f, 0x99, 0xd5, 0x7a, 0x0c, 0xe4, 0x0f, 0x8d, 0x97, 0xec, 0x13,
0xe6, 0x09, 0x2c, 0xd3, 0x8d, 0xbe, 0xd4, 0x9e, 0xf0, 0x83, 0xaf, 0xed, 0xd0, 0x59, 0x56, 0x43, 0x58, 0xc6, 0x5b, 0x7d, 0xa5, 0x3d, 0x61, 0x07, 0x5f, 0xd7, 0xc3, 0xb3, 0xac, 0xc1, 0x85, 0x72,
0xa1, 0x8c, 0x54, 0xdf, 0x6a, 0xc4, 0x73, 0x7c, 0xf1, 0x56, 0x73, 0x13, 0xc0, 0x76, 0x9c, 0x37, 0x52, 0x7f, 0xaf, 0x11, 0x4f, 0xf2, 0xc5, 0x7b, 0xcd, 0x4d, 0x00, 0xd7, 0xf3, 0xde, 0xa0, 0xb1,
0x83, 0xc8, 0x71, 0xfd, 0xac, 0xd7, 0x94, 0x38, 0xe6, 0x6b, 0x30, 0xcf, 0x8f, 0xde, 0x0f, 0xa4, 0xe7, 0x87, 0x79, 0xaf, 0xa9, 0x70, 0xec, 0xd7, 0x60, 0x9e, 0x1d, 0xbd, 0x1f, 0x28, 0xf7, 0xf3,
0xbb, 0xf9, 0x73, 0x5f, 0x0f, 0xe4, 0x7b, 0x7d, 0x5d, 0xbd, 0xd7, 0x37, 0xbf, 0x0d, 0xff, 0x5f, 0xe7, 0xbe, 0x20, 0xa8, 0x77, 0xfb, 0xa6, 0x7e, 0xb7, 0x6f, 0x7f, 0x0f, 0x3e, 0x5a, 0x31, 0x9c,
0x31, 0x1c, 0xb1, 0xde, 0xa2, 0x27, 0x87, 0x6c, 0x12, 0x01, 0xf9, 0xc7, 0xc7, 0xa0, 0x27, 0xdb, 0x63, 0xbd, 0x85, 0xcf, 0x0e, 0xf9, 0x24, 0x02, 0xf2, 0x4f, 0x8e, 0x41, 0x4f, 0xb5, 0xc5, 0xd1,
0x62, 0x29, 0x42, 0xe6, 0xf7, 0x35, 0x78, 0xae, 0xa2, 0x7e, 0x23, 0x0c, 0xa3, 0xe0, 0x54, 0xb8, 0x84, 0xec, 0x1f, 0x19, 0xf0, 0x5c, 0x45, 0xfd, 0x46, 0x14, 0xc5, 0xf4, 0x54, 0xb8, 0xf4, 0x2a,
0xf4, 0x2a, 0xa6, 0x51, 0xfb, 0x30, 0xbd, 0xdc, 0x87, 0x8d, 0x35, 0x42, 0xe9, 0x1d, 0x3f, 0x00, 0xa6, 0xd1, 0xfb, 0x30, 0xb3, 0xdc, 0x87, 0x8d, 0x35, 0x42, 0xeb, 0x1d, 0x3f, 0x00, 0x23, 0x7e,
0x23, 0x7e, 0xa5, 0xc1, 0xa2, 0x30, 0xc2, 0x71, 0xc4, 0xb4, 0x5f, 0x84, 0x06, 0x3d, 0x57, 0x8a, 0x6b, 0xc0, 0xa2, 0x30, 0xc2, 0xf3, 0xc4, 0xb4, 0x5f, 0x86, 0x06, 0x3e, 0x59, 0x8a, 0x09, 0x9f,
0x09, 0x9f, 0x1b, 0x3b, 0x61, 0xf6, 0xcc, 0x6a, 0x89, 0xc1, 0xd5, 0x88, 0xd4, 0xc7, 0xe5, 0x8d, 0x1b, 0x3b, 0x61, 0xfe, 0xd4, 0xea, 0x88, 0xc1, 0xd5, 0x88, 0x34, 0xc7, 0xe5, 0x8d, 0xaf, 0xca,
0x2f, 0xe7, 0x71, 0x3f, 0xf5, 0x83, 0xa2, 0x10, 0x30, 0xbf, 0x91, 0x05, 0xf3, 0x36, 0xf3, 0xd8, 0xb8, 0x9f, 0xfa, 0x51, 0x51, 0x08, 0xd8, 0xdf, 0xce, 0x83, 0x79, 0x9b, 0x04, 0xe4, 0x2a, 0x31,
0x55, 0x62, 0x64, 0x3e, 0x84, 0x05, 0x7c, 0x3b, 0x2d, 0x30, 0xb8, 0x12, 0xb5, 0x6f, 0xc2, 0x12, 0xb2, 0x1f, 0xc2, 0x02, 0x7f, 0x3f, 0x2d, 0x30, 0xb8, 0x12, 0xb5, 0x6f, 0xc0, 0x12, 0x57, 0x7b,
0xaa, 0xbd, 0x72, 0x7b, 0xf3, 0xdd, 0xc1, 0xf1, 0xd9, 0x3a, 0xb6, 0xfd, 0xc1, 0x55, 0x6a, 0xff, 0xe5, 0xf6, 0xca, 0xdd, 0xc1, 0xf0, 0xd9, 0x3a, 0x76, 0xc3, 0xc1, 0x55, 0x6a, 0xff, 0x02, 0x5c,
0x1c, 0x5c, 0xcb, 0xb0, 0x7f, 0x18, 0x3a, 0xf9, 0x7d, 0xc6, 0x84, 0x5b, 0x5c, 0xf3, 0xf3, 0xb0, 0xcb, 0xb1, 0x7f, 0x18, 0x79, 0xf2, 0x3e, 0x63, 0xc2, 0x2d, 0xae, 0xfd, 0x45, 0x58, 0xd9, 0xa2,
0xb2, 0x15, 0xf8, 0xa7, 0x2c, 0x8a, 0xe9, 0xce, 0x1b, 0x45, 0x32, 0x09, 0x65, 0xf3, 0x0b, 0xca, 0xe1, 0x29, 0x89, 0x13, 0xbc, 0xe3, 0xe6, 0x22, 0xb9, 0x84, 0xb6, 0xf9, 0x05, 0x65, 0xbf, 0x05,
0x7c, 0x1b, 0x56, 0x65, 0x89, 0x1e, 0x4b, 0x0e, 0x22, 0xf7, 0x54, 0x92, 0x12, 0xb7, 0x9c, 0x9a, 0xab, 0xaa, 0x44, 0x8f, 0xa4, 0x07, 0xb1, 0x7f, 0xaa, 0x48, 0x89, 0x5b, 0x4e, 0x43, 0xbb, 0xe5,
0x72, 0xcb, 0x59, 0xdc, 0x8a, 0xea, 0xca, 0xad, 0xe8, 0x0d, 0x68, 0xba, 0xb1, 0x50, 0x80, 0x41, 0x2c, 0x6e, 0x45, 0x4d, 0xed, 0x56, 0xf4, 0x06, 0x34, 0xfd, 0x44, 0x28, 0xe0, 0x41, 0x35, 0xe7,
0x35, 0x67, 0x15, 0x0c, 0xb3, 0x07, 0xcb, 0xe2, 0x35, 0xf3, 0xc0, 0x1e, 0xb8, 0x3e, 0x65, 0xc0, 0x14, 0x0c, 0xbb, 0x07, 0xcb, 0xe2, 0x45, 0xf3, 0xc0, 0x1d, 0xf8, 0x21, 0x66, 0xc0, 0x9b, 0x00,
0x9b, 0x00, 0xa1, 0x3d, 0xc8, 0xbe, 0x66, 0xa0, 0x0b, 0x71, 0x89, 0xc3, 0x7f, 0x8f, 0x8f, 0x83, 0x91, 0x3b, 0xc8, 0xbf, 0x68, 0xc0, 0x0b, 0x71, 0x85, 0xc3, 0x7e, 0x4f, 0x8e, 0xe9, 0x23, 0xf1,
0x47, 0xe2, 0x77, 0x9d, 0x7e, 0x2f, 0x38, 0xe6, 0xd7, 0xc1, 0xb0, 0x58, 0x1c, 0x06, 0x7e, 0xcc, 0xbb, 0x89, 0xbf, 0x17, 0x1c, 0xfb, 0x5b, 0x60, 0x39, 0x24, 0x89, 0x68, 0x98, 0x10, 0x45, 0xeb,
0x24, 0xad, 0x6b, 0xd0, 0xda, 0x4a, 0xa3, 0x88, 0xf9, 0x7c, 0xaa, 0xec, 0x69, 0x5f, 0x66, 0x71, 0x1a, 0xb4, 0xb6, 0xb2, 0x38, 0x26, 0x21, 0x9b, 0x2a, 0x7f, 0xde, 0x57, 0x59, 0x4c, 0x6f, 0xaf,
0xbd, 0xbd, 0x42, 0x2f, 0x5d, 0xa2, 0x4a, 0x1c, 0xf3, 0xe7, 0x35, 0x68, 0xf6, 0xdc, 0x81, 0x6f, 0xd0, 0x8b, 0x97, 0xa8, 0x0a, 0xc7, 0xfe, 0x55, 0x0d, 0x9a, 0x3d, 0x7f, 0x10, 0xba, 0x81, 0x43,
0x7b, 0x16, 0x1b, 0x19, 0x5f, 0x81, 0x06, 0xb5, 0xb6, 0xc2, 0x8d, 0xe3, 0x2e, 0xf5, 0x68, 0x34, 0x46, 0xd6, 0xd7, 0xa0, 0x81, 0xad, 0xad, 0x70, 0xe3, 0xb8, 0x4b, 0x3d, 0x1c, 0x8d, 0x3d, 0xbc,
0xf5, 0xf0, 0x16, 0x1b, 0xdd, 0xfb, 0x3f, 0x4b, 0xc8, 0x18, 0x6f, 0x40, 0x9b, 0xfe, 0xba, 0x4f, 0x43, 0x46, 0xf7, 0x3e, 0xe2, 0x08, 0x19, 0xeb, 0x75, 0x68, 0xe3, 0x5f, 0xf7, 0xf1, 0xaa, 0x42,
0x57, 0x15, 0xa2, 0xce, 0x7c, 0xfa, 0x02, 0x25, 0x62, 0x34, 0xe9, 0x52, 0x35, 0x70, 0x83, 0xfa, 0xd4, 0x99, 0xcf, 0x5e, 0xa0, 0x44, 0x8c, 0x46, 0x5d, 0xba, 0x06, 0x66, 0x50, 0x9f, 0x97, 0x3e,
0x58, 0xfa, 0xc4, 0xde, 0x9d, 0x6c, 0x10, 0x55, 0x48, 0x61, 0x10, 0xc9, 0x70, 0x69, 0x1b, 0x0f, 0xb1, 0x77, 0x27, 0x1b, 0x84, 0x15, 0x52, 0x18, 0x84, 0x32, 0x4c, 0xda, 0xe5, 0x87, 0x79, 0xd1,
0xf3, 0xa2, 0x5d, 0x98, 0x2c, 0x4d, 0x67, 0x7e, 0x21, 0x4d, 0x32, 0x5c, 0xfa, 0x38, 0xf5, 0x07, 0x2e, 0x4c, 0x96, 0xc6, 0x33, 0xbf, 0x90, 0x46, 0x19, 0x26, 0x7d, 0x9c, 0x85, 0x83, 0x87, 0x91,
0x0f, 0x43, 0x71, 0xc7, 0x34, 0x59, 0xfa, 0x1e, 0x0e, 0x13, 0xd2, 0x24, 0xc3, 0xa5, 0x23, 0xcc, 0xb8, 0x63, 0x9a, 0x2c, 0x7d, 0x8f, 0x0f, 0x13, 0xd2, 0x28, 0xc3, 0xa4, 0x63, 0x9e, 0x59, 0x39,
0xac, 0x08, 0xfa, 0x79, 0xd2, 0x94, 0x80, 0x85, 0x34, 0xc9, 0x6c, 0x36, 0x61, 0x36, 0xb4, 0xcf, 0xe8, 0xe7, 0x49, 0x63, 0x02, 0x16, 0xd2, 0x28, 0xb3, 0xd9, 0x84, 0xd9, 0xc8, 0x3d, 0x0b, 0xa8,
0xbc, 0xc0, 0x76, 0xcc, 0x77, 0x6a, 0x00, 0xd9, 0xc0, 0x18, 0xab, 0xb8, 0xe2, 0xa2, 0xf5, 0x0b, 0xeb, 0xd9, 0x6f, 0xd7, 0x00, 0xf2, 0x81, 0x09, 0xaf, 0xe2, 0x9a, 0x8b, 0xd6, 0x2f, 0x74, 0x51,
0x5d, 0x14, 0x7a, 0x67, 0x92, 0x93, 0x7a, 0xe3, 0x9d, 0xf4, 0x99, 0x69, 0x9d, 0x44, 0xda, 0x4a, 0x14, 0x9c, 0x29, 0x4e, 0xea, 0x8d, 0x77, 0xd2, 0xe7, 0xa6, 0x75, 0x12, 0x6a, 0x2b, 0xb9, 0xe9,
0x6e, 0xba, 0x5d, 0x72, 0xd3, 0xfa, 0x85, 0x6e, 0x12, 0x46, 0x09, 0x47, 0xdd, 0x2e, 0x39, 0x6a, 0x76, 0xc9, 0x4d, 0xeb, 0x17, 0xba, 0x49, 0x18, 0x25, 0x1c, 0x75, 0xbb, 0xe4, 0xa8, 0xf5, 0x0b,
0xfd, 0x42, 0x47, 0x09, 0x79, 0xe1, 0xaa, 0xdb, 0x25, 0x57, 0xad, 0x5f, 0xe8, 0x2a, 0x21, 0x2f, 0x1d, 0x25, 0xe4, 0x85, 0xab, 0x6e, 0x97, 0x5c, 0xb5, 0x7e, 0xa1, 0xab, 0x84, 0xbc, 0x70, 0xd6,
0x9c, 0x75, 0xbb, 0xe4, 0xac, 0xf5, 0x0b, 0x9d, 0x25, 0xe4, 0xab, 0xee, 0x7a, 0x4f, 0x87, 0x05, 0xed, 0x92, 0xb3, 0xd6, 0x2f, 0x74, 0x96, 0x90, 0xaf, 0xba, 0xeb, 0x5d, 0x13, 0x16, 0x38, 0x64,
0x84, 0x8c, 0x1e, 0x94, 0xfc, 0xa3, 0x00, 0xef, 0x8d, 0x11, 0x2e, 0xf5, 0xe3, 0x18, 0x95, 0x69, 0xf8, 0xa0, 0x14, 0x1e, 0x51, 0x7e, 0x6f, 0xcc, 0xe1, 0xd2, 0x3f, 0x90, 0xd1, 0x99, 0xd6, 0xe7,
0x7c, 0x16, 0x96, 0x89, 0x21, 0x3e, 0xa6, 0xc8, 0x5f, 0xe8, 0x9a, 0x56, 0xf5, 0x07, 0x7c, 0x02, 0x61, 0x19, 0x19, 0xe2, 0x83, 0x0a, 0xf9, 0x42, 0xd7, 0x74, 0xaa, 0x3f, 0xf0, 0x27, 0x80, 0x2c,
0x48, 0xe3, 0x24, 0x18, 0x6e, 0xdb, 0x89, 0x9d, 0x75, 0x46, 0x05, 0x47, 0x7e, 0xa0, 0x99, 0xa9, 0x49, 0xe9, 0x70, 0xdb, 0x4d, 0xdd, 0xbc, 0x33, 0x2a, 0x38, 0xea, 0x03, 0xcd, 0x4c, 0xe5, 0x13,
0x7c, 0x7e, 0x17, 0x05, 0xc1, 0x30, 0x7f, 0x79, 0x11, 0x14, 0x97, 0x48, 0xdc, 0x21, 0x0b, 0xd2, 0xbc, 0x98, 0xd2, 0xa1, 0x7c, 0x79, 0x11, 0x14, 0x93, 0x48, 0xfd, 0x21, 0xa1, 0x59, 0x2a, 0xd2,
0x44, 0xa4, 0x89, 0x8c, 0xa4, 0x07, 0x6c, 0xc7, 0xb5, 0xf1, 0x59, 0x43, 0xbc, 0xee, 0xe6, 0x0c, 0x44, 0x4e, 0xe2, 0x23, 0xb6, 0xe7, 0xbb, 0xfc, 0x59, 0x43, 0xbc, 0xf0, 0x4a, 0x06, 0xcf, 0x6c,
0xcc, 0x6c, 0xc5, 0x33, 0x8d, 0xf8, 0x3c, 0xae, 0xe0, 0x5c, 0xfc, 0xa4, 0x62, 0xfe, 0x5d, 0x83, 0xc5, 0x33, 0x8d, 0xf8, 0x44, 0xae, 0xe0, 0x5c, 0xfc, 0xa4, 0x62, 0xff, 0xc3, 0x80, 0x6b, 0x07,
0x6b, 0x07, 0x76, 0x94, 0xb8, 0x7d, 0x37, 0xb4, 0xfd, 0xa4, 0xcb, 0x12, 0x1b, 0xd7, 0xa0, 0x7c, 0x6e, 0x9c, 0xfa, 0x7d, 0x3f, 0x72, 0xc3, 0xb4, 0x4b, 0x52, 0x97, 0xaf, 0x41, 0xfb, 0x4a, 0xc6,
0x21, 0xa3, 0xbd, 0xbf, 0x2f, 0x64, 0x0e, 0x60, 0x71, 0x50, 0xf4, 0xb2, 0xd2, 0x37, 0x36, 0x53, 0x78, 0x7f, 0x5f, 0xc9, 0x1c, 0xc0, 0xe2, 0xa0, 0xe8, 0x65, 0x95, 0xef, 0x6c, 0xa6, 0x3e, 0xe3,
0x9f, 0xf1, 0x4b, 0xe2, 0xca, 0xe7, 0x3e, 0xb5, 0xf7, 0xfd, 0xb9, 0x8f, 0xf9, 0x23, 0x1d, 0x16, 0x97, 0xc4, 0xb5, 0x4f, 0x7e, 0x6a, 0xef, 0xfb, 0x93, 0x1f, 0xfb, 0xa7, 0x26, 0x2c, 0x96, 0x52,
0x4b, 0xa9, 0x93, 0xb7, 0xa3, 0xd4, 0x68, 0xe4, 0x31, 0x91, 0xd3, 0xc6, 0x06, 0x80, 0x9b, 0x87, 0x27, 0x6b, 0x47, 0xb1, 0xd1, 0x90, 0x31, 0x21, 0x69, 0x6b, 0x03, 0xc0, 0x97, 0x61, 0x74, 0xce,
0xd1, 0x39, 0x97, 0xb4, 0x6a, 0xac, 0x59, 0x92, 0xd0, 0xb8, 0xb7, 0x9a, 0xda, 0xa5, 0xdf, 0x6a, 0x25, 0xad, 0x1e, 0x6b, 0x8e, 0x22, 0x34, 0xee, 0xad, 0xa6, 0x76, 0xe9, 0xb7, 0x1a, 0xeb, 0x1e,
0x8c, 0x7b, 0xd0, 0x0a, 0x0b, 0x27, 0x9d, 0x73, 0x00, 0x1b, 0xe3, 0x4a, 0x4b, 0x16, 0x35, 0xbf, 0xb4, 0xa2, 0xc2, 0x49, 0xe7, 0x1c, 0xc0, 0xc6, 0xb8, 0xd2, 0x51, 0x45, 0xed, 0xef, 0xc2, 0x72,
0x05, 0xcb, 0x95, 0x0c, 0x85, 0x4f, 0x37, 0xc1, 0x09, 0xf3, 0xf3, 0xa7, 0x1b, 0x4e, 0x48, 0xc1, 0x25, 0x43, 0xf1, 0xa7, 0x1b, 0x7a, 0x42, 0x42, 0xf9, 0x74, 0xc3, 0x08, 0x25, 0x58, 0xcd, 0x72,
0xaa, 0x97, 0x83, 0xd5, 0x73, 0x4f, 0xe5, 0xef, 0x09, 0x05, 0x69, 0xfe, 0x58, 0x87, 0x95, 0xf1, 0xb0, 0x06, 0xfe, 0xa9, 0xfa, 0x4d, 0xa1, 0x20, 0xed, 0x9f, 0x99, 0xb0, 0x32, 0xbe, 0xba, 0x3c,
0xd5, 0xe5, 0x59, 0x85, 0xfb, 0x10, 0x3a, 0x93, 0x32, 0xf9, 0x95, 0xa1, 0x5e, 0x44, 0x77, 0x5e, 0xab, 0x70, 0x1f, 0x42, 0x67, 0x52, 0x26, 0xbf, 0x32, 0xd4, 0x8b, 0xe8, 0x96, 0x75, 0xf8, 0x59,
0x87, 0x9f, 0x55, 0xb8, 0xaf, 0x65, 0xd1, 0x2d, 0x95, 0x3a, 0xf3, 0xb7, 0x39, 0x3e, 0x79, 0xa7, 0x85, 0xfb, 0x5a, 0x1e, 0xdd, 0x4a, 0xa9, 0xb3, 0xff, 0x20, 0xf1, 0x91, 0x9d, 0xc6, 0x33, 0x8a,
0xf1, 0x8c, 0xe2, 0x63, 0xbc, 0x08, 0x4b, 0xb4, 0x4c, 0xe9, 0x71, 0x9f, 0x1a, 0xd7, 0x0a, 0xbf, 0x8f, 0xf5, 0x22, 0x2c, 0xe1, 0x32, 0x95, 0xc7, 0x7d, 0x6c, 0x5c, 0x2b, 0xfc, 0x22, 0x53, 0x28,
0xc8, 0x14, 0x52, 0xd9, 0xbf, 0xb2, 0x98, 0xfd, 0xa3, 0x96, 0xf9, 0x24, 0xef, 0xdf, 0x3e, 0x54, 0x65, 0xff, 0xca, 0x62, 0xf6, 0x4f, 0x46, 0xee, 0x13, 0xd9, 0xbf, 0x7d, 0xa8, 0x7c, 0x52, 0x44,
0x3e, 0x29, 0x22, 0x4d, 0x6a, 0x6a, 0xa4, 0x48, 0xcb, 0xfb, 0xca, 0xff, 0x45, 0xda, 0xc5, 0x91, 0x9a, 0xd2, 0xd4, 0x28, 0x91, 0x26, 0xfb, 0xca, 0xff, 0x47, 0xda, 0xc5, 0x91, 0x26, 0xb1, 0x54,
0x96, 0x63, 0x29, 0x35, 0x78, 0xe6, 0xf7, 0xa0, 0xbd, 0xcd, 0xbc, 0x6e, 0x3c, 0xc8, 0x3e, 0x2b, 0x1a, 0x3c, 0xfb, 0x87, 0xd0, 0xde, 0x26, 0x41, 0x37, 0x19, 0xe4, 0x9f, 0x15, 0x9d, 0x07, 0xe4,
0x3a, 0x0f, 0xc8, 0x49, 0xff, 0xd6, 0x30, 0xf1, 0x83, 0xa2, 0xf2, 0xc7, 0x48, 0x33, 0x95, 0x8f, 0xa4, 0x7f, 0x6d, 0x98, 0xf8, 0x41, 0x51, 0xf9, 0x63, 0xa4, 0x99, 0xca, 0xc7, 0x48, 0xf6, 0x26,
0x91, 0xcc, 0x4d, 0x58, 0x90, 0x0d, 0xb8, 0xcc, 0x57, 0x55, 0x9b, 0x37, 0xbe, 0xb9, 0x7a, 0xeb, 0x2c, 0xa8, 0x06, 0x5c, 0xe6, 0xab, 0xaa, 0xcd, 0x1b, 0xdf, 0x59, 0xbd, 0xf5, 0x12, 0xfe, 0x13,
0x25, 0xfa, 0x07, 0x9a, 0x57, 0x2b, 0x20, 0x1e, 0x36, 0xf0, 0x1f, 0x6a, 0xbe, 0xf0, 0xdf, 0x00, 0xcd, 0xab, 0x15, 0x10, 0x0f, 0x1b, 0xfc, 0x9f, 0x6a, 0xbe, 0xf4, 0xbf, 0x00, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0xff, 0x3b, 0x39, 0xf9, 0x52, 0x63, 0x33, 0x00, 0x00, 0xff, 0x6c, 0xa8, 0x04, 0xcf, 0x67, 0x33, 0x00, 0x00,
} }

View File

@ -149,7 +149,7 @@ message DepartmentMember {
message UserInDepartment { message UserInDepartment {
OrganizationUser departmentUser = 1; OrganizationUser organizationUser = 1;
repeated DepartmentMember departmentMemberList = 2; repeated DepartmentMember departmentMemberList = 2;
} }

View File

@ -48,7 +48,8 @@ service_source_root=(
../cmd/rpc/open_im_admin_cms/ ../cmd/rpc/open_im_admin_cms/
../cmd/rpc/open_im_message_cms/ ../cmd/rpc/open_im_message_cms/
../cmd/rpc/open_im_statistics/ ../cmd/rpc/open_im_statistics/
../cmd/rpc/open_im_office/ ../cmd/rpc/open_im_office/
../cmd/rpc/organization/
${msg_gateway_source_root} ${msg_gateway_source_root}
${msg_transfer_source_root} ${msg_transfer_source_root}
${msg_source_root} ${msg_source_root}
@ -70,6 +71,7 @@ service_names=(
open_im_message_cms open_im_message_cms
open_im_statistics open_im_statistics
open_im_office open_im_office
open_im_organization
${msg_gateway_name} ${msg_gateway_name}
${msg_transfer_name} ${msg_transfer_name}
${msg_name} ${msg_name}