diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 36815617d..033688f7e 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -59,13 +59,13 @@ func main() { groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) //1 groupRouterGroup.POST("/get_recv_group_applicationList", group.GetRecvGroupApplicationList) //1 groupRouterGroup.POST("/get_user_req_group_applicationList", group.GetUserReqGroupApplicationList) - groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 - groupRouterGroup.POST("/kick_group", group.KickGroupMember) //1 - groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) //no use - groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMemberList) //1 - groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1 - groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1 - groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) //1 + groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1 + groupRouterGroup.POST("/kick_group", group.KickGroupMember) //1 + groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) //no use + groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMemberList) //1 + groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1 + groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1 + groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) //1 } //certificate authRouterGroup := r.Group("/auth") @@ -97,12 +97,13 @@ func main() { } //Conversation conversationGroup := r.Group("/conversation") - { //1 + { //1 conversationGroup.POST("/get_all_conversations", conversation.GetAllConversations) conversationGroup.POST("/get_conversation", conversation.GetConversation) conversationGroup.POST("/get_conversations", conversation.GetConversations) conversationGroup.POST("/set_conversation", conversation.SetConversation) conversationGroup.POST("/batch_set_conversation", conversation.BatchSetConversations) + conversationGroup.POST("/set_recv_msg_opt", conversation.SetRecvMsgOpt) } apiThird.MinioInit() log.NewPrivateLog("api") diff --git a/internal/api/conversation/conversation.go b/internal/api/conversation/conversation.go index 1ea49ed31..591ea3a0a 100644 --- a/internal/api/conversation/conversation.go +++ b/internal/api/conversation/conversation.go @@ -15,8 +15,8 @@ import ( func SetConversation(c *gin.Context) { var ( - req api.SetConversationReq - resp api.SetConversationResp + req api.SetConversationReq + resp api.SetConversationResp reqPb pbUser.SetConversationReq ) if err := c.BindJSON(&req); err != nil { @@ -47,8 +47,8 @@ func SetConversation(c *gin.Context) { func BatchSetConversations(c *gin.Context) { var ( - req api.BatchSetConversationsReq - resp api.BatchSetConversationsResp + req api.BatchSetConversationsReq + resp api.BatchSetConversationsResp reqPb pbUser.BatchSetConversationsReq ) if err := c.BindJSON(&req); err != nil { @@ -79,8 +79,8 @@ func BatchSetConversations(c *gin.Context) { func GetAllConversations(c *gin.Context) { var ( - req api.GetAllConversationsReq - resp api.GetAllConversationsResp + req api.GetAllConversationsReq + resp api.GetAllConversationsResp reqPb pbUser.GetAllConversationsReq ) if err := c.BindJSON(&req); err != nil { @@ -111,8 +111,8 @@ func GetAllConversations(c *gin.Context) { func GetConversation(c *gin.Context) { var ( - req api.GetConversationReq - resp api.GetConversationResp + req api.GetConversationReq + resp api.GetConversationResp reqPb pbUser.GetConversationReq ) if err := c.BindJSON(&req); err != nil { @@ -141,11 +141,10 @@ func GetConversation(c *gin.Context) { c.JSON(http.StatusOK, resp) } - func GetConversations(c *gin.Context) { var ( - req api.GetConversationsReq - resp api.GetConversationsResp + req api.GetConversationsReq + resp api.GetConversationsResp reqPb pbUser.GetConversationsReq ) if err := c.BindJSON(&req); err != nil { @@ -174,33 +173,31 @@ func GetConversations(c *gin.Context) { c.JSON(http.StatusOK, resp) } - - - - - - - -func GetAllConversationMessageOpt(c *gin.Context) { +func SetRecvMsgOpt(c *gin.Context) { var ( - _ api.GetAllConversationMessageOptReq - resp api.GetAllConversationMessageOptResp - ) - c.JSON(http.StatusOK, resp) -} - -func GetReceiveMessageOpt(c *gin.Context) { - var ( - _ api.GetReceiveMessageOptReq - resp api.GetReceiveMessageOptResp - ) - c.JSON(http.StatusOK, resp) -} - -func SetReceiveMessageOpt(c *gin.Context) { - var ( - _ api.SetReceiveMessageOptReq - resp api.SetReceiveMessageOptResp + req api.SetRecvMsgOptReq + resp api.SetRecvMsgOptResp + reqPb pbUser.SetRecvMsgOptReq ) + if err := c.BindJSON(&req); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()}) + return + } + if err := utils.CopyStructFields(&reqPb, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", reqPb.String()) + etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName) + client := pbUser.NewUserClient(etcdConn) + respPb, err := client.SetRecvMsgOpt(context.Background(), &reqPb) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error()) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": "GetAllConversationMsgOpt rpc failed, " + err.Error()}) + return + } + resp.ErrMsg = respPb.CommonResp.ErrMsg + resp.ErrCode = respPb.CommonResp.ErrCode + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) c.JSON(http.StatusOK, resp) } diff --git a/internal/rpc/msg/del_msg.go b/internal/rpc/msg/del_msg.go new file mode 100644 index 000000000..1e76409f8 --- /dev/null +++ b/internal/rpc/msg/del_msg.go @@ -0,0 +1,15 @@ +package msg + +import ( + "Open_IM/pkg/common/log" + commonPb "Open_IM/pkg/proto/sdk_ws" + "Open_IM/pkg/utils" + "context" +) + +func (rpc *rpcChat) DelMsgList(_ context.Context, req *commonPb.DelMsgListReq) (*commonPb.DelMsgListResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp := &commonPb.DelMsgListResp{} + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) + return resp, nil +} diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 73e689d05..5b37c3172 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -94,7 +94,6 @@ func (s *userServer) GetUserInfo(ctx context.Context, req *pbUser.GetUserInfoReq return &pbUser.GetUserInfoResp{CommonResp: &pbUser.CommonResp{}, UserInfoList: userInfoList}, nil } - func (s *userServer) BatchSetConversations(ctx context.Context, req *pbUser.BatchSetConversationsReq) (*pbUser.BatchSetConversationsResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) resp := &pbUser.BatchSetConversationsResp{} @@ -139,20 +138,20 @@ func (s *userServer) GetAllConversations(ctx context.Context, req *pbUser.GetAll } func (s *userServer) GetConversation(ctx context.Context, req *pbUser.GetConversationReq) (*pbUser.GetConversationResp, error) { - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp := &pbUser.GetConversationResp{Conversation: &pbUser.Conversation{}} - conversation, err := imdb.GetConversation(req.OwnerUserID, req.ConversationID) - if err != nil{ - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetConversation error", err.Error()) - resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} - return resp, nil - } - if err := utils.CopyStructFields(resp.Conversation, &conversation); err != nil { - log.Debug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields error", conversation, err.Error()) - } - log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) - resp.CommonResp = &pbUser.CommonResp{} - return resp, nil + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp := &pbUser.GetConversationResp{Conversation: &pbUser.Conversation{}} + conversation, err := imdb.GetConversation(req.OwnerUserID, req.ConversationID) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetConversation error", err.Error()) + resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + if err := utils.CopyStructFields(resp.Conversation, &conversation); err != nil { + log.Debug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields error", conversation, err.Error()) + } + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + resp.CommonResp = &pbUser.CommonResp{} + return resp, nil } func (s *userServer) GetConversations(ctx context.Context, req *pbUser.GetConversationsReq) (*pbUser.GetConversationsResp, error) { @@ -196,56 +195,29 @@ func (s *userServer) SetConversation(ctx context.Context, req *pbUser.SetConvers return resp, nil } -//func (s *userServer) SetReceiveMessageOpt(ctx context.Context, req *pbUser.SetReceiveMessageOptReq) (*pbUser.SetReceiveMessageOptResp, error) { -// log.NewInfo(req.OperationID, "SetReceiveMessageOpt args ", req.String()) -// m := make(map[string]int, len(req.ConversationIDList)) -// for _, v := range req.ConversationIDList { -// m[v] = int(req.Opt) -// } -// err := db.DB.SetMultiConversationMsgOpt(req.FromUserID, m) -// if err != nil { -// log.NewError(req.OperationID, "SetMultiConversationMsgOpt failed ", err.Error(), req) -// return &pbUser.SetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil -// } -// resp := pbUser.SetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{}} -// -// for _, v := range req.ConversationIDList { -// resp.ConversationOptResultList = append(resp.ConversationOptResultList, &pbUser.OptResult{ConversationID: v, Result: req.Opt}) -// } -// chat.SetReceiveMessageOptNotification(req.OperationID, req.OpUserID, req.FromUserID) -// log.NewInfo(req.OperationID, "SetReceiveMessageOpt rpc return ", resp.String()) -// return &resp, nil -//} -// -//func (s *userServer) GetReceiveMessageOpt(ctx context.Context, req *pbUser.GetReceiveMessageOptReq) (*pbUser.GetReceiveMessageOptResp, error) { -// log.NewInfo(req.OperationID, "GetReceiveMessageOpt args ", req.String()) -// m, err := db.DB.GetMultiConversationMsgOpt(req.FromUserID, req.ConversationIDList) -// if err != nil { -// log.NewError(req.OperationID, "GetMultiConversationMsgOpt failed ", err.Error(), req.FromUserID, req.ConversationIDList) -// return &pbUser.GetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil -// } -// resp := pbUser.GetReceiveMessageOptResp{CommonResp: &pbUser.CommonResp{}} -// for k, v := range m { -// resp.ConversationOptResultList = append(resp.ConversationOptResultList, &pbUser.OptResult{ConversationID: k, Result: int32(v)}) -// } -// log.NewInfo(req.OperationID, "GetReceiveMessageOpt rpc return ", resp.String()) -// return &resp, nil -//} -// -//func (s *userServer) GetAllConversationMsgOpt(ctx context.Context, req *pbUser.GetAllConversationMsgOptReq) (*pbUser.GetAllConversationMsgOptResp, error) { -// log.NewInfo(req.OperationID, "GetAllConversationMsgOpt args ", req.String()) -// m, err := db.DB.GetAllConversationMsgOpt(req.FromUserID) -// if err != nil { -// log.NewError(req.OperationID, "GetAllConversationMsgOpt failed ", err.Error(), req.FromUserID) -// return &pbUser.GetAllConversationMsgOptResp{CommonResp: &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil -// } -// resp := pbUser.GetAllConversationMsgOptResp{CommonResp: &pbUser.CommonResp{}} -// for k, v := range m { -// resp.ConversationOptResultList = append(resp.ConversationOptResultList, &pbUser.OptResult{ConversationID: k, Result: int32(v)}) -// } -// log.NewInfo(req.OperationID, "GetAllConversationMsgOpt rpc return ", resp.String()) -// return &resp, nil -//} +func (s *userServer) SetRecvMsgOpt(ctx context.Context, req *pbUser.SetRecvMsgOptReq) (*pbUser.SetRecvMsgOptResp, error) { + log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) + resp := &pbUser.SetRecvMsgOptResp{} + var conversation db.Conversation + if err := utils.CopyStructFields(&conversation, req); err != nil { + log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", *req, err.Error()) + } + if err := db.DB.SetSingleConversationRecvMsgOpt(req.OwnerUserID, req.ConversationID, req.RecvMsgOpt); err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "cache failed, rpc return", err.Error()) + resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + err := imdb.SetRecvMsgOpt(conversation) + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation error", err.Error()) + resp.CommonResp = &pbUser.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg} + return resp, nil + } + chat.SetConversationNotification(req.OperationID, req.OwnerUserID) + log.NewError(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) + resp.CommonResp = &pbUser.CommonResp{} + return resp, nil +} func (s *userServer) DeleteUsers(_ context.Context, req *pbUser.DeleteUsersReq) (*pbUser.DeleteUsersResp, error) { log.NewInfo(req.OperationID, "DeleteUsers args ", req.String()) diff --git a/pkg/base_info/conversation_api_struct.go b/pkg/base_info/conversation_api_struct.go index 45139a1fa..ed706c4ad 100644 --- a/pkg/base_info/conversation_api_struct.go +++ b/pkg/base_info/conversation_api_struct.go @@ -38,10 +38,10 @@ type Conversation struct { ConversationType int32 `json:"conversationType"` UserID string `json:"userID"` GroupID string `json:"groupID"` - RecvMsgOpt int32 `json:"recvMsgOpt"` - UnreadCount int32 `json:"unreadCount"` + RecvMsgOpt int32 `json:"recvMsgOpt" binding:"omitempty,oneof=0 1 2"` + UnreadCount int32 `json:"unreadCount" binding:"omitempty"` DraftTextTime int64 `json:"draftTextTime"` - IsPinned bool `json:"isPinned"` + IsPinned bool `json:"isPinned" binding:"omitempty"` IsPrivateChat bool `json:"isPrivateChat"` AttachedInfo string `json:"attachedInfo"` Ex string `json:"ex"` @@ -49,7 +49,7 @@ type Conversation struct { type SetConversationReq struct { Conversation - OperationID string `json:"operationID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` } type SetConversationResp struct { @@ -58,13 +58,13 @@ type SetConversationResp struct { type BatchSetConversationsReq struct { Conversations []Conversation `json:"conversations" binding:"required"` - OwnerUserID string `json:"ownerUserID" binding:"required"` - OperationID string `json:"operationID" binding:"required"` + OwnerUserID string `json:"ownerUserID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` } type BatchSetConversationsResp struct { CommResp - Data struct{ + Data struct { Success []string `json:"success"` Failed []string `json:"failed"` } `json:"data"` @@ -93,11 +93,22 @@ type GetAllConversationsResp struct { type GetConversationsReq struct { ConversationIDs []string `json:"conversationIDs" binding:"required"` - OwnerUserID string `json:"ownerUserID" binding:"required"` - OperationID string `json:"operationID" binding:"required"` + OwnerUserID string `json:"ownerUserID" binding:"required"` + OperationID string `json:"operationID" binding:"required"` } type GetConversationsResp struct { CommResp Conversations []Conversation `json:"data"` -} \ No newline at end of file +} + +type SetRecvMsgOptReq struct { + OwnerUserID string `json:"ownerUserID" binding:"required"` + ConversationID string `json:"conversationID"` + RecvMsgOpt int32 `json:"recvMsgOpt" binding:"omitempty,oneof=0 1 2"` + OperationID string `json:"operationID" binding:"required"` +} + +type SetRecvMsgOptResp struct { + CommResp +} diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 3b489af23..c63d07f72 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -125,7 +125,6 @@ func (d *DataBases) GetMsgBySeqList(uid string, seqList []uint32, operationID st return seqMsg, nil } - func (d *DataBases) GetMsgBySeqListMongo2(uid string, seqList []uint32, operationID string) (seqMsg []*open_im_sdk.MsgData, err error) { var hasSeqList []uint32 singleCount := 0 @@ -178,7 +177,6 @@ func (d *DataBases) GetMsgBySeqListMongo2(uid string, seqList []uint32, operatio return seqMsg, nil } - func genExceptionMessageBySeqList(seqList []uint32) (exceptionMsg []*open_im_sdk.MsgData) { for _, v := range seqList { msg := new(open_im_sdk.MsgData) @@ -199,7 +197,7 @@ func (d *DataBases) SaveUserChatMongo2(uid string, sendTime int64, m *pbMsg.MsgD sMsg := MsgInfo{} sMsg.SendTime = sendTime if sMsg.Msg, err = proto.Marshal(m.MsgData); err != nil { - return utils.Wrap(err,"") + return utils.Wrap(err, "") } err = c.FindOneAndUpdate(ctx, filter, bson.M{"$push": bson.M{"msg": sMsg}}).Err() log.NewDebug(operationID, "get mgoSession cost time", getCurrentTimestampByMill()-newTime) @@ -207,11 +205,11 @@ func (d *DataBases) SaveUserChatMongo2(uid string, sendTime int64, m *pbMsg.MsgD sChat := UserChat{} sChat.UID = seqUid sChat.Msg = append(sChat.Msg, sMsg) - if _, err = c.InsertOne(ctx, &sChat) ; err != nil{ + if _, err = c.InsertOne(ctx, &sChat); err != nil { log.NewDebug(operationID, "InsertOne failed", filter) return utils.Wrap(err, "") } - }else{ + } else { log.NewDebug(operationID, "FindOneAndUpdate ok", filter) } @@ -258,7 +256,6 @@ func (d *DataBases) SaveUserChat(uid string, sendTime int64, m *pbMsg.MsgDataToD return nil } - func (d *DataBases) DelUserChat(uid string) error { return nil //session := d.mgoSession.Clone() @@ -277,7 +274,6 @@ func (d *DataBases) DelUserChat(uid string) error { //return nil } - func (d *DataBases) DelUserChatMongo2(uid string) error { ctx, _ := context.WithTimeout(context.Background(), time.Duration(config.Config.Mongo.DBTimeout)*time.Second) c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) @@ -290,8 +286,6 @@ func (d *DataBases) DelUserChatMongo2(uid string) error { return nil } - - func (d *DataBases) MgoUserCount() (int, error) { return 0, nil //session := d.mgoSession.Clone() diff --git a/pkg/common/db/mysql_model/im_mysql_model/user_model.go b/pkg/common/db/mysql_model/im_mysql_model/user_model.go index 260a096c5..cfe340dc3 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/user_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/user_model.go @@ -307,11 +307,30 @@ func SetConversation(conversation db.Conversation) error { } else { log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update") //force update - return dbConn.Model(&db.Conversation{}).Update(conversation). + return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID). Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt, "is_pinned": conversation.IsPinned, "is_private_chat": conversation.IsPrivateChat}).Error } } +func SetRecvMsgOpt(conversation db.Conversation) error { + dbConn, err := db.DB.MysqlDB.DefaultGormDB() + if err != nil { + return err + } + dbConn.LogMode(true) + newConversation := conversation + if dbConn.Model(&db.Conversation{}).Find(&newConversation).RowsAffected == 0 { + log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "not exist in db, create") + return dbConn.Model(&db.Conversation{}).Create(conversation).Error + // if exist, then update record + } else { + log.NewDebug("", utils.GetSelfFuncName(), "conversation", conversation, "exist in db, update") + //force update + return dbConn.Model(conversation).Where("owner_user_id = ? and conversation_id = ?", conversation.OwnerUserID, conversation.ConversationID). + Update(map[string]interface{}{"recv_msg_opt": conversation.RecvMsgOpt}).Error + } +} + func GetUserAllConversations(ownerUserID string) ([]db.Conversation, error) { var conversations []db.Conversation dbConn, err := db.DB.MysqlDB.DefaultGormDB() @@ -330,7 +349,7 @@ func GetConversation(OwnerUserID, conversationID string) (db.Conversation, error return conversation, err } err = dbConn.Model(&db.Conversation{ - OwnerUserID: OwnerUserID, + OwnerUserID: OwnerUserID, ConversationID: conversationID, }).Find(&conversation).Error return conversation, err @@ -344,4 +363,4 @@ func GetConversations(OwnerUserID string, conversationIDs []string) ([]db.Conver } err = dbConn.Model(&db.Conversation{}).Where("conversation_id IN (?) and owner_user_id=?", conversationIDs, OwnerUserID).Find(&conversations).Error return conversations, err -} \ No newline at end of file +} diff --git a/pkg/proto/user/user.pb.go b/pkg/proto/user/user.pb.go index efa105b60..603434dbc 100644 --- a/pkg/proto/user/user.pb.go +++ b/pkg/proto/user/user.pb.go @@ -891,6 +891,124 @@ func (x *SetConversationResp) GetCommonResp() *CommonResp { return nil } +type SetRecvMsgOptReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OwnerUserID string `protobuf:"bytes,1,opt,name=OwnerUserID,proto3" json:"OwnerUserID,omitempty"` + ConversationID string `protobuf:"bytes,2,opt,name=ConversationID,proto3" json:"ConversationID,omitempty"` + RecvMsgOpt int32 `protobuf:"varint,3,opt,name=RecvMsgOpt,proto3" json:"RecvMsgOpt,omitempty"` + OperationID string `protobuf:"bytes,4,opt,name=OperationID,proto3" json:"OperationID,omitempty"` +} + +func (x *SetRecvMsgOptReq) Reset() { + *x = SetRecvMsgOptReq{} + if protoimpl.UnsafeEnabled { + mi := &file_user_user_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetRecvMsgOptReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetRecvMsgOptReq) ProtoMessage() {} + +func (x *SetRecvMsgOptReq) ProtoReflect() protoreflect.Message { + mi := &file_user_user_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetRecvMsgOptReq.ProtoReflect.Descriptor instead. +func (*SetRecvMsgOptReq) Descriptor() ([]byte, []int) { + return file_user_user_proto_rawDescGZIP(), []int{14} +} + +func (x *SetRecvMsgOptReq) GetOwnerUserID() string { + if x != nil { + return x.OwnerUserID + } + return "" +} + +func (x *SetRecvMsgOptReq) GetConversationID() string { + if x != nil { + return x.ConversationID + } + return "" +} + +func (x *SetRecvMsgOptReq) GetRecvMsgOpt() int32 { + if x != nil { + return x.RecvMsgOpt + } + return 0 +} + +func (x *SetRecvMsgOptReq) GetOperationID() string { + if x != nil { + return x.OperationID + } + return "" +} + +type SetRecvMsgOptResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp,proto3" json:"commonResp,omitempty"` +} + +func (x *SetRecvMsgOptResp) Reset() { + *x = SetRecvMsgOptResp{} + if protoimpl.UnsafeEnabled { + mi := &file_user_user_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetRecvMsgOptResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetRecvMsgOptResp) ProtoMessage() {} + +func (x *SetRecvMsgOptResp) ProtoReflect() protoreflect.Message { + mi := &file_user_user_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetRecvMsgOptResp.ProtoReflect.Descriptor instead. +func (*SetRecvMsgOptResp) Descriptor() ([]byte, []int) { + return file_user_user_proto_rawDescGZIP(), []int{15} +} + +func (x *SetRecvMsgOptResp) GetCommonResp() *CommonResp { + if x != nil { + return x.CommonResp + } + return nil +} + type GetConversationReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -904,7 +1022,7 @@ type GetConversationReq struct { func (x *GetConversationReq) Reset() { *x = GetConversationReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[14] + mi := &file_user_user_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -917,7 +1035,7 @@ func (x *GetConversationReq) String() string { func (*GetConversationReq) ProtoMessage() {} func (x *GetConversationReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[14] + mi := &file_user_user_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -930,7 +1048,7 @@ func (x *GetConversationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConversationReq.ProtoReflect.Descriptor instead. func (*GetConversationReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{14} + return file_user_user_proto_rawDescGZIP(), []int{16} } func (x *GetConversationReq) GetConversationID() string { @@ -966,7 +1084,7 @@ type GetConversationResp struct { func (x *GetConversationResp) Reset() { *x = GetConversationResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[15] + mi := &file_user_user_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -979,7 +1097,7 @@ func (x *GetConversationResp) String() string { func (*GetConversationResp) ProtoMessage() {} func (x *GetConversationResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[15] + mi := &file_user_user_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -992,7 +1110,7 @@ func (x *GetConversationResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConversationResp.ProtoReflect.Descriptor instead. func (*GetConversationResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{15} + return file_user_user_proto_rawDescGZIP(), []int{17} } func (x *GetConversationResp) GetCommonResp() *CommonResp { @@ -1022,7 +1140,7 @@ type GetConversationsReq struct { func (x *GetConversationsReq) Reset() { *x = GetConversationsReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[16] + mi := &file_user_user_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1035,7 +1153,7 @@ func (x *GetConversationsReq) String() string { func (*GetConversationsReq) ProtoMessage() {} func (x *GetConversationsReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[16] + mi := &file_user_user_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1048,7 +1166,7 @@ func (x *GetConversationsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConversationsReq.ProtoReflect.Descriptor instead. func (*GetConversationsReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{16} + return file_user_user_proto_rawDescGZIP(), []int{18} } func (x *GetConversationsReq) GetOwnerUserID() string { @@ -1084,7 +1202,7 @@ type GetConversationsResp struct { func (x *GetConversationsResp) Reset() { *x = GetConversationsResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[17] + mi := &file_user_user_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1097,7 +1215,7 @@ func (x *GetConversationsResp) String() string { func (*GetConversationsResp) ProtoMessage() {} func (x *GetConversationsResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[17] + mi := &file_user_user_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1110,7 +1228,7 @@ func (x *GetConversationsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConversationsResp.ProtoReflect.Descriptor instead. func (*GetConversationsResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{17} + return file_user_user_proto_rawDescGZIP(), []int{19} } func (x *GetConversationsResp) GetCommonResp() *CommonResp { @@ -1139,7 +1257,7 @@ type GetAllConversationsReq struct { func (x *GetAllConversationsReq) Reset() { *x = GetAllConversationsReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[18] + mi := &file_user_user_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1152,7 +1270,7 @@ func (x *GetAllConversationsReq) String() string { func (*GetAllConversationsReq) ProtoMessage() {} func (x *GetAllConversationsReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[18] + mi := &file_user_user_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1165,7 +1283,7 @@ func (x *GetAllConversationsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAllConversationsReq.ProtoReflect.Descriptor instead. func (*GetAllConversationsReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{18} + return file_user_user_proto_rawDescGZIP(), []int{20} } func (x *GetAllConversationsReq) GetOwnerUserID() string { @@ -1194,7 +1312,7 @@ type GetAllConversationsResp struct { func (x *GetAllConversationsResp) Reset() { *x = GetAllConversationsResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[19] + mi := &file_user_user_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1207,7 +1325,7 @@ func (x *GetAllConversationsResp) String() string { func (*GetAllConversationsResp) ProtoMessage() {} func (x *GetAllConversationsResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[19] + mi := &file_user_user_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1220,7 +1338,7 @@ func (x *GetAllConversationsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAllConversationsResp.ProtoReflect.Descriptor instead. func (*GetAllConversationsResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{19} + return file_user_user_proto_rawDescGZIP(), []int{21} } func (x *GetAllConversationsResp) GetCommonResp() *CommonResp { @@ -1250,7 +1368,7 @@ type BatchSetConversationsReq struct { func (x *BatchSetConversationsReq) Reset() { *x = BatchSetConversationsReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[20] + mi := &file_user_user_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1263,7 +1381,7 @@ func (x *BatchSetConversationsReq) String() string { func (*BatchSetConversationsReq) ProtoMessage() {} func (x *BatchSetConversationsReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[20] + mi := &file_user_user_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1276,7 +1394,7 @@ func (x *BatchSetConversationsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchSetConversationsReq.ProtoReflect.Descriptor instead. func (*BatchSetConversationsReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{20} + return file_user_user_proto_rawDescGZIP(), []int{22} } func (x *BatchSetConversationsReq) GetConversations() []*Conversation { @@ -1313,7 +1431,7 @@ type BatchSetConversationsResp struct { func (x *BatchSetConversationsResp) Reset() { *x = BatchSetConversationsResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[21] + mi := &file_user_user_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1326,7 +1444,7 @@ func (x *BatchSetConversationsResp) String() string { func (*BatchSetConversationsResp) ProtoMessage() {} func (x *BatchSetConversationsResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[21] + mi := &file_user_user_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1339,7 +1457,7 @@ func (x *BatchSetConversationsResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BatchSetConversationsResp.ProtoReflect.Descriptor instead. func (*BatchSetConversationsResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{21} + return file_user_user_proto_rawDescGZIP(), []int{23} } func (x *BatchSetConversationsResp) GetCommonResp() *CommonResp { @@ -1375,7 +1493,7 @@ type ResignUserReq struct { func (x *ResignUserReq) Reset() { *x = ResignUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[22] + mi := &file_user_user_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1388,7 +1506,7 @@ func (x *ResignUserReq) String() string { func (*ResignUserReq) ProtoMessage() {} func (x *ResignUserReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[22] + mi := &file_user_user_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1401,7 +1519,7 @@ func (x *ResignUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ResignUserReq.ProtoReflect.Descriptor instead. func (*ResignUserReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{22} + return file_user_user_proto_rawDescGZIP(), []int{24} } func (x *ResignUserReq) GetUserId() string { @@ -1429,7 +1547,7 @@ type ResignUserResp struct { func (x *ResignUserResp) Reset() { *x = ResignUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[23] + mi := &file_user_user_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1442,7 +1560,7 @@ func (x *ResignUserResp) String() string { func (*ResignUserResp) ProtoMessage() {} func (x *ResignUserResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[23] + mi := &file_user_user_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1455,7 +1573,7 @@ func (x *ResignUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ResignUserResp.ProtoReflect.Descriptor instead. func (*ResignUserResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{23} + return file_user_user_proto_rawDescGZIP(), []int{25} } func (x *ResignUserResp) GetCommonResp() *CommonResp { @@ -1477,7 +1595,7 @@ type GetUserByIdReq struct { func (x *GetUserByIdReq) Reset() { *x = GetUserByIdReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[24] + mi := &file_user_user_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1490,7 +1608,7 @@ func (x *GetUserByIdReq) String() string { func (*GetUserByIdReq) ProtoMessage() {} func (x *GetUserByIdReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[24] + mi := &file_user_user_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1503,7 +1621,7 @@ func (x *GetUserByIdReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserByIdReq.ProtoReflect.Descriptor instead. func (*GetUserByIdReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{24} + return file_user_user_proto_rawDescGZIP(), []int{26} } func (x *GetUserByIdReq) GetUserId() string { @@ -1535,7 +1653,7 @@ type User struct { func (x *User) Reset() { *x = User{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[25] + mi := &file_user_user_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1548,7 +1666,7 @@ func (x *User) String() string { func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[25] + mi := &file_user_user_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1561,7 +1679,7 @@ func (x *User) ProtoReflect() protoreflect.Message { // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{25} + return file_user_user_proto_rawDescGZIP(), []int{27} } func (x *User) GetProfilePhoto() string { @@ -1611,7 +1729,7 @@ type GetUserByIdResp struct { func (x *GetUserByIdResp) Reset() { *x = GetUserByIdResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[26] + mi := &file_user_user_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1624,7 +1742,7 @@ func (x *GetUserByIdResp) String() string { func (*GetUserByIdResp) ProtoMessage() {} func (x *GetUserByIdResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[26] + mi := &file_user_user_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1637,7 +1755,7 @@ func (x *GetUserByIdResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserByIdResp.ProtoReflect.Descriptor instead. func (*GetUserByIdResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{26} + return file_user_user_proto_rawDescGZIP(), []int{28} } func (x *GetUserByIdResp) GetCommonResp() *CommonResp { @@ -1667,7 +1785,7 @@ type GetUsersByNameReq struct { func (x *GetUsersByNameReq) Reset() { *x = GetUsersByNameReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[27] + mi := &file_user_user_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1680,7 +1798,7 @@ func (x *GetUsersByNameReq) String() string { func (*GetUsersByNameReq) ProtoMessage() {} func (x *GetUsersByNameReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[27] + mi := &file_user_user_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1693,7 +1811,7 @@ func (x *GetUsersByNameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUsersByNameReq.ProtoReflect.Descriptor instead. func (*GetUsersByNameReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{27} + return file_user_user_proto_rawDescGZIP(), []int{29} } func (x *GetUsersByNameReq) GetUserName() string { @@ -1730,7 +1848,7 @@ type GetUsersByNameResp struct { func (x *GetUsersByNameResp) Reset() { *x = GetUsersByNameResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[28] + mi := &file_user_user_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1743,7 +1861,7 @@ func (x *GetUsersByNameResp) String() string { func (*GetUsersByNameResp) ProtoMessage() {} func (x *GetUsersByNameResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[28] + mi := &file_user_user_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1756,7 +1874,7 @@ func (x *GetUsersByNameResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUsersByNameResp.ProtoReflect.Descriptor instead. func (*GetUsersByNameResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{28} + return file_user_user_proto_rawDescGZIP(), []int{30} } func (x *GetUsersByNameResp) GetUsers() []*User { @@ -1796,7 +1914,7 @@ type AlterUserReq struct { func (x *AlterUserReq) Reset() { *x = AlterUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[29] + mi := &file_user_user_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1809,7 +1927,7 @@ func (x *AlterUserReq) String() string { func (*AlterUserReq) ProtoMessage() {} func (x *AlterUserReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[29] + mi := &file_user_user_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1822,7 +1940,7 @@ func (x *AlterUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterUserReq.ProtoReflect.Descriptor instead. func (*AlterUserReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{29} + return file_user_user_proto_rawDescGZIP(), []int{31} } func (x *AlterUserReq) GetUserId() string { @@ -1878,7 +1996,7 @@ type AlterUserResp struct { func (x *AlterUserResp) Reset() { *x = AlterUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[30] + mi := &file_user_user_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1891,7 +2009,7 @@ func (x *AlterUserResp) String() string { func (*AlterUserResp) ProtoMessage() {} func (x *AlterUserResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[30] + mi := &file_user_user_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1904,7 +2022,7 @@ func (x *AlterUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AlterUserResp.ProtoReflect.Descriptor instead. func (*AlterUserResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{30} + return file_user_user_proto_rawDescGZIP(), []int{32} } func (x *AlterUserResp) GetCommonResp() *CommonResp { @@ -1927,7 +2045,7 @@ type GetUsersReq struct { func (x *GetUsersReq) Reset() { *x = GetUsersReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[31] + mi := &file_user_user_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1940,7 +2058,7 @@ func (x *GetUsersReq) String() string { func (*GetUsersReq) ProtoMessage() {} func (x *GetUsersReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[31] + mi := &file_user_user_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1953,7 +2071,7 @@ func (x *GetUsersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUsersReq.ProtoReflect.Descriptor instead. func (*GetUsersReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{31} + return file_user_user_proto_rawDescGZIP(), []int{33} } func (x *GetUsersReq) GetOperationID() string { @@ -1991,7 +2109,7 @@ type GetUsersResp struct { func (x *GetUsersResp) Reset() { *x = GetUsersResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[32] + mi := &file_user_user_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2004,7 +2122,7 @@ func (x *GetUsersResp) String() string { func (*GetUsersResp) ProtoMessage() {} func (x *GetUsersResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[32] + mi := &file_user_user_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2017,7 +2135,7 @@ func (x *GetUsersResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUsersResp.ProtoReflect.Descriptor instead. func (*GetUsersResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{32} + return file_user_user_proto_rawDescGZIP(), []int{34} } func (x *GetUsersResp) GetCommonResp() *CommonResp { @@ -2063,7 +2181,7 @@ type AddUserReq struct { func (x *AddUserReq) Reset() { *x = AddUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[33] + mi := &file_user_user_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2076,7 +2194,7 @@ func (x *AddUserReq) String() string { func (*AddUserReq) ProtoMessage() {} func (x *AddUserReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[33] + mi := &file_user_user_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2089,7 +2207,7 @@ func (x *AddUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddUserReq.ProtoReflect.Descriptor instead. func (*AddUserReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{33} + return file_user_user_proto_rawDescGZIP(), []int{35} } func (x *AddUserReq) GetOperationID() string { @@ -2138,7 +2256,7 @@ type AddUserResp struct { func (x *AddUserResp) Reset() { *x = AddUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[34] + mi := &file_user_user_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2151,7 +2269,7 @@ func (x *AddUserResp) String() string { func (*AddUserResp) ProtoMessage() {} func (x *AddUserResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[34] + mi := &file_user_user_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2164,7 +2282,7 @@ func (x *AddUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddUserResp.ProtoReflect.Descriptor instead. func (*AddUserResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{34} + return file_user_user_proto_rawDescGZIP(), []int{36} } func (x *AddUserResp) GetCommonResp() *CommonResp { @@ -2188,7 +2306,7 @@ type BlockUserReq struct { func (x *BlockUserReq) Reset() { *x = BlockUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[35] + mi := &file_user_user_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2201,7 +2319,7 @@ func (x *BlockUserReq) String() string { func (*BlockUserReq) ProtoMessage() {} func (x *BlockUserReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[35] + mi := &file_user_user_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2214,7 +2332,7 @@ func (x *BlockUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockUserReq.ProtoReflect.Descriptor instead. func (*BlockUserReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{35} + return file_user_user_proto_rawDescGZIP(), []int{37} } func (x *BlockUserReq) GetUserId() string { @@ -2256,7 +2374,7 @@ type BlockUserResp struct { func (x *BlockUserResp) Reset() { *x = BlockUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[36] + mi := &file_user_user_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2269,7 +2387,7 @@ func (x *BlockUserResp) String() string { func (*BlockUserResp) ProtoMessage() {} func (x *BlockUserResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[36] + mi := &file_user_user_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2282,7 +2400,7 @@ func (x *BlockUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockUserResp.ProtoReflect.Descriptor instead. func (*BlockUserResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{36} + return file_user_user_proto_rawDescGZIP(), []int{38} } func (x *BlockUserResp) GetCommonResp() *CommonResp { @@ -2305,7 +2423,7 @@ type UnBlockUserReq struct { func (x *UnBlockUserReq) Reset() { *x = UnBlockUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[37] + mi := &file_user_user_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2318,7 +2436,7 @@ func (x *UnBlockUserReq) String() string { func (*UnBlockUserReq) ProtoMessage() {} func (x *UnBlockUserReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[37] + mi := &file_user_user_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2331,7 +2449,7 @@ func (x *UnBlockUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UnBlockUserReq.ProtoReflect.Descriptor instead. func (*UnBlockUserReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{37} + return file_user_user_proto_rawDescGZIP(), []int{39} } func (x *UnBlockUserReq) GetUserId() string { @@ -2366,7 +2484,7 @@ type UnBlockUserResp struct { func (x *UnBlockUserResp) Reset() { *x = UnBlockUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[38] + mi := &file_user_user_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2379,7 +2497,7 @@ func (x *UnBlockUserResp) String() string { func (*UnBlockUserResp) ProtoMessage() {} func (x *UnBlockUserResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[38] + mi := &file_user_user_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2392,7 +2510,7 @@ func (x *UnBlockUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UnBlockUserResp.ProtoReflect.Descriptor instead. func (*UnBlockUserResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{38} + return file_user_user_proto_rawDescGZIP(), []int{40} } func (x *UnBlockUserResp) GetCommonResp() *CommonResp { @@ -2415,7 +2533,7 @@ type GetBlockUsersReq struct { func (x *GetBlockUsersReq) Reset() { *x = GetBlockUsersReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[39] + mi := &file_user_user_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2428,7 +2546,7 @@ func (x *GetBlockUsersReq) String() string { func (*GetBlockUsersReq) ProtoMessage() {} func (x *GetBlockUsersReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[39] + mi := &file_user_user_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2441,7 +2559,7 @@ func (x *GetBlockUsersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockUsersReq.ProtoReflect.Descriptor instead. func (*GetBlockUsersReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{39} + return file_user_user_proto_rawDescGZIP(), []int{41} } func (x *GetBlockUsersReq) GetPagination() *sdk_ws.RequestPagination { @@ -2478,7 +2596,7 @@ type BlockUser struct { func (x *BlockUser) Reset() { *x = BlockUser{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[40] + mi := &file_user_user_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2491,7 +2609,7 @@ func (x *BlockUser) String() string { func (*BlockUser) ProtoMessage() {} func (x *BlockUser) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[40] + mi := &file_user_user_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2504,7 +2622,7 @@ func (x *BlockUser) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockUser.ProtoReflect.Descriptor instead. func (*BlockUser) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{40} + return file_user_user_proto_rawDescGZIP(), []int{42} } func (x *BlockUser) GetUser() *User { @@ -2542,7 +2660,7 @@ type GetBlockUsersResp struct { func (x *GetBlockUsersResp) Reset() { *x = GetBlockUsersResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[41] + mi := &file_user_user_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2555,7 +2673,7 @@ func (x *GetBlockUsersResp) String() string { func (*GetBlockUsersResp) ProtoMessage() {} func (x *GetBlockUsersResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[41] + mi := &file_user_user_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2568,7 +2686,7 @@ func (x *GetBlockUsersResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockUsersResp.ProtoReflect.Descriptor instead. func (*GetBlockUsersResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{41} + return file_user_user_proto_rawDescGZIP(), []int{43} } func (x *GetBlockUsersResp) GetCommonResp() *CommonResp { @@ -2611,7 +2729,7 @@ type GetBlockUserByIdReq struct { func (x *GetBlockUserByIdReq) Reset() { *x = GetBlockUserByIdReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[42] + mi := &file_user_user_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2624,7 +2742,7 @@ func (x *GetBlockUserByIdReq) String() string { func (*GetBlockUserByIdReq) ProtoMessage() {} func (x *GetBlockUserByIdReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[42] + mi := &file_user_user_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2637,7 +2755,7 @@ func (x *GetBlockUserByIdReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockUserByIdReq.ProtoReflect.Descriptor instead. func (*GetBlockUserByIdReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{42} + return file_user_user_proto_rawDescGZIP(), []int{44} } func (x *GetBlockUserByIdReq) GetUserId() string { @@ -2665,7 +2783,7 @@ type GetBlockUserByIdResp struct { func (x *GetBlockUserByIdResp) Reset() { *x = GetBlockUserByIdResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[43] + mi := &file_user_user_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2678,7 +2796,7 @@ func (x *GetBlockUserByIdResp) String() string { func (*GetBlockUserByIdResp) ProtoMessage() {} func (x *GetBlockUserByIdResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[43] + mi := &file_user_user_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2691,7 +2809,7 @@ func (x *GetBlockUserByIdResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockUserByIdResp.ProtoReflect.Descriptor instead. func (*GetBlockUserByIdResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{43} + return file_user_user_proto_rawDescGZIP(), []int{45} } func (x *GetBlockUserByIdResp) GetBlockUser() *BlockUser { @@ -2714,7 +2832,7 @@ type DeleteUserReq struct { func (x *DeleteUserReq) Reset() { *x = DeleteUserReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[44] + mi := &file_user_user_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2727,7 +2845,7 @@ func (x *DeleteUserReq) String() string { func (*DeleteUserReq) ProtoMessage() {} func (x *DeleteUserReq) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[44] + mi := &file_user_user_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2740,7 +2858,7 @@ func (x *DeleteUserReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserReq.ProtoReflect.Descriptor instead. func (*DeleteUserReq) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{44} + return file_user_user_proto_rawDescGZIP(), []int{46} } func (x *DeleteUserReq) GetUserId() string { @@ -2775,7 +2893,7 @@ type DeleteUserResp struct { func (x *DeleteUserResp) Reset() { *x = DeleteUserResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[45] + mi := &file_user_user_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2788,7 +2906,7 @@ func (x *DeleteUserResp) String() string { func (*DeleteUserResp) ProtoMessage() {} func (x *DeleteUserResp) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[45] + mi := &file_user_user_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2801,7 +2919,7 @@ func (x *DeleteUserResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserResp.ProtoReflect.Descriptor instead. func (*DeleteUserResp) Descriptor() ([]byte, []int) { - return file_user_user_proto_rawDescGZIP(), []int{45} + return file_user_user_proto_rawDescGZIP(), []int{47} } func (x *DeleteUserResp) GetCommonResp() *CommonResp { @@ -2823,7 +2941,7 @@ type AccountCheckResp_SingleUserStatus struct { func (x *AccountCheckResp_SingleUserStatus) Reset() { *x = AccountCheckResp_SingleUserStatus{} if protoimpl.UnsafeEnabled { - mi := &file_user_user_proto_msgTypes[46] + mi := &file_user_user_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2836,7 +2954,7 @@ func (x *AccountCheckResp_SingleUserStatus) String() string { func (*AccountCheckResp_SingleUserStatus) ProtoMessage() {} func (x *AccountCheckResp_SingleUserStatus) ProtoReflect() protoreflect.Message { - mi := &file_user_user_proto_msgTypes[46] + mi := &file_user_user_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2990,335 +3108,354 @@ var file_user_user_proto_rawDesc = []byte{ 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x80, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x26, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, + 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x7f, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, 0x12, - 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x22, 0x82, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x0d, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x85, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x38, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x98, 0x01, 0x0a, - 0x18, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x38, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x7f, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x69, - 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x22, 0x42, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x22, 0x98, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x68, 0x6f, 0x74, 0x6f, - 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x63, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, - 0x73, 0x65, 0x72, 0x22, 0x97, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x99, 0x01, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, - 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0c, 0x41, 0x6c, - 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x50, 0x68, 0x6f, 0x6e, 0x65, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x91, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x44, 0x0a, 0x0a, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x0c, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x76, 0x4d, 0x73, + 0x67, 0x4f, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x65, 0x63, 0x76, + 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x45, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x80, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, + 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, + 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x44, 0x22, 0x7f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0c, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x83, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, + 0x0f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x82, 0x01, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5c, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x77, 0x6e, 0x65, + 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x85, 0x01, 0x0a, + 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x0d, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x18, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x12, 0x38, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, + 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, + 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, + 0x7f, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x45, - 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x22, 0x49, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x42, 0x0a, 0x0e, 0x52, + 0x65, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, + 0x4a, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x98, 0x01, 0x0a, 0x04, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, + 0x68, 0x6f, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, + 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x63, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, + 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x97, 0x01, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, + 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, + 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x99, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x20, 0x0a, 0x05, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x45, + 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x73, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x0b, - 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8c, 0x01, - 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, - 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, - 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0c, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6d, + 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x45, 0x6d, 0x61, 0x69, 0x6c, + 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x0d, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, + 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, - 0x66, 0x0a, 0x0e, 0x55, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x4f, - 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, - 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0f, 0x55, 0x6e, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x9e, 0x01, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x12, 0x44, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, + 0x91, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, + 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x12, 0x44, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0x7f, 0x0a, - 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x55, 0x73, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x42, 0x65, - 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd9, - 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x0a, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x73, 0x22, 0x50, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, - 0x71, 0x12, 0x17, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x45, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, - 0x73, 0x65, 0x72, 0x22, 0x66, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, - 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, - 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x32, - 0xd5, 0x0a, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, - 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, - 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, - 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, - 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, - 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x1a, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x1c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x1a, 0x1d, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x49, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x41, 0x64, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8c, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, + 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x66, 0x0a, 0x0e, 0x55, 0x6e, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, + 0x43, 0x0a, 0x0f, 0x55, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x0a, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0x7f, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x42, 0x65, + 0x67, 0x69, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x45, 0x6e, 0x64, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, + 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x45, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x69, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x73, 0x22, 0x50, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, + 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x55, 0x73, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x45, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2d, 0x0a, 0x09, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x22, 0x66, 0x0a, 0x0d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, + 0x55, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x55, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0a, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x32, 0x97, 0x0b, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x12, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, + 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x3a, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, + 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x15, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x44, 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x0c, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x15, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x1a, 0x16, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x15, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x53, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x1a, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x12, 0x14, 0x2e, 0x75, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x52, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x58, 0x0a, 0x15, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x46, 0x0a, 0x0f, + 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x76, 0x4d, + 0x73, 0x67, 0x4f, 0x70, 0x74, 0x12, 0x16, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, 0x70, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x4f, + 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x42, 0x79, 0x49, 0x64, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, - 0x71, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, - 0x0a, 0x52, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x1a, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x09, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, - 0x73, 0x65, 0x72, 0x12, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, - 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x11, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x2e, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x10, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x34, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x1a, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x0b, 0x55, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x6e, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x2e, 0x55, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x40, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x12, 0x16, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x75, 0x73, 0x65, - 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, - 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, - 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, - 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, - 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x75, - 0x73, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x1a, 0x14, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x75, 0x73, 0x65, - 0x72, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x70, 0x12, 0x43, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x42, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x69, 0x67, + 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x73, + 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x2e, 0x52, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x34, 0x0a, 0x09, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x2e, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x1a, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x12, 0x11, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x07, 0x41, 0x64, 0x64, + 0x55, 0x73, 0x65, 0x72, 0x12, 0x10, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x41, 0x64, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x09, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x75, 0x73, 0x65, + 0x72, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x3a, 0x0a, 0x0b, 0x55, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, + 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x55, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, + 0x64, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x55, 0x73, 0x65, 0x72, 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, + 0x42, 0x79, 0x49, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x37, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x3b, 0x75, 0x73, 0x65, 0x72, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3333,7 +3470,7 @@ func file_user_user_proto_rawDescGZIP() []byte { return file_user_user_proto_rawDescData } -var file_user_user_proto_msgTypes = make([]protoimpl.MessageInfo, 47) +var file_user_user_proto_msgTypes = make([]protoimpl.MessageInfo, 49) var file_user_user_proto_goTypes = []interface{}{ (*CommonResp)(nil), // 0: user.CommonResp (*DeleteUsersReq)(nil), // 1: user.DeleteUsersReq @@ -3349,130 +3486,135 @@ var file_user_user_proto_goTypes = []interface{}{ (*Conversation)(nil), // 11: user.Conversation (*SetConversationReq)(nil), // 12: user.SetConversationReq (*SetConversationResp)(nil), // 13: user.SetConversationResp - (*GetConversationReq)(nil), // 14: user.GetConversationReq - (*GetConversationResp)(nil), // 15: user.GetConversationResp - (*GetConversationsReq)(nil), // 16: user.GetConversationsReq - (*GetConversationsResp)(nil), // 17: user.GetConversationsResp - (*GetAllConversationsReq)(nil), // 18: user.GetAllConversationsReq - (*GetAllConversationsResp)(nil), // 19: user.GetAllConversationsResp - (*BatchSetConversationsReq)(nil), // 20: user.BatchSetConversationsReq - (*BatchSetConversationsResp)(nil), // 21: user.BatchSetConversationsResp - (*ResignUserReq)(nil), // 22: user.ResignUserReq - (*ResignUserResp)(nil), // 23: user.ResignUserResp - (*GetUserByIdReq)(nil), // 24: user.GetUserByIdReq - (*User)(nil), // 25: user.User - (*GetUserByIdResp)(nil), // 26: user.GetUserByIdResp - (*GetUsersByNameReq)(nil), // 27: user.GetUsersByNameReq - (*GetUsersByNameResp)(nil), // 28: user.GetUsersByNameResp - (*AlterUserReq)(nil), // 29: user.AlterUserReq - (*AlterUserResp)(nil), // 30: user.AlterUserResp - (*GetUsersReq)(nil), // 31: user.GetUsersReq - (*GetUsersResp)(nil), // 32: user.GetUsersResp - (*AddUserReq)(nil), // 33: user.AddUserReq - (*AddUserResp)(nil), // 34: user.AddUserResp - (*BlockUserReq)(nil), // 35: user.BlockUserReq - (*BlockUserResp)(nil), // 36: user.BlockUserResp - (*UnBlockUserReq)(nil), // 37: user.UnBlockUserReq - (*UnBlockUserResp)(nil), // 38: user.UnBlockUserResp - (*GetBlockUsersReq)(nil), // 39: user.GetBlockUsersReq - (*BlockUser)(nil), // 40: user.BlockUser - (*GetBlockUsersResp)(nil), // 41: user.GetBlockUsersResp - (*GetBlockUserByIdReq)(nil), // 42: user.GetBlockUserByIdReq - (*GetBlockUserByIdResp)(nil), // 43: user.GetBlockUserByIdResp - (*DeleteUserReq)(nil), // 44: user.DeleteUserReq - (*DeleteUserResp)(nil), // 45: user.DeleteUserResp - (*AccountCheckResp_SingleUserStatus)(nil), // 46: user.AccountCheckResp.SingleUserStatus - (*sdk_ws.UserInfo)(nil), // 47: server_api_params.UserInfo - (*sdk_ws.RequestPagination)(nil), // 48: server_api_params.RequestPagination - (*sdk_ws.ResponsePagination)(nil), // 49: server_api_params.ResponsePagination + (*SetRecvMsgOptReq)(nil), // 14: user.SetRecvMsgOptReq + (*SetRecvMsgOptResp)(nil), // 15: user.SetRecvMsgOptResp + (*GetConversationReq)(nil), // 16: user.GetConversationReq + (*GetConversationResp)(nil), // 17: user.GetConversationResp + (*GetConversationsReq)(nil), // 18: user.GetConversationsReq + (*GetConversationsResp)(nil), // 19: user.GetConversationsResp + (*GetAllConversationsReq)(nil), // 20: user.GetAllConversationsReq + (*GetAllConversationsResp)(nil), // 21: user.GetAllConversationsResp + (*BatchSetConversationsReq)(nil), // 22: user.BatchSetConversationsReq + (*BatchSetConversationsResp)(nil), // 23: user.BatchSetConversationsResp + (*ResignUserReq)(nil), // 24: user.ResignUserReq + (*ResignUserResp)(nil), // 25: user.ResignUserResp + (*GetUserByIdReq)(nil), // 26: user.GetUserByIdReq + (*User)(nil), // 27: user.User + (*GetUserByIdResp)(nil), // 28: user.GetUserByIdResp + (*GetUsersByNameReq)(nil), // 29: user.GetUsersByNameReq + (*GetUsersByNameResp)(nil), // 30: user.GetUsersByNameResp + (*AlterUserReq)(nil), // 31: user.AlterUserReq + (*AlterUserResp)(nil), // 32: user.AlterUserResp + (*GetUsersReq)(nil), // 33: user.GetUsersReq + (*GetUsersResp)(nil), // 34: user.GetUsersResp + (*AddUserReq)(nil), // 35: user.AddUserReq + (*AddUserResp)(nil), // 36: user.AddUserResp + (*BlockUserReq)(nil), // 37: user.BlockUserReq + (*BlockUserResp)(nil), // 38: user.BlockUserResp + (*UnBlockUserReq)(nil), // 39: user.UnBlockUserReq + (*UnBlockUserResp)(nil), // 40: user.UnBlockUserResp + (*GetBlockUsersReq)(nil), // 41: user.GetBlockUsersReq + (*BlockUser)(nil), // 42: user.BlockUser + (*GetBlockUsersResp)(nil), // 43: user.GetBlockUsersResp + (*GetBlockUserByIdReq)(nil), // 44: user.GetBlockUserByIdReq + (*GetBlockUserByIdResp)(nil), // 45: user.GetBlockUserByIdResp + (*DeleteUserReq)(nil), // 46: user.DeleteUserReq + (*DeleteUserResp)(nil), // 47: user.DeleteUserResp + (*AccountCheckResp_SingleUserStatus)(nil), // 48: user.AccountCheckResp.SingleUserStatus + (*sdk_ws.UserInfo)(nil), // 49: server_api_params.UserInfo + (*sdk_ws.RequestPagination)(nil), // 50: server_api_params.RequestPagination + (*sdk_ws.ResponsePagination)(nil), // 51: server_api_params.ResponsePagination } var file_user_user_proto_depIdxs = []int32{ 0, // 0: user.DeleteUsersResp.CommonResp:type_name -> user.CommonResp 0, // 1: user.GetAllUserIDResp.CommonResp:type_name -> user.CommonResp 0, // 2: user.AccountCheckResp.commonResp:type_name -> user.CommonResp - 46, // 3: user.AccountCheckResp.ResultList:type_name -> user.AccountCheckResp.SingleUserStatus + 48, // 3: user.AccountCheckResp.ResultList:type_name -> user.AccountCheckResp.SingleUserStatus 0, // 4: user.GetUserInfoResp.commonResp:type_name -> user.CommonResp - 47, // 5: user.GetUserInfoResp.UserInfoList:type_name -> server_api_params.UserInfo - 47, // 6: user.UpdateUserInfoReq.UserInfo:type_name -> server_api_params.UserInfo + 49, // 5: user.GetUserInfoResp.UserInfoList:type_name -> server_api_params.UserInfo + 49, // 6: user.UpdateUserInfoReq.UserInfo:type_name -> server_api_params.UserInfo 0, // 7: user.UpdateUserInfoResp.commonResp:type_name -> user.CommonResp 11, // 8: user.SetConversationReq.Conversation:type_name -> user.Conversation 0, // 9: user.SetConversationResp.commonResp:type_name -> user.CommonResp - 0, // 10: user.GetConversationResp.commonResp:type_name -> user.CommonResp - 11, // 11: user.GetConversationResp.Conversation:type_name -> user.Conversation - 0, // 12: user.GetConversationsResp.commonResp:type_name -> user.CommonResp - 11, // 13: user.GetConversationsResp.Conversations:type_name -> user.Conversation - 0, // 14: user.GetAllConversationsResp.commonResp:type_name -> user.CommonResp - 11, // 15: user.GetAllConversationsResp.Conversations:type_name -> user.Conversation - 11, // 16: user.BatchSetConversationsReq.Conversations:type_name -> user.Conversation - 0, // 17: user.BatchSetConversationsResp.commonResp:type_name -> user.CommonResp - 0, // 18: user.ResignUserResp.commonResp:type_name -> user.CommonResp - 0, // 19: user.GetUserByIdResp.CommonResp:type_name -> user.CommonResp - 25, // 20: user.GetUserByIdResp.user:type_name -> user.User - 48, // 21: user.GetUsersByNameReq.Pagination:type_name -> server_api_params.RequestPagination - 25, // 22: user.GetUsersByNameResp.users:type_name -> user.User - 49, // 23: user.GetUsersByNameResp.Pagination:type_name -> server_api_params.ResponsePagination - 0, // 24: user.AlterUserResp.CommonResp:type_name -> user.CommonResp - 48, // 25: user.GetUsersReq.Pagination:type_name -> server_api_params.RequestPagination - 0, // 26: user.GetUsersResp.CommonResp:type_name -> user.CommonResp - 25, // 27: user.GetUsersResp.user:type_name -> user.User - 49, // 28: user.GetUsersResp.Pagination:type_name -> server_api_params.ResponsePagination - 0, // 29: user.AddUserResp.CommonResp:type_name -> user.CommonResp - 0, // 30: user.BlockUserResp.CommonResp:type_name -> user.CommonResp - 0, // 31: user.UnBlockUserResp.CommonResp:type_name -> user.CommonResp - 48, // 32: user.GetBlockUsersReq.Pagination:type_name -> server_api_params.RequestPagination - 25, // 33: user.BlockUser.User:type_name -> user.User - 0, // 34: user.GetBlockUsersResp.CommonResp:type_name -> user.CommonResp - 40, // 35: user.GetBlockUsersResp.BlockUsers:type_name -> user.BlockUser - 49, // 36: user.GetBlockUsersResp.Pagination:type_name -> server_api_params.ResponsePagination - 40, // 37: user.GetBlockUserByIdResp.BlockUser:type_name -> user.BlockUser - 0, // 38: user.DeleteUserResp.CommonResp:type_name -> user.CommonResp - 7, // 39: user.user.GetUserInfo:input_type -> user.GetUserInfoReq - 9, // 40: user.user.UpdateUserInfo:input_type -> user.UpdateUserInfoReq - 1, // 41: user.user.DeleteUsers:input_type -> user.DeleteUsersReq - 3, // 42: user.user.GetAllUserID:input_type -> user.GetAllUserIDReq - 5, // 43: user.user.AccountCheck:input_type -> user.AccountCheckReq - 14, // 44: user.user.GetConversation:input_type -> user.GetConversationReq - 18, // 45: user.user.GetAllConversations:input_type -> user.GetAllConversationsReq - 16, // 46: user.user.GetConversations:input_type -> user.GetConversationsReq - 20, // 47: user.user.BatchSetConversations:input_type -> user.BatchSetConversationsReq - 12, // 48: user.user.SetConversation:input_type -> user.SetConversationReq - 24, // 49: user.user.GetUserById:input_type -> user.GetUserByIdReq - 27, // 50: user.user.GetUsersByName:input_type -> user.GetUsersByNameReq - 22, // 51: user.user.ResignUser:input_type -> user.ResignUserReq - 29, // 52: user.user.AlterUser:input_type -> user.AlterUserReq - 31, // 53: user.user.GetUsers:input_type -> user.GetUsersReq - 33, // 54: user.user.AddUser:input_type -> user.AddUserReq - 35, // 55: user.user.BlockUser:input_type -> user.BlockUserReq - 37, // 56: user.user.UnBlockUser:input_type -> user.UnBlockUserReq - 39, // 57: user.user.GetBlockUsers:input_type -> user.GetBlockUsersReq - 42, // 58: user.user.GetBlockUserById:input_type -> user.GetBlockUserByIdReq - 44, // 59: user.user.DeleteUser:input_type -> user.DeleteUserReq - 8, // 60: user.user.GetUserInfo:output_type -> user.GetUserInfoResp - 10, // 61: user.user.UpdateUserInfo:output_type -> user.UpdateUserInfoResp - 2, // 62: user.user.DeleteUsers:output_type -> user.DeleteUsersResp - 4, // 63: user.user.GetAllUserID:output_type -> user.GetAllUserIDResp - 6, // 64: user.user.AccountCheck:output_type -> user.AccountCheckResp - 15, // 65: user.user.GetConversation:output_type -> user.GetConversationResp - 19, // 66: user.user.GetAllConversations:output_type -> user.GetAllConversationsResp - 17, // 67: user.user.GetConversations:output_type -> user.GetConversationsResp - 21, // 68: user.user.BatchSetConversations:output_type -> user.BatchSetConversationsResp - 13, // 69: user.user.SetConversation:output_type -> user.SetConversationResp - 26, // 70: user.user.GetUserById:output_type -> user.GetUserByIdResp - 28, // 71: user.user.GetUsersByName:output_type -> user.GetUsersByNameResp - 23, // 72: user.user.ResignUser:output_type -> user.ResignUserResp - 30, // 73: user.user.AlterUser:output_type -> user.AlterUserResp - 32, // 74: user.user.GetUsers:output_type -> user.GetUsersResp - 34, // 75: user.user.AddUser:output_type -> user.AddUserResp - 36, // 76: user.user.BlockUser:output_type -> user.BlockUserResp - 38, // 77: user.user.UnBlockUser:output_type -> user.UnBlockUserResp - 41, // 78: user.user.GetBlockUsers:output_type -> user.GetBlockUsersResp - 43, // 79: user.user.GetBlockUserById:output_type -> user.GetBlockUserByIdResp - 45, // 80: user.user.DeleteUser:output_type -> user.DeleteUserResp - 60, // [60:81] is the sub-list for method output_type - 39, // [39:60] is the sub-list for method input_type - 39, // [39:39] is the sub-list for extension type_name - 39, // [39:39] is the sub-list for extension extendee - 0, // [0:39] is the sub-list for field type_name + 0, // 10: user.SetRecvMsgOptResp.commonResp:type_name -> user.CommonResp + 0, // 11: user.GetConversationResp.commonResp:type_name -> user.CommonResp + 11, // 12: user.GetConversationResp.Conversation:type_name -> user.Conversation + 0, // 13: user.GetConversationsResp.commonResp:type_name -> user.CommonResp + 11, // 14: user.GetConversationsResp.Conversations:type_name -> user.Conversation + 0, // 15: user.GetAllConversationsResp.commonResp:type_name -> user.CommonResp + 11, // 16: user.GetAllConversationsResp.Conversations:type_name -> user.Conversation + 11, // 17: user.BatchSetConversationsReq.Conversations:type_name -> user.Conversation + 0, // 18: user.BatchSetConversationsResp.commonResp:type_name -> user.CommonResp + 0, // 19: user.ResignUserResp.commonResp:type_name -> user.CommonResp + 0, // 20: user.GetUserByIdResp.CommonResp:type_name -> user.CommonResp + 27, // 21: user.GetUserByIdResp.user:type_name -> user.User + 50, // 22: user.GetUsersByNameReq.Pagination:type_name -> server_api_params.RequestPagination + 27, // 23: user.GetUsersByNameResp.users:type_name -> user.User + 51, // 24: user.GetUsersByNameResp.Pagination:type_name -> server_api_params.ResponsePagination + 0, // 25: user.AlterUserResp.CommonResp:type_name -> user.CommonResp + 50, // 26: user.GetUsersReq.Pagination:type_name -> server_api_params.RequestPagination + 0, // 27: user.GetUsersResp.CommonResp:type_name -> user.CommonResp + 27, // 28: user.GetUsersResp.user:type_name -> user.User + 51, // 29: user.GetUsersResp.Pagination:type_name -> server_api_params.ResponsePagination + 0, // 30: user.AddUserResp.CommonResp:type_name -> user.CommonResp + 0, // 31: user.BlockUserResp.CommonResp:type_name -> user.CommonResp + 0, // 32: user.UnBlockUserResp.CommonResp:type_name -> user.CommonResp + 50, // 33: user.GetBlockUsersReq.Pagination:type_name -> server_api_params.RequestPagination + 27, // 34: user.BlockUser.User:type_name -> user.User + 0, // 35: user.GetBlockUsersResp.CommonResp:type_name -> user.CommonResp + 42, // 36: user.GetBlockUsersResp.BlockUsers:type_name -> user.BlockUser + 51, // 37: user.GetBlockUsersResp.Pagination:type_name -> server_api_params.ResponsePagination + 42, // 38: user.GetBlockUserByIdResp.BlockUser:type_name -> user.BlockUser + 0, // 39: user.DeleteUserResp.CommonResp:type_name -> user.CommonResp + 7, // 40: user.user.GetUserInfo:input_type -> user.GetUserInfoReq + 9, // 41: user.user.UpdateUserInfo:input_type -> user.UpdateUserInfoReq + 1, // 42: user.user.DeleteUsers:input_type -> user.DeleteUsersReq + 3, // 43: user.user.GetAllUserID:input_type -> user.GetAllUserIDReq + 5, // 44: user.user.AccountCheck:input_type -> user.AccountCheckReq + 16, // 45: user.user.GetConversation:input_type -> user.GetConversationReq + 20, // 46: user.user.GetAllConversations:input_type -> user.GetAllConversationsReq + 18, // 47: user.user.GetConversations:input_type -> user.GetConversationsReq + 22, // 48: user.user.BatchSetConversations:input_type -> user.BatchSetConversationsReq + 12, // 49: user.user.SetConversation:input_type -> user.SetConversationReq + 14, // 50: user.user.SetRecvMsgOpt:input_type -> user.SetRecvMsgOptReq + 26, // 51: user.user.GetUserById:input_type -> user.GetUserByIdReq + 29, // 52: user.user.GetUsersByName:input_type -> user.GetUsersByNameReq + 24, // 53: user.user.ResignUser:input_type -> user.ResignUserReq + 31, // 54: user.user.AlterUser:input_type -> user.AlterUserReq + 33, // 55: user.user.GetUsers:input_type -> user.GetUsersReq + 35, // 56: user.user.AddUser:input_type -> user.AddUserReq + 37, // 57: user.user.BlockUser:input_type -> user.BlockUserReq + 39, // 58: user.user.UnBlockUser:input_type -> user.UnBlockUserReq + 41, // 59: user.user.GetBlockUsers:input_type -> user.GetBlockUsersReq + 44, // 60: user.user.GetBlockUserById:input_type -> user.GetBlockUserByIdReq + 46, // 61: user.user.DeleteUser:input_type -> user.DeleteUserReq + 8, // 62: user.user.GetUserInfo:output_type -> user.GetUserInfoResp + 10, // 63: user.user.UpdateUserInfo:output_type -> user.UpdateUserInfoResp + 2, // 64: user.user.DeleteUsers:output_type -> user.DeleteUsersResp + 4, // 65: user.user.GetAllUserID:output_type -> user.GetAllUserIDResp + 6, // 66: user.user.AccountCheck:output_type -> user.AccountCheckResp + 17, // 67: user.user.GetConversation:output_type -> user.GetConversationResp + 21, // 68: user.user.GetAllConversations:output_type -> user.GetAllConversationsResp + 19, // 69: user.user.GetConversations:output_type -> user.GetConversationsResp + 23, // 70: user.user.BatchSetConversations:output_type -> user.BatchSetConversationsResp + 13, // 71: user.user.SetConversation:output_type -> user.SetConversationResp + 15, // 72: user.user.SetRecvMsgOpt:output_type -> user.SetRecvMsgOptResp + 28, // 73: user.user.GetUserById:output_type -> user.GetUserByIdResp + 30, // 74: user.user.GetUsersByName:output_type -> user.GetUsersByNameResp + 25, // 75: user.user.ResignUser:output_type -> user.ResignUserResp + 32, // 76: user.user.AlterUser:output_type -> user.AlterUserResp + 34, // 77: user.user.GetUsers:output_type -> user.GetUsersResp + 36, // 78: user.user.AddUser:output_type -> user.AddUserResp + 38, // 79: user.user.BlockUser:output_type -> user.BlockUserResp + 40, // 80: user.user.UnBlockUser:output_type -> user.UnBlockUserResp + 43, // 81: user.user.GetBlockUsers:output_type -> user.GetBlockUsersResp + 45, // 82: user.user.GetBlockUserById:output_type -> user.GetBlockUserByIdResp + 47, // 83: user.user.DeleteUser:output_type -> user.DeleteUserResp + 62, // [62:84] is the sub-list for method output_type + 40, // [40:62] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name } func init() { file_user_user_proto_init() } @@ -3650,7 +3792,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConversationReq); i { + switch v := v.(*SetRecvMsgOptReq); i { case 0: return &v.state case 1: @@ -3662,7 +3804,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConversationResp); i { + switch v := v.(*SetRecvMsgOptResp); i { case 0: return &v.state case 1: @@ -3674,7 +3816,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConversationsReq); i { + switch v := v.(*GetConversationReq); i { case 0: return &v.state case 1: @@ -3686,7 +3828,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConversationsResp); i { + switch v := v.(*GetConversationResp); i { case 0: return &v.state case 1: @@ -3698,7 +3840,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAllConversationsReq); i { + switch v := v.(*GetConversationsReq); i { case 0: return &v.state case 1: @@ -3710,7 +3852,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetAllConversationsResp); i { + switch v := v.(*GetConversationsResp); i { case 0: return &v.state case 1: @@ -3722,7 +3864,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchSetConversationsReq); i { + switch v := v.(*GetAllConversationsReq); i { case 0: return &v.state case 1: @@ -3734,7 +3876,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BatchSetConversationsResp); i { + switch v := v.(*GetAllConversationsResp); i { case 0: return &v.state case 1: @@ -3746,7 +3888,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResignUserReq); i { + switch v := v.(*BatchSetConversationsReq); i { case 0: return &v.state case 1: @@ -3758,7 +3900,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResignUserResp); i { + switch v := v.(*BatchSetConversationsResp); i { case 0: return &v.state case 1: @@ -3770,7 +3912,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserByIdReq); i { + switch v := v.(*ResignUserReq); i { case 0: return &v.state case 1: @@ -3782,7 +3924,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User); i { + switch v := v.(*ResignUserResp); i { case 0: return &v.state case 1: @@ -3794,7 +3936,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserByIdResp); i { + switch v := v.(*GetUserByIdReq); i { case 0: return &v.state case 1: @@ -3806,7 +3948,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersByNameReq); i { + switch v := v.(*User); i { case 0: return &v.state case 1: @@ -3818,7 +3960,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersByNameResp); i { + switch v := v.(*GetUserByIdResp); i { case 0: return &v.state case 1: @@ -3830,7 +3972,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlterUserReq); i { + switch v := v.(*GetUsersByNameReq); i { case 0: return &v.state case 1: @@ -3842,7 +3984,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlterUserResp); i { + switch v := v.(*GetUsersByNameResp); i { case 0: return &v.state case 1: @@ -3854,7 +3996,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersReq); i { + switch v := v.(*AlterUserReq); i { case 0: return &v.state case 1: @@ -3866,7 +4008,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUsersResp); i { + switch v := v.(*AlterUserResp); i { case 0: return &v.state case 1: @@ -3878,7 +4020,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddUserReq); i { + switch v := v.(*GetUsersReq); i { case 0: return &v.state case 1: @@ -3890,7 +4032,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddUserResp); i { + switch v := v.(*GetUsersResp); i { case 0: return &v.state case 1: @@ -3902,7 +4044,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockUserReq); i { + switch v := v.(*AddUserReq); i { case 0: return &v.state case 1: @@ -3914,7 +4056,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockUserResp); i { + switch v := v.(*AddUserResp); i { case 0: return &v.state case 1: @@ -3926,7 +4068,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnBlockUserReq); i { + switch v := v.(*BlockUserReq); i { case 0: return &v.state case 1: @@ -3938,7 +4080,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnBlockUserResp); i { + switch v := v.(*BlockUserResp); i { case 0: return &v.state case 1: @@ -3950,7 +4092,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockUsersReq); i { + switch v := v.(*UnBlockUserReq); i { case 0: return &v.state case 1: @@ -3962,7 +4104,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockUser); i { + switch v := v.(*UnBlockUserResp); i { case 0: return &v.state case 1: @@ -3974,7 +4116,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockUsersResp); i { + switch v := v.(*GetBlockUsersReq); i { case 0: return &v.state case 1: @@ -3986,7 +4128,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockUserByIdReq); i { + switch v := v.(*BlockUser); i { case 0: return &v.state case 1: @@ -3998,7 +4140,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockUserByIdResp); i { + switch v := v.(*GetBlockUsersResp); i { case 0: return &v.state case 1: @@ -4010,7 +4152,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteUserReq); i { + switch v := v.(*GetBlockUserByIdReq); i { case 0: return &v.state case 1: @@ -4022,7 +4164,7 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteUserResp); i { + switch v := v.(*GetBlockUserByIdResp); i { case 0: return &v.state case 1: @@ -4034,6 +4176,30 @@ func file_user_user_proto_init() { } } file_user_user_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteUserReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_user_user_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteUserResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_user_user_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AccountCheckResp_SingleUserStatus); i { case 0: return &v.state @@ -4052,7 +4218,7 @@ func file_user_user_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_user_user_proto_rawDesc, NumEnums: 0, - NumMessages: 47, + NumMessages: 49, NumExtensions: 0, NumServices: 1, }, @@ -4088,6 +4254,7 @@ type UserClient interface { GetConversations(ctx context.Context, in *GetConversationsReq, opts ...grpc.CallOption) (*GetConversationsResp, error) BatchSetConversations(ctx context.Context, in *BatchSetConversationsReq, opts ...grpc.CallOption) (*BatchSetConversationsResp, error) SetConversation(ctx context.Context, in *SetConversationReq, opts ...grpc.CallOption) (*SetConversationResp, error) + SetRecvMsgOpt(ctx context.Context, in *SetRecvMsgOptReq, opts ...grpc.CallOption) (*SetRecvMsgOptResp, error) GetUserById(ctx context.Context, in *GetUserByIdReq, opts ...grpc.CallOption) (*GetUserByIdResp, error) GetUsersByName(ctx context.Context, in *GetUsersByNameReq, opts ...grpc.CallOption) (*GetUsersByNameResp, error) ResignUser(ctx context.Context, in *ResignUserReq, opts ...grpc.CallOption) (*ResignUserResp, error) @@ -4199,6 +4366,15 @@ func (c *userClient) SetConversation(ctx context.Context, in *SetConversationReq return out, nil } +func (c *userClient) SetRecvMsgOpt(ctx context.Context, in *SetRecvMsgOptReq, opts ...grpc.CallOption) (*SetRecvMsgOptResp, error) { + out := new(SetRecvMsgOptResp) + err := c.cc.Invoke(ctx, "/user.user/SetRecvMsgOpt", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *userClient) GetUserById(ctx context.Context, in *GetUserByIdReq, opts ...grpc.CallOption) (*GetUserByIdResp, error) { out := new(GetUserByIdResp) err := c.cc.Invoke(ctx, "/user.user/GetUserById", in, out, opts...) @@ -4310,6 +4486,7 @@ type UserServer interface { GetConversations(context.Context, *GetConversationsReq) (*GetConversationsResp, error) BatchSetConversations(context.Context, *BatchSetConversationsReq) (*BatchSetConversationsResp, error) SetConversation(context.Context, *SetConversationReq) (*SetConversationResp, error) + SetRecvMsgOpt(context.Context, *SetRecvMsgOptReq) (*SetRecvMsgOptResp, error) GetUserById(context.Context, *GetUserByIdReq) (*GetUserByIdResp, error) GetUsersByName(context.Context, *GetUsersByNameReq) (*GetUsersByNameResp, error) ResignUser(context.Context, *ResignUserReq) (*ResignUserResp, error) @@ -4357,6 +4534,9 @@ func (*UnimplementedUserServer) BatchSetConversations(context.Context, *BatchSet func (*UnimplementedUserServer) SetConversation(context.Context, *SetConversationReq) (*SetConversationResp, error) { return nil, status.Errorf(codes.Unimplemented, "method SetConversation not implemented") } +func (*UnimplementedUserServer) SetRecvMsgOpt(context.Context, *SetRecvMsgOptReq) (*SetRecvMsgOptResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetRecvMsgOpt not implemented") +} func (*UnimplementedUserServer) GetUserById(context.Context, *GetUserByIdReq) (*GetUserByIdResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetUserById not implemented") } @@ -4575,6 +4755,24 @@ func _User_SetConversation_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _User_SetRecvMsgOpt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetRecvMsgOptReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserServer).SetRecvMsgOpt(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/user.user/SetRecvMsgOpt", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserServer).SetRecvMsgOpt(ctx, req.(*SetRecvMsgOptReq)) + } + return interceptor(ctx, in, info, handler) +} + func _User_GetUserById_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetUserByIdReq) if err := dec(in); err != nil { @@ -4817,6 +5015,10 @@ var _User_serviceDesc = grpc.ServiceDesc{ MethodName: "SetConversation", Handler: _User_SetConversation_Handler, }, + { + MethodName: "SetRecvMsgOpt", + Handler: _User_SetRecvMsgOpt_Handler, + }, { MethodName: "GetUserById", Handler: _User_GetUserById_Handler, diff --git a/pkg/proto/user/user.proto b/pkg/proto/user/user.proto index 0a266f3a2..f23d82135 100644 --- a/pkg/proto/user/user.proto +++ b/pkg/proto/user/user.proto @@ -91,6 +91,17 @@ message SetConversationResp{ CommonResp commonResp = 1; } +message SetRecvMsgOptReq { + string OwnerUserID = 1; + string ConversationID = 2; + int32 RecvMsgOpt = 3; + string OperationID = 4; +} + +message SetRecvMsgOptResp { + CommonResp commonResp = 1; +} + message GetConversationReq{ string ConversationID = 1; string OwnerUserID = 2; @@ -272,6 +283,8 @@ message DeleteUserResp { CommonResp CommonResp = 1; } + + service user { rpc GetUserInfo(GetUserInfoReq) returns(GetUserInfoResp); rpc UpdateUserInfo(UpdateUserInfoReq) returns(UpdateUserInfoResp); @@ -284,6 +297,7 @@ service user { rpc GetConversations(GetConversationsReq)returns(GetConversationsResp); rpc BatchSetConversations(BatchSetConversationsReq)returns(BatchSetConversationsResp); rpc SetConversation(SetConversationReq)returns(SetConversationResp); + rpc SetRecvMsgOpt(SetRecvMsgOptReq)returns(SetRecvMsgOptResp); rpc GetUserById(GetUserByIdReq) returns (GetUserByIdResp); rpc GetUsersByName(GetUsersByNameReq) returns (GetUsersByNameResp);