// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.33.0 // protoc v6.33.0 // source: admin/admin.proto package admin import ( common "git.imall.cloud/openim/chat/pkg/protocol/common" sdkws "git.imall.cloud/openim/protocol/sdkws" wrapperspb "git.imall.cloud/openim/protocol/wrapperspb" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // login type LoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version"` GoogleAuthCode string `protobuf:"bytes,4,opt,name=googleAuthCode,proto3" json:"googleAuthCode"` // Google Authenticator 验证码(如果设置了 googleAuthKey 则必填) } func (x *LoginReq) Reset() { *x = LoginReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LoginReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*LoginReq) ProtoMessage() {} func (x *LoginReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[0] 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 LoginReq.ProtoReflect.Descriptor instead. func (*LoginReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{0} } func (x *LoginReq) GetAccount() string { if x != nil { return x.Account } return "" } func (x *LoginReq) GetPassword() string { if x != nil { return x.Password } return "" } func (x *LoginReq) GetVersion() string { if x != nil { return x.Version } return "" } func (x *LoginReq) GetGoogleAuthCode() string { if x != nil { return x.GoogleAuthCode } return "" } type LoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AdminAccount string `protobuf:"bytes,1,opt,name=adminAccount,proto3" json:"adminAccount"` AdminToken string `protobuf:"bytes,2,opt,name=adminToken,proto3" json:"adminToken"` Nickname string `protobuf:"bytes,3,opt,name=nickname,proto3" json:"nickname"` FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL"` Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level"` AdminUserID string `protobuf:"bytes,6,opt,name=adminUserID,proto3" json:"adminUserID"` } func (x *LoginResp) Reset() { *x = LoginResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LoginResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*LoginResp) ProtoMessage() {} func (x *LoginResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[1] 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 LoginResp.ProtoReflect.Descriptor instead. func (*LoginResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{1} } func (x *LoginResp) GetAdminAccount() string { if x != nil { return x.AdminAccount } return "" } func (x *LoginResp) GetAdminToken() string { if x != nil { return x.AdminToken } return "" } func (x *LoginResp) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *LoginResp) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *LoginResp) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *LoginResp) GetAdminUserID() string { if x != nil { return x.AdminUserID } return "" } type AddAdminAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` Nickname string `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname"` } func (x *AddAdminAccountReq) Reset() { *x = AddAdminAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddAdminAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddAdminAccountReq) ProtoMessage() {} func (x *AddAdminAccountReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[2] 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 AddAdminAccountReq.ProtoReflect.Descriptor instead. func (*AddAdminAccountReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{2} } func (x *AddAdminAccountReq) GetAccount() string { if x != nil { return x.Account } return "" } func (x *AddAdminAccountReq) GetPassword() string { if x != nil { return x.Password } return "" } func (x *AddAdminAccountReq) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *AddAdminAccountReq) GetNickname() string { if x != nil { return x.Nickname } return "" } type AddAdminAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddAdminAccountResp) Reset() { *x = AddAdminAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddAdminAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddAdminAccountResp) ProtoMessage() {} func (x *AddAdminAccountResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[3] 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 AddAdminAccountResp.ProtoReflect.Descriptor instead. func (*AddAdminAccountResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{3} } type AdminUpdateInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Account *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=account,proto3" json:"account"` Password *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=password,proto3" json:"password"` FaceURL *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` Nickname *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=nickname,proto3" json:"nickname"` Level *wrapperspb.Int32Value `protobuf:"bytes,6,opt,name=level,proto3" json:"level"` GoogleAuthKey *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=googleAuthKey,proto3" json:"googleAuthKey"` OperationPassword *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=operationPassword,proto3" json:"operationPassword"` } func (x *AdminUpdateInfoReq) Reset() { *x = AdminUpdateInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdminUpdateInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdminUpdateInfoReq) ProtoMessage() {} func (x *AdminUpdateInfoReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[4] 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 AdminUpdateInfoReq.ProtoReflect.Descriptor instead. func (*AdminUpdateInfoReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{4} } func (x *AdminUpdateInfoReq) GetAccount() *wrapperspb.StringValue { if x != nil { return x.Account } return nil } func (x *AdminUpdateInfoReq) GetPassword() *wrapperspb.StringValue { if x != nil { return x.Password } return nil } func (x *AdminUpdateInfoReq) GetFaceURL() *wrapperspb.StringValue { if x != nil { return x.FaceURL } return nil } func (x *AdminUpdateInfoReq) GetNickname() *wrapperspb.StringValue { if x != nil { return x.Nickname } return nil } func (x *AdminUpdateInfoReq) GetLevel() *wrapperspb.Int32Value { if x != nil { return x.Level } return nil } func (x *AdminUpdateInfoReq) GetGoogleAuthKey() *wrapperspb.StringValue { if x != nil { return x.GoogleAuthKey } return nil } func (x *AdminUpdateInfoReq) GetOperationPassword() *wrapperspb.StringValue { if x != nil { return x.OperationPassword } return nil } type AdminUpdateInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` } func (x *AdminUpdateInfoResp) Reset() { *x = AdminUpdateInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdminUpdateInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdminUpdateInfoResp) ProtoMessage() {} func (x *AdminUpdateInfoResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[5] 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 AdminUpdateInfoResp.ProtoReflect.Descriptor instead. func (*AdminUpdateInfoResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{5} } func (x *AdminUpdateInfoResp) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *AdminUpdateInfoResp) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *AdminUpdateInfoResp) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } type ChangePasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password"` CurrentOperationPassword string `protobuf:"bytes,2,opt,name=currentOperationPassword,proto3" json:"currentOperationPassword"` // 当前操作密码(修改操作密码时需要) NewOperationPassword string `protobuf:"bytes,3,opt,name=newOperationPassword,proto3" json:"newOperationPassword"` // 新操作密码(可选,如果提供则修改操作密码) } func (x *ChangePasswordReq) Reset() { *x = ChangePasswordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangePasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangePasswordReq) ProtoMessage() {} func (x *ChangePasswordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[6] 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 ChangePasswordReq.ProtoReflect.Descriptor instead. func (*ChangePasswordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{6} } func (x *ChangePasswordReq) GetPassword() string { if x != nil { return x.Password } return "" } func (x *ChangePasswordReq) GetCurrentOperationPassword() string { if x != nil { return x.CurrentOperationPassword } return "" } func (x *ChangePasswordReq) GetNewOperationPassword() string { if x != nil { return x.NewOperationPassword } return "" } type ChangePasswordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ChangePasswordResp) Reset() { *x = ChangePasswordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangePasswordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangePasswordResp) ProtoMessage() {} func (x *ChangePasswordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[7] 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 ChangePasswordResp.ProtoReflect.Descriptor instead. func (*ChangePasswordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{7} } type GetAdminInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetAdminInfoReq) Reset() { *x = GetAdminInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAdminInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAdminInfoReq) ProtoMessage() {} func (x *GetAdminInfoReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[8] 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 GetAdminInfoReq.ProtoReflect.Descriptor instead. func (*GetAdminInfoReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{8} } type ChangeAdminPasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` CurrentPassword string `protobuf:"bytes,2,opt,name=currentPassword,proto3" json:"currentPassword"` NewPassword string `protobuf:"bytes,3,opt,name=newPassword,proto3" json:"newPassword"` } func (x *ChangeAdminPasswordReq) Reset() { *x = ChangeAdminPasswordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangeAdminPasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangeAdminPasswordReq) ProtoMessage() {} func (x *ChangeAdminPasswordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[9] 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 ChangeAdminPasswordReq.ProtoReflect.Descriptor instead. func (*ChangeAdminPasswordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{9} } func (x *ChangeAdminPasswordReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *ChangeAdminPasswordReq) GetCurrentPassword() string { if x != nil { return x.CurrentPassword } return "" } func (x *ChangeAdminPasswordReq) GetNewPassword() string { if x != nil { return x.NewPassword } return "" } type ChangeAdminPasswordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ChangeAdminPasswordResp) Reset() { *x = ChangeAdminPasswordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangeAdminPasswordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangeAdminPasswordResp) ProtoMessage() {} func (x *ChangeAdminPasswordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[10] 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 ChangeAdminPasswordResp.ProtoReflect.Descriptor instead. func (*ChangeAdminPasswordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{10} } type ChangeOperationPasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CurrentPassword string `protobuf:"bytes,1,opt,name=currentPassword,proto3" json:"currentPassword"` // 当前操作密码(如果已设置) NewPassword string `protobuf:"bytes,2,opt,name=newPassword,proto3" json:"newPassword"` // 新操作密码 } func (x *ChangeOperationPasswordReq) Reset() { *x = ChangeOperationPasswordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangeOperationPasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangeOperationPasswordReq) ProtoMessage() {} func (x *ChangeOperationPasswordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[11] 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 ChangeOperationPasswordReq.ProtoReflect.Descriptor instead. func (*ChangeOperationPasswordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{11} } func (x *ChangeOperationPasswordReq) GetCurrentPassword() string { if x != nil { return x.CurrentPassword } return "" } func (x *ChangeOperationPasswordReq) GetNewPassword() string { if x != nil { return x.NewPassword } return "" } type ChangeOperationPasswordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ChangeOperationPasswordResp) Reset() { *x = ChangeOperationPasswordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChangeOperationPasswordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChangeOperationPasswordResp) ProtoMessage() {} func (x *ChangeOperationPasswordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[12] 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 ChangeOperationPasswordResp.ProtoReflect.Descriptor instead. func (*ChangeOperationPasswordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{12} } type DelAdminAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *DelAdminAccountReq) Reset() { *x = DelAdminAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelAdminAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelAdminAccountReq) ProtoMessage() {} func (x *DelAdminAccountReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[13] 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 DelAdminAccountReq.ProtoReflect.Descriptor instead. func (*DelAdminAccountReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{13} } func (x *DelAdminAccountReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type DelAdminAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelAdminAccountResp) Reset() { *x = DelAdminAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelAdminAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelAdminAccountResp) ProtoMessage() {} func (x *DelAdminAccountResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_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 DelAdminAccountResp.ProtoReflect.Descriptor instead. func (*DelAdminAccountResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{14} } type SearchAdminAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` // 搜索关键词(可选),支持账号、昵称、用户ID的模糊搜索 Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchAdminAccountReq) Reset() { *x = SearchAdminAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchAdminAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchAdminAccountReq) ProtoMessage() {} func (x *SearchAdminAccountReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_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 SearchAdminAccountReq.ProtoReflect.Descriptor instead. func (*SearchAdminAccountReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{15} } func (x *SearchAdminAccountReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchAdminAccountReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type SearchAdminAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` AdminAccounts []*GetAdminInfoResp `protobuf:"bytes,2,rep,name=adminAccounts,proto3" json:"adminAccounts"` } func (x *SearchAdminAccountResp) Reset() { *x = SearchAdminAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchAdminAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchAdminAccountResp) ProtoMessage() {} func (x *SearchAdminAccountResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[16] 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 SearchAdminAccountResp.ProtoReflect.Descriptor instead. func (*SearchAdminAccountResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{16} } func (x *SearchAdminAccountResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchAdminAccountResp) GetAdminAccounts() []*GetAdminInfoResp { if x != nil { return x.AdminAccounts } return nil } type GetAdminInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password"` FaceURL string `protobuf:"bytes,4,opt,name=faceURL,proto3" json:"faceURL"` Nickname string `protobuf:"bytes,5,opt,name=nickname,proto3" json:"nickname"` UserID string `protobuf:"bytes,6,opt,name=userID,proto3" json:"userID"` Level int32 `protobuf:"varint,7,opt,name=level,proto3" json:"level"` CreateTime int64 `protobuf:"varint,8,opt,name=createTime,proto3" json:"createTime"` GoogleAuthKey string `protobuf:"bytes,9,opt,name=googleAuthKey,proto3" json:"googleAuthKey"` OperationPassword string `protobuf:"bytes,11,opt,name=operationPassword,proto3" json:"operationPassword"` } func (x *GetAdminInfoResp) Reset() { *x = GetAdminInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAdminInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAdminInfoResp) ProtoMessage() {} func (x *GetAdminInfoResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[17] 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 GetAdminInfoResp.ProtoReflect.Descriptor instead. func (*GetAdminInfoResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{17} } func (x *GetAdminInfoResp) GetAccount() string { if x != nil { return x.Account } return "" } func (x *GetAdminInfoResp) GetPassword() string { if x != nil { return x.Password } return "" } func (x *GetAdminInfoResp) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *GetAdminInfoResp) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *GetAdminInfoResp) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetAdminInfoResp) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *GetAdminInfoResp) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *GetAdminInfoResp) GetGoogleAuthKey() string { if x != nil { return x.GoogleAuthKey } return "" } func (x *GetAdminInfoResp) GetOperationPassword() string { if x != nil { return x.OperationPassword } return "" } // 设置谷歌身份验证密钥请求 type SetGoogleAuthKeyReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OperationType int32 `protobuf:"varint,1,opt,name=operationType,proto3" json:"operationType"` // 操作类型:1-新设置(如果为空则设置,如果已存在则返回错误),2-强制覆盖旧的(即使存在也生成新的),3-清空(删除现有的密钥) UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 目标管理员ID,可选;为空时默认当前登录管理员,非空时仅超级管理员可操作 } func (x *SetGoogleAuthKeyReq) Reset() { *x = SetGoogleAuthKeyReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetGoogleAuthKeyReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetGoogleAuthKeyReq) ProtoMessage() {} func (x *SetGoogleAuthKeyReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[18] 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 SetGoogleAuthKeyReq.ProtoReflect.Descriptor instead. func (*SetGoogleAuthKeyReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{18} } func (x *SetGoogleAuthKeyReq) GetOperationType() int32 { if x != nil { return x.OperationType } return 0 } func (x *SetGoogleAuthKeyReq) GetUserID() string { if x != nil { return x.UserID } return "" } // 设置谷歌身份验证密钥响应 type SetGoogleAuthKeyResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GoogleAuthKey string `protobuf:"bytes,1,opt,name=googleAuthKey,proto3" json:"googleAuthKey"` // 生成的谷歌身份验证密钥(Base32编码),操作类型为3(清空)时为空字符串 QrCodeURL string `protobuf:"bytes,2,opt,name=qrCodeURL,proto3" json:"qrCodeURL"` // 二维码URL(otpauth格式),用于扫码绑定到Google Authenticator,操作类型为3(清空)时为空字符串 OperationType int32 `protobuf:"varint,3,opt,name=operationType,proto3" json:"operationType"` // 实际执行的操作类型:1-新设置,2-强制覆盖,3-清空 } func (x *SetGoogleAuthKeyResp) Reset() { *x = SetGoogleAuthKeyResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetGoogleAuthKeyResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetGoogleAuthKeyResp) ProtoMessage() {} func (x *SetGoogleAuthKeyResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[19] 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 SetGoogleAuthKeyResp.ProtoReflect.Descriptor instead. func (*SetGoogleAuthKeyResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{19} } func (x *SetGoogleAuthKeyResp) GetGoogleAuthKey() string { if x != nil { return x.GoogleAuthKey } return "" } func (x *SetGoogleAuthKeyResp) GetQrCodeURL() string { if x != nil { return x.QrCodeURL } return "" } func (x *SetGoogleAuthKeyResp) GetOperationType() int32 { if x != nil { return x.OperationType } return 0 } type AddDefaultFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *AddDefaultFriendReq) Reset() { *x = AddDefaultFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddDefaultFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddDefaultFriendReq) ProtoMessage() {} func (x *AddDefaultFriendReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[20] 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 AddDefaultFriendReq.ProtoReflect.Descriptor instead. func (*AddDefaultFriendReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{20} } func (x *AddDefaultFriendReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type AddDefaultFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddDefaultFriendResp) Reset() { *x = AddDefaultFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddDefaultFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddDefaultFriendResp) ProtoMessage() {} func (x *AddDefaultFriendResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[21] 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 AddDefaultFriendResp.ProtoReflect.Descriptor instead. func (*AddDefaultFriendResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{21} } type DelDefaultFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *DelDefaultFriendReq) Reset() { *x = DelDefaultFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelDefaultFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelDefaultFriendReq) ProtoMessage() {} func (x *DelDefaultFriendReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[22] 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 DelDefaultFriendReq.ProtoReflect.Descriptor instead. func (*DelDefaultFriendReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{22} } func (x *DelDefaultFriendReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type DelDefaultFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelDefaultFriendResp) Reset() { *x = DelDefaultFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelDefaultFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelDefaultFriendResp) ProtoMessage() {} func (x *DelDefaultFriendResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[23] 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 DelDefaultFriendResp.ProtoReflect.Descriptor instead. func (*DelDefaultFriendResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{23} } type FindDefaultFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *FindDefaultFriendReq) Reset() { *x = FindDefaultFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindDefaultFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindDefaultFriendReq) ProtoMessage() {} func (x *FindDefaultFriendReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[24] 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 FindDefaultFriendReq.ProtoReflect.Descriptor instead. func (*FindDefaultFriendReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{24} } type FindDefaultFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindDefaultFriendResp) Reset() { *x = FindDefaultFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindDefaultFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindDefaultFriendResp) ProtoMessage() {} func (x *FindDefaultFriendResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[25] 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 FindDefaultFriendResp.ProtoReflect.Descriptor instead. func (*FindDefaultFriendResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{25} } func (x *FindDefaultFriendResp) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type SearchDefaultFriendReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchDefaultFriendReq) Reset() { *x = SearchDefaultFriendReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchDefaultFriendReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchDefaultFriendReq) ProtoMessage() {} func (x *SearchDefaultFriendReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[26] 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 SearchDefaultFriendReq.ProtoReflect.Descriptor instead. func (*SearchDefaultFriendReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{26} } func (x *SearchDefaultFriendReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchDefaultFriendReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type DefaultFriendAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` User *common.UserPublicInfo `protobuf:"bytes,3,opt,name=user,proto3" json:"user"` } func (x *DefaultFriendAttribute) Reset() { *x = DefaultFriendAttribute{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DefaultFriendAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*DefaultFriendAttribute) ProtoMessage() {} func (x *DefaultFriendAttribute) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[27] 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 DefaultFriendAttribute.ProtoReflect.Descriptor instead. func (*DefaultFriendAttribute) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{27} } func (x *DefaultFriendAttribute) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *DefaultFriendAttribute) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *DefaultFriendAttribute) GetUser() *common.UserPublicInfo { if x != nil { return x.User } return nil } type SearchDefaultFriendResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Users []*DefaultFriendAttribute `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchDefaultFriendResp) Reset() { *x = SearchDefaultFriendResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchDefaultFriendResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchDefaultFriendResp) ProtoMessage() {} func (x *SearchDefaultFriendResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[28] 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 SearchDefaultFriendResp.ProtoReflect.Descriptor instead. func (*SearchDefaultFriendResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{28} } func (x *SearchDefaultFriendResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchDefaultFriendResp) GetUsers() []*DefaultFriendAttribute { if x != nil { return x.Users } return nil } type AddDefaultGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *AddDefaultGroupReq) Reset() { *x = AddDefaultGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddDefaultGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddDefaultGroupReq) ProtoMessage() {} func (x *AddDefaultGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[29] 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 AddDefaultGroupReq.ProtoReflect.Descriptor instead. func (*AddDefaultGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{29} } func (x *AddDefaultGroupReq) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } type AddDefaultGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddDefaultGroupResp) Reset() { *x = AddDefaultGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddDefaultGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddDefaultGroupResp) ProtoMessage() {} func (x *AddDefaultGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[30] 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 AddDefaultGroupResp.ProtoReflect.Descriptor instead. func (*AddDefaultGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{30} } type DelDefaultGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *DelDefaultGroupReq) Reset() { *x = DelDefaultGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelDefaultGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelDefaultGroupReq) ProtoMessage() {} func (x *DelDefaultGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[31] 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 DelDefaultGroupReq.ProtoReflect.Descriptor instead. func (*DelDefaultGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{31} } func (x *DelDefaultGroupReq) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } type DelDefaultGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelDefaultGroupResp) Reset() { *x = DelDefaultGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelDefaultGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelDefaultGroupResp) ProtoMessage() {} func (x *DelDefaultGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[32] 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 DelDefaultGroupResp.ProtoReflect.Descriptor instead. func (*DelDefaultGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{32} } type FindDefaultGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *FindDefaultGroupReq) Reset() { *x = FindDefaultGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindDefaultGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindDefaultGroupReq) ProtoMessage() {} func (x *FindDefaultGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[33] 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 FindDefaultGroupReq.ProtoReflect.Descriptor instead. func (*FindDefaultGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{33} } type FindDefaultGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupIDs []string `protobuf:"bytes,1,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *FindDefaultGroupResp) Reset() { *x = FindDefaultGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindDefaultGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindDefaultGroupResp) ProtoMessage() {} func (x *FindDefaultGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[34] 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 FindDefaultGroupResp.ProtoReflect.Descriptor instead. func (*FindDefaultGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{34} } func (x *FindDefaultGroupResp) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } type SearchDefaultGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchDefaultGroupReq) Reset() { *x = SearchDefaultGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchDefaultGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchDefaultGroupReq) ProtoMessage() {} func (x *SearchDefaultGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[35] 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 SearchDefaultGroupReq.ProtoReflect.Descriptor instead. func (*SearchDefaultGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{35} } func (x *SearchDefaultGroupReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchDefaultGroupReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GroupAttribute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GroupID string `protobuf:"bytes,1,opt,name=groupID,proto3" json:"groupID"` CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` Group *sdkws.GroupInfo `protobuf:"bytes,3,opt,name=group,proto3" json:"group"` } func (x *GroupAttribute) Reset() { *x = GroupAttribute{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GroupAttribute) String() string { return protoimpl.X.MessageStringOf(x) } func (*GroupAttribute) ProtoMessage() {} func (x *GroupAttribute) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[36] 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 GroupAttribute.ProtoReflect.Descriptor instead. func (*GroupAttribute) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{36} } func (x *GroupAttribute) GetGroupID() string { if x != nil { return x.GroupID } return "" } func (x *GroupAttribute) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *GroupAttribute) GetGroup() *sdkws.GroupInfo { if x != nil { return x.Group } return nil } type SearchDefaultGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` GroupIDs []string `protobuf:"bytes,2,rep,name=groupIDs,proto3" json:"groupIDs"` } func (x *SearchDefaultGroupResp) Reset() { *x = SearchDefaultGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchDefaultGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchDefaultGroupResp) ProtoMessage() {} func (x *SearchDefaultGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[37] 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 SearchDefaultGroupResp.ProtoReflect.Descriptor instead. func (*SearchDefaultGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{37} } func (x *SearchDefaultGroupResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchDefaultGroupResp) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } type AddInvitationCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *AddInvitationCodeReq) Reset() { *x = AddInvitationCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddInvitationCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddInvitationCodeReq) ProtoMessage() {} func (x *AddInvitationCodeReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[38] 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 AddInvitationCodeReq.ProtoReflect.Descriptor instead. func (*AddInvitationCodeReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{38} } func (x *AddInvitationCodeReq) GetCodes() []string { if x != nil { return x.Codes } return nil } type AddInvitationCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddInvitationCodeResp) Reset() { *x = AddInvitationCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddInvitationCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddInvitationCodeResp) ProtoMessage() {} func (x *AddInvitationCodeResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[39] 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 AddInvitationCodeResp.ProtoReflect.Descriptor instead. func (*AddInvitationCodeResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{39} } type GenInvitationCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Len int32 `protobuf:"varint,1,opt,name=len,proto3" json:"len"` Num int32 `protobuf:"varint,2,opt,name=num,proto3" json:"num"` Chars string `protobuf:"bytes,3,opt,name=chars,proto3" json:"chars"` } func (x *GenInvitationCodeReq) Reset() { *x = GenInvitationCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GenInvitationCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GenInvitationCodeReq) ProtoMessage() {} func (x *GenInvitationCodeReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[40] 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 GenInvitationCodeReq.ProtoReflect.Descriptor instead. func (*GenInvitationCodeReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{40} } func (x *GenInvitationCodeReq) GetLen() int32 { if x != nil { return x.Len } return 0 } func (x *GenInvitationCodeReq) GetNum() int32 { if x != nil { return x.Num } return 0 } func (x *GenInvitationCodeReq) GetChars() string { if x != nil { return x.Chars } return "" } type GenInvitationCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GenInvitationCodeResp) Reset() { *x = GenInvitationCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GenInvitationCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GenInvitationCodeResp) ProtoMessage() {} func (x *GenInvitationCodeResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[41] 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 GenInvitationCodeResp.ProtoReflect.Descriptor instead. func (*GenInvitationCodeResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{41} } type FindInvitationCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *FindInvitationCodeReq) Reset() { *x = FindInvitationCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindInvitationCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindInvitationCodeReq) ProtoMessage() {} func (x *FindInvitationCodeReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[42] 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 FindInvitationCodeReq.ProtoReflect.Descriptor instead. func (*FindInvitationCodeReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{42} } func (x *FindInvitationCodeReq) GetCodes() []string { if x != nil { return x.Codes } return nil } type FindInvitationCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Codes []*InvitationRegister `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *FindInvitationCodeResp) Reset() { *x = FindInvitationCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindInvitationCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindInvitationCodeResp) ProtoMessage() {} func (x *FindInvitationCodeResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[43] 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 FindInvitationCodeResp.ProtoReflect.Descriptor instead. func (*FindInvitationCodeResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{43} } func (x *FindInvitationCodeResp) GetCodes() []*InvitationRegister { if x != nil { return x.Codes } return nil } type UseInvitationCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code"` UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` } func (x *UseInvitationCodeReq) Reset() { *x = UseInvitationCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UseInvitationCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UseInvitationCodeReq) ProtoMessage() {} func (x *UseInvitationCodeReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[44] 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 UseInvitationCodeReq.ProtoReflect.Descriptor instead. func (*UseInvitationCodeReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{44} } func (x *UseInvitationCodeReq) GetCode() string { if x != nil { return x.Code } return "" } func (x *UseInvitationCodeReq) GetUserID() string { if x != nil { return x.UserID } return "" } type UseInvitationCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UseInvitationCodeResp) Reset() { *x = UseInvitationCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UseInvitationCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UseInvitationCodeResp) ProtoMessage() {} func (x *UseInvitationCodeResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[45] 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 UseInvitationCodeResp.ProtoReflect.Descriptor instead. func (*UseInvitationCodeResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{45} } type DelInvitationCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Codes []string `protobuf:"bytes,1,rep,name=codes,proto3" json:"codes"` } func (x *DelInvitationCodeReq) Reset() { *x = DelInvitationCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelInvitationCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelInvitationCodeReq) ProtoMessage() {} func (x *DelInvitationCodeReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[46] 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 DelInvitationCodeReq.ProtoReflect.Descriptor instead. func (*DelInvitationCodeReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{46} } func (x *DelInvitationCodeReq) GetCodes() []string { if x != nil { return x.Codes } return nil } type DelInvitationCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelInvitationCodeResp) Reset() { *x = DelInvitationCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelInvitationCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelInvitationCodeResp) ProtoMessage() {} func (x *DelInvitationCodeResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[47] 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 DelInvitationCodeResp.ProtoReflect.Descriptor instead. func (*DelInvitationCodeResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{47} } type InvitationRegister struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InvitationCode string `protobuf:"bytes,1,opt,name=invitationCode,proto3" json:"invitationCode"` CreateTime int64 `protobuf:"varint,2,opt,name=createTime,proto3" json:"createTime"` UsedUserID string `protobuf:"bytes,3,opt,name=usedUserID,proto3" json:"usedUserID"` UsedUser *common.UserPublicInfo `protobuf:"bytes,4,opt,name=usedUser,proto3" json:"usedUser"` } func (x *InvitationRegister) Reset() { *x = InvitationRegister{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InvitationRegister) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvitationRegister) ProtoMessage() {} func (x *InvitationRegister) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[48] 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 InvitationRegister.ProtoReflect.Descriptor instead. func (*InvitationRegister) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{48} } func (x *InvitationRegister) GetInvitationCode() string { if x != nil { return x.InvitationCode } return "" } func (x *InvitationRegister) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *InvitationRegister) GetUsedUserID() string { if x != nil { return x.UsedUserID } return "" } func (x *InvitationRegister) GetUsedUser() *common.UserPublicInfo { if x != nil { return x.UsedUser } return nil } type SearchInvitationCodeReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status"` UserIDs []string `protobuf:"bytes,2,rep,name=userIDs,proto3" json:"userIDs"` Codes []string `protobuf:"bytes,3,rep,name=codes,proto3" json:"codes"` Keyword string `protobuf:"bytes,4,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,5,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchInvitationCodeReq) Reset() { *x = SearchInvitationCodeReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchInvitationCodeReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchInvitationCodeReq) ProtoMessage() {} func (x *SearchInvitationCodeReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[49] 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 SearchInvitationCodeReq.ProtoReflect.Descriptor instead. func (*SearchInvitationCodeReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{49} } func (x *SearchInvitationCodeReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *SearchInvitationCodeReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } func (x *SearchInvitationCodeReq) GetCodes() []string { if x != nil { return x.Codes } return nil } func (x *SearchInvitationCodeReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchInvitationCodeReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type SearchInvitationCodeResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` List []*InvitationRegister `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` } func (x *SearchInvitationCodeResp) Reset() { *x = SearchInvitationCodeResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchInvitationCodeResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchInvitationCodeResp) ProtoMessage() {} func (x *SearchInvitationCodeResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[50] 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 SearchInvitationCodeResp.ProtoReflect.Descriptor instead. func (*SearchInvitationCodeResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{50} } func (x *SearchInvitationCodeResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchInvitationCodeResp) GetList() []*InvitationRegister { if x != nil { return x.List } return nil } type SearchUserIPLimitLoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchUserIPLimitLoginReq) Reset() { *x = SearchUserIPLimitLoginReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserIPLimitLoginReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserIPLimitLoginReq) ProtoMessage() {} func (x *SearchUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[51] 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 SearchUserIPLimitLoginReq.ProtoReflect.Descriptor instead. func (*SearchUserIPLimitLoginReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{51} } func (x *SearchUserIPLimitLoginReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchUserIPLimitLoginReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type LimitUserLoginIP struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` CreateTime int64 `protobuf:"varint,3,opt,name=createTime,proto3" json:"createTime"` User *common.UserPublicInfo `protobuf:"bytes,4,opt,name=user,proto3" json:"user"` } func (x *LimitUserLoginIP) Reset() { *x = LimitUserLoginIP{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LimitUserLoginIP) String() string { return protoimpl.X.MessageStringOf(x) } func (*LimitUserLoginIP) ProtoMessage() {} func (x *LimitUserLoginIP) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[52] 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 LimitUserLoginIP.ProtoReflect.Descriptor instead. func (*LimitUserLoginIP) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{52} } func (x *LimitUserLoginIP) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *LimitUserLoginIP) GetIp() string { if x != nil { return x.Ip } return "" } func (x *LimitUserLoginIP) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *LimitUserLoginIP) GetUser() *common.UserPublicInfo { if x != nil { return x.User } return nil } type SearchUserIPLimitLoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Limits []*LimitUserLoginIP `protobuf:"bytes,2,rep,name=limits,proto3" json:"limits"` } func (x *SearchUserIPLimitLoginResp) Reset() { *x = SearchUserIPLimitLoginResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchUserIPLimitLoginResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchUserIPLimitLoginResp) ProtoMessage() {} func (x *SearchUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[53] 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 SearchUserIPLimitLoginResp.ProtoReflect.Descriptor instead. func (*SearchUserIPLimitLoginResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{53} } func (x *SearchUserIPLimitLoginResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchUserIPLimitLoginResp) GetLimits() []*LimitUserLoginIP { if x != nil { return x.Limits } return nil } type UserIPLimitLogin struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` } func (x *UserIPLimitLogin) Reset() { *x = UserIPLimitLogin{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserIPLimitLogin) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserIPLimitLogin) ProtoMessage() {} func (x *UserIPLimitLogin) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[54] 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 UserIPLimitLogin.ProtoReflect.Descriptor instead. func (*UserIPLimitLogin) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{54} } func (x *UserIPLimitLogin) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *UserIPLimitLogin) GetIp() string { if x != nil { return x.Ip } return "" } type AddUserIPLimitLoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits"` } func (x *AddUserIPLimitLoginReq) Reset() { *x = AddUserIPLimitLoginReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddUserIPLimitLoginReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddUserIPLimitLoginReq) ProtoMessage() {} func (x *AddUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[55] 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 AddUserIPLimitLoginReq.ProtoReflect.Descriptor instead. func (*AddUserIPLimitLoginReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{55} } func (x *AddUserIPLimitLoginReq) GetLimits() []*UserIPLimitLogin { if x != nil { return x.Limits } return nil } type AddUserIPLimitLoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddUserIPLimitLoginResp) Reset() { *x = AddUserIPLimitLoginResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddUserIPLimitLoginResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddUserIPLimitLoginResp) ProtoMessage() {} func (x *AddUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[56] 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 AddUserIPLimitLoginResp.ProtoReflect.Descriptor instead. func (*AddUserIPLimitLoginResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{56} } type DelUserIPLimitLoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Limits []*UserIPLimitLogin `protobuf:"bytes,1,rep,name=limits,proto3" json:"limits"` } func (x *DelUserIPLimitLoginReq) Reset() { *x = DelUserIPLimitLoginReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelUserIPLimitLoginReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelUserIPLimitLoginReq) ProtoMessage() {} func (x *DelUserIPLimitLoginReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[57] 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 DelUserIPLimitLoginReq.ProtoReflect.Descriptor instead. func (*DelUserIPLimitLoginReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{57} } func (x *DelUserIPLimitLoginReq) GetLimits() []*UserIPLimitLogin { if x != nil { return x.Limits } return nil } type DelUserIPLimitLoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelUserIPLimitLoginResp) Reset() { *x = DelUserIPLimitLoginResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelUserIPLimitLoginResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelUserIPLimitLoginResp) ProtoMessage() {} func (x *DelUserIPLimitLoginResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[58] 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 DelUserIPLimitLoginResp.ProtoReflect.Descriptor instead. func (*DelUserIPLimitLoginResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{58} } type IPForbidden struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister"` LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin"` CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime"` } func (x *IPForbidden) Reset() { *x = IPForbidden{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IPForbidden) String() string { return protoimpl.X.MessageStringOf(x) } func (*IPForbidden) ProtoMessage() {} func (x *IPForbidden) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[59] 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 IPForbidden.ProtoReflect.Descriptor instead. func (*IPForbidden) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{59} } func (x *IPForbidden) GetIp() string { if x != nil { return x.Ip } return "" } func (x *IPForbidden) GetLimitRegister() bool { if x != nil { return x.LimitRegister } return false } func (x *IPForbidden) GetLimitLogin() bool { if x != nil { return x.LimitLogin } return false } func (x *IPForbidden) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } type IPForbiddenAdd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` LimitRegister bool `protobuf:"varint,2,opt,name=limitRegister,proto3" json:"limitRegister"` LimitLogin bool `protobuf:"varint,3,opt,name=limitLogin,proto3" json:"limitLogin"` } func (x *IPForbiddenAdd) Reset() { *x = IPForbiddenAdd{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *IPForbiddenAdd) String() string { return protoimpl.X.MessageStringOf(x) } func (*IPForbiddenAdd) ProtoMessage() {} func (x *IPForbiddenAdd) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[60] 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 IPForbiddenAdd.ProtoReflect.Descriptor instead. func (*IPForbiddenAdd) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{60} } func (x *IPForbiddenAdd) GetIp() string { if x != nil { return x.Ip } return "" } func (x *IPForbiddenAdd) GetLimitRegister() bool { if x != nil { return x.LimitRegister } return false } func (x *IPForbiddenAdd) GetLimitLogin() bool { if x != nil { return x.LimitLogin } return false } type SearchIPForbiddenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchIPForbiddenReq) Reset() { *x = SearchIPForbiddenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchIPForbiddenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchIPForbiddenReq) ProtoMessage() {} func (x *SearchIPForbiddenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[61] 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 SearchIPForbiddenReq.ProtoReflect.Descriptor instead. func (*SearchIPForbiddenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{61} } func (x *SearchIPForbiddenReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchIPForbiddenReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *SearchIPForbiddenReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type SearchIPForbiddenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Forbiddens []*IPForbidden `protobuf:"bytes,2,rep,name=forbiddens,proto3" json:"forbiddens"` } func (x *SearchIPForbiddenResp) Reset() { *x = SearchIPForbiddenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchIPForbiddenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchIPForbiddenResp) ProtoMessage() {} func (x *SearchIPForbiddenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[62] 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 SearchIPForbiddenResp.ProtoReflect.Descriptor instead. func (*SearchIPForbiddenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{62} } func (x *SearchIPForbiddenResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchIPForbiddenResp) GetForbiddens() []*IPForbidden { if x != nil { return x.Forbiddens } return nil } type AddIPForbiddenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Forbiddens []*IPForbiddenAdd `protobuf:"bytes,1,rep,name=forbiddens,proto3" json:"forbiddens"` } func (x *AddIPForbiddenReq) Reset() { *x = AddIPForbiddenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddIPForbiddenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddIPForbiddenReq) ProtoMessage() {} func (x *AddIPForbiddenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[63] 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 AddIPForbiddenReq.ProtoReflect.Descriptor instead. func (*AddIPForbiddenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{63} } func (x *AddIPForbiddenReq) GetForbiddens() []*IPForbiddenAdd { if x != nil { return x.Forbiddens } return nil } type AddIPForbiddenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddIPForbiddenResp) Reset() { *x = AddIPForbiddenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddIPForbiddenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddIPForbiddenResp) ProtoMessage() {} func (x *AddIPForbiddenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[64] 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 AddIPForbiddenResp.ProtoReflect.Descriptor instead. func (*AddIPForbiddenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{64} } type DelIPForbiddenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ips []string `protobuf:"bytes,1,rep,name=ips,proto3" json:"ips"` } func (x *DelIPForbiddenReq) Reset() { *x = DelIPForbiddenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelIPForbiddenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelIPForbiddenReq) ProtoMessage() {} func (x *DelIPForbiddenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[65] 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 DelIPForbiddenReq.ProtoReflect.Descriptor instead. func (*DelIPForbiddenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{65} } func (x *DelIPForbiddenReq) GetIps() []string { if x != nil { return x.Ips } return nil } type DelIPForbiddenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelIPForbiddenResp) Reset() { *x = DelIPForbiddenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelIPForbiddenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelIPForbiddenResp) ProtoMessage() {} func (x *DelIPForbiddenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[66] 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 DelIPForbiddenResp.ProtoReflect.Descriptor instead. func (*DelIPForbiddenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{66} } // ################### User Limit ################### type CheckRegisterForbiddenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` } func (x *CheckRegisterForbiddenReq) Reset() { *x = CheckRegisterForbiddenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckRegisterForbiddenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckRegisterForbiddenReq) ProtoMessage() {} func (x *CheckRegisterForbiddenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[67] 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 CheckRegisterForbiddenReq.ProtoReflect.Descriptor instead. func (*CheckRegisterForbiddenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{67} } func (x *CheckRegisterForbiddenReq) GetIp() string { if x != nil { return x.Ip } return "" } type CheckRegisterForbiddenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CheckRegisterForbiddenResp) Reset() { *x = CheckRegisterForbiddenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckRegisterForbiddenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckRegisterForbiddenResp) ProtoMessage() {} func (x *CheckRegisterForbiddenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[68] 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 CheckRegisterForbiddenResp.ProtoReflect.Descriptor instead. func (*CheckRegisterForbiddenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{68} } type CheckLoginForbiddenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip"` UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` } func (x *CheckLoginForbiddenReq) Reset() { *x = CheckLoginForbiddenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckLoginForbiddenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckLoginForbiddenReq) ProtoMessage() {} func (x *CheckLoginForbiddenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[69] 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 CheckLoginForbiddenReq.ProtoReflect.Descriptor instead. func (*CheckLoginForbiddenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{69} } func (x *CheckLoginForbiddenReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *CheckLoginForbiddenReq) GetUserID() string { if x != nil { return x.UserID } return "" } type CheckLoginForbiddenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CheckLoginForbiddenResp) Reset() { *x = CheckLoginForbiddenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckLoginForbiddenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckLoginForbiddenResp) ProtoMessage() {} func (x *CheckLoginForbiddenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[70] 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 CheckLoginForbiddenResp.ProtoReflect.Descriptor instead. func (*CheckLoginForbiddenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{70} } // ################### login out ################### type CancellationUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` } func (x *CancellationUserReq) Reset() { *x = CancellationUserReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CancellationUserReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CancellationUserReq) ProtoMessage() {} func (x *CancellationUserReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[71] 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 CancellationUserReq.ProtoReflect.Descriptor instead. func (*CancellationUserReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{71} } func (x *CancellationUserReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *CancellationUserReq) GetReason() string { if x != nil { return x.Reason } return "" } type CancellationUserResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CancellationUserResp) Reset() { *x = CancellationUserResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CancellationUserResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CancellationUserResp) ProtoMessage() {} func (x *CancellationUserResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[72] 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 CancellationUserResp.ProtoReflect.Descriptor instead. func (*CancellationUserResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{72} } // ################### Block User, Unblock User ################### type BlockUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` } func (x *BlockUserReq) Reset() { *x = BlockUserReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlockUserReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlockUserReq) ProtoMessage() {} func (x *BlockUserReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[73] 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 BlockUserReq.ProtoReflect.Descriptor instead. func (*BlockUserReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{73} } func (x *BlockUserReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *BlockUserReq) GetReason() string { if x != nil { return x.Reason } return "" } type BlockUserResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BlockUserResp) Reset() { *x = BlockUserResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlockUserResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlockUserResp) ProtoMessage() {} func (x *BlockUserResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[74] 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 BlockUserResp.ProtoReflect.Descriptor instead. func (*BlockUserResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{74} } type UnblockUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *UnblockUserReq) Reset() { *x = UnblockUserReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UnblockUserReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UnblockUserReq) ProtoMessage() {} func (x *UnblockUserReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[75] 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 UnblockUserReq.ProtoReflect.Descriptor instead. func (*UnblockUserReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{75} } func (x *UnblockUserReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type UnblockUserResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UnblockUserResp) Reset() { *x = UnblockUserResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UnblockUserResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UnblockUserResp) ProtoMessage() {} func (x *UnblockUserResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[76] 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 UnblockUserResp.ProtoReflect.Descriptor instead. func (*UnblockUserResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{76} } type SearchBlockUserReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchBlockUserReq) Reset() { *x = SearchBlockUserReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchBlockUserReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchBlockUserReq) ProtoMessage() {} func (x *SearchBlockUserReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[77] 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 SearchBlockUserReq.ProtoReflect.Descriptor instead. func (*SearchBlockUserReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{77} } func (x *SearchBlockUserReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchBlockUserReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type BlockUserInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account"` PhoneNumber string `protobuf:"bytes,3,opt,name=phoneNumber,proto3" json:"phoneNumber"` AreaCode string `protobuf:"bytes,4,opt,name=areaCode,proto3" json:"areaCode"` Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email"` Nickname string `protobuf:"bytes,6,opt,name=nickname,proto3" json:"nickname"` FaceURL string `protobuf:"bytes,7,opt,name=faceURL,proto3" json:"faceURL"` Gender int32 `protobuf:"varint,8,opt,name=gender,proto3" json:"gender"` Reason string `protobuf:"bytes,9,opt,name=reason,proto3" json:"reason"` OpUserID string `protobuf:"bytes,10,opt,name=opUserID,proto3" json:"opUserID"` CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` } func (x *BlockUserInfo) Reset() { *x = BlockUserInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlockUserInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlockUserInfo) ProtoMessage() {} func (x *BlockUserInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[78] 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 BlockUserInfo.ProtoReflect.Descriptor instead. func (*BlockUserInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{78} } func (x *BlockUserInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *BlockUserInfo) GetAccount() string { if x != nil { return x.Account } return "" } func (x *BlockUserInfo) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *BlockUserInfo) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } func (x *BlockUserInfo) GetEmail() string { if x != nil { return x.Email } return "" } func (x *BlockUserInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *BlockUserInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *BlockUserInfo) GetGender() int32 { if x != nil { return x.Gender } return 0 } func (x *BlockUserInfo) GetReason() string { if x != nil { return x.Reason } return "" } func (x *BlockUserInfo) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *BlockUserInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } type SearchBlockUserResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Users []*BlockUserInfo `protobuf:"bytes,2,rep,name=users,proto3" json:"users"` } func (x *SearchBlockUserResp) Reset() { *x = SearchBlockUserResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchBlockUserResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchBlockUserResp) ProtoMessage() {} func (x *SearchBlockUserResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[79] 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 SearchBlockUserResp.ProtoReflect.Descriptor instead. func (*SearchBlockUserResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{79} } func (x *SearchBlockUserResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchBlockUserResp) GetUsers() []*BlockUserInfo { if x != nil { return x.Users } return nil } type FindUserBlockInfoReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserIDs []string `protobuf:"bytes,1,rep,name=userIDs,proto3" json:"userIDs"` } func (x *FindUserBlockInfoReq) Reset() { *x = FindUserBlockInfoReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserBlockInfoReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserBlockInfoReq) ProtoMessage() {} func (x *FindUserBlockInfoReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[80] 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 FindUserBlockInfoReq.ProtoReflect.Descriptor instead. func (*FindUserBlockInfoReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{80} } func (x *FindUserBlockInfoReq) GetUserIDs() []string { if x != nil { return x.UserIDs } return nil } type BlockInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason"` OpUserID string `protobuf:"bytes,3,opt,name=opUserID,proto3" json:"opUserID"` CreateTime int64 `protobuf:"varint,4,opt,name=createTime,proto3" json:"createTime"` } func (x *BlockInfo) Reset() { *x = BlockInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BlockInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*BlockInfo) ProtoMessage() {} func (x *BlockInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[81] 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 BlockInfo.ProtoReflect.Descriptor instead. func (*BlockInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{81} } func (x *BlockInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *BlockInfo) GetReason() string { if x != nil { return x.Reason } return "" } func (x *BlockInfo) GetOpUserID() string { if x != nil { return x.OpUserID } return "" } func (x *BlockInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } type FindUserBlockInfoResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Blocks []*BlockInfo `protobuf:"bytes,2,rep,name=blocks,proto3" json:"blocks"` } func (x *FindUserBlockInfoResp) Reset() { *x = FindUserBlockInfoResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindUserBlockInfoResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindUserBlockInfoResp) ProtoMessage() {} func (x *FindUserBlockInfoResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[82] 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 FindUserBlockInfoResp.ProtoReflect.Descriptor instead. func (*FindUserBlockInfoResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{82} } func (x *FindUserBlockInfoResp) GetBlocks() []*BlockInfo { if x != nil { return x.Blocks } return nil } type CreateTokenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` UserType int32 `protobuf:"varint,32,opt,name=userType,proto3" json:"userType"` } func (x *CreateTokenReq) Reset() { *x = CreateTokenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateTokenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateTokenReq) ProtoMessage() {} func (x *CreateTokenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[83] 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 CreateTokenReq.ProtoReflect.Descriptor instead. func (*CreateTokenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{83} } func (x *CreateTokenReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *CreateTokenReq) GetUserType() int32 { if x != nil { return x.UserType } return 0 } type CreateTokenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token"` } func (x *CreateTokenResp) Reset() { *x = CreateTokenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateTokenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateTokenResp) ProtoMessage() {} func (x *CreateTokenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[84] 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 CreateTokenResp.ProtoReflect.Descriptor instead. func (*CreateTokenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{84} } func (x *CreateTokenResp) GetToken() string { if x != nil { return x.Token } return "" } type ParseTokenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token"` } func (x *ParseTokenReq) Reset() { *x = ParseTokenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ParseTokenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*ParseTokenReq) ProtoMessage() {} func (x *ParseTokenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[85] 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 ParseTokenReq.ProtoReflect.Descriptor instead. func (*ParseTokenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{85} } func (x *ParseTokenReq) GetToken() string { if x != nil { return x.Token } return "" } type ParseTokenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` UserType int32 `protobuf:"varint,2,opt,name=userType,proto3" json:"userType"` ExpireTimeSeconds int64 `protobuf:"varint,3,opt,name=expireTimeSeconds,proto3" json:"expireTimeSeconds"` } func (x *ParseTokenResp) Reset() { *x = ParseTokenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ParseTokenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*ParseTokenResp) ProtoMessage() {} func (x *ParseTokenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[86] 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 ParseTokenResp.ProtoReflect.Descriptor instead. func (*ParseTokenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{86} } func (x *ParseTokenResp) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *ParseTokenResp) GetUserType() int32 { if x != nil { return x.UserType } return 0 } func (x *ParseTokenResp) GetExpireTimeSeconds() int64 { if x != nil { return x.ExpireTimeSeconds } return 0 } type InvalidateTokenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` } func (x *InvalidateTokenReq) Reset() { *x = InvalidateTokenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InvalidateTokenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvalidateTokenReq) ProtoMessage() {} func (x *InvalidateTokenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[87] 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 InvalidateTokenReq.ProtoReflect.Descriptor instead. func (*InvalidateTokenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{87} } func (x *InvalidateTokenReq) GetUserID() string { if x != nil { return x.UserID } return "" } type InvalidateTokenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *InvalidateTokenResp) Reset() { *x = InvalidateTokenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *InvalidateTokenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvalidateTokenResp) ProtoMessage() {} func (x *InvalidateTokenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[88] 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 InvalidateTokenResp.ProtoReflect.Descriptor instead. func (*InvalidateTokenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{88} } type AddAppletReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` AppID string `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID"` Icon string `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon"` Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url"` Md5 string `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5"` Size int64 `protobuf:"varint,7,opt,name=size,proto3" json:"size"` Version string `protobuf:"bytes,8,opt,name=version,proto3" json:"version"` Priority uint32 `protobuf:"varint,9,opt,name=priority,proto3" json:"priority"` Status uint32 `protobuf:"varint,10,opt,name=status,proto3" json:"status"` CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` } func (x *AddAppletReq) Reset() { *x = AddAppletReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddAppletReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddAppletReq) ProtoMessage() {} func (x *AddAppletReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[89] 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 AddAppletReq.ProtoReflect.Descriptor instead. func (*AddAppletReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{89} } func (x *AddAppletReq) GetId() string { if x != nil { return x.Id } return "" } func (x *AddAppletReq) GetName() string { if x != nil { return x.Name } return "" } func (x *AddAppletReq) GetAppID() string { if x != nil { return x.AppID } return "" } func (x *AddAppletReq) GetIcon() string { if x != nil { return x.Icon } return "" } func (x *AddAppletReq) GetUrl() string { if x != nil { return x.Url } return "" } func (x *AddAppletReq) GetMd5() string { if x != nil { return x.Md5 } return "" } func (x *AddAppletReq) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *AddAppletReq) GetVersion() string { if x != nil { return x.Version } return "" } func (x *AddAppletReq) GetPriority() uint32 { if x != nil { return x.Priority } return 0 } func (x *AddAppletReq) GetStatus() uint32 { if x != nil { return x.Status } return 0 } func (x *AddAppletReq) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } type AddAppletResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddAppletResp) Reset() { *x = AddAppletResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddAppletResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddAppletResp) ProtoMessage() {} func (x *AddAppletResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[90] 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 AddAppletResp.ProtoReflect.Descriptor instead. func (*AddAppletResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{90} } type DelAppletReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppletIds []string `protobuf:"bytes,1,rep,name=appletIds,proto3" json:"appletIds"` } func (x *DelAppletReq) Reset() { *x = DelAppletReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelAppletReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelAppletReq) ProtoMessage() {} func (x *DelAppletReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[91] 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 DelAppletReq.ProtoReflect.Descriptor instead. func (*DelAppletReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{91} } func (x *DelAppletReq) GetAppletIds() []string { if x != nil { return x.AppletIds } return nil } type DelAppletResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelAppletResp) Reset() { *x = DelAppletResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelAppletResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelAppletResp) ProtoMessage() {} func (x *DelAppletResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[92] 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 DelAppletResp.ProtoReflect.Descriptor instead. func (*DelAppletResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{92} } type UpdateAppletReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` AppID *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=appID,proto3" json:"appID"` Icon *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon"` Url *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=url,proto3" json:"url"` Md5 *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=md5,proto3" json:"md5"` Size *wrapperspb.Int64Value `protobuf:"bytes,7,opt,name=size,proto3" json:"size"` Version *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=version,proto3" json:"version"` Priority *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=priority,proto3" json:"priority"` Status *wrapperspb.UInt32Value `protobuf:"bytes,10,opt,name=status,proto3" json:"status"` CreateTime *wrapperspb.Int64Value `protobuf:"bytes,11,opt,name=createTime,proto3" json:"createTime"` } func (x *UpdateAppletReq) Reset() { *x = UpdateAppletReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAppletReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAppletReq) ProtoMessage() {} func (x *UpdateAppletReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[93] 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 UpdateAppletReq.ProtoReflect.Descriptor instead. func (*UpdateAppletReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{93} } func (x *UpdateAppletReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateAppletReq) GetName() *wrapperspb.StringValue { if x != nil { return x.Name } return nil } func (x *UpdateAppletReq) GetAppID() *wrapperspb.StringValue { if x != nil { return x.AppID } return nil } func (x *UpdateAppletReq) GetIcon() *wrapperspb.StringValue { if x != nil { return x.Icon } return nil } func (x *UpdateAppletReq) GetUrl() *wrapperspb.StringValue { if x != nil { return x.Url } return nil } func (x *UpdateAppletReq) GetMd5() *wrapperspb.StringValue { if x != nil { return x.Md5 } return nil } func (x *UpdateAppletReq) GetSize() *wrapperspb.Int64Value { if x != nil { return x.Size } return nil } func (x *UpdateAppletReq) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } func (x *UpdateAppletReq) GetPriority() *wrapperspb.UInt32Value { if x != nil { return x.Priority } return nil } func (x *UpdateAppletReq) GetStatus() *wrapperspb.UInt32Value { if x != nil { return x.Status } return nil } func (x *UpdateAppletReq) GetCreateTime() *wrapperspb.Int64Value { if x != nil { return x.CreateTime } return nil } type UpdateAppletResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateAppletResp) Reset() { *x = UpdateAppletResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAppletResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAppletResp) ProtoMessage() {} func (x *UpdateAppletResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[94] 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 UpdateAppletResp.ProtoReflect.Descriptor instead. func (*UpdateAppletResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{94} } type FindAppletReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *FindAppletReq) Reset() { *x = FindAppletReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindAppletReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindAppletReq) ProtoMessage() {} func (x *FindAppletReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[95] 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 FindAppletReq.ProtoReflect.Descriptor instead. func (*FindAppletReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{95} } type FindAppletResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Applets []*common.AppletInfo `protobuf:"bytes,1,rep,name=applets,proto3" json:"applets"` } func (x *FindAppletResp) Reset() { *x = FindAppletResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *FindAppletResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*FindAppletResp) ProtoMessage() {} func (x *FindAppletResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[96] 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 FindAppletResp.ProtoReflect.Descriptor instead. func (*FindAppletResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{96} } func (x *FindAppletResp) GetApplets() []*common.AppletInfo { if x != nil { return x.Applets } return nil } type SearchAppletReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchAppletReq) Reset() { *x = SearchAppletReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchAppletReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchAppletReq) ProtoMessage() {} func (x *SearchAppletReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[97] 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 SearchAppletReq.ProtoReflect.Descriptor instead. func (*SearchAppletReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{97} } func (x *SearchAppletReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchAppletReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type SearchAppletResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Applets []*common.AppletInfo `protobuf:"bytes,2,rep,name=applets,proto3" json:"applets"` } func (x *SearchAppletResp) Reset() { *x = SearchAppletResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchAppletResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchAppletResp) ProtoMessage() {} func (x *SearchAppletResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[98] 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 SearchAppletResp.ProtoReflect.Descriptor instead. func (*SearchAppletResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{98} } func (x *SearchAppletResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *SearchAppletResp) GetApplets() []*common.AppletInfo { if x != nil { return x.Applets } return nil } type SetClientConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SetClientConfigReq) Reset() { *x = SetClientConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetClientConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetClientConfigReq) ProtoMessage() {} func (x *SetClientConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[99] 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 SetClientConfigReq.ProtoReflect.Descriptor instead. func (*SetClientConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{99} } func (x *SetClientConfigReq) GetConfig() map[string]string { if x != nil { return x.Config } return nil } type SetClientConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetClientConfigResp) Reset() { *x = SetClientConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetClientConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetClientConfigResp) ProtoMessage() {} func (x *SetClientConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[100] 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 SetClientConfigResp.ProtoReflect.Descriptor instead. func (*SetClientConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{100} } type DelClientConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys"` } func (x *DelClientConfigReq) Reset() { *x = DelClientConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelClientConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelClientConfigReq) ProtoMessage() {} func (x *DelClientConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[101] 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 DelClientConfigReq.ProtoReflect.Descriptor instead. func (*DelClientConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{101} } func (x *DelClientConfigReq) GetKeys() []string { if x != nil { return x.Keys } return nil } type DelClientConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DelClientConfigResp) Reset() { *x = DelClientConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DelClientConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DelClientConfigResp) ProtoMessage() {} func (x *DelClientConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[102] 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 DelClientConfigResp.ProtoReflect.Descriptor instead. func (*DelClientConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{102} } type GetClientConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetClientConfigReq) Reset() { *x = GetClientConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetClientConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetClientConfigReq) ProtoMessage() {} func (x *GetClientConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[103] 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 GetClientConfigReq.ProtoReflect.Descriptor instead. func (*GetClientConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{103} } type GetClientConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config map[string]string `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GetClientConfigResp) Reset() { *x = GetClientConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetClientConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetClientConfigResp) ProtoMessage() {} func (x *GetClientConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[104] 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 GetClientConfigResp.ProtoReflect.Descriptor instead. func (*GetClientConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{104} } func (x *GetClientConfigResp) GetConfig() map[string]string { if x != nil { return x.Config } return nil } type GetUserTokenReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` } func (x *GetUserTokenReq) Reset() { *x = GetUserTokenReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserTokenReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserTokenReq) ProtoMessage() {} func (x *GetUserTokenReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[105] 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 GetUserTokenReq.ProtoReflect.Descriptor instead. func (*GetUserTokenReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{105} } func (x *GetUserTokenReq) GetUserID() string { if x != nil { return x.UserID } return "" } type GetUserTokenResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TokensMap map[string]int32 `protobuf:"bytes,1,rep,name=tokensMap,proto3" json:"tokensMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } func (x *GetUserTokenResp) Reset() { *x = GetUserTokenResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserTokenResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserTokenResp) ProtoMessage() {} func (x *GetUserTokenResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[106] 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 GetUserTokenResp.ProtoReflect.Descriptor instead. func (*GetUserTokenResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{106} } func (x *GetUserTokenResp) GetTokensMap() map[string]int32 { if x != nil { return x.TokensMap } return nil } type ApplicationVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Platform string `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform"` Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version"` Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url"` Text string `protobuf:"bytes,5,opt,name=text,proto3" json:"text"` Force bool `protobuf:"varint,6,opt,name=force,proto3" json:"force"` Latest bool `protobuf:"varint,7,opt,name=latest,proto3" json:"latest"` Hot bool `protobuf:"varint,8,opt,name=hot,proto3" json:"hot"` CreateTime int64 `protobuf:"varint,9,opt,name=createTime,proto3" json:"createTime"` } func (x *ApplicationVersion) Reset() { *x = ApplicationVersion{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ApplicationVersion) String() string { return protoimpl.X.MessageStringOf(x) } func (*ApplicationVersion) ProtoMessage() {} func (x *ApplicationVersion) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[107] 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 ApplicationVersion.ProtoReflect.Descriptor instead. func (*ApplicationVersion) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{107} } func (x *ApplicationVersion) GetId() string { if x != nil { return x.Id } return "" } func (x *ApplicationVersion) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *ApplicationVersion) GetVersion() string { if x != nil { return x.Version } return "" } func (x *ApplicationVersion) GetUrl() string { if x != nil { return x.Url } return "" } func (x *ApplicationVersion) GetText() string { if x != nil { return x.Text } return "" } func (x *ApplicationVersion) GetForce() bool { if x != nil { return x.Force } return false } func (x *ApplicationVersion) GetLatest() bool { if x != nil { return x.Latest } return false } func (x *ApplicationVersion) GetHot() bool { if x != nil { return x.Hot } return false } func (x *ApplicationVersion) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } type LatestApplicationVersionReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Platform string `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform"` Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version"` } func (x *LatestApplicationVersionReq) Reset() { *x = LatestApplicationVersionReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LatestApplicationVersionReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*LatestApplicationVersionReq) ProtoMessage() {} func (x *LatestApplicationVersionReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[108] 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 LatestApplicationVersionReq.ProtoReflect.Descriptor instead. func (*LatestApplicationVersionReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{108} } func (x *LatestApplicationVersionReq) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *LatestApplicationVersionReq) GetVersion() string { if x != nil { return x.Version } return "" } type LatestApplicationVersionResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Version *ApplicationVersion `protobuf:"bytes,1,opt,name=version,proto3" json:"version"` } func (x *LatestApplicationVersionResp) Reset() { *x = LatestApplicationVersionResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LatestApplicationVersionResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*LatestApplicationVersionResp) ProtoMessage() {} func (x *LatestApplicationVersionResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[109] 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 LatestApplicationVersionResp.ProtoReflect.Descriptor instead. func (*LatestApplicationVersionResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{109} } func (x *LatestApplicationVersionResp) GetVersion() *ApplicationVersion { if x != nil { return x.Version } return nil } type AddApplicationVersionReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version"` Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url"` Text string `protobuf:"bytes,4,opt,name=text,proto3" json:"text"` Force bool `protobuf:"varint,5,opt,name=force,proto3" json:"force"` Latest bool `protobuf:"varint,6,opt,name=latest,proto3" json:"latest"` Hot bool `protobuf:"varint,7,opt,name=hot,proto3" json:"hot"` } func (x *AddApplicationVersionReq) Reset() { *x = AddApplicationVersionReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddApplicationVersionReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddApplicationVersionReq) ProtoMessage() {} func (x *AddApplicationVersionReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[110] 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 AddApplicationVersionReq.ProtoReflect.Descriptor instead. func (*AddApplicationVersionReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{110} } func (x *AddApplicationVersionReq) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *AddApplicationVersionReq) GetVersion() string { if x != nil { return x.Version } return "" } func (x *AddApplicationVersionReq) GetUrl() string { if x != nil { return x.Url } return "" } func (x *AddApplicationVersionReq) GetText() string { if x != nil { return x.Text } return "" } func (x *AddApplicationVersionReq) GetForce() bool { if x != nil { return x.Force } return false } func (x *AddApplicationVersionReq) GetLatest() bool { if x != nil { return x.Latest } return false } func (x *AddApplicationVersionReq) GetHot() bool { if x != nil { return x.Hot } return false } type AddApplicationVersionResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddApplicationVersionResp) Reset() { *x = AddApplicationVersionResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddApplicationVersionResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddApplicationVersionResp) ProtoMessage() {} func (x *AddApplicationVersionResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[111] 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 AddApplicationVersionResp.ProtoReflect.Descriptor instead. func (*AddApplicationVersionResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{111} } type UpdateApplicationVersionReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Platform *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform"` Version *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=version,proto3" json:"version"` Url *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=url,proto3" json:"url"` Text *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=text,proto3" json:"text"` Force *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=force,proto3" json:"force"` Latest *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=latest,proto3" json:"latest"` Hot *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=hot,proto3" json:"hot"` } func (x *UpdateApplicationVersionReq) Reset() { *x = UpdateApplicationVersionReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateApplicationVersionReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateApplicationVersionReq) ProtoMessage() {} func (x *UpdateApplicationVersionReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[112] 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 UpdateApplicationVersionReq.ProtoReflect.Descriptor instead. func (*UpdateApplicationVersionReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{112} } func (x *UpdateApplicationVersionReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateApplicationVersionReq) GetPlatform() *wrapperspb.StringValue { if x != nil { return x.Platform } return nil } func (x *UpdateApplicationVersionReq) GetVersion() *wrapperspb.StringValue { if x != nil { return x.Version } return nil } func (x *UpdateApplicationVersionReq) GetUrl() *wrapperspb.StringValue { if x != nil { return x.Url } return nil } func (x *UpdateApplicationVersionReq) GetText() *wrapperspb.StringValue { if x != nil { return x.Text } return nil } func (x *UpdateApplicationVersionReq) GetForce() *wrapperspb.BoolValue { if x != nil { return x.Force } return nil } func (x *UpdateApplicationVersionReq) GetLatest() *wrapperspb.BoolValue { if x != nil { return x.Latest } return nil } func (x *UpdateApplicationVersionReq) GetHot() *wrapperspb.BoolValue { if x != nil { return x.Hot } return nil } type UpdateApplicationVersionResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateApplicationVersionResp) Reset() { *x = UpdateApplicationVersionResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateApplicationVersionResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateApplicationVersionResp) ProtoMessage() {} func (x *UpdateApplicationVersionResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[113] 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 UpdateApplicationVersionResp.ProtoReflect.Descriptor instead. func (*UpdateApplicationVersionResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{113} } type DeleteApplicationVersionReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id []string `protobuf:"bytes,1,rep,name=id,proto3" json:"id"` } func (x *DeleteApplicationVersionReq) Reset() { *x = DeleteApplicationVersionReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteApplicationVersionReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteApplicationVersionReq) ProtoMessage() {} func (x *DeleteApplicationVersionReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[114] 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 DeleteApplicationVersionReq.ProtoReflect.Descriptor instead. func (*DeleteApplicationVersionReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{114} } func (x *DeleteApplicationVersionReq) GetId() []string { if x != nil { return x.Id } return nil } type DeleteApplicationVersionResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteApplicationVersionResp) Reset() { *x = DeleteApplicationVersionResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteApplicationVersionResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteApplicationVersionResp) ProtoMessage() {} func (x *DeleteApplicationVersionResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[115] 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 DeleteApplicationVersionResp.ProtoReflect.Descriptor instead. func (*DeleteApplicationVersionResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{115} } type PageApplicationVersionReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Platform []string `protobuf:"bytes,1,rep,name=platform,proto3" json:"platform"` Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` } func (x *PageApplicationVersionReq) Reset() { *x = PageApplicationVersionReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PageApplicationVersionReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*PageApplicationVersionReq) ProtoMessage() {} func (x *PageApplicationVersionReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[116] 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 PageApplicationVersionReq.ProtoReflect.Descriptor instead. func (*PageApplicationVersionReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{116} } func (x *PageApplicationVersionReq) GetPlatform() []string { if x != nil { return x.Platform } return nil } func (x *PageApplicationVersionReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type PageApplicationVersionResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Versions []*ApplicationVersion `protobuf:"bytes,2,rep,name=versions,proto3" json:"versions"` } func (x *PageApplicationVersionResp) Reset() { *x = PageApplicationVersionResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PageApplicationVersionResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*PageApplicationVersionResp) ProtoMessage() {} func (x *PageApplicationVersionResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[117] 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 PageApplicationVersionResp.ProtoReflect.Descriptor instead. func (*PageApplicationVersionResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{117} } func (x *PageApplicationVersionResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *PageApplicationVersionResp) GetVersions() []*ApplicationVersion { if x != nil { return x.Versions } return nil } // 敏感词信息 type SensitiveWordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Word string `protobuf:"bytes,2,opt,name=word,proto3" json:"word"` Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level"` Type int32 `protobuf:"varint,4,opt,name=type,proto3" json:"type"` Action int32 `protobuf:"varint,5,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"` Creator string `protobuf:"bytes,7,opt,name=creator,proto3" json:"creator"` Updater string `protobuf:"bytes,8,opt,name=updater,proto3" json:"updater"` CreateTime int64 `protobuf:"varint,9,opt,name=create_time,json=createTime,proto3" json:"create_time"` UpdateTime int64 `protobuf:"varint,10,opt,name=update_time,json=updateTime,proto3" json:"update_time"` Remark string `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark"` } func (x *SensitiveWordInfo) Reset() { *x = SensitiveWordInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordInfo) ProtoMessage() {} func (x *SensitiveWordInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[118] 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 SensitiveWordInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{118} } func (x *SensitiveWordInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordInfo) GetWord() string { if x != nil { return x.Word } return "" } func (x *SensitiveWordInfo) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *SensitiveWordInfo) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *SensitiveWordInfo) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *SensitiveWordInfo) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *SensitiveWordInfo) GetCreator() string { if x != nil { return x.Creator } return "" } func (x *SensitiveWordInfo) GetUpdater() string { if x != nil { return x.Updater } return "" } func (x *SensitiveWordInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *SensitiveWordInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } func (x *SensitiveWordInfo) GetRemark() string { if x != nil { return x.Remark } return "" } // 敏感词分组信息 type SensitiveWordGroupInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` Remark string `protobuf:"bytes,3,opt,name=remark,proto3" json:"remark"` CreateTime int64 `protobuf:"varint,4,opt,name=create_time,json=createTime,proto3" json:"create_time"` UpdateTime int64 `protobuf:"varint,5,opt,name=update_time,json=updateTime,proto3" json:"update_time"` } func (x *SensitiveWordGroupInfo) Reset() { *x = SensitiveWordGroupInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordGroupInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordGroupInfo) ProtoMessage() {} func (x *SensitiveWordGroupInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[119] 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 SensitiveWordGroupInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordGroupInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{119} } func (x *SensitiveWordGroupInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordGroupInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *SensitiveWordGroupInfo) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *SensitiveWordGroupInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *SensitiveWordGroupInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 敏感词配置信息 type SensitiveWordConfigInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` EnableFilter bool `protobuf:"varint,2,opt,name=enable_filter,json=enableFilter,proto3" json:"enable_filter"` FilterMode int32 `protobuf:"varint,3,opt,name=filter_mode,json=filterMode,proto3" json:"filter_mode"` ReplaceChar string `protobuf:"bytes,4,opt,name=replace_char,json=replaceChar,proto3" json:"replace_char"` WhitelistUsers []string `protobuf:"bytes,5,rep,name=whitelist_users,json=whitelistUsers,proto3" json:"whitelist_users"` WhitelistGroups []string `protobuf:"bytes,6,rep,name=whitelist_groups,json=whitelistGroups,proto3" json:"whitelist_groups"` LogEnabled bool `protobuf:"varint,7,opt,name=log_enabled,json=logEnabled,proto3" json:"log_enabled"` AutoApprove bool `protobuf:"varint,8,opt,name=auto_approve,json=autoApprove,proto3" json:"auto_approve"` UpdateTime int64 `protobuf:"varint,9,opt,name=update_time,json=updateTime,proto3" json:"update_time"` } func (x *SensitiveWordConfigInfo) Reset() { *x = SensitiveWordConfigInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordConfigInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordConfigInfo) ProtoMessage() {} func (x *SensitiveWordConfigInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[120] 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 SensitiveWordConfigInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordConfigInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{120} } func (x *SensitiveWordConfigInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordConfigInfo) GetEnableFilter() bool { if x != nil { return x.EnableFilter } return false } func (x *SensitiveWordConfigInfo) GetFilterMode() int32 { if x != nil { return x.FilterMode } return 0 } func (x *SensitiveWordConfigInfo) GetReplaceChar() string { if x != nil { return x.ReplaceChar } return "" } func (x *SensitiveWordConfigInfo) GetWhitelistUsers() []string { if x != nil { return x.WhitelistUsers } return nil } func (x *SensitiveWordConfigInfo) GetWhitelistGroups() []string { if x != nil { return x.WhitelistGroups } return nil } func (x *SensitiveWordConfigInfo) GetLogEnabled() bool { if x != nil { return x.LogEnabled } return false } func (x *SensitiveWordConfigInfo) GetAutoApprove() bool { if x != nil { return x.AutoApprove } return false } func (x *SensitiveWordConfigInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 敏感词日志信息 type SensitiveWordLogInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id"` GroupId string `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id"` Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content"` MatchedWords []string `protobuf:"bytes,5,rep,name=matched_words,json=matchedWords,proto3" json:"matched_words"` Action int32 `protobuf:"varint,6,opt,name=action,proto3" json:"action"` ProcessedText string `protobuf:"bytes,7,opt,name=processed_text,json=processedText,proto3" json:"processed_text"` CreateTime int64 `protobuf:"varint,8,opt,name=create_time,json=createTime,proto3" json:"create_time"` } func (x *SensitiveWordLogInfo) Reset() { *x = SensitiveWordLogInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordLogInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordLogInfo) ProtoMessage() {} func (x *SensitiveWordLogInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[121] 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 SensitiveWordLogInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordLogInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{121} } func (x *SensitiveWordLogInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *SensitiveWordLogInfo) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *SensitiveWordLogInfo) GetGroupId() string { if x != nil { return x.GroupId } return "" } func (x *SensitiveWordLogInfo) GetContent() string { if x != nil { return x.Content } return "" } func (x *SensitiveWordLogInfo) GetMatchedWords() []string { if x != nil { return x.MatchedWords } return nil } func (x *SensitiveWordLogInfo) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *SensitiveWordLogInfo) GetProcessedText() string { if x != nil { return x.ProcessedText } return "" } func (x *SensitiveWordLogInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } // 敏感词统计信息 type SensitiveWordStatsInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Enabled int64 `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled"` Disabled int64 `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled"` Replace int64 `protobuf:"varint,4,opt,name=replace,proto3" json:"replace"` Block int64 `protobuf:"varint,5,opt,name=block,proto3" json:"block"` } func (x *SensitiveWordStatsInfo) Reset() { *x = SensitiveWordStatsInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordStatsInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordStatsInfo) ProtoMessage() {} func (x *SensitiveWordStatsInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[122] 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 SensitiveWordStatsInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordStatsInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{122} } func (x *SensitiveWordStatsInfo) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *SensitiveWordStatsInfo) GetEnabled() int64 { if x != nil { return x.Enabled } return 0 } func (x *SensitiveWordStatsInfo) GetDisabled() int64 { if x != nil { return x.Disabled } return 0 } func (x *SensitiveWordStatsInfo) GetReplace() int64 { if x != nil { return x.Replace } return 0 } func (x *SensitiveWordStatsInfo) GetBlock() int64 { if x != nil { return x.Block } return 0 } // 敏感词日志统计信息 type SensitiveWordLogStatsInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Replace int64 `protobuf:"varint,2,opt,name=replace,proto3" json:"replace"` Block int64 `protobuf:"varint,3,opt,name=block,proto3" json:"block"` } func (x *SensitiveWordLogStatsInfo) Reset() { *x = SensitiveWordLogStatsInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SensitiveWordLogStatsInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SensitiveWordLogStatsInfo) ProtoMessage() {} func (x *SensitiveWordLogStatsInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[123] 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 SensitiveWordLogStatsInfo.ProtoReflect.Descriptor instead. func (*SensitiveWordLogStatsInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{123} } func (x *SensitiveWordLogStatsInfo) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *SensitiveWordLogStatsInfo) GetReplace() int64 { if x != nil { return x.Replace } return 0 } func (x *SensitiveWordLogStatsInfo) GetBlock() int64 { if x != nil { return x.Block } return 0 } // 添加敏感词 type AddSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Word string `protobuf:"bytes,1,opt,name=word,proto3" json:"word"` Level int32 `protobuf:"varint,2,opt,name=level,proto3" json:"level"` Type int32 `protobuf:"varint,3,opt,name=type,proto3" json:"type"` Action int32 `protobuf:"varint,4,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status"` Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark"` } func (x *AddSensitiveWordReq) Reset() { *x = AddSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordReq) ProtoMessage() {} func (x *AddSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[124] 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 AddSensitiveWordReq.ProtoReflect.Descriptor instead. func (*AddSensitiveWordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{124} } func (x *AddSensitiveWordReq) GetWord() string { if x != nil { return x.Word } return "" } func (x *AddSensitiveWordReq) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *AddSensitiveWordReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *AddSensitiveWordReq) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *AddSensitiveWordReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *AddSensitiveWordReq) GetRemark() string { if x != nil { return x.Remark } return "" } type AddSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddSensitiveWordResp) Reset() { *x = AddSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordResp) ProtoMessage() {} func (x *AddSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[125] 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 AddSensitiveWordResp.ProtoReflect.Descriptor instead. func (*AddSensitiveWordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{125} } // 更新敏感词 type UpdateSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Word string `protobuf:"bytes,2,opt,name=word,proto3" json:"word"` Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level"` Type int32 `protobuf:"varint,4,opt,name=type,proto3" json:"type"` Action int32 `protobuf:"varint,5,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,6,opt,name=status,proto3" json:"status"` Remark string `protobuf:"bytes,7,opt,name=remark,proto3" json:"remark"` } func (x *UpdateSensitiveWordReq) Reset() { *x = UpdateSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordReq) ProtoMessage() {} func (x *UpdateSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[126] 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 UpdateSensitiveWordReq.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{126} } func (x *UpdateSensitiveWordReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateSensitiveWordReq) GetWord() string { if x != nil { return x.Word } return "" } func (x *UpdateSensitiveWordReq) GetLevel() int32 { if x != nil { return x.Level } return 0 } func (x *UpdateSensitiveWordReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *UpdateSensitiveWordReq) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *UpdateSensitiveWordReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *UpdateSensitiveWordReq) GetRemark() string { if x != nil { return x.Remark } return "" } type UpdateSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSensitiveWordResp) Reset() { *x = UpdateSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordResp) ProtoMessage() {} func (x *UpdateSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[127] 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 UpdateSensitiveWordResp.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{127} } // 删除敏感词 type DeleteSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *DeleteSensitiveWordReq) Reset() { *x = DeleteSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordReq) ProtoMessage() {} func (x *DeleteSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[128] 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 DeleteSensitiveWordReq.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{128} } func (x *DeleteSensitiveWordReq) GetIds() []string { if x != nil { return x.Ids } return nil } type DeleteSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSensitiveWordResp) Reset() { *x = DeleteSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordResp) ProtoMessage() {} func (x *DeleteSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[129] 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 DeleteSensitiveWordResp.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{129} } // 获取敏感词 type GetSensitiveWordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` } func (x *GetSensitiveWordReq) Reset() { *x = GetSensitiveWordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordReq) ProtoMessage() {} func (x *GetSensitiveWordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[130] 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 GetSensitiveWordReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{130} } func (x *GetSensitiveWordReq) GetId() string { if x != nil { return x.Id } return "" } type GetSensitiveWordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Word *SensitiveWordInfo `protobuf:"bytes,1,opt,name=word,proto3" json:"word"` } func (x *GetSensitiveWordResp) Reset() { *x = GetSensitiveWordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordResp) ProtoMessage() {} func (x *GetSensitiveWordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[131] 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 GetSensitiveWordResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{131} } func (x *GetSensitiveWordResp) GetWord() *SensitiveWordInfo { if x != nil { return x.Word } return nil } // 搜索敏感词 type SearchSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keyword string `protobuf:"bytes,1,opt,name=keyword,proto3" json:"keyword"` Action int32 `protobuf:"varint,2,opt,name=action,proto3" json:"action"` Status int32 `protobuf:"varint,3,opt,name=status,proto3" json:"status"` Pagination *sdkws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination"` } func (x *SearchSensitiveWordsReq) Reset() { *x = SearchSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchSensitiveWordsReq) ProtoMessage() {} func (x *SearchSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[132] 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 SearchSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*SearchSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{132} } func (x *SearchSensitiveWordsReq) GetKeyword() string { if x != nil { return x.Keyword } return "" } func (x *SearchSensitiveWordsReq) GetAction() int32 { if x != nil { return x.Action } return 0 } func (x *SearchSensitiveWordsReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *SearchSensitiveWordsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type SearchSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Words []*SensitiveWordInfo `protobuf:"bytes,2,rep,name=words,proto3" json:"words"` } func (x *SearchSensitiveWordsResp) Reset() { *x = SearchSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchSensitiveWordsResp) ProtoMessage() {} func (x *SearchSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[133] 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 SearchSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*SearchSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{133} } func (x *SearchSensitiveWordsResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *SearchSensitiveWordsResp) GetWords() []*SensitiveWordInfo { if x != nil { return x.Words } return nil } // 批量添加敏感词 type BatchAddSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Words []*SensitiveWordInfo `protobuf:"bytes,1,rep,name=words,proto3" json:"words"` } func (x *BatchAddSensitiveWordsReq) Reset() { *x = BatchAddSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchAddSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchAddSensitiveWordsReq) ProtoMessage() {} func (x *BatchAddSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[134] 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 BatchAddSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*BatchAddSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{134} } func (x *BatchAddSensitiveWordsReq) GetWords() []*SensitiveWordInfo { if x != nil { return x.Words } return nil } type BatchAddSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *BatchAddSensitiveWordsResp) Reset() { *x = BatchAddSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchAddSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchAddSensitiveWordsResp) ProtoMessage() {} func (x *BatchAddSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[135] 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 BatchAddSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*BatchAddSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{135} } func (x *BatchAddSensitiveWordsResp) GetIds() []string { if x != nil { return x.Ids } return nil } // 批量更新敏感词 type BatchUpdateSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Updates map[string]*SensitiveWordInfo `protobuf:"bytes,1,rep,name=updates,proto3" json:"updates,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *BatchUpdateSensitiveWordsReq) Reset() { *x = BatchUpdateSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateSensitiveWordsReq) ProtoMessage() {} func (x *BatchUpdateSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[136] 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 BatchUpdateSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*BatchUpdateSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{136} } func (x *BatchUpdateSensitiveWordsReq) GetUpdates() map[string]*SensitiveWordInfo { if x != nil { return x.Updates } return nil } type BatchUpdateSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BatchUpdateSensitiveWordsResp) Reset() { *x = BatchUpdateSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateSensitiveWordsResp) ProtoMessage() {} func (x *BatchUpdateSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[137] 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 BatchUpdateSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*BatchUpdateSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{137} } // 批量删除敏感词 type BatchDeleteSensitiveWordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *BatchDeleteSensitiveWordsReq) Reset() { *x = BatchDeleteSensitiveWordsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchDeleteSensitiveWordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchDeleteSensitiveWordsReq) ProtoMessage() {} func (x *BatchDeleteSensitiveWordsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[138] 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 BatchDeleteSensitiveWordsReq.ProtoReflect.Descriptor instead. func (*BatchDeleteSensitiveWordsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{138} } func (x *BatchDeleteSensitiveWordsReq) GetIds() []string { if x != nil { return x.Ids } return nil } type BatchDeleteSensitiveWordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BatchDeleteSensitiveWordsResp) Reset() { *x = BatchDeleteSensitiveWordsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchDeleteSensitiveWordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchDeleteSensitiveWordsResp) ProtoMessage() {} func (x *BatchDeleteSensitiveWordsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[139] 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 BatchDeleteSensitiveWordsResp.ProtoReflect.Descriptor instead. func (*BatchDeleteSensitiveWordsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{139} } // 添加敏感词分组 type AddSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` Remark string `protobuf:"bytes,2,opt,name=remark,proto3" json:"remark"` } func (x *AddSensitiveWordGroupReq) Reset() { *x = AddSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordGroupReq) ProtoMessage() {} func (x *AddSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[140] 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 AddSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*AddSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{140} } func (x *AddSensitiveWordGroupReq) GetName() string { if x != nil { return x.Name } return "" } func (x *AddSensitiveWordGroupReq) GetRemark() string { if x != nil { return x.Remark } return "" } type AddSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AddSensitiveWordGroupResp) Reset() { *x = AddSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddSensitiveWordGroupResp) ProtoMessage() {} func (x *AddSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[141] 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 AddSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*AddSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{141} } // 更新敏感词分组 type UpdateSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` Remark string `protobuf:"bytes,3,opt,name=remark,proto3" json:"remark"` } func (x *UpdateSensitiveWordGroupReq) Reset() { *x = UpdateSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordGroupReq) ProtoMessage() {} func (x *UpdateSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[142] 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 UpdateSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{142} } func (x *UpdateSensitiveWordGroupReq) GetId() string { if x != nil { return x.Id } return "" } func (x *UpdateSensitiveWordGroupReq) GetName() string { if x != nil { return x.Name } return "" } func (x *UpdateSensitiveWordGroupReq) GetRemark() string { if x != nil { return x.Remark } return "" } type UpdateSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSensitiveWordGroupResp) Reset() { *x = UpdateSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordGroupResp) ProtoMessage() {} func (x *UpdateSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[143] 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 UpdateSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{143} } // 删除敏感词分组 type DeleteSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *DeleteSensitiveWordGroupReq) Reset() { *x = DeleteSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordGroupReq) ProtoMessage() {} func (x *DeleteSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[144] 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 DeleteSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{144} } func (x *DeleteSensitiveWordGroupReq) GetIds() []string { if x != nil { return x.Ids } return nil } type DeleteSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSensitiveWordGroupResp) Reset() { *x = DeleteSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordGroupResp) ProtoMessage() {} func (x *DeleteSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[145] 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 DeleteSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{145} } // 获取敏感词分组 type GetSensitiveWordGroupReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` } func (x *GetSensitiveWordGroupReq) Reset() { *x = GetSensitiveWordGroupReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordGroupReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordGroupReq) ProtoMessage() {} func (x *GetSensitiveWordGroupReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[146] 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 GetSensitiveWordGroupReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordGroupReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{146} } func (x *GetSensitiveWordGroupReq) GetId() string { if x != nil { return x.Id } return "" } type GetSensitiveWordGroupResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Group *SensitiveWordGroupInfo `protobuf:"bytes,1,opt,name=group,proto3" json:"group"` } func (x *GetSensitiveWordGroupResp) Reset() { *x = GetSensitiveWordGroupResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordGroupResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordGroupResp) ProtoMessage() {} func (x *GetSensitiveWordGroupResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[147] 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 GetSensitiveWordGroupResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordGroupResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{147} } func (x *GetSensitiveWordGroupResp) GetGroup() *SensitiveWordGroupInfo { if x != nil { return x.Group } return nil } // 获取所有敏感词分组 type GetAllSensitiveWordGroupsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetAllSensitiveWordGroupsReq) Reset() { *x = GetAllSensitiveWordGroupsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllSensitiveWordGroupsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllSensitiveWordGroupsReq) ProtoMessage() {} func (x *GetAllSensitiveWordGroupsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[148] 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 GetAllSensitiveWordGroupsReq.ProtoReflect.Descriptor instead. func (*GetAllSensitiveWordGroupsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{148} } type GetAllSensitiveWordGroupsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Groups []*SensitiveWordGroupInfo `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups"` } func (x *GetAllSensitiveWordGroupsResp) Reset() { *x = GetAllSensitiveWordGroupsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllSensitiveWordGroupsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllSensitiveWordGroupsResp) ProtoMessage() {} func (x *GetAllSensitiveWordGroupsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[149] 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 GetAllSensitiveWordGroupsResp.ProtoReflect.Descriptor instead. func (*GetAllSensitiveWordGroupsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{149} } func (x *GetAllSensitiveWordGroupsResp) GetGroups() []*SensitiveWordGroupInfo { if x != nil { return x.Groups } return nil } // 获取敏感词配置 type GetSensitiveWordConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetSensitiveWordConfigReq) Reset() { *x = GetSensitiveWordConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordConfigReq) ProtoMessage() {} func (x *GetSensitiveWordConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[150] 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 GetSensitiveWordConfigReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{150} } type GetSensitiveWordConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *SensitiveWordConfigInfo `protobuf:"bytes,1,opt,name=config,proto3" json:"config"` } func (x *GetSensitiveWordConfigResp) Reset() { *x = GetSensitiveWordConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordConfigResp) ProtoMessage() {} func (x *GetSensitiveWordConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[151] 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 GetSensitiveWordConfigResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{151} } func (x *GetSensitiveWordConfigResp) GetConfig() *SensitiveWordConfigInfo { if x != nil { return x.Config } return nil } // 更新敏感词配置 type UpdateSensitiveWordConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *SensitiveWordConfigInfo `protobuf:"bytes,1,opt,name=config,proto3" json:"config"` } func (x *UpdateSensitiveWordConfigReq) Reset() { *x = UpdateSensitiveWordConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordConfigReq) ProtoMessage() {} func (x *UpdateSensitiveWordConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[152] 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 UpdateSensitiveWordConfigReq.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{152} } func (x *UpdateSensitiveWordConfigReq) GetConfig() *SensitiveWordConfigInfo { if x != nil { return x.Config } return nil } type UpdateSensitiveWordConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSensitiveWordConfigResp) Reset() { *x = UpdateSensitiveWordConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSensitiveWordConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSensitiveWordConfigResp) ProtoMessage() {} func (x *UpdateSensitiveWordConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[153] 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 UpdateSensitiveWordConfigResp.ProtoReflect.Descriptor instead. func (*UpdateSensitiveWordConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{153} } // 获取敏感词日志 type GetSensitiveWordLogsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` GroupId string `protobuf:"bytes,2,opt,name=group_id,json=groupId,proto3" json:"group_id"` Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination"` } func (x *GetSensitiveWordLogsReq) Reset() { *x = GetSensitiveWordLogsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogsReq) ProtoMessage() {} func (x *GetSensitiveWordLogsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[154] 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 GetSensitiveWordLogsReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{154} } func (x *GetSensitiveWordLogsReq) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *GetSensitiveWordLogsReq) GetGroupId() string { if x != nil { return x.GroupId } return "" } func (x *GetSensitiveWordLogsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetSensitiveWordLogsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` Logs []*SensitiveWordLogInfo `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs"` } func (x *GetSensitiveWordLogsResp) Reset() { *x = GetSensitiveWordLogsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogsResp) ProtoMessage() {} func (x *GetSensitiveWordLogsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[155] 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 GetSensitiveWordLogsResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{155} } func (x *GetSensitiveWordLogsResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *GetSensitiveWordLogsResp) GetLogs() []*SensitiveWordLogInfo { if x != nil { return x.Logs } return nil } // 用户登录记录信息 type UserLoginRecordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` // 用户ID LoginTime int64 `protobuf:"varint,2,opt,name=login_time,json=loginTime,proto3" json:"login_time"` // 登录时间(毫秒时间戳) Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip"` // 登录IP DeviceId string `protobuf:"bytes,4,opt,name=device_id,json=deviceId,proto3" json:"device_id"` // 设备ID Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform"` // 平台 FaceUrl string `protobuf:"bytes,6,opt,name=face_url,json=faceUrl,proto3" json:"face_url"` // 用户头像 Nickname string `protobuf:"bytes,7,opt,name=nickname,proto3" json:"nickname"` // 用户昵称 } func (x *UserLoginRecordInfo) Reset() { *x = UserLoginRecordInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UserLoginRecordInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*UserLoginRecordInfo) ProtoMessage() {} func (x *UserLoginRecordInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[156] 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 UserLoginRecordInfo.ProtoReflect.Descriptor instead. func (*UserLoginRecordInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{156} } func (x *UserLoginRecordInfo) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *UserLoginRecordInfo) GetLoginTime() int64 { if x != nil { return x.LoginTime } return 0 } func (x *UserLoginRecordInfo) GetIp() string { if x != nil { return x.Ip } return "" } func (x *UserLoginRecordInfo) GetDeviceId() string { if x != nil { return x.DeviceId } return "" } func (x *UserLoginRecordInfo) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *UserLoginRecordInfo) GetFaceUrl() string { if x != nil { return x.FaceUrl } return "" } func (x *UserLoginRecordInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } // 查询用户登录记录请求 type GetUserLoginRecordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id"` // 用户ID(可选,如果提供则查询该用户的登录记录) Ip string `protobuf:"bytes,2,opt,name=ip,proto3" json:"ip"` // IP地址(可选,如果提供则查询使用该IP的所有登录记录) Pagination *sdkws.RequestPagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetUserLoginRecordsReq) Reset() { *x = GetUserLoginRecordsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserLoginRecordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserLoginRecordsReq) ProtoMessage() {} func (x *GetUserLoginRecordsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[157] 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 GetUserLoginRecordsReq.ProtoReflect.Descriptor instead. func (*GetUserLoginRecordsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{157} } func (x *GetUserLoginRecordsReq) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *GetUserLoginRecordsReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *GetUserLoginRecordsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 查询用户登录记录响应 type GetUserLoginRecordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Records []*UserLoginRecordInfo `protobuf:"bytes,2,rep,name=records,proto3" json:"records"` // 登录记录列表 } func (x *GetUserLoginRecordsResp) Reset() { *x = GetUserLoginRecordsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserLoginRecordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserLoginRecordsResp) ProtoMessage() {} func (x *GetUserLoginRecordsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[158] 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 GetUserLoginRecordsResp.ProtoReflect.Descriptor instead. func (*GetUserLoginRecordsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{158} } func (x *GetUserLoginRecordsResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *GetUserLoginRecordsResp) GetRecords() []*UserLoginRecordInfo { if x != nil { return x.Records } return nil } // 删除敏感词日志 type DeleteSensitiveWordLogsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids"` } func (x *DeleteSensitiveWordLogsReq) Reset() { *x = DeleteSensitiveWordLogsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordLogsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordLogsReq) ProtoMessage() {} func (x *DeleteSensitiveWordLogsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[159] 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 DeleteSensitiveWordLogsReq.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordLogsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{159} } func (x *DeleteSensitiveWordLogsReq) GetIds() []string { if x != nil { return x.Ids } return nil } type DeleteSensitiveWordLogsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSensitiveWordLogsResp) Reset() { *x = DeleteSensitiveWordLogsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSensitiveWordLogsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSensitiveWordLogsResp) ProtoMessage() {} func (x *DeleteSensitiveWordLogsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[160] 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 DeleteSensitiveWordLogsResp.ProtoReflect.Descriptor instead. func (*DeleteSensitiveWordLogsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{160} } // 获取敏感词统计 type GetSensitiveWordStatsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetSensitiveWordStatsReq) Reset() { *x = GetSensitiveWordStatsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordStatsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordStatsReq) ProtoMessage() {} func (x *GetSensitiveWordStatsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[161] 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 GetSensitiveWordStatsReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordStatsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{161} } type GetSensitiveWordStatsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Stats *SensitiveWordStatsInfo `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats"` } func (x *GetSensitiveWordStatsResp) Reset() { *x = GetSensitiveWordStatsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordStatsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordStatsResp) ProtoMessage() {} func (x *GetSensitiveWordStatsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[162] 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 GetSensitiveWordStatsResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordStatsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{162} } func (x *GetSensitiveWordStatsResp) GetStats() *SensitiveWordStatsInfo { if x != nil { return x.Stats } return nil } // 获取敏感词日志统计 type GetSensitiveWordLogStatsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StartTime int64 `protobuf:"varint,1,opt,name=start_time,json=startTime,proto3" json:"start_time"` EndTime int64 `protobuf:"varint,2,opt,name=end_time,json=endTime,proto3" json:"end_time"` } func (x *GetSensitiveWordLogStatsReq) Reset() { *x = GetSensitiveWordLogStatsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogStatsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogStatsReq) ProtoMessage() {} func (x *GetSensitiveWordLogStatsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[163] 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 GetSensitiveWordLogStatsReq.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogStatsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{163} } func (x *GetSensitiveWordLogStatsReq) GetStartTime() int64 { if x != nil { return x.StartTime } return 0 } func (x *GetSensitiveWordLogStatsReq) GetEndTime() int64 { if x != nil { return x.EndTime } return 0 } type GetSensitiveWordLogStatsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Stats *SensitiveWordLogStatsInfo `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats"` } func (x *GetSensitiveWordLogStatsResp) Reset() { *x = GetSensitiveWordLogStatsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSensitiveWordLogStatsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSensitiveWordLogStatsResp) ProtoMessage() {} func (x *GetSensitiveWordLogStatsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[164] 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 GetSensitiveWordLogStatsResp.ProtoReflect.Descriptor instead. func (*GetSensitiveWordLogStatsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{164} } func (x *GetSensitiveWordLogStatsResp) GetStats() *SensitiveWordLogStatsInfo { if x != nil { return x.Stats } return nil } // 获取定时任务列表请求 type GetScheduledTasksReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetScheduledTasksReq) Reset() { *x = GetScheduledTasksReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetScheduledTasksReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetScheduledTasksReq) ProtoMessage() {} func (x *GetScheduledTasksReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[165] 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 GetScheduledTasksReq.ProtoReflect.Descriptor instead. func (*GetScheduledTasksReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{165} } func (x *GetScheduledTasksReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 定时任务消息内容 type ScheduledTaskMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type"` // 消息类型:1-文本,2-图片,3-视频 Content string `protobuf:"bytes,2,opt,name=content,proto3" json:"content"` // 消息内容(文本内容、图片URL、视频URL等) Thumbnail string `protobuf:"bytes,3,opt,name=thumbnail,proto3" json:"thumbnail"` // 缩略图URL(用于图片和视频) Duration int32 `protobuf:"varint,4,opt,name=duration,proto3" json:"duration"` // 时长(秒,用于视频) FileSize int64 `protobuf:"varint,5,opt,name=fileSize,proto3" json:"fileSize"` // 文件大小(字节,用于图片和视频) Width int32 `protobuf:"varint,6,opt,name=width,proto3" json:"width"` // 宽度(像素,用于图片和视频) Height int32 `protobuf:"varint,7,opt,name=height,proto3" json:"height"` // 高度(像素,用于图片和视频) } func (x *ScheduledTaskMessage) Reset() { *x = ScheduledTaskMessage{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScheduledTaskMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScheduledTaskMessage) ProtoMessage() {} func (x *ScheduledTaskMessage) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[166] 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 ScheduledTaskMessage.ProtoReflect.Descriptor instead. func (*ScheduledTaskMessage) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{166} } func (x *ScheduledTaskMessage) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *ScheduledTaskMessage) GetContent() string { if x != nil { return x.Content } return "" } func (x *ScheduledTaskMessage) GetThumbnail() string { if x != nil { return x.Thumbnail } return "" } func (x *ScheduledTaskMessage) GetDuration() int32 { if x != nil { return x.Duration } return 0 } func (x *ScheduledTaskMessage) GetFileSize() int64 { if x != nil { return x.FileSize } return 0 } func (x *ScheduledTaskMessage) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *ScheduledTaskMessage) GetHeight() int32 { if x != nil { return x.Height } return 0 } // 定时任务信息 type ScheduledTaskInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 任务ID UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 用户ID Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name"` // 任务名称 CronExpression string `protobuf:"bytes,4,opt,name=cronExpression,proto3" json:"cronExpression"` // Crontab表达式:分 时 日 月 周(例如:"0 9 * * *") Messages []*ScheduledTaskMessage `protobuf:"bytes,5,rep,name=messages,proto3" json:"messages"` // 消息列表(支持多条消息一起发送) RecvIDs []string `protobuf:"bytes,6,rep,name=recvIDs,proto3" json:"recvIDs"` // 接收者ID列表(单聊,可以多个) GroupIDs []string `protobuf:"bytes,7,rep,name=groupIDs,proto3" json:"groupIDs"` // 群组ID列表(群聊,可以多个) Status int32 `protobuf:"varint,8,opt,name=status,proto3" json:"status"` // 状态:0-已禁用,1-已启用 CreateTime int64 `protobuf:"varint,9,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) UpdateTime int64 `protobuf:"varint,10,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间(毫秒时间戳) } func (x *ScheduledTaskInfo) Reset() { *x = ScheduledTaskInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScheduledTaskInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScheduledTaskInfo) ProtoMessage() {} func (x *ScheduledTaskInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[167] 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 ScheduledTaskInfo.ProtoReflect.Descriptor instead. func (*ScheduledTaskInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{167} } func (x *ScheduledTaskInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *ScheduledTaskInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *ScheduledTaskInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *ScheduledTaskInfo) GetCronExpression() string { if x != nil { return x.CronExpression } return "" } func (x *ScheduledTaskInfo) GetMessages() []*ScheduledTaskMessage { if x != nil { return x.Messages } return nil } func (x *ScheduledTaskInfo) GetRecvIDs() []string { if x != nil { return x.RecvIDs } return nil } func (x *ScheduledTaskInfo) GetGroupIDs() []string { if x != nil { return x.GroupIDs } return nil } func (x *ScheduledTaskInfo) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *ScheduledTaskInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *ScheduledTaskInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 获取定时任务列表响应 type GetScheduledTasksResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total int64 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Tasks []*ScheduledTaskInfo `protobuf:"bytes,2,rep,name=tasks,proto3" json:"tasks"` // 任务列表 } func (x *GetScheduledTasksResp) Reset() { *x = GetScheduledTasksResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetScheduledTasksResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetScheduledTasksResp) ProtoMessage() {} func (x *GetScheduledTasksResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[168] 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 GetScheduledTasksResp.ProtoReflect.Descriptor instead. func (*GetScheduledTasksResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{168} } func (x *GetScheduledTasksResp) GetTotal() int64 { if x != nil { return x.Total } return 0 } func (x *GetScheduledTasksResp) GetTasks() []*ScheduledTaskInfo { if x != nil { return x.Tasks } return nil } // 删除定时任务请求 type DeleteScheduledTaskReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskIDs []string `protobuf:"bytes,1,rep,name=taskIDs,proto3" json:"taskIDs"` // 任务ID列表 } func (x *DeleteScheduledTaskReq) Reset() { *x = DeleteScheduledTaskReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteScheduledTaskReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteScheduledTaskReq) ProtoMessage() {} func (x *DeleteScheduledTaskReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[169] 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 DeleteScheduledTaskReq.ProtoReflect.Descriptor instead. func (*DeleteScheduledTaskReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{169} } func (x *DeleteScheduledTaskReq) GetTaskIDs() []string { if x != nil { return x.TaskIDs } return nil } // 删除定时任务响应 type DeleteScheduledTaskResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteScheduledTaskResp) Reset() { *x = DeleteScheduledTaskResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteScheduledTaskResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteScheduledTaskResp) ProtoMessage() {} func (x *DeleteScheduledTaskResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[170] 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 DeleteScheduledTaskResp.ProtoReflect.Descriptor instead. func (*DeleteScheduledTaskResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{170} } // 系统配置信息 type SystemConfigInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"` // 配置键(唯一标识) Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` // 配置标题 Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value"` // 配置值(字符串形式存储,根据ValueType解析) ValueType int32 `protobuf:"varint,4,opt,name=valueType,proto3" json:"valueType"` // 配置值类型:1-字符串,2-数字,3-布尔,4-JSON Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description"` // 配置描述 Enabled bool `protobuf:"varint,6,opt,name=enabled,proto3" json:"enabled"` // 是否启用(用于开关类配置) ShowInApp bool `protobuf:"varint,7,opt,name=showInApp,proto3" json:"showInApp"` // 是否在APP端展示 CreateTime int64 `protobuf:"varint,8,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) UpdateTime int64 `protobuf:"varint,9,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间(毫秒时间戳) } func (x *SystemConfigInfo) Reset() { *x = SystemConfigInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SystemConfigInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*SystemConfigInfo) ProtoMessage() {} func (x *SystemConfigInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[171] 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 SystemConfigInfo.ProtoReflect.Descriptor instead. func (*SystemConfigInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{171} } func (x *SystemConfigInfo) GetKey() string { if x != nil { return x.Key } return "" } func (x *SystemConfigInfo) GetTitle() string { if x != nil { return x.Title } return "" } func (x *SystemConfigInfo) GetValue() string { if x != nil { return x.Value } return "" } func (x *SystemConfigInfo) GetValueType() int32 { if x != nil { return x.ValueType } return 0 } func (x *SystemConfigInfo) GetDescription() string { if x != nil { return x.Description } return "" } func (x *SystemConfigInfo) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *SystemConfigInfo) GetShowInApp() bool { if x != nil { return x.ShowInApp } return false } func (x *SystemConfigInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *SystemConfigInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 创建系统配置 type CreateSystemConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"` // 配置键(唯一标识) Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` // 配置标题 Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value"` // 配置值 ValueType int32 `protobuf:"varint,4,opt,name=valueType,proto3" json:"valueType"` // 配置值类型:1-字符串,2-数字,3-布尔,4-JSON Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description"` // 配置描述 Enabled bool `protobuf:"varint,6,opt,name=enabled,proto3" json:"enabled"` // 是否启用 ShowInApp bool `protobuf:"varint,7,opt,name=showInApp,proto3" json:"showInApp"` // 是否在APP端展示(默认为false) } func (x *CreateSystemConfigReq) Reset() { *x = CreateSystemConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateSystemConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateSystemConfigReq) ProtoMessage() {} func (x *CreateSystemConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[172] 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 CreateSystemConfigReq.ProtoReflect.Descriptor instead. func (*CreateSystemConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{172} } func (x *CreateSystemConfigReq) GetKey() string { if x != nil { return x.Key } return "" } func (x *CreateSystemConfigReq) GetTitle() string { if x != nil { return x.Title } return "" } func (x *CreateSystemConfigReq) GetValue() string { if x != nil { return x.Value } return "" } func (x *CreateSystemConfigReq) GetValueType() int32 { if x != nil { return x.ValueType } return 0 } func (x *CreateSystemConfigReq) GetDescription() string { if x != nil { return x.Description } return "" } func (x *CreateSystemConfigReq) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *CreateSystemConfigReq) GetShowInApp() bool { if x != nil { return x.ShowInApp } return false } type CreateSystemConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CreateSystemConfigResp) Reset() { *x = CreateSystemConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateSystemConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateSystemConfigResp) ProtoMessage() {} func (x *CreateSystemConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[173] 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 CreateSystemConfigResp.ProtoReflect.Descriptor instead. func (*CreateSystemConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{173} } // 获取系统配置 type GetSystemConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"` // 配置键 } func (x *GetSystemConfigReq) Reset() { *x = GetSystemConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSystemConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSystemConfigReq) ProtoMessage() {} func (x *GetSystemConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[174] 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 GetSystemConfigReq.ProtoReflect.Descriptor instead. func (*GetSystemConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{174} } func (x *GetSystemConfigReq) GetKey() string { if x != nil { return x.Key } return "" } type GetSystemConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Config *SystemConfigInfo `protobuf:"bytes,1,opt,name=config,proto3" json:"config"` // 配置信息 } func (x *GetSystemConfigResp) Reset() { *x = GetSystemConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSystemConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSystemConfigResp) ProtoMessage() {} func (x *GetSystemConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[175] 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 GetSystemConfigResp.ProtoReflect.Descriptor instead. func (*GetSystemConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{175} } func (x *GetSystemConfigResp) GetConfig() *SystemConfigInfo { if x != nil { return x.Config } return nil } // 获取所有系统配置(分页) type GetAllSystemConfigsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetAllSystemConfigsReq) Reset() { *x = GetAllSystemConfigsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllSystemConfigsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllSystemConfigsReq) ProtoMessage() {} func (x *GetAllSystemConfigsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[176] 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 GetAllSystemConfigsReq.ProtoReflect.Descriptor instead. func (*GetAllSystemConfigsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{176} } func (x *GetAllSystemConfigsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } type GetAllSystemConfigsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 List []*SystemConfigInfo `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` // 配置列表 } func (x *GetAllSystemConfigsResp) Reset() { *x = GetAllSystemConfigsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAllSystemConfigsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAllSystemConfigsResp) ProtoMessage() {} func (x *GetAllSystemConfigsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[177] 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 GetAllSystemConfigsResp.ProtoReflect.Descriptor instead. func (*GetAllSystemConfigsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{177} } func (x *GetAllSystemConfigsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetAllSystemConfigsResp) GetList() []*SystemConfigInfo { if x != nil { return x.List } return nil } // 更新系统配置 type UpdateSystemConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"` // 配置键 Title *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=title,proto3" json:"title"` // 配置标题(可选) Value *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=value,proto3" json:"value"` // 配置值(可选) ValueType *wrapperspb.Int32Value `protobuf:"bytes,4,opt,name=valueType,proto3" json:"valueType"` // 配置值类型(可选) Description *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=description,proto3" json:"description"` // 配置描述(可选) Enabled *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=enabled,proto3" json:"enabled"` // 是否启用(可选) ShowInApp *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=showInApp,proto3" json:"showInApp"` // 是否在APP端展示(可选) } func (x *UpdateSystemConfigReq) Reset() { *x = UpdateSystemConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSystemConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSystemConfigReq) ProtoMessage() {} func (x *UpdateSystemConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[178] 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 UpdateSystemConfigReq.ProtoReflect.Descriptor instead. func (*UpdateSystemConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{178} } func (x *UpdateSystemConfigReq) GetKey() string { if x != nil { return x.Key } return "" } func (x *UpdateSystemConfigReq) GetTitle() *wrapperspb.StringValue { if x != nil { return x.Title } return nil } func (x *UpdateSystemConfigReq) GetValue() *wrapperspb.StringValue { if x != nil { return x.Value } return nil } func (x *UpdateSystemConfigReq) GetValueType() *wrapperspb.Int32Value { if x != nil { return x.ValueType } return nil } func (x *UpdateSystemConfigReq) GetDescription() *wrapperspb.StringValue { if x != nil { return x.Description } return nil } func (x *UpdateSystemConfigReq) GetEnabled() *wrapperspb.BoolValue { if x != nil { return x.Enabled } return nil } func (x *UpdateSystemConfigReq) GetShowInApp() *wrapperspb.BoolValue { if x != nil { return x.ShowInApp } return nil } type UpdateSystemConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSystemConfigResp) Reset() { *x = UpdateSystemConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSystemConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSystemConfigResp) ProtoMessage() {} func (x *UpdateSystemConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[179] 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 UpdateSystemConfigResp.ProtoReflect.Descriptor instead. func (*UpdateSystemConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{179} } // 更新系统配置值 type UpdateSystemConfigValueReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"` // 配置键 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value"` // 配置值 } func (x *UpdateSystemConfigValueReq) Reset() { *x = UpdateSystemConfigValueReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSystemConfigValueReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSystemConfigValueReq) ProtoMessage() {} func (x *UpdateSystemConfigValueReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[180] 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 UpdateSystemConfigValueReq.ProtoReflect.Descriptor instead. func (*UpdateSystemConfigValueReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{180} } func (x *UpdateSystemConfigValueReq) GetKey() string { if x != nil { return x.Key } return "" } func (x *UpdateSystemConfigValueReq) GetValue() string { if x != nil { return x.Value } return "" } type UpdateSystemConfigValueResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSystemConfigValueResp) Reset() { *x = UpdateSystemConfigValueResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSystemConfigValueResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSystemConfigValueResp) ProtoMessage() {} func (x *UpdateSystemConfigValueResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[181] 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 UpdateSystemConfigValueResp.ProtoReflect.Descriptor instead. func (*UpdateSystemConfigValueResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{181} } // 更新系统配置启用状态 type UpdateSystemConfigEnabledReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"` // 配置键 Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled"` // 是否启用 } func (x *UpdateSystemConfigEnabledReq) Reset() { *x = UpdateSystemConfigEnabledReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSystemConfigEnabledReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSystemConfigEnabledReq) ProtoMessage() {} func (x *UpdateSystemConfigEnabledReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[182] 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 UpdateSystemConfigEnabledReq.ProtoReflect.Descriptor instead. func (*UpdateSystemConfigEnabledReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{182} } func (x *UpdateSystemConfigEnabledReq) GetKey() string { if x != nil { return x.Key } return "" } func (x *UpdateSystemConfigEnabledReq) GetEnabled() bool { if x != nil { return x.Enabled } return false } type UpdateSystemConfigEnabledResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateSystemConfigEnabledResp) Reset() { *x = UpdateSystemConfigEnabledResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateSystemConfigEnabledResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateSystemConfigEnabledResp) ProtoMessage() {} func (x *UpdateSystemConfigEnabledResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[183] 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 UpdateSystemConfigEnabledResp.ProtoReflect.Descriptor instead. func (*UpdateSystemConfigEnabledResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{183} } // 删除系统配置 type DeleteSystemConfigReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys"` // 配置键列表 } func (x *DeleteSystemConfigReq) Reset() { *x = DeleteSystemConfigReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSystemConfigReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSystemConfigReq) ProtoMessage() {} func (x *DeleteSystemConfigReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[184] 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 DeleteSystemConfigReq.ProtoReflect.Descriptor instead. func (*DeleteSystemConfigReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{184} } func (x *DeleteSystemConfigReq) GetKeys() []string { if x != nil { return x.Keys } return nil } type DeleteSystemConfigResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteSystemConfigResp) Reset() { *x = DeleteSystemConfigResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteSystemConfigResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteSystemConfigResp) ProtoMessage() {} func (x *DeleteSystemConfigResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[185] 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 DeleteSystemConfigResp.ProtoReflect.Descriptor instead. func (*DeleteSystemConfigResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{185} } // 获取所有已启用的配置 type GetEnabledSystemConfigsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetEnabledSystemConfigsReq) Reset() { *x = GetEnabledSystemConfigsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetEnabledSystemConfigsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetEnabledSystemConfigsReq) ProtoMessage() {} func (x *GetEnabledSystemConfigsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[186] 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 GetEnabledSystemConfigsReq.ProtoReflect.Descriptor instead. func (*GetEnabledSystemConfigsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{186} } type GetEnabledSystemConfigsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields List []*SystemConfigInfo `protobuf:"bytes,1,rep,name=list,proto3" json:"list"` // 配置列表 } func (x *GetEnabledSystemConfigsResp) Reset() { *x = GetEnabledSystemConfigsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetEnabledSystemConfigsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetEnabledSystemConfigsResp) ProtoMessage() {} func (x *GetEnabledSystemConfigsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[187] 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 GetEnabledSystemConfigsResp.ProtoReflect.Descriptor instead. func (*GetEnabledSystemConfigsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{187} } func (x *GetEnabledSystemConfigsResp) GetList() []*SystemConfigInfo { if x != nil { return x.List } return nil } // 实名认证信息 type RealNameAuthInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields IdCard string `protobuf:"bytes,1,opt,name=idCard,proto3" json:"idCard"` // 身份证号 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"` // 真实姓名 IdCardPhotoFront string `protobuf:"bytes,3,opt,name=idCardPhotoFront,proto3" json:"idCardPhotoFront"` // 身份证正面照片URL IdCardPhotoBack string `protobuf:"bytes,4,opt,name=idCardPhotoBack,proto3" json:"idCardPhotoBack"` // 身份证反面照片URL AuditStatus int32 `protobuf:"varint,5,opt,name=auditStatus,proto3" json:"auditStatus"` // 审核状态:0-未审核,1-审核通过,2-审核拒绝 } func (x *RealNameAuthInfo) Reset() { *x = RealNameAuthInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RealNameAuthInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RealNameAuthInfo) ProtoMessage() {} func (x *RealNameAuthInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[188] 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 RealNameAuthInfo.ProtoReflect.Descriptor instead. func (*RealNameAuthInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{188} } func (x *RealNameAuthInfo) GetIdCard() string { if x != nil { return x.IdCard } return "" } func (x *RealNameAuthInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *RealNameAuthInfo) GetIdCardPhotoFront() string { if x != nil { return x.IdCardPhotoFront } return "" } func (x *RealNameAuthInfo) GetIdCardPhotoBack() string { if x != nil { return x.IdCardPhotoBack } return "" } func (x *RealNameAuthInfo) GetAuditStatus() int32 { if x != nil { return x.AuditStatus } return 0 } // 钱包信息 type WalletInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID Balance int64 `protobuf:"varint,2,opt,name=balance,proto3" json:"balance"` // 余额(单位:分) WithdrawAccount string `protobuf:"bytes,3,opt,name=withdrawAccount,proto3" json:"withdrawAccount"` // 提现账号 RealNameAuth *RealNameAuthInfo `protobuf:"bytes,4,opt,name=realNameAuth,proto3" json:"realNameAuth"` // 实名认证信息 WithdrawReceiveAccount string `protobuf:"bytes,5,opt,name=withdrawReceiveAccount,proto3" json:"withdrawReceiveAccount"` // 提现收款账号 HasPaymentPassword bool `protobuf:"varint,6,opt,name=hasPaymentPassword,proto3" json:"hasPaymentPassword"` // 是否已设置支付密码 CreateTime int64 `protobuf:"varint,7,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) UpdateTime int64 `protobuf:"varint,8,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间(毫秒时间戳) } func (x *WalletInfo) Reset() { *x = WalletInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WalletInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*WalletInfo) ProtoMessage() {} func (x *WalletInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[189] 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 WalletInfo.ProtoReflect.Descriptor instead. func (*WalletInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{189} } func (x *WalletInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *WalletInfo) GetBalance() int64 { if x != nil { return x.Balance } return 0 } func (x *WalletInfo) GetWithdrawAccount() string { if x != nil { return x.WithdrawAccount } return "" } func (x *WalletInfo) GetRealNameAuth() *RealNameAuthInfo { if x != nil { return x.RealNameAuth } return nil } func (x *WalletInfo) GetWithdrawReceiveAccount() string { if x != nil { return x.WithdrawReceiveAccount } return "" } func (x *WalletInfo) GetHasPaymentPassword() bool { if x != nil { return x.HasPaymentPassword } return false } func (x *WalletInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *WalletInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 余额变动记录信息 type WalletBalanceRecordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 记录ID UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 用户ID Amount int64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount"` // 变动金额(单位:分,正数表示增加,负数表示减少) Type int32 `protobuf:"varint,4,opt,name=type,proto3" json:"type"` // 变动类型:1-充值,2-提现/提款,3-消费,4-退款,5-奖励,6-后台充值,7-发红包,8-抢红包,99-其他 BeforeBalance int64 `protobuf:"varint,5,opt,name=beforeBalance,proto3" json:"beforeBalance"` // 变动前余额(单位:分) AfterBalance int64 `protobuf:"varint,6,opt,name=afterBalance,proto3" json:"afterBalance"` // 变动后余额(单位:分) OrderID string `protobuf:"bytes,7,opt,name=orderID,proto3" json:"orderID"` // 关联订单ID(可选) TransactionID string `protobuf:"bytes,8,opt,name=transactionID,proto3" json:"transactionID"` // 交易ID(可选) RedPacketID string `protobuf:"bytes,9,opt,name=redPacketID,proto3" json:"redPacketID"` // 红包ID(可选) Remark string `protobuf:"bytes,10,opt,name=remark,proto3" json:"remark"` // 备注 CreateTime int64 `protobuf:"varint,11,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) } func (x *WalletBalanceRecordInfo) Reset() { *x = WalletBalanceRecordInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WalletBalanceRecordInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*WalletBalanceRecordInfo) ProtoMessage() {} func (x *WalletBalanceRecordInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[190] 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 WalletBalanceRecordInfo.ProtoReflect.Descriptor instead. func (*WalletBalanceRecordInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{190} } func (x *WalletBalanceRecordInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *WalletBalanceRecordInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *WalletBalanceRecordInfo) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *WalletBalanceRecordInfo) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *WalletBalanceRecordInfo) GetBeforeBalance() int64 { if x != nil { return x.BeforeBalance } return 0 } func (x *WalletBalanceRecordInfo) GetAfterBalance() int64 { if x != nil { return x.AfterBalance } return 0 } func (x *WalletBalanceRecordInfo) GetOrderID() string { if x != nil { return x.OrderID } return "" } func (x *WalletBalanceRecordInfo) GetTransactionID() string { if x != nil { return x.TransactionID } return "" } func (x *WalletBalanceRecordInfo) GetRedPacketID() string { if x != nil { return x.RedPacketID } return "" } func (x *WalletBalanceRecordInfo) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *WalletBalanceRecordInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } // 获取用户钱包信息请求 type GetUserWalletReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID } func (x *GetUserWalletReq) Reset() { *x = GetUserWalletReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserWalletReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserWalletReq) ProtoMessage() {} func (x *GetUserWalletReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[191] 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 GetUserWalletReq.ProtoReflect.Descriptor instead. func (*GetUserWalletReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{191} } func (x *GetUserWalletReq) GetUserID() string { if x != nil { return x.UserID } return "" } // 获取用户钱包信息响应 type GetUserWalletResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Wallet *WalletInfo `protobuf:"bytes,1,opt,name=wallet,proto3" json:"wallet"` // 钱包信息 } func (x *GetUserWalletResp) Reset() { *x = GetUserWalletResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserWalletResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserWalletResp) ProtoMessage() {} func (x *GetUserWalletResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[192] 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 GetUserWalletResp.ProtoReflect.Descriptor instead. func (*GetUserWalletResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{192} } func (x *GetUserWalletResp) GetWallet() *WalletInfo { if x != nil { return x.Wallet } return nil } // 更新用户余额请求 type UpdateUserWalletBalanceReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount"` // 变动金额(单位:分,正数表示增加,负数表示减少) Type int32 `protobuf:"varint,3,opt,name=type,proto3" json:"type"` // 变动类型:6-后台充值,99-其他(后台操作) Remark string `protobuf:"bytes,4,opt,name=remark,proto3" json:"remark"` // 备注 OperationPassword string `protobuf:"bytes,5,opt,name=operationPassword,proto3" json:"operationPassword"` // 操作密码(超级管理员必须提供并验证) } func (x *UpdateUserWalletBalanceReq) Reset() { *x = UpdateUserWalletBalanceReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserWalletBalanceReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserWalletBalanceReq) ProtoMessage() {} func (x *UpdateUserWalletBalanceReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[193] 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 UpdateUserWalletBalanceReq.ProtoReflect.Descriptor instead. func (*UpdateUserWalletBalanceReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{193} } func (x *UpdateUserWalletBalanceReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *UpdateUserWalletBalanceReq) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *UpdateUserWalletBalanceReq) GetType() int32 { if x != nil { return x.Type } return 0 } func (x *UpdateUserWalletBalanceReq) GetRemark() string { if x != nil { return x.Remark } return "" } func (x *UpdateUserWalletBalanceReq) GetOperationPassword() string { if x != nil { return x.OperationPassword } return "" } // 更新用户余额响应 type UpdateUserWalletBalanceResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance"` // 更新后的余额(单位:分) } func (x *UpdateUserWalletBalanceResp) Reset() { *x = UpdateUserWalletBalanceResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserWalletBalanceResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserWalletBalanceResp) ProtoMessage() {} func (x *UpdateUserWalletBalanceResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[194] 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 UpdateUserWalletBalanceResp.ProtoReflect.Descriptor instead. func (*UpdateUserWalletBalanceResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{194} } func (x *UpdateUserWalletBalanceResp) GetBalance() int64 { if x != nil { return x.Balance } return 0 } // 获取用户余额变动记录列表请求 type GetUserWalletBalanceRecordsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetUserWalletBalanceRecordsReq) Reset() { *x = GetUserWalletBalanceRecordsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserWalletBalanceRecordsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserWalletBalanceRecordsReq) ProtoMessage() {} func (x *GetUserWalletBalanceRecordsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[195] 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 GetUserWalletBalanceRecordsReq.ProtoReflect.Descriptor instead. func (*GetUserWalletBalanceRecordsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{195} } func (x *GetUserWalletBalanceRecordsReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetUserWalletBalanceRecordsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 获取用户余额变动记录列表响应 type GetUserWalletBalanceRecordsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 List []*WalletBalanceRecordInfo `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` // 记录列表 } func (x *GetUserWalletBalanceRecordsResp) Reset() { *x = GetUserWalletBalanceRecordsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserWalletBalanceRecordsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserWalletBalanceRecordsResp) ProtoMessage() {} func (x *GetUserWalletBalanceRecordsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[196] 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 GetUserWalletBalanceRecordsResp.ProtoReflect.Descriptor instead. func (*GetUserWalletBalanceRecordsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{196} } func (x *GetUserWalletBalanceRecordsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetUserWalletBalanceRecordsResp) GetList() []*WalletBalanceRecordInfo { if x != nil { return x.List } return nil } // 修改用户支付密码请求 type UpdateUserPaymentPasswordReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID PaymentPassword string `protobuf:"bytes,2,opt,name=paymentPassword,proto3" json:"paymentPassword"` // 新的支付密码(需要加密后存储) } func (x *UpdateUserPaymentPasswordReq) Reset() { *x = UpdateUserPaymentPasswordReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserPaymentPasswordReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserPaymentPasswordReq) ProtoMessage() {} func (x *UpdateUserPaymentPasswordReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[197] 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 UpdateUserPaymentPasswordReq.ProtoReflect.Descriptor instead. func (*UpdateUserPaymentPasswordReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{197} } func (x *UpdateUserPaymentPasswordReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *UpdateUserPaymentPasswordReq) GetPaymentPassword() string { if x != nil { return x.PaymentPassword } return "" } // 修改用户支付密码响应 type UpdateUserPaymentPasswordResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateUserPaymentPasswordResp) Reset() { *x = UpdateUserPaymentPasswordResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateUserPaymentPasswordResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateUserPaymentPasswordResp) ProtoMessage() {} func (x *UpdateUserPaymentPasswordResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[198] 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 UpdateUserPaymentPasswordResp.ProtoReflect.Descriptor instead. func (*UpdateUserPaymentPasswordResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{198} } // 设置用户提款账号请求 type SetUserWithdrawAccountReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID WithdrawAccount string `protobuf:"bytes,2,opt,name=withdrawAccount,proto3" json:"withdrawAccount"` // 提款账号 } func (x *SetUserWithdrawAccountReq) Reset() { *x = SetUserWithdrawAccountReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetUserWithdrawAccountReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetUserWithdrawAccountReq) ProtoMessage() {} func (x *SetUserWithdrawAccountReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[199] 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 SetUserWithdrawAccountReq.ProtoReflect.Descriptor instead. func (*SetUserWithdrawAccountReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{199} } func (x *SetUserWithdrawAccountReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *SetUserWithdrawAccountReq) GetWithdrawAccount() string { if x != nil { return x.WithdrawAccount } return "" } // 设置用户提款账号响应 type SetUserWithdrawAccountResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *SetUserWithdrawAccountResp) Reset() { *x = SetUserWithdrawAccountResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SetUserWithdrawAccountResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*SetUserWithdrawAccountResp) ProtoMessage() {} func (x *SetUserWithdrawAccountResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[200] 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 SetUserWithdrawAccountResp.ProtoReflect.Descriptor instead. func (*SetUserWithdrawAccountResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{200} } // 批量更新用户余额请求 - 单个用户的操作项 type BatchUpdateUserItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID(选填,与 phoneNumber/account 至少提供一个) PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` // 手机号(选填) Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account"` // 账号(选填) Amount int64 `protobuf:"varint,4,opt,name=amount,proto3" json:"amount"` // 金额(分)(选填,如果不填则使用默认金额) Operation string `protobuf:"bytes,5,opt,name=operation,proto3" json:"operation"` // 操作类型(选填,如果不填则使用默认操作):set/add/subtract Remark string `protobuf:"bytes,6,opt,name=remark,proto3" json:"remark"` // 备注信息(选填) } func (x *BatchUpdateUserItem) Reset() { *x = BatchUpdateUserItem{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateUserItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateUserItem) ProtoMessage() {} func (x *BatchUpdateUserItem) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[201] 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 BatchUpdateUserItem.ProtoReflect.Descriptor instead. func (*BatchUpdateUserItem) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{201} } func (x *BatchUpdateUserItem) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *BatchUpdateUserItem) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *BatchUpdateUserItem) GetAccount() string { if x != nil { return x.Account } return "" } func (x *BatchUpdateUserItem) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *BatchUpdateUserItem) GetOperation() string { if x != nil { return x.Operation } return "" } func (x *BatchUpdateUserItem) GetRemark() string { if x != nil { return x.Remark } return "" } // 批量更新用户余额请求 type BatchUpdateWalletBalanceReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Users []*BatchUpdateUserItem `protobuf:"bytes,1,rep,name=users,proto3" json:"users"` // 用户列表(必填) Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount"` // 默认金额(分),用户未指定时使用此值 Operation string `protobuf:"bytes,3,opt,name=operation,proto3" json:"operation"` // 默认操作类型:set/add/subtract,默认为add OperationPassword string `protobuf:"bytes,4,opt,name=operationPassword,proto3" json:"operationPassword"` // 操作密码(超级管理员必须提供并验证) } func (x *BatchUpdateWalletBalanceReq) Reset() { *x = BatchUpdateWalletBalanceReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateWalletBalanceReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateWalletBalanceReq) ProtoMessage() {} func (x *BatchUpdateWalletBalanceReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[202] 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 BatchUpdateWalletBalanceReq.ProtoReflect.Descriptor instead. func (*BatchUpdateWalletBalanceReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{202} } func (x *BatchUpdateWalletBalanceReq) GetUsers() []*BatchUpdateUserItem { if x != nil { return x.Users } return nil } func (x *BatchUpdateWalletBalanceReq) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *BatchUpdateWalletBalanceReq) GetOperation() string { if x != nil { return x.Operation } return "" } func (x *BatchUpdateWalletBalanceReq) GetOperationPassword() string { if x != nil { return x.OperationPassword } return "" } // 批量更新用户余额响应 - 单个用户的结果 type BatchUpdateResultItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` // 手机号 Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account"` // 账号 Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success"` // 是否成功 Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message"` // 结果消息 OldBalance int64 `protobuf:"varint,6,opt,name=oldBalance,proto3" json:"oldBalance"` // 修改前余额(分) NewBalance int64 `protobuf:"varint,7,opt,name=newBalance,proto3" json:"newBalance"` // 修改后余额(分) Remark string `protobuf:"bytes,8,opt,name=remark,proto3" json:"remark"` // 备注信息 } func (x *BatchUpdateResultItem) Reset() { *x = BatchUpdateResultItem{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateResultItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateResultItem) ProtoMessage() {} func (x *BatchUpdateResultItem) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[203] 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 BatchUpdateResultItem.ProtoReflect.Descriptor instead. func (*BatchUpdateResultItem) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{203} } func (x *BatchUpdateResultItem) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *BatchUpdateResultItem) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *BatchUpdateResultItem) GetAccount() string { if x != nil { return x.Account } return "" } func (x *BatchUpdateResultItem) GetSuccess() bool { if x != nil { return x.Success } return false } func (x *BatchUpdateResultItem) GetMessage() string { if x != nil { return x.Message } return "" } func (x *BatchUpdateResultItem) GetOldBalance() int64 { if x != nil { return x.OldBalance } return 0 } func (x *BatchUpdateResultItem) GetNewBalance() int64 { if x != nil { return x.NewBalance } return 0 } func (x *BatchUpdateResultItem) GetRemark() string { if x != nil { return x.Remark } return "" } // 批量更新用户余额响应 type BatchUpdateWalletBalanceResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总处理数量 Success uint32 `protobuf:"varint,2,opt,name=success,proto3" json:"success"` // 成功数量 Failed uint32 `protobuf:"varint,3,opt,name=failed,proto3" json:"failed"` // 失败数量 Results []*BatchUpdateResultItem `protobuf:"bytes,4,rep,name=results,proto3" json:"results"` // 结果列表 } func (x *BatchUpdateWalletBalanceResp) Reset() { *x = BatchUpdateWalletBalanceResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BatchUpdateWalletBalanceResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*BatchUpdateWalletBalanceResp) ProtoMessage() {} func (x *BatchUpdateWalletBalanceResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[204] 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 BatchUpdateWalletBalanceResp.ProtoReflect.Descriptor instead. func (*BatchUpdateWalletBalanceResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{204} } func (x *BatchUpdateWalletBalanceResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *BatchUpdateWalletBalanceResp) GetSuccess() uint32 { if x != nil { return x.Success } return 0 } func (x *BatchUpdateWalletBalanceResp) GetFailed() uint32 { if x != nil { return x.Failed } return 0 } func (x *BatchUpdateWalletBalanceResp) GetResults() []*BatchUpdateResultItem { if x != nil { return x.Results } return nil } // 获取钱包列表请求 type GetWalletsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID(选填,支持精确查询) PhoneNumber string `protobuf:"bytes,2,opt,name=phoneNumber,proto3" json:"phoneNumber"` // 手机号(选填,支持模糊搜索) Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account"` // 账号(选填,支持模糊搜索) Pagination *sdkws.RequestPagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetWalletsReq) Reset() { *x = GetWalletsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletsReq) ProtoMessage() {} func (x *GetWalletsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[205] 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 GetWalletsReq.ProtoReflect.Descriptor instead. func (*GetWalletsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{205} } func (x *GetWalletsReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetWalletsReq) GetPhoneNumber() string { if x != nil { return x.PhoneNumber } return "" } func (x *GetWalletsReq) GetAccount() string { if x != nil { return x.Account } return "" } func (x *GetWalletsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 钱包列表项信息 type WalletListItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` // 用户昵称 FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` // 用户头像 Balance int64 `protobuf:"varint,4,opt,name=balance,proto3" json:"balance"` // 余额(分) CreateTime int64 `protobuf:"varint,5,opt,name=createTime,proto3" json:"createTime"` // 创建时间戳(毫秒) UpdateTime int64 `protobuf:"varint,6,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间戳(毫秒) } func (x *WalletListItemInfo) Reset() { *x = WalletListItemInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WalletListItemInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*WalletListItemInfo) ProtoMessage() {} func (x *WalletListItemInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[206] 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 WalletListItemInfo.ProtoReflect.Descriptor instead. func (*WalletListItemInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{206} } func (x *WalletListItemInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *WalletListItemInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *WalletListItemInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *WalletListItemInfo) GetBalance() int64 { if x != nil { return x.Balance } return 0 } func (x *WalletListItemInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *WalletListItemInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 获取钱包列表响应 type GetWalletsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 Wallets []*WalletListItemInfo `protobuf:"bytes,2,rep,name=wallets,proto3" json:"wallets"` // 钱包列表 } func (x *GetWalletsResp) Reset() { *x = GetWalletsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWalletsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWalletsResp) ProtoMessage() {} func (x *GetWalletsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[207] 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 GetWalletsResp.ProtoReflect.Descriptor instead. func (*GetWalletsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{207} } func (x *GetWalletsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetWalletsResp) GetWallets() []*WalletListItemInfo { if x != nil { return x.Wallets } return nil } // 提现记录信息 type WithdrawInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"` // 提现ID UserID string `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"` // 用户ID Amount int64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount"` // 提现金额(单位:分) WithdrawAccount string `protobuf:"bytes,4,opt,name=withdrawAccount,proto3" json:"withdrawAccount"` // 提现账号 Status int32 `protobuf:"varint,5,opt,name=status,proto3" json:"status"` // 审核状态:1-待审核,2-已通过,3-已拒绝 AuditorID string `protobuf:"bytes,6,opt,name=auditorID,proto3" json:"auditorID"` // 审核人ID(管理员ID) AuditTime int64 `protobuf:"varint,7,opt,name=auditTime,proto3" json:"auditTime"` // 审核时间(毫秒时间戳) AuditRemark string `protobuf:"bytes,8,opt,name=auditRemark,proto3" json:"auditRemark"` // 审核备注 Ip string `protobuf:"bytes,9,opt,name=ip,proto3" json:"ip"` // 提现IP DeviceID string `protobuf:"bytes,10,opt,name=deviceID,proto3" json:"deviceID"` // 设备ID Platform string `protobuf:"bytes,11,opt,name=platform,proto3" json:"platform"` // 平台(iOS、Android、Web等) DeviceModel string `protobuf:"bytes,12,opt,name=deviceModel,proto3" json:"deviceModel"` // 设备型号 DeviceBrand string `protobuf:"bytes,13,opt,name=deviceBrand,proto3" json:"deviceBrand"` // 设备品牌 OsVersion string `protobuf:"bytes,14,opt,name=osVersion,proto3" json:"osVersion"` // 操作系统版本 AppVersion string `protobuf:"bytes,15,opt,name=appVersion,proto3" json:"appVersion"` // 应用版本 CreateTime int64 `protobuf:"varint,16,opt,name=createTime,proto3" json:"createTime"` // 创建时间(毫秒时间戳) UpdateTime int64 `protobuf:"varint,17,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间(毫秒时间戳) RealNameAuth *RealNameAuthInfo `protobuf:"bytes,18,opt,name=realNameAuth,proto3" json:"realNameAuth"` // 用户实名认证信息 } func (x *WithdrawInfo) Reset() { *x = WithdrawInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WithdrawInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*WithdrawInfo) ProtoMessage() {} func (x *WithdrawInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[208] 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 WithdrawInfo.ProtoReflect.Descriptor instead. func (*WithdrawInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{208} } func (x *WithdrawInfo) GetId() string { if x != nil { return x.Id } return "" } func (x *WithdrawInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *WithdrawInfo) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *WithdrawInfo) GetWithdrawAccount() string { if x != nil { return x.WithdrawAccount } return "" } func (x *WithdrawInfo) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *WithdrawInfo) GetAuditorID() string { if x != nil { return x.AuditorID } return "" } func (x *WithdrawInfo) GetAuditTime() int64 { if x != nil { return x.AuditTime } return 0 } func (x *WithdrawInfo) GetAuditRemark() string { if x != nil { return x.AuditRemark } return "" } func (x *WithdrawInfo) GetIp() string { if x != nil { return x.Ip } return "" } func (x *WithdrawInfo) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *WithdrawInfo) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *WithdrawInfo) GetDeviceModel() string { if x != nil { return x.DeviceModel } return "" } func (x *WithdrawInfo) GetDeviceBrand() string { if x != nil { return x.DeviceBrand } return "" } func (x *WithdrawInfo) GetOsVersion() string { if x != nil { return x.OsVersion } return "" } func (x *WithdrawInfo) GetAppVersion() string { if x != nil { return x.AppVersion } return "" } func (x *WithdrawInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *WithdrawInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } func (x *WithdrawInfo) GetRealNameAuth() *RealNameAuthInfo { if x != nil { return x.RealNameAuth } return nil } // 创建提现记录请求 type CreateWithdrawReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID Amount int64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount"` // 提现金额(单位:分) WithdrawAccount string `protobuf:"bytes,3,opt,name=withdrawAccount,proto3" json:"withdrawAccount"` // 提现账号 Ip string `protobuf:"bytes,4,opt,name=ip,proto3" json:"ip"` // 提现IP DeviceID string `protobuf:"bytes,5,opt,name=deviceID,proto3" json:"deviceID"` // 设备ID Platform string `protobuf:"bytes,6,opt,name=platform,proto3" json:"platform"` // 平台 DeviceModel string `protobuf:"bytes,7,opt,name=deviceModel,proto3" json:"deviceModel"` // 设备型号 DeviceBrand string `protobuf:"bytes,8,opt,name=deviceBrand,proto3" json:"deviceBrand"` // 设备品牌 OsVersion string `protobuf:"bytes,9,opt,name=osVersion,proto3" json:"osVersion"` // 操作系统版本 AppVersion string `protobuf:"bytes,10,opt,name=appVersion,proto3" json:"appVersion"` // 应用版本 } func (x *CreateWithdrawReq) Reset() { *x = CreateWithdrawReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateWithdrawReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateWithdrawReq) ProtoMessage() {} func (x *CreateWithdrawReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[209] 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 CreateWithdrawReq.ProtoReflect.Descriptor instead. func (*CreateWithdrawReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{209} } func (x *CreateWithdrawReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *CreateWithdrawReq) GetAmount() int64 { if x != nil { return x.Amount } return 0 } func (x *CreateWithdrawReq) GetWithdrawAccount() string { if x != nil { return x.WithdrawAccount } return "" } func (x *CreateWithdrawReq) GetIp() string { if x != nil { return x.Ip } return "" } func (x *CreateWithdrawReq) GetDeviceID() string { if x != nil { return x.DeviceID } return "" } func (x *CreateWithdrawReq) GetPlatform() string { if x != nil { return x.Platform } return "" } func (x *CreateWithdrawReq) GetDeviceModel() string { if x != nil { return x.DeviceModel } return "" } func (x *CreateWithdrawReq) GetDeviceBrand() string { if x != nil { return x.DeviceBrand } return "" } func (x *CreateWithdrawReq) GetOsVersion() string { if x != nil { return x.OsVersion } return "" } func (x *CreateWithdrawReq) GetAppVersion() string { if x != nil { return x.AppVersion } return "" } // 创建提现记录响应 type CreateWithdrawResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WithdrawID string `protobuf:"bytes,1,opt,name=withdrawID,proto3" json:"withdrawID"` // 提现ID } func (x *CreateWithdrawResp) Reset() { *x = CreateWithdrawResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateWithdrawResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateWithdrawResp) ProtoMessage() {} func (x *CreateWithdrawResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[210] 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 CreateWithdrawResp.ProtoReflect.Descriptor instead. func (*CreateWithdrawResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{210} } func (x *CreateWithdrawResp) GetWithdrawID() string { if x != nil { return x.WithdrawID } return "" } // 获取提现记录详情请求 type GetWithdrawReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WithdrawID string `protobuf:"bytes,1,opt,name=withdrawID,proto3" json:"withdrawID"` // 提现ID } func (x *GetWithdrawReq) Reset() { *x = GetWithdrawReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWithdrawReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWithdrawReq) ProtoMessage() {} func (x *GetWithdrawReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[211] 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 GetWithdrawReq.ProtoReflect.Descriptor instead. func (*GetWithdrawReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{211} } func (x *GetWithdrawReq) GetWithdrawID() string { if x != nil { return x.WithdrawID } return "" } // 获取提现记录详情响应 type GetWithdrawResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Withdraw *WithdrawInfo `protobuf:"bytes,1,opt,name=withdraw,proto3" json:"withdraw"` // 提现记录信息 } func (x *GetWithdrawResp) Reset() { *x = GetWithdrawResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWithdrawResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWithdrawResp) ProtoMessage() {} func (x *GetWithdrawResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[212] 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 GetWithdrawResp.ProtoReflect.Descriptor instead. func (*GetWithdrawResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{212} } func (x *GetWithdrawResp) GetWithdraw() *WithdrawInfo { if x != nil { return x.Withdraw } return nil } // 获取用户的提现记录列表请求 type GetUserWithdrawsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetUserWithdrawsReq) Reset() { *x = GetUserWithdrawsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserWithdrawsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserWithdrawsReq) ProtoMessage() {} func (x *GetUserWithdrawsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[213] 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 GetUserWithdrawsReq.ProtoReflect.Descriptor instead. func (*GetUserWithdrawsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{213} } func (x *GetUserWithdrawsReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetUserWithdrawsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 获取用户的提现记录列表响应 type GetUserWithdrawsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 List []*WithdrawInfo `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` // 提现记录列表 } func (x *GetUserWithdrawsResp) Reset() { *x = GetUserWithdrawsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetUserWithdrawsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetUserWithdrawsResp) ProtoMessage() {} func (x *GetUserWithdrawsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[214] 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 GetUserWithdrawsResp.ProtoReflect.Descriptor instead. func (*GetUserWithdrawsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{214} } func (x *GetUserWithdrawsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetUserWithdrawsResp) GetList() []*WithdrawInfo { if x != nil { return x.List } return nil } // 获取提现记录列表请求(后台) type GetWithdrawsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status"` // 状态筛选(0表示全部) Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetWithdrawsReq) Reset() { *x = GetWithdrawsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWithdrawsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWithdrawsReq) ProtoMessage() {} func (x *GetWithdrawsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[215] 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 GetWithdrawsReq.ProtoReflect.Descriptor instead. func (*GetWithdrawsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{215} } func (x *GetWithdrawsReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *GetWithdrawsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 获取提现记录列表响应(后台) type GetWithdrawsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 List []*WithdrawInfo `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` // 提现记录列表 } func (x *GetWithdrawsResp) Reset() { *x = GetWithdrawsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetWithdrawsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetWithdrawsResp) ProtoMessage() {} func (x *GetWithdrawsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[216] 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 GetWithdrawsResp.ProtoReflect.Descriptor instead. func (*GetWithdrawsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{216} } func (x *GetWithdrawsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetWithdrawsResp) GetList() []*WithdrawInfo { if x != nil { return x.List } return nil } // 审核提现请求 type AuditWithdrawReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WithdrawIDs []string `protobuf:"bytes,1,rep,name=withdrawIDs,proto3" json:"withdrawIDs"` // 提现申请ID列表(支持批量审核) Status int32 `protobuf:"varint,2,opt,name=status,proto3" json:"status"` // 审核状态:2-已通过,3-已拒绝 AuditRemark string `protobuf:"bytes,3,opt,name=auditRemark,proto3" json:"auditRemark"` // 审核备注 } func (x *AuditWithdrawReq) Reset() { *x = AuditWithdrawReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[217] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AuditWithdrawReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuditWithdrawReq) ProtoMessage() {} func (x *AuditWithdrawReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[217] 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 AuditWithdrawReq.ProtoReflect.Descriptor instead. func (*AuditWithdrawReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{217} } func (x *AuditWithdrawReq) GetWithdrawIDs() []string { if x != nil { return x.WithdrawIDs } return nil } func (x *AuditWithdrawReq) GetStatus() int32 { if x != nil { return x.Status } return 0 } func (x *AuditWithdrawReq) GetAuditRemark() string { if x != nil { return x.AuditRemark } return "" } // 审核提现响应 type AuditWithdrawResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SuccessCount uint32 `protobuf:"varint,1,opt,name=successCount,proto3" json:"successCount"` // 成功审核的数量 FailCount uint32 `protobuf:"varint,2,opt,name=failCount,proto3" json:"failCount"` // 失败审核的数量 FailedIDs []string `protobuf:"bytes,3,rep,name=failedIDs,proto3" json:"failedIDs"` // 失败的提现申请ID列表 } func (x *AuditWithdrawResp) Reset() { *x = AuditWithdrawResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AuditWithdrawResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuditWithdrawResp) ProtoMessage() {} func (x *AuditWithdrawResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[218] 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 AuditWithdrawResp.ProtoReflect.Descriptor instead. func (*AuditWithdrawResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{218} } func (x *AuditWithdrawResp) GetSuccessCount() uint32 { if x != nil { return x.SuccessCount } return 0 } func (x *AuditWithdrawResp) GetFailCount() uint32 { if x != nil { return x.FailCount } return 0 } func (x *AuditWithdrawResp) GetFailedIDs() []string { if x != nil { return x.FailedIDs } return nil } // 获取实名认证列表请求 type GetRealNameAuthsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AuditStatus int32 `protobuf:"varint,1,opt,name=auditStatus,proto3" json:"auditStatus"` // 审核状态筛选(0-未审核,1-审核通过,2-审核拒绝,0表示全部) UserID string `protobuf:"bytes,3,opt,name=userID,proto3" json:"userID"` // 用户ID搜索(可选,为空时不过滤) Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"` // 分页信息 } func (x *GetRealNameAuthsReq) Reset() { *x = GetRealNameAuthsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[219] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetRealNameAuthsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRealNameAuthsReq) ProtoMessage() {} func (x *GetRealNameAuthsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[219] 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 GetRealNameAuthsReq.ProtoReflect.Descriptor instead. func (*GetRealNameAuthsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{219} } func (x *GetRealNameAuthsReq) GetAuditStatus() int32 { if x != nil { return x.AuditStatus } return 0 } func (x *GetRealNameAuthsReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *GetRealNameAuthsReq) GetPagination() *sdkws.RequestPagination { if x != nil { return x.Pagination } return nil } // 实名认证列表项信息 type RealNameAuthListItemInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname"` // 用户昵称 FaceURL string `protobuf:"bytes,3,opt,name=faceURL,proto3" json:"faceURL"` // 用户头像 IdCard string `protobuf:"bytes,4,opt,name=idCard,proto3" json:"idCard"` // 身份证号 Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name"` // 真实姓名 IdCardPhotoFront string `protobuf:"bytes,6,opt,name=idCardPhotoFront,proto3" json:"idCardPhotoFront"` // 身份证正面照片URL IdCardPhotoBack string `protobuf:"bytes,7,opt,name=idCardPhotoBack,proto3" json:"idCardPhotoBack"` // 身份证反面照片URL AuditStatus int32 `protobuf:"varint,8,opt,name=auditStatus,proto3" json:"auditStatus"` // 审核状态:0-未审核,1-审核通过,2-审核拒绝 CreateTime int64 `protobuf:"varint,9,opt,name=createTime,proto3" json:"createTime"` // 创建时间戳(毫秒) UpdateTime int64 `protobuf:"varint,10,opt,name=updateTime,proto3" json:"updateTime"` // 更新时间戳(毫秒) } func (x *RealNameAuthListItemInfo) Reset() { *x = RealNameAuthListItemInfo{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RealNameAuthListItemInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*RealNameAuthListItemInfo) ProtoMessage() {} func (x *RealNameAuthListItemInfo) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[220] 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 RealNameAuthListItemInfo.ProtoReflect.Descriptor instead. func (*RealNameAuthListItemInfo) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{220} } func (x *RealNameAuthListItemInfo) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *RealNameAuthListItemInfo) GetNickname() string { if x != nil { return x.Nickname } return "" } func (x *RealNameAuthListItemInfo) GetFaceURL() string { if x != nil { return x.FaceURL } return "" } func (x *RealNameAuthListItemInfo) GetIdCard() string { if x != nil { return x.IdCard } return "" } func (x *RealNameAuthListItemInfo) GetName() string { if x != nil { return x.Name } return "" } func (x *RealNameAuthListItemInfo) GetIdCardPhotoFront() string { if x != nil { return x.IdCardPhotoFront } return "" } func (x *RealNameAuthListItemInfo) GetIdCardPhotoBack() string { if x != nil { return x.IdCardPhotoBack } return "" } func (x *RealNameAuthListItemInfo) GetAuditStatus() int32 { if x != nil { return x.AuditStatus } return 0 } func (x *RealNameAuthListItemInfo) GetCreateTime() int64 { if x != nil { return x.CreateTime } return 0 } func (x *RealNameAuthListItemInfo) GetUpdateTime() int64 { if x != nil { return x.UpdateTime } return 0 } // 获取实名认证列表响应 type GetRealNameAuthsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Total uint32 `protobuf:"varint,1,opt,name=total,proto3" json:"total"` // 总数 List []*RealNameAuthListItemInfo `protobuf:"bytes,2,rep,name=list,proto3" json:"list"` // 实名认证列表 } func (x *GetRealNameAuthsResp) Reset() { *x = GetRealNameAuthsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetRealNameAuthsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetRealNameAuthsResp) ProtoMessage() {} func (x *GetRealNameAuthsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[221] 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 GetRealNameAuthsResp.ProtoReflect.Descriptor instead. func (*GetRealNameAuthsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{221} } func (x *GetRealNameAuthsResp) GetTotal() uint32 { if x != nil { return x.Total } return 0 } func (x *GetRealNameAuthsResp) GetList() []*RealNameAuthListItemInfo { if x != nil { return x.List } return nil } // 审核实名认证请求 type AuditRealNameAuthReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"` // 用户ID AuditStatus int32 `protobuf:"varint,2,opt,name=auditStatus,proto3" json:"auditStatus"` // 审核状态:1-审核通过,2-审核拒绝 AuditRemark string `protobuf:"bytes,3,opt,name=auditRemark,proto3" json:"auditRemark"` // 审核备注(可选) } func (x *AuditRealNameAuthReq) Reset() { *x = AuditRealNameAuthReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[222] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AuditRealNameAuthReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuditRealNameAuthReq) ProtoMessage() {} func (x *AuditRealNameAuthReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[222] 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 AuditRealNameAuthReq.ProtoReflect.Descriptor instead. func (*AuditRealNameAuthReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{222} } func (x *AuditRealNameAuthReq) GetUserID() string { if x != nil { return x.UserID } return "" } func (x *AuditRealNameAuthReq) GetAuditStatus() int32 { if x != nil { return x.AuditStatus } return 0 } func (x *AuditRealNameAuthReq) GetAuditRemark() string { if x != nil { return x.AuditRemark } return "" } // 审核实名认证响应 type AuditRealNameAuthResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AuditRealNameAuthResp) Reset() { *x = AuditRealNameAuthResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[223] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AuditRealNameAuthResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuditRealNameAuthResp) ProtoMessage() {} func (x *AuditRealNameAuthResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[223] 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 AuditRealNameAuthResp.ProtoReflect.Descriptor instead. func (*AuditRealNameAuthResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{223} } // 获取系统统计数据 type GetStatisticsReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetStatisticsReq) Reset() { *x = GetStatisticsReq{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetStatisticsReq) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetStatisticsReq) ProtoMessage() {} func (x *GetStatisticsReq) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[224] 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 GetStatisticsReq.ProtoReflect.Descriptor instead. func (*GetStatisticsReq) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{224} } type GetStatisticsResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TotalUsers int64 `protobuf:"varint,1,opt,name=totalUsers,proto3" json:"totalUsers"` // 用户总数 TodayRegisteredUsers int64 `protobuf:"varint,2,opt,name=todayRegisteredUsers,proto3" json:"todayRegisteredUsers"` // 今天注册的用户数 TodayActiveUsers int64 `protobuf:"varint,3,opt,name=todayActiveUsers,proto3" json:"todayActiveUsers"` // 今天活跃用户数(今天登录的用户数) TodayMessages int64 `protobuf:"varint,4,opt,name=todayMessages,proto3" json:"todayMessages"` // 今天发送消息总数 TotalMessages int64 `protobuf:"varint,5,opt,name=totalMessages,proto3" json:"totalMessages"` // 历史发送的消息总数 TotalGroups int64 `protobuf:"varint,6,opt,name=totalGroups,proto3" json:"totalGroups"` // 群聊总数 TotalFriends int64 `protobuf:"varint,7,opt,name=totalFriends,proto3" json:"totalFriends"` // 好友关系总数 OnlineUsers int64 `protobuf:"varint,8,opt,name=onlineUsers,proto3" json:"onlineUsers"` // 当前在线用户数 TodayNewGroups int64 `protobuf:"varint,9,opt,name=todayNewGroups,proto3" json:"todayNewGroups"` // 今天新建群聊数 } func (x *GetStatisticsResp) Reset() { *x = GetStatisticsResp{} if protoimpl.UnsafeEnabled { mi := &file_admin_admin_proto_msgTypes[225] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetStatisticsResp) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetStatisticsResp) ProtoMessage() {} func (x *GetStatisticsResp) ProtoReflect() protoreflect.Message { mi := &file_admin_admin_proto_msgTypes[225] 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 GetStatisticsResp.ProtoReflect.Descriptor instead. func (*GetStatisticsResp) Descriptor() ([]byte, []int) { return file_admin_admin_proto_rawDescGZIP(), []int{225} } func (x *GetStatisticsResp) GetTotalUsers() int64 { if x != nil { return x.TotalUsers } return 0 } func (x *GetStatisticsResp) GetTodayRegisteredUsers() int64 { if x != nil { return x.TodayRegisteredUsers } return 0 } func (x *GetStatisticsResp) GetTodayActiveUsers() int64 { if x != nil { return x.TodayActiveUsers } return 0 } func (x *GetStatisticsResp) GetTodayMessages() int64 { if x != nil { return x.TodayMessages } return 0 } func (x *GetStatisticsResp) GetTotalMessages() int64 { if x != nil { return x.TotalMessages } return 0 } func (x *GetStatisticsResp) GetTotalGroups() int64 { if x != nil { return x.TotalGroups } return 0 } func (x *GetStatisticsResp) GetTotalFriends() int64 { if x != nil { return x.TotalFriends } return 0 } func (x *GetStatisticsResp) GetOnlineUsers() int64 { if x != nil { return x.OnlineUsers } return 0 } func (x *GetStatisticsResp) GetTodayNewGroups() int64 { if x != nil { return x.TodayNewGroups } return 0 } var File_admin_admin_proto protoreflect.FileDescriptor var file_admin_admin_proto_rawDesc = []byte{ 0x0a, 0x11, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2f, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x70, 0x62, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x70, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x82, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x80, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbb, 0x03, 0x0a, 0x12, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x38, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x42, 0x0a, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x4a, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x63, 0x0a, 0x13, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x9f, 0x01, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3a, 0x0a, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x32, 0x0a, 0x14, 0x6e, 0x65, 0x77, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6e, 0x65, 0x77, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x22, 0x7c, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x68, 0x0a, 0x1a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2e, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x72, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x74, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x44, 0x0a, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x52, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0xa0, 0x02, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x53, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2f, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x16, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x22, 0x31, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x73, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x16, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x6b, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x30, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x15, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x72, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x0e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x4a, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x22, 0x2c, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x68, 0x61, 0x72, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x50, 0x0a, 0x16, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0xbc, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3e, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x22, 0xbc, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x76, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x6a, 0x0a, 0x1a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x49, 0x50, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x3a, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x50, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x50, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x0e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x68, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x22, 0x51, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x3c, 0x0a, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x25, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x70, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2b, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x40, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x19, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x45, 0x0a, 0x13, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x3e, 0x0a, 0x0c, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x0f, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x0e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x6f, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x02, 0x0a, 0x0d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x72, 0x65, 0x61, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x31, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x14, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x77, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x48, 0x0a, 0x15, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x44, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x27, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x25, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x72, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x12, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x15, 0x0a, 0x13, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x82, 0x02, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x0f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xaf, 0x04, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x44, 0x12, 0x30, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x2e, 0x0a, 0x03, 0x6d, 0x64, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d, 0x64, 0x35, 0x12, 0x2f, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0x0f, 0x0a, 0x0d, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x22, 0x4a, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x38, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x6c, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x10, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x44, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x28, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x29, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x9d, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x1a, 0x3c, 0x0a, 0x0e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe0, 0x01, 0x0a, 0x12, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x68, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x1b, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, 0x1c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb6, 0x01, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x68, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x68, 0x6f, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95, 0x03, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x68, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x68, 0x6f, 0x74, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x78, 0x0a, 0x19, 0x50, 0x61, 0x67, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x1a, 0x50, 0x61, 0x67, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9f, 0x02, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xcb, 0x02, 0x0a, 0x17, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x43, 0x68, 0x61, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6c, 0x6f, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf9, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x61, 0x0a, 0x19, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0xae, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x25, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x18, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x2e, 0x0a, 0x1a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x51, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x5b, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1f, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x30, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x46, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x1b, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x59, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x22, 0x5d, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x22, 0x5b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x5d, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x3d, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x8e, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x68, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x2e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x22, 0x57, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5d, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc5, 0x02, 0x0a, 0x11, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x63, 0x76, 0x49, 0x44, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x64, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x32, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x88, 0x02, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x41, 0x70, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x41, 0x70, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x41, 0x70, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x41, 0x70, 0x70, 0x22, 0x18, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x26, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x4d, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x59, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xfc, 0x02, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x41, 0x70, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x73, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x41, 0x70, 0x70, 0x22, 0x18, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x44, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x22, 0x4a, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x2b, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x22, 0x51, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x32, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xd4, 0x02, 0x0a, 0x0a, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x16, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x68, 0x61, 0x73, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x68, 0x61, 0x73, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd1, 0x02, 0x0a, 0x17, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x66, 0x74, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x66, 0x74, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x45, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x06, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x22, 0xa6, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x37, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x79, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x60, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x5d, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x22, 0xb7, 0x01, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xba, 0x01, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x12, 0x37, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xf7, 0x01, 0x0a, 0x15, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6f, 0x6c, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0xa5, 0x01, 0x0a, 0x1c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x12, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x07, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x22, 0xbc, 0x04, 0x0a, 0x0c, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x75, 0x64, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x22, 0xb7, 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x44, 0x22, 0x30, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x44, 0x22, 0x49, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x22, 0x6e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x58, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x6e, 0x0a, 0x10, 0x41, 0x75, 0x64, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x49, 0x44, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x73, 0x0a, 0x11, 0x41, 0x75, 0x64, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x44, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xcc, 0x02, 0x0a, 0x18, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x63, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x43, 0x61, 0x72, 0x64, 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x42, 0x61, 0x63, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x68, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x3a, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x72, 0x0a, 0x14, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x17, 0x0a, 0x15, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x22, 0xef, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x4e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x32, 0x9e, 0x4a, 0x0a, 0x05, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x38, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6e, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x12, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x49, 0x50, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x49, 0x50, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x09, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4a, 0x0a, 0x0b, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4a, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x44, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x71, 0x0a, 0x18, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x71, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x71, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x16, 0x50, 0x61, 0x67, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x74, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x74, 0x0a, 0x19, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x71, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x71, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x74, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x74, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x65, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6e, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x68, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x71, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x56, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x62, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6e, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x74, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5f, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x50, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6e, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x7a, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x2c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x71, 0x0a, 0x18, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x47, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x74, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6b, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5c, 0x0a, 0x11, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x75, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x12, 0x53, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x59, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x50, 0x0a, 0x0d, 0x41, 0x75, 0x64, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x12, 0x50, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x2e, 0x69, 0x6d, 0x61, 0x6c, 0x6c, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6d, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_admin_admin_proto_rawDescOnce sync.Once file_admin_admin_proto_rawDescData = file_admin_admin_proto_rawDesc ) func file_admin_admin_proto_rawDescGZIP() []byte { file_admin_admin_proto_rawDescOnce.Do(func() { file_admin_admin_proto_rawDescData = protoimpl.X.CompressGZIP(file_admin_admin_proto_rawDescData) }) return file_admin_admin_proto_rawDescData } var file_admin_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 230) var file_admin_admin_proto_goTypes = []interface{}{ (*LoginReq)(nil), // 0: openim.admin.LoginReq (*LoginResp)(nil), // 1: openim.admin.LoginResp (*AddAdminAccountReq)(nil), // 2: openim.admin.AddAdminAccountReq (*AddAdminAccountResp)(nil), // 3: openim.admin.AddAdminAccountResp (*AdminUpdateInfoReq)(nil), // 4: openim.admin.AdminUpdateInfoReq (*AdminUpdateInfoResp)(nil), // 5: openim.admin.AdminUpdateInfoResp (*ChangePasswordReq)(nil), // 6: openim.admin.ChangePasswordReq (*ChangePasswordResp)(nil), // 7: openim.admin.ChangePasswordResp (*GetAdminInfoReq)(nil), // 8: openim.admin.GetAdminInfoReq (*ChangeAdminPasswordReq)(nil), // 9: openim.admin.ChangeAdminPasswordReq (*ChangeAdminPasswordResp)(nil), // 10: openim.admin.ChangeAdminPasswordResp (*ChangeOperationPasswordReq)(nil), // 11: openim.admin.ChangeOperationPasswordReq (*ChangeOperationPasswordResp)(nil), // 12: openim.admin.ChangeOperationPasswordResp (*DelAdminAccountReq)(nil), // 13: openim.admin.DelAdminAccountReq (*DelAdminAccountResp)(nil), // 14: openim.admin.DelAdminAccountResp (*SearchAdminAccountReq)(nil), // 15: openim.admin.SearchAdminAccountReq (*SearchAdminAccountResp)(nil), // 16: openim.admin.SearchAdminAccountResp (*GetAdminInfoResp)(nil), // 17: openim.admin.GetAdminInfoResp (*SetGoogleAuthKeyReq)(nil), // 18: openim.admin.SetGoogleAuthKeyReq (*SetGoogleAuthKeyResp)(nil), // 19: openim.admin.SetGoogleAuthKeyResp (*AddDefaultFriendReq)(nil), // 20: openim.admin.AddDefaultFriendReq (*AddDefaultFriendResp)(nil), // 21: openim.admin.AddDefaultFriendResp (*DelDefaultFriendReq)(nil), // 22: openim.admin.DelDefaultFriendReq (*DelDefaultFriendResp)(nil), // 23: openim.admin.DelDefaultFriendResp (*FindDefaultFriendReq)(nil), // 24: openim.admin.FindDefaultFriendReq (*FindDefaultFriendResp)(nil), // 25: openim.admin.FindDefaultFriendResp (*SearchDefaultFriendReq)(nil), // 26: openim.admin.SearchDefaultFriendReq (*DefaultFriendAttribute)(nil), // 27: openim.admin.DefaultFriendAttribute (*SearchDefaultFriendResp)(nil), // 28: openim.admin.SearchDefaultFriendResp (*AddDefaultGroupReq)(nil), // 29: openim.admin.AddDefaultGroupReq (*AddDefaultGroupResp)(nil), // 30: openim.admin.AddDefaultGroupResp (*DelDefaultGroupReq)(nil), // 31: openim.admin.DelDefaultGroupReq (*DelDefaultGroupResp)(nil), // 32: openim.admin.DelDefaultGroupResp (*FindDefaultGroupReq)(nil), // 33: openim.admin.FindDefaultGroupReq (*FindDefaultGroupResp)(nil), // 34: openim.admin.FindDefaultGroupResp (*SearchDefaultGroupReq)(nil), // 35: openim.admin.SearchDefaultGroupReq (*GroupAttribute)(nil), // 36: openim.admin.GroupAttribute (*SearchDefaultGroupResp)(nil), // 37: openim.admin.SearchDefaultGroupResp (*AddInvitationCodeReq)(nil), // 38: openim.admin.AddInvitationCodeReq (*AddInvitationCodeResp)(nil), // 39: openim.admin.AddInvitationCodeResp (*GenInvitationCodeReq)(nil), // 40: openim.admin.GenInvitationCodeReq (*GenInvitationCodeResp)(nil), // 41: openim.admin.GenInvitationCodeResp (*FindInvitationCodeReq)(nil), // 42: openim.admin.FindInvitationCodeReq (*FindInvitationCodeResp)(nil), // 43: openim.admin.FindInvitationCodeResp (*UseInvitationCodeReq)(nil), // 44: openim.admin.UseInvitationCodeReq (*UseInvitationCodeResp)(nil), // 45: openim.admin.UseInvitationCodeResp (*DelInvitationCodeReq)(nil), // 46: openim.admin.DelInvitationCodeReq (*DelInvitationCodeResp)(nil), // 47: openim.admin.DelInvitationCodeResp (*InvitationRegister)(nil), // 48: openim.admin.InvitationRegister (*SearchInvitationCodeReq)(nil), // 49: openim.admin.SearchInvitationCodeReq (*SearchInvitationCodeResp)(nil), // 50: openim.admin.SearchInvitationCodeResp (*SearchUserIPLimitLoginReq)(nil), // 51: openim.admin.SearchUserIPLimitLoginReq (*LimitUserLoginIP)(nil), // 52: openim.admin.LimitUserLoginIP (*SearchUserIPLimitLoginResp)(nil), // 53: openim.admin.SearchUserIPLimitLoginResp (*UserIPLimitLogin)(nil), // 54: openim.admin.UserIPLimitLogin (*AddUserIPLimitLoginReq)(nil), // 55: openim.admin.AddUserIPLimitLoginReq (*AddUserIPLimitLoginResp)(nil), // 56: openim.admin.AddUserIPLimitLoginResp (*DelUserIPLimitLoginReq)(nil), // 57: openim.admin.DelUserIPLimitLoginReq (*DelUserIPLimitLoginResp)(nil), // 58: openim.admin.DelUserIPLimitLoginResp (*IPForbidden)(nil), // 59: openim.admin.IPForbidden (*IPForbiddenAdd)(nil), // 60: openim.admin.IPForbiddenAdd (*SearchIPForbiddenReq)(nil), // 61: openim.admin.SearchIPForbiddenReq (*SearchIPForbiddenResp)(nil), // 62: openim.admin.SearchIPForbiddenResp (*AddIPForbiddenReq)(nil), // 63: openim.admin.AddIPForbiddenReq (*AddIPForbiddenResp)(nil), // 64: openim.admin.AddIPForbiddenResp (*DelIPForbiddenReq)(nil), // 65: openim.admin.DelIPForbiddenReq (*DelIPForbiddenResp)(nil), // 66: openim.admin.DelIPForbiddenResp (*CheckRegisterForbiddenReq)(nil), // 67: openim.admin.CheckRegisterForbiddenReq (*CheckRegisterForbiddenResp)(nil), // 68: openim.admin.CheckRegisterForbiddenResp (*CheckLoginForbiddenReq)(nil), // 69: openim.admin.CheckLoginForbiddenReq (*CheckLoginForbiddenResp)(nil), // 70: openim.admin.CheckLoginForbiddenResp (*CancellationUserReq)(nil), // 71: openim.admin.CancellationUserReq (*CancellationUserResp)(nil), // 72: openim.admin.CancellationUserResp (*BlockUserReq)(nil), // 73: openim.admin.BlockUserReq (*BlockUserResp)(nil), // 74: openim.admin.BlockUserResp (*UnblockUserReq)(nil), // 75: openim.admin.UnblockUserReq (*UnblockUserResp)(nil), // 76: openim.admin.UnblockUserResp (*SearchBlockUserReq)(nil), // 77: openim.admin.SearchBlockUserReq (*BlockUserInfo)(nil), // 78: openim.admin.BlockUserInfo (*SearchBlockUserResp)(nil), // 79: openim.admin.SearchBlockUserResp (*FindUserBlockInfoReq)(nil), // 80: openim.admin.FindUserBlockInfoReq (*BlockInfo)(nil), // 81: openim.admin.BlockInfo (*FindUserBlockInfoResp)(nil), // 82: openim.admin.FindUserBlockInfoResp (*CreateTokenReq)(nil), // 83: openim.admin.CreateTokenReq (*CreateTokenResp)(nil), // 84: openim.admin.CreateTokenResp (*ParseTokenReq)(nil), // 85: openim.admin.ParseTokenReq (*ParseTokenResp)(nil), // 86: openim.admin.ParseTokenResp (*InvalidateTokenReq)(nil), // 87: openim.admin.InvalidateTokenReq (*InvalidateTokenResp)(nil), // 88: openim.admin.InvalidateTokenResp (*AddAppletReq)(nil), // 89: openim.admin.AddAppletReq (*AddAppletResp)(nil), // 90: openim.admin.AddAppletResp (*DelAppletReq)(nil), // 91: openim.admin.DelAppletReq (*DelAppletResp)(nil), // 92: openim.admin.DelAppletResp (*UpdateAppletReq)(nil), // 93: openim.admin.UpdateAppletReq (*UpdateAppletResp)(nil), // 94: openim.admin.UpdateAppletResp (*FindAppletReq)(nil), // 95: openim.admin.FindAppletReq (*FindAppletResp)(nil), // 96: openim.admin.FindAppletResp (*SearchAppletReq)(nil), // 97: openim.admin.SearchAppletReq (*SearchAppletResp)(nil), // 98: openim.admin.SearchAppletResp (*SetClientConfigReq)(nil), // 99: openim.admin.SetClientConfigReq (*SetClientConfigResp)(nil), // 100: openim.admin.SetClientConfigResp (*DelClientConfigReq)(nil), // 101: openim.admin.DelClientConfigReq (*DelClientConfigResp)(nil), // 102: openim.admin.DelClientConfigResp (*GetClientConfigReq)(nil), // 103: openim.admin.GetClientConfigReq (*GetClientConfigResp)(nil), // 104: openim.admin.GetClientConfigResp (*GetUserTokenReq)(nil), // 105: openim.admin.GetUserTokenReq (*GetUserTokenResp)(nil), // 106: openim.admin.GetUserTokenResp (*ApplicationVersion)(nil), // 107: openim.admin.ApplicationVersion (*LatestApplicationVersionReq)(nil), // 108: openim.admin.LatestApplicationVersionReq (*LatestApplicationVersionResp)(nil), // 109: openim.admin.LatestApplicationVersionResp (*AddApplicationVersionReq)(nil), // 110: openim.admin.AddApplicationVersionReq (*AddApplicationVersionResp)(nil), // 111: openim.admin.AddApplicationVersionResp (*UpdateApplicationVersionReq)(nil), // 112: openim.admin.UpdateApplicationVersionReq (*UpdateApplicationVersionResp)(nil), // 113: openim.admin.UpdateApplicationVersionResp (*DeleteApplicationVersionReq)(nil), // 114: openim.admin.DeleteApplicationVersionReq (*DeleteApplicationVersionResp)(nil), // 115: openim.admin.DeleteApplicationVersionResp (*PageApplicationVersionReq)(nil), // 116: openim.admin.PageApplicationVersionReq (*PageApplicationVersionResp)(nil), // 117: openim.admin.PageApplicationVersionResp (*SensitiveWordInfo)(nil), // 118: openim.admin.SensitiveWordInfo (*SensitiveWordGroupInfo)(nil), // 119: openim.admin.SensitiveWordGroupInfo (*SensitiveWordConfigInfo)(nil), // 120: openim.admin.SensitiveWordConfigInfo (*SensitiveWordLogInfo)(nil), // 121: openim.admin.SensitiveWordLogInfo (*SensitiveWordStatsInfo)(nil), // 122: openim.admin.SensitiveWordStatsInfo (*SensitiveWordLogStatsInfo)(nil), // 123: openim.admin.SensitiveWordLogStatsInfo (*AddSensitiveWordReq)(nil), // 124: openim.admin.AddSensitiveWordReq (*AddSensitiveWordResp)(nil), // 125: openim.admin.AddSensitiveWordResp (*UpdateSensitiveWordReq)(nil), // 126: openim.admin.UpdateSensitiveWordReq (*UpdateSensitiveWordResp)(nil), // 127: openim.admin.UpdateSensitiveWordResp (*DeleteSensitiveWordReq)(nil), // 128: openim.admin.DeleteSensitiveWordReq (*DeleteSensitiveWordResp)(nil), // 129: openim.admin.DeleteSensitiveWordResp (*GetSensitiveWordReq)(nil), // 130: openim.admin.GetSensitiveWordReq (*GetSensitiveWordResp)(nil), // 131: openim.admin.GetSensitiveWordResp (*SearchSensitiveWordsReq)(nil), // 132: openim.admin.SearchSensitiveWordsReq (*SearchSensitiveWordsResp)(nil), // 133: openim.admin.SearchSensitiveWordsResp (*BatchAddSensitiveWordsReq)(nil), // 134: openim.admin.BatchAddSensitiveWordsReq (*BatchAddSensitiveWordsResp)(nil), // 135: openim.admin.BatchAddSensitiveWordsResp (*BatchUpdateSensitiveWordsReq)(nil), // 136: openim.admin.BatchUpdateSensitiveWordsReq (*BatchUpdateSensitiveWordsResp)(nil), // 137: openim.admin.BatchUpdateSensitiveWordsResp (*BatchDeleteSensitiveWordsReq)(nil), // 138: openim.admin.BatchDeleteSensitiveWordsReq (*BatchDeleteSensitiveWordsResp)(nil), // 139: openim.admin.BatchDeleteSensitiveWordsResp (*AddSensitiveWordGroupReq)(nil), // 140: openim.admin.AddSensitiveWordGroupReq (*AddSensitiveWordGroupResp)(nil), // 141: openim.admin.AddSensitiveWordGroupResp (*UpdateSensitiveWordGroupReq)(nil), // 142: openim.admin.UpdateSensitiveWordGroupReq (*UpdateSensitiveWordGroupResp)(nil), // 143: openim.admin.UpdateSensitiveWordGroupResp (*DeleteSensitiveWordGroupReq)(nil), // 144: openim.admin.DeleteSensitiveWordGroupReq (*DeleteSensitiveWordGroupResp)(nil), // 145: openim.admin.DeleteSensitiveWordGroupResp (*GetSensitiveWordGroupReq)(nil), // 146: openim.admin.GetSensitiveWordGroupReq (*GetSensitiveWordGroupResp)(nil), // 147: openim.admin.GetSensitiveWordGroupResp (*GetAllSensitiveWordGroupsReq)(nil), // 148: openim.admin.GetAllSensitiveWordGroupsReq (*GetAllSensitiveWordGroupsResp)(nil), // 149: openim.admin.GetAllSensitiveWordGroupsResp (*GetSensitiveWordConfigReq)(nil), // 150: openim.admin.GetSensitiveWordConfigReq (*GetSensitiveWordConfigResp)(nil), // 151: openim.admin.GetSensitiveWordConfigResp (*UpdateSensitiveWordConfigReq)(nil), // 152: openim.admin.UpdateSensitiveWordConfigReq (*UpdateSensitiveWordConfigResp)(nil), // 153: openim.admin.UpdateSensitiveWordConfigResp (*GetSensitiveWordLogsReq)(nil), // 154: openim.admin.GetSensitiveWordLogsReq (*GetSensitiveWordLogsResp)(nil), // 155: openim.admin.GetSensitiveWordLogsResp (*UserLoginRecordInfo)(nil), // 156: openim.admin.UserLoginRecordInfo (*GetUserLoginRecordsReq)(nil), // 157: openim.admin.GetUserLoginRecordsReq (*GetUserLoginRecordsResp)(nil), // 158: openim.admin.GetUserLoginRecordsResp (*DeleteSensitiveWordLogsReq)(nil), // 159: openim.admin.DeleteSensitiveWordLogsReq (*DeleteSensitiveWordLogsResp)(nil), // 160: openim.admin.DeleteSensitiveWordLogsResp (*GetSensitiveWordStatsReq)(nil), // 161: openim.admin.GetSensitiveWordStatsReq (*GetSensitiveWordStatsResp)(nil), // 162: openim.admin.GetSensitiveWordStatsResp (*GetSensitiveWordLogStatsReq)(nil), // 163: openim.admin.GetSensitiveWordLogStatsReq (*GetSensitiveWordLogStatsResp)(nil), // 164: openim.admin.GetSensitiveWordLogStatsResp (*GetScheduledTasksReq)(nil), // 165: openim.admin.GetScheduledTasksReq (*ScheduledTaskMessage)(nil), // 166: openim.admin.ScheduledTaskMessage (*ScheduledTaskInfo)(nil), // 167: openim.admin.ScheduledTaskInfo (*GetScheduledTasksResp)(nil), // 168: openim.admin.GetScheduledTasksResp (*DeleteScheduledTaskReq)(nil), // 169: openim.admin.DeleteScheduledTaskReq (*DeleteScheduledTaskResp)(nil), // 170: openim.admin.DeleteScheduledTaskResp (*SystemConfigInfo)(nil), // 171: openim.admin.SystemConfigInfo (*CreateSystemConfigReq)(nil), // 172: openim.admin.CreateSystemConfigReq (*CreateSystemConfigResp)(nil), // 173: openim.admin.CreateSystemConfigResp (*GetSystemConfigReq)(nil), // 174: openim.admin.GetSystemConfigReq (*GetSystemConfigResp)(nil), // 175: openim.admin.GetSystemConfigResp (*GetAllSystemConfigsReq)(nil), // 176: openim.admin.GetAllSystemConfigsReq (*GetAllSystemConfigsResp)(nil), // 177: openim.admin.GetAllSystemConfigsResp (*UpdateSystemConfigReq)(nil), // 178: openim.admin.UpdateSystemConfigReq (*UpdateSystemConfigResp)(nil), // 179: openim.admin.UpdateSystemConfigResp (*UpdateSystemConfigValueReq)(nil), // 180: openim.admin.UpdateSystemConfigValueReq (*UpdateSystemConfigValueResp)(nil), // 181: openim.admin.UpdateSystemConfigValueResp (*UpdateSystemConfigEnabledReq)(nil), // 182: openim.admin.UpdateSystemConfigEnabledReq (*UpdateSystemConfigEnabledResp)(nil), // 183: openim.admin.UpdateSystemConfigEnabledResp (*DeleteSystemConfigReq)(nil), // 184: openim.admin.DeleteSystemConfigReq (*DeleteSystemConfigResp)(nil), // 185: openim.admin.DeleteSystemConfigResp (*GetEnabledSystemConfigsReq)(nil), // 186: openim.admin.GetEnabledSystemConfigsReq (*GetEnabledSystemConfigsResp)(nil), // 187: openim.admin.GetEnabledSystemConfigsResp (*RealNameAuthInfo)(nil), // 188: openim.admin.RealNameAuthInfo (*WalletInfo)(nil), // 189: openim.admin.WalletInfo (*WalletBalanceRecordInfo)(nil), // 190: openim.admin.WalletBalanceRecordInfo (*GetUserWalletReq)(nil), // 191: openim.admin.GetUserWalletReq (*GetUserWalletResp)(nil), // 192: openim.admin.GetUserWalletResp (*UpdateUserWalletBalanceReq)(nil), // 193: openim.admin.UpdateUserWalletBalanceReq (*UpdateUserWalletBalanceResp)(nil), // 194: openim.admin.UpdateUserWalletBalanceResp (*GetUserWalletBalanceRecordsReq)(nil), // 195: openim.admin.GetUserWalletBalanceRecordsReq (*GetUserWalletBalanceRecordsResp)(nil), // 196: openim.admin.GetUserWalletBalanceRecordsResp (*UpdateUserPaymentPasswordReq)(nil), // 197: openim.admin.UpdateUserPaymentPasswordReq (*UpdateUserPaymentPasswordResp)(nil), // 198: openim.admin.UpdateUserPaymentPasswordResp (*SetUserWithdrawAccountReq)(nil), // 199: openim.admin.SetUserWithdrawAccountReq (*SetUserWithdrawAccountResp)(nil), // 200: openim.admin.SetUserWithdrawAccountResp (*BatchUpdateUserItem)(nil), // 201: openim.admin.BatchUpdateUserItem (*BatchUpdateWalletBalanceReq)(nil), // 202: openim.admin.BatchUpdateWalletBalanceReq (*BatchUpdateResultItem)(nil), // 203: openim.admin.BatchUpdateResultItem (*BatchUpdateWalletBalanceResp)(nil), // 204: openim.admin.BatchUpdateWalletBalanceResp (*GetWalletsReq)(nil), // 205: openim.admin.GetWalletsReq (*WalletListItemInfo)(nil), // 206: openim.admin.WalletListItemInfo (*GetWalletsResp)(nil), // 207: openim.admin.GetWalletsResp (*WithdrawInfo)(nil), // 208: openim.admin.WithdrawInfo (*CreateWithdrawReq)(nil), // 209: openim.admin.CreateWithdrawReq (*CreateWithdrawResp)(nil), // 210: openim.admin.CreateWithdrawResp (*GetWithdrawReq)(nil), // 211: openim.admin.GetWithdrawReq (*GetWithdrawResp)(nil), // 212: openim.admin.GetWithdrawResp (*GetUserWithdrawsReq)(nil), // 213: openim.admin.GetUserWithdrawsReq (*GetUserWithdrawsResp)(nil), // 214: openim.admin.GetUserWithdrawsResp (*GetWithdrawsReq)(nil), // 215: openim.admin.GetWithdrawsReq (*GetWithdrawsResp)(nil), // 216: openim.admin.GetWithdrawsResp (*AuditWithdrawReq)(nil), // 217: openim.admin.AuditWithdrawReq (*AuditWithdrawResp)(nil), // 218: openim.admin.AuditWithdrawResp (*GetRealNameAuthsReq)(nil), // 219: openim.admin.GetRealNameAuthsReq (*RealNameAuthListItemInfo)(nil), // 220: openim.admin.RealNameAuthListItemInfo (*GetRealNameAuthsResp)(nil), // 221: openim.admin.GetRealNameAuthsResp (*AuditRealNameAuthReq)(nil), // 222: openim.admin.AuditRealNameAuthReq (*AuditRealNameAuthResp)(nil), // 223: openim.admin.AuditRealNameAuthResp (*GetStatisticsReq)(nil), // 224: openim.admin.GetStatisticsReq (*GetStatisticsResp)(nil), // 225: openim.admin.GetStatisticsResp nil, // 226: openim.admin.SetClientConfigReq.ConfigEntry nil, // 227: openim.admin.GetClientConfigResp.ConfigEntry nil, // 228: openim.admin.GetUserTokenResp.TokensMapEntry nil, // 229: openim.admin.BatchUpdateSensitiveWordsReq.UpdatesEntry (*wrapperspb.StringValue)(nil), // 230: openim.protobuf.StringValue (*wrapperspb.Int32Value)(nil), // 231: openim.protobuf.Int32Value (*sdkws.RequestPagination)(nil), // 232: openim.sdkws.RequestPagination (*common.UserPublicInfo)(nil), // 233: openim.chat.common.UserPublicInfo (*sdkws.GroupInfo)(nil), // 234: openim.sdkws.GroupInfo (*wrapperspb.Int64Value)(nil), // 235: openim.protobuf.Int64Value (*wrapperspb.UInt32Value)(nil), // 236: openim.protobuf.UInt32Value (*common.AppletInfo)(nil), // 237: openim.chat.common.AppletInfo (*wrapperspb.BoolValue)(nil), // 238: openim.protobuf.BoolValue } var file_admin_admin_proto_depIdxs = []int32{ 230, // 0: openim.admin.AdminUpdateInfoReq.account:type_name -> openim.protobuf.StringValue 230, // 1: openim.admin.AdminUpdateInfoReq.password:type_name -> openim.protobuf.StringValue 230, // 2: openim.admin.AdminUpdateInfoReq.faceURL:type_name -> openim.protobuf.StringValue 230, // 3: openim.admin.AdminUpdateInfoReq.nickname:type_name -> openim.protobuf.StringValue 231, // 4: openim.admin.AdminUpdateInfoReq.level:type_name -> openim.protobuf.Int32Value 230, // 5: openim.admin.AdminUpdateInfoReq.googleAuthKey:type_name -> openim.protobuf.StringValue 230, // 6: openim.admin.AdminUpdateInfoReq.operationPassword:type_name -> openim.protobuf.StringValue 232, // 7: openim.admin.SearchAdminAccountReq.pagination:type_name -> openim.sdkws.RequestPagination 17, // 8: openim.admin.SearchAdminAccountResp.adminAccounts:type_name -> openim.admin.GetAdminInfoResp 232, // 9: openim.admin.SearchDefaultFriendReq.pagination:type_name -> openim.sdkws.RequestPagination 233, // 10: openim.admin.DefaultFriendAttribute.user:type_name -> openim.chat.common.UserPublicInfo 27, // 11: openim.admin.SearchDefaultFriendResp.users:type_name -> openim.admin.DefaultFriendAttribute 232, // 12: openim.admin.SearchDefaultGroupReq.pagination:type_name -> openim.sdkws.RequestPagination 234, // 13: openim.admin.GroupAttribute.group:type_name -> openim.sdkws.GroupInfo 48, // 14: openim.admin.FindInvitationCodeResp.codes:type_name -> openim.admin.InvitationRegister 233, // 15: openim.admin.InvitationRegister.usedUser:type_name -> openim.chat.common.UserPublicInfo 232, // 16: openim.admin.SearchInvitationCodeReq.pagination:type_name -> openim.sdkws.RequestPagination 48, // 17: openim.admin.SearchInvitationCodeResp.list:type_name -> openim.admin.InvitationRegister 232, // 18: openim.admin.SearchUserIPLimitLoginReq.pagination:type_name -> openim.sdkws.RequestPagination 233, // 19: openim.admin.LimitUserLoginIP.user:type_name -> openim.chat.common.UserPublicInfo 52, // 20: openim.admin.SearchUserIPLimitLoginResp.limits:type_name -> openim.admin.LimitUserLoginIP 54, // 21: openim.admin.AddUserIPLimitLoginReq.limits:type_name -> openim.admin.UserIPLimitLogin 54, // 22: openim.admin.DelUserIPLimitLoginReq.limits:type_name -> openim.admin.UserIPLimitLogin 232, // 23: openim.admin.SearchIPForbiddenReq.pagination:type_name -> openim.sdkws.RequestPagination 59, // 24: openim.admin.SearchIPForbiddenResp.forbiddens:type_name -> openim.admin.IPForbidden 60, // 25: openim.admin.AddIPForbiddenReq.forbiddens:type_name -> openim.admin.IPForbiddenAdd 232, // 26: openim.admin.SearchBlockUserReq.pagination:type_name -> openim.sdkws.RequestPagination 78, // 27: openim.admin.SearchBlockUserResp.users:type_name -> openim.admin.BlockUserInfo 81, // 28: openim.admin.FindUserBlockInfoResp.blocks:type_name -> openim.admin.BlockInfo 230, // 29: openim.admin.UpdateAppletReq.name:type_name -> openim.protobuf.StringValue 230, // 30: openim.admin.UpdateAppletReq.appID:type_name -> openim.protobuf.StringValue 230, // 31: openim.admin.UpdateAppletReq.icon:type_name -> openim.protobuf.StringValue 230, // 32: openim.admin.UpdateAppletReq.url:type_name -> openim.protobuf.StringValue 230, // 33: openim.admin.UpdateAppletReq.md5:type_name -> openim.protobuf.StringValue 235, // 34: openim.admin.UpdateAppletReq.size:type_name -> openim.protobuf.Int64Value 230, // 35: openim.admin.UpdateAppletReq.version:type_name -> openim.protobuf.StringValue 236, // 36: openim.admin.UpdateAppletReq.priority:type_name -> openim.protobuf.UInt32Value 236, // 37: openim.admin.UpdateAppletReq.status:type_name -> openim.protobuf.UInt32Value 235, // 38: openim.admin.UpdateAppletReq.createTime:type_name -> openim.protobuf.Int64Value 237, // 39: openim.admin.FindAppletResp.applets:type_name -> openim.chat.common.AppletInfo 232, // 40: openim.admin.SearchAppletReq.pagination:type_name -> openim.sdkws.RequestPagination 237, // 41: openim.admin.SearchAppletResp.applets:type_name -> openim.chat.common.AppletInfo 226, // 42: openim.admin.SetClientConfigReq.config:type_name -> openim.admin.SetClientConfigReq.ConfigEntry 227, // 43: openim.admin.GetClientConfigResp.config:type_name -> openim.admin.GetClientConfigResp.ConfigEntry 228, // 44: openim.admin.GetUserTokenResp.tokensMap:type_name -> openim.admin.GetUserTokenResp.TokensMapEntry 107, // 45: openim.admin.LatestApplicationVersionResp.version:type_name -> openim.admin.ApplicationVersion 230, // 46: openim.admin.UpdateApplicationVersionReq.platform:type_name -> openim.protobuf.StringValue 230, // 47: openim.admin.UpdateApplicationVersionReq.version:type_name -> openim.protobuf.StringValue 230, // 48: openim.admin.UpdateApplicationVersionReq.url:type_name -> openim.protobuf.StringValue 230, // 49: openim.admin.UpdateApplicationVersionReq.text:type_name -> openim.protobuf.StringValue 238, // 50: openim.admin.UpdateApplicationVersionReq.force:type_name -> openim.protobuf.BoolValue 238, // 51: openim.admin.UpdateApplicationVersionReq.latest:type_name -> openim.protobuf.BoolValue 238, // 52: openim.admin.UpdateApplicationVersionReq.hot:type_name -> openim.protobuf.BoolValue 232, // 53: openim.admin.PageApplicationVersionReq.pagination:type_name -> openim.sdkws.RequestPagination 107, // 54: openim.admin.PageApplicationVersionResp.versions:type_name -> openim.admin.ApplicationVersion 118, // 55: openim.admin.GetSensitiveWordResp.word:type_name -> openim.admin.SensitiveWordInfo 232, // 56: openim.admin.SearchSensitiveWordsReq.pagination:type_name -> openim.sdkws.RequestPagination 118, // 57: openim.admin.SearchSensitiveWordsResp.words:type_name -> openim.admin.SensitiveWordInfo 118, // 58: openim.admin.BatchAddSensitiveWordsReq.words:type_name -> openim.admin.SensitiveWordInfo 229, // 59: openim.admin.BatchUpdateSensitiveWordsReq.updates:type_name -> openim.admin.BatchUpdateSensitiveWordsReq.UpdatesEntry 119, // 60: openim.admin.GetSensitiveWordGroupResp.group:type_name -> openim.admin.SensitiveWordGroupInfo 119, // 61: openim.admin.GetAllSensitiveWordGroupsResp.groups:type_name -> openim.admin.SensitiveWordGroupInfo 120, // 62: openim.admin.GetSensitiveWordConfigResp.config:type_name -> openim.admin.SensitiveWordConfigInfo 120, // 63: openim.admin.UpdateSensitiveWordConfigReq.config:type_name -> openim.admin.SensitiveWordConfigInfo 232, // 64: openim.admin.GetSensitiveWordLogsReq.pagination:type_name -> openim.sdkws.RequestPagination 121, // 65: openim.admin.GetSensitiveWordLogsResp.logs:type_name -> openim.admin.SensitiveWordLogInfo 232, // 66: openim.admin.GetUserLoginRecordsReq.pagination:type_name -> openim.sdkws.RequestPagination 156, // 67: openim.admin.GetUserLoginRecordsResp.records:type_name -> openim.admin.UserLoginRecordInfo 122, // 68: openim.admin.GetSensitiveWordStatsResp.stats:type_name -> openim.admin.SensitiveWordStatsInfo 123, // 69: openim.admin.GetSensitiveWordLogStatsResp.stats:type_name -> openim.admin.SensitiveWordLogStatsInfo 232, // 70: openim.admin.GetScheduledTasksReq.pagination:type_name -> openim.sdkws.RequestPagination 166, // 71: openim.admin.ScheduledTaskInfo.messages:type_name -> openim.admin.ScheduledTaskMessage 167, // 72: openim.admin.GetScheduledTasksResp.tasks:type_name -> openim.admin.ScheduledTaskInfo 171, // 73: openim.admin.GetSystemConfigResp.config:type_name -> openim.admin.SystemConfigInfo 232, // 74: openim.admin.GetAllSystemConfigsReq.pagination:type_name -> openim.sdkws.RequestPagination 171, // 75: openim.admin.GetAllSystemConfigsResp.list:type_name -> openim.admin.SystemConfigInfo 230, // 76: openim.admin.UpdateSystemConfigReq.title:type_name -> openim.protobuf.StringValue 230, // 77: openim.admin.UpdateSystemConfigReq.value:type_name -> openim.protobuf.StringValue 231, // 78: openim.admin.UpdateSystemConfigReq.valueType:type_name -> openim.protobuf.Int32Value 230, // 79: openim.admin.UpdateSystemConfigReq.description:type_name -> openim.protobuf.StringValue 238, // 80: openim.admin.UpdateSystemConfigReq.enabled:type_name -> openim.protobuf.BoolValue 238, // 81: openim.admin.UpdateSystemConfigReq.showInApp:type_name -> openim.protobuf.BoolValue 171, // 82: openim.admin.GetEnabledSystemConfigsResp.list:type_name -> openim.admin.SystemConfigInfo 188, // 83: openim.admin.WalletInfo.realNameAuth:type_name -> openim.admin.RealNameAuthInfo 189, // 84: openim.admin.GetUserWalletResp.wallet:type_name -> openim.admin.WalletInfo 232, // 85: openim.admin.GetUserWalletBalanceRecordsReq.pagination:type_name -> openim.sdkws.RequestPagination 190, // 86: openim.admin.GetUserWalletBalanceRecordsResp.list:type_name -> openim.admin.WalletBalanceRecordInfo 201, // 87: openim.admin.BatchUpdateWalletBalanceReq.users:type_name -> openim.admin.BatchUpdateUserItem 203, // 88: openim.admin.BatchUpdateWalletBalanceResp.results:type_name -> openim.admin.BatchUpdateResultItem 232, // 89: openim.admin.GetWalletsReq.pagination:type_name -> openim.sdkws.RequestPagination 206, // 90: openim.admin.GetWalletsResp.wallets:type_name -> openim.admin.WalletListItemInfo 188, // 91: openim.admin.WithdrawInfo.realNameAuth:type_name -> openim.admin.RealNameAuthInfo 208, // 92: openim.admin.GetWithdrawResp.withdraw:type_name -> openim.admin.WithdrawInfo 232, // 93: openim.admin.GetUserWithdrawsReq.pagination:type_name -> openim.sdkws.RequestPagination 208, // 94: openim.admin.GetUserWithdrawsResp.list:type_name -> openim.admin.WithdrawInfo 232, // 95: openim.admin.GetWithdrawsReq.pagination:type_name -> openim.sdkws.RequestPagination 208, // 96: openim.admin.GetWithdrawsResp.list:type_name -> openim.admin.WithdrawInfo 232, // 97: openim.admin.GetRealNameAuthsReq.pagination:type_name -> openim.sdkws.RequestPagination 220, // 98: openim.admin.GetRealNameAuthsResp.list:type_name -> openim.admin.RealNameAuthListItemInfo 118, // 99: openim.admin.BatchUpdateSensitiveWordsReq.UpdatesEntry.value:type_name -> openim.admin.SensitiveWordInfo 0, // 100: openim.admin.admin.Login:input_type -> openim.admin.LoginReq 6, // 101: openim.admin.admin.ChangePassword:input_type -> openim.admin.ChangePasswordReq 4, // 102: openim.admin.admin.AdminUpdateInfo:input_type -> openim.admin.AdminUpdateInfoReq 8, // 103: openim.admin.admin.GetAdminInfo:input_type -> openim.admin.GetAdminInfoReq 2, // 104: openim.admin.admin.AddAdminAccount:input_type -> openim.admin.AddAdminAccountReq 9, // 105: openim.admin.admin.ChangeAdminPassword:input_type -> openim.admin.ChangeAdminPasswordReq 11, // 106: openim.admin.admin.ChangeOperationPassword:input_type -> openim.admin.ChangeOperationPasswordReq 18, // 107: openim.admin.admin.SetGoogleAuthKey:input_type -> openim.admin.SetGoogleAuthKeyReq 13, // 108: openim.admin.admin.DelAdminAccount:input_type -> openim.admin.DelAdminAccountReq 15, // 109: openim.admin.admin.SearchAdminAccount:input_type -> openim.admin.SearchAdminAccountReq 20, // 110: openim.admin.admin.AddDefaultFriend:input_type -> openim.admin.AddDefaultFriendReq 22, // 111: openim.admin.admin.DelDefaultFriend:input_type -> openim.admin.DelDefaultFriendReq 24, // 112: openim.admin.admin.FindDefaultFriend:input_type -> openim.admin.FindDefaultFriendReq 26, // 113: openim.admin.admin.SearchDefaultFriend:input_type -> openim.admin.SearchDefaultFriendReq 29, // 114: openim.admin.admin.AddDefaultGroup:input_type -> openim.admin.AddDefaultGroupReq 31, // 115: openim.admin.admin.DelDefaultGroup:input_type -> openim.admin.DelDefaultGroupReq 33, // 116: openim.admin.admin.FindDefaultGroup:input_type -> openim.admin.FindDefaultGroupReq 35, // 117: openim.admin.admin.SearchDefaultGroup:input_type -> openim.admin.SearchDefaultGroupReq 38, // 118: openim.admin.admin.AddInvitationCode:input_type -> openim.admin.AddInvitationCodeReq 40, // 119: openim.admin.admin.GenInvitationCode:input_type -> openim.admin.GenInvitationCodeReq 42, // 120: openim.admin.admin.FindInvitationCode:input_type -> openim.admin.FindInvitationCodeReq 44, // 121: openim.admin.admin.UseInvitationCode:input_type -> openim.admin.UseInvitationCodeReq 46, // 122: openim.admin.admin.DelInvitationCode:input_type -> openim.admin.DelInvitationCodeReq 49, // 123: openim.admin.admin.SearchInvitationCode:input_type -> openim.admin.SearchInvitationCodeReq 51, // 124: openim.admin.admin.SearchUserIPLimitLogin:input_type -> openim.admin.SearchUserIPLimitLoginReq 55, // 125: openim.admin.admin.AddUserIPLimitLogin:input_type -> openim.admin.AddUserIPLimitLoginReq 57, // 126: openim.admin.admin.DelUserIPLimitLogin:input_type -> openim.admin.DelUserIPLimitLoginReq 61, // 127: openim.admin.admin.SearchIPForbidden:input_type -> openim.admin.SearchIPForbiddenReq 63, // 128: openim.admin.admin.AddIPForbidden:input_type -> openim.admin.AddIPForbiddenReq 65, // 129: openim.admin.admin.DelIPForbidden:input_type -> openim.admin.DelIPForbiddenReq 71, // 130: openim.admin.admin.CancellationUser:input_type -> openim.admin.CancellationUserReq 73, // 131: openim.admin.admin.BlockUser:input_type -> openim.admin.BlockUserReq 75, // 132: openim.admin.admin.UnblockUser:input_type -> openim.admin.UnblockUserReq 77, // 133: openim.admin.admin.SearchBlockUser:input_type -> openim.admin.SearchBlockUserReq 80, // 134: openim.admin.admin.FindUserBlockInfo:input_type -> openim.admin.FindUserBlockInfoReq 67, // 135: openim.admin.admin.CheckRegisterForbidden:input_type -> openim.admin.CheckRegisterForbiddenReq 69, // 136: openim.admin.admin.CheckLoginForbidden:input_type -> openim.admin.CheckLoginForbiddenReq 83, // 137: openim.admin.admin.CreateToken:input_type -> openim.admin.CreateTokenReq 85, // 138: openim.admin.admin.ParseToken:input_type -> openim.admin.ParseTokenReq 89, // 139: openim.admin.admin.AddApplet:input_type -> openim.admin.AddAppletReq 91, // 140: openim.admin.admin.DelApplet:input_type -> openim.admin.DelAppletReq 93, // 141: openim.admin.admin.UpdateApplet:input_type -> openim.admin.UpdateAppletReq 95, // 142: openim.admin.admin.FindApplet:input_type -> openim.admin.FindAppletReq 97, // 143: openim.admin.admin.SearchApplet:input_type -> openim.admin.SearchAppletReq 103, // 144: openim.admin.admin.GetClientConfig:input_type -> openim.admin.GetClientConfigReq 99, // 145: openim.admin.admin.SetClientConfig:input_type -> openim.admin.SetClientConfigReq 101, // 146: openim.admin.admin.DelClientConfig:input_type -> openim.admin.DelClientConfigReq 105, // 147: openim.admin.admin.GetUserToken:input_type -> openim.admin.GetUserTokenReq 87, // 148: openim.admin.admin.InvalidateToken:input_type -> openim.admin.InvalidateTokenReq 108, // 149: openim.admin.admin.LatestApplicationVersion:input_type -> openim.admin.LatestApplicationVersionReq 110, // 150: openim.admin.admin.AddApplicationVersion:input_type -> openim.admin.AddApplicationVersionReq 112, // 151: openim.admin.admin.UpdateApplicationVersion:input_type -> openim.admin.UpdateApplicationVersionReq 114, // 152: openim.admin.admin.DeleteApplicationVersion:input_type -> openim.admin.DeleteApplicationVersionReq 116, // 153: openim.admin.admin.PageApplicationVersion:input_type -> openim.admin.PageApplicationVersionReq 124, // 154: openim.admin.admin.AddSensitiveWord:input_type -> openim.admin.AddSensitiveWordReq 126, // 155: openim.admin.admin.UpdateSensitiveWord:input_type -> openim.admin.UpdateSensitiveWordReq 128, // 156: openim.admin.admin.DeleteSensitiveWord:input_type -> openim.admin.DeleteSensitiveWordReq 130, // 157: openim.admin.admin.GetSensitiveWord:input_type -> openim.admin.GetSensitiveWordReq 132, // 158: openim.admin.admin.SearchSensitiveWords:input_type -> openim.admin.SearchSensitiveWordsReq 134, // 159: openim.admin.admin.BatchAddSensitiveWords:input_type -> openim.admin.BatchAddSensitiveWordsReq 136, // 160: openim.admin.admin.BatchUpdateSensitiveWords:input_type -> openim.admin.BatchUpdateSensitiveWordsReq 138, // 161: openim.admin.admin.BatchDeleteSensitiveWords:input_type -> openim.admin.BatchDeleteSensitiveWordsReq 140, // 162: openim.admin.admin.AddSensitiveWordGroup:input_type -> openim.admin.AddSensitiveWordGroupReq 142, // 163: openim.admin.admin.UpdateSensitiveWordGroup:input_type -> openim.admin.UpdateSensitiveWordGroupReq 144, // 164: openim.admin.admin.DeleteSensitiveWordGroup:input_type -> openim.admin.DeleteSensitiveWordGroupReq 146, // 165: openim.admin.admin.GetSensitiveWordGroup:input_type -> openim.admin.GetSensitiveWordGroupReq 148, // 166: openim.admin.admin.GetAllSensitiveWordGroups:input_type -> openim.admin.GetAllSensitiveWordGroupsReq 150, // 167: openim.admin.admin.GetSensitiveWordConfig:input_type -> openim.admin.GetSensitiveWordConfigReq 152, // 168: openim.admin.admin.UpdateSensitiveWordConfig:input_type -> openim.admin.UpdateSensitiveWordConfigReq 154, // 169: openim.admin.admin.GetSensitiveWordLogs:input_type -> openim.admin.GetSensitiveWordLogsReq 159, // 170: openim.admin.admin.DeleteSensitiveWordLogs:input_type -> openim.admin.DeleteSensitiveWordLogsReq 157, // 171: openim.admin.admin.GetUserLoginRecords:input_type -> openim.admin.GetUserLoginRecordsReq 161, // 172: openim.admin.admin.GetSensitiveWordStats:input_type -> openim.admin.GetSensitiveWordStatsReq 163, // 173: openim.admin.admin.GetSensitiveWordLogStats:input_type -> openim.admin.GetSensitiveWordLogStatsReq 165, // 174: openim.admin.admin.GetScheduledTasks:input_type -> openim.admin.GetScheduledTasksReq 169, // 175: openim.admin.admin.DeleteScheduledTask:input_type -> openim.admin.DeleteScheduledTaskReq 172, // 176: openim.admin.admin.CreateSystemConfig:input_type -> openim.admin.CreateSystemConfigReq 174, // 177: openim.admin.admin.GetSystemConfig:input_type -> openim.admin.GetSystemConfigReq 176, // 178: openim.admin.admin.GetAllSystemConfigs:input_type -> openim.admin.GetAllSystemConfigsReq 178, // 179: openim.admin.admin.UpdateSystemConfig:input_type -> openim.admin.UpdateSystemConfigReq 180, // 180: openim.admin.admin.UpdateSystemConfigValue:input_type -> openim.admin.UpdateSystemConfigValueReq 182, // 181: openim.admin.admin.UpdateSystemConfigEnabled:input_type -> openim.admin.UpdateSystemConfigEnabledReq 184, // 182: openim.admin.admin.DeleteSystemConfig:input_type -> openim.admin.DeleteSystemConfigReq 186, // 183: openim.admin.admin.GetEnabledSystemConfigs:input_type -> openim.admin.GetEnabledSystemConfigsReq 191, // 184: openim.admin.admin.GetUserWallet:input_type -> openim.admin.GetUserWalletReq 193, // 185: openim.admin.admin.UpdateUserWalletBalance:input_type -> openim.admin.UpdateUserWalletBalanceReq 195, // 186: openim.admin.admin.GetUserWalletBalanceRecords:input_type -> openim.admin.GetUserWalletBalanceRecordsReq 202, // 187: openim.admin.admin.BatchUpdateWalletBalance:input_type -> openim.admin.BatchUpdateWalletBalanceReq 205, // 188: openim.admin.admin.GetWallets:input_type -> openim.admin.GetWalletsReq 197, // 189: openim.admin.admin.UpdateUserPaymentPassword:input_type -> openim.admin.UpdateUserPaymentPasswordReq 199, // 190: openim.admin.admin.SetUserWithdrawAccount:input_type -> openim.admin.SetUserWithdrawAccountReq 219, // 191: openim.admin.admin.GetRealNameAuths:input_type -> openim.admin.GetRealNameAuthsReq 222, // 192: openim.admin.admin.AuditRealNameAuth:input_type -> openim.admin.AuditRealNameAuthReq 209, // 193: openim.admin.admin.CreateWithdraw:input_type -> openim.admin.CreateWithdrawReq 211, // 194: openim.admin.admin.GetWithdraw:input_type -> openim.admin.GetWithdrawReq 213, // 195: openim.admin.admin.GetUserWithdraws:input_type -> openim.admin.GetUserWithdrawsReq 215, // 196: openim.admin.admin.GetWithdraws:input_type -> openim.admin.GetWithdrawsReq 217, // 197: openim.admin.admin.AuditWithdraw:input_type -> openim.admin.AuditWithdrawReq 224, // 198: openim.admin.admin.GetStatistics:input_type -> openim.admin.GetStatisticsReq 1, // 199: openim.admin.admin.Login:output_type -> openim.admin.LoginResp 7, // 200: openim.admin.admin.ChangePassword:output_type -> openim.admin.ChangePasswordResp 5, // 201: openim.admin.admin.AdminUpdateInfo:output_type -> openim.admin.AdminUpdateInfoResp 17, // 202: openim.admin.admin.GetAdminInfo:output_type -> openim.admin.GetAdminInfoResp 3, // 203: openim.admin.admin.AddAdminAccount:output_type -> openim.admin.AddAdminAccountResp 10, // 204: openim.admin.admin.ChangeAdminPassword:output_type -> openim.admin.ChangeAdminPasswordResp 12, // 205: openim.admin.admin.ChangeOperationPassword:output_type -> openim.admin.ChangeOperationPasswordResp 19, // 206: openim.admin.admin.SetGoogleAuthKey:output_type -> openim.admin.SetGoogleAuthKeyResp 14, // 207: openim.admin.admin.DelAdminAccount:output_type -> openim.admin.DelAdminAccountResp 16, // 208: openim.admin.admin.SearchAdminAccount:output_type -> openim.admin.SearchAdminAccountResp 21, // 209: openim.admin.admin.AddDefaultFriend:output_type -> openim.admin.AddDefaultFriendResp 23, // 210: openim.admin.admin.DelDefaultFriend:output_type -> openim.admin.DelDefaultFriendResp 25, // 211: openim.admin.admin.FindDefaultFriend:output_type -> openim.admin.FindDefaultFriendResp 28, // 212: openim.admin.admin.SearchDefaultFriend:output_type -> openim.admin.SearchDefaultFriendResp 30, // 213: openim.admin.admin.AddDefaultGroup:output_type -> openim.admin.AddDefaultGroupResp 32, // 214: openim.admin.admin.DelDefaultGroup:output_type -> openim.admin.DelDefaultGroupResp 34, // 215: openim.admin.admin.FindDefaultGroup:output_type -> openim.admin.FindDefaultGroupResp 37, // 216: openim.admin.admin.SearchDefaultGroup:output_type -> openim.admin.SearchDefaultGroupResp 39, // 217: openim.admin.admin.AddInvitationCode:output_type -> openim.admin.AddInvitationCodeResp 41, // 218: openim.admin.admin.GenInvitationCode:output_type -> openim.admin.GenInvitationCodeResp 43, // 219: openim.admin.admin.FindInvitationCode:output_type -> openim.admin.FindInvitationCodeResp 45, // 220: openim.admin.admin.UseInvitationCode:output_type -> openim.admin.UseInvitationCodeResp 47, // 221: openim.admin.admin.DelInvitationCode:output_type -> openim.admin.DelInvitationCodeResp 50, // 222: openim.admin.admin.SearchInvitationCode:output_type -> openim.admin.SearchInvitationCodeResp 53, // 223: openim.admin.admin.SearchUserIPLimitLogin:output_type -> openim.admin.SearchUserIPLimitLoginResp 56, // 224: openim.admin.admin.AddUserIPLimitLogin:output_type -> openim.admin.AddUserIPLimitLoginResp 58, // 225: openim.admin.admin.DelUserIPLimitLogin:output_type -> openim.admin.DelUserIPLimitLoginResp 62, // 226: openim.admin.admin.SearchIPForbidden:output_type -> openim.admin.SearchIPForbiddenResp 64, // 227: openim.admin.admin.AddIPForbidden:output_type -> openim.admin.AddIPForbiddenResp 66, // 228: openim.admin.admin.DelIPForbidden:output_type -> openim.admin.DelIPForbiddenResp 72, // 229: openim.admin.admin.CancellationUser:output_type -> openim.admin.CancellationUserResp 74, // 230: openim.admin.admin.BlockUser:output_type -> openim.admin.BlockUserResp 76, // 231: openim.admin.admin.UnblockUser:output_type -> openim.admin.UnblockUserResp 79, // 232: openim.admin.admin.SearchBlockUser:output_type -> openim.admin.SearchBlockUserResp 82, // 233: openim.admin.admin.FindUserBlockInfo:output_type -> openim.admin.FindUserBlockInfoResp 68, // 234: openim.admin.admin.CheckRegisterForbidden:output_type -> openim.admin.CheckRegisterForbiddenResp 70, // 235: openim.admin.admin.CheckLoginForbidden:output_type -> openim.admin.CheckLoginForbiddenResp 84, // 236: openim.admin.admin.CreateToken:output_type -> openim.admin.CreateTokenResp 86, // 237: openim.admin.admin.ParseToken:output_type -> openim.admin.ParseTokenResp 90, // 238: openim.admin.admin.AddApplet:output_type -> openim.admin.AddAppletResp 92, // 239: openim.admin.admin.DelApplet:output_type -> openim.admin.DelAppletResp 94, // 240: openim.admin.admin.UpdateApplet:output_type -> openim.admin.UpdateAppletResp 96, // 241: openim.admin.admin.FindApplet:output_type -> openim.admin.FindAppletResp 98, // 242: openim.admin.admin.SearchApplet:output_type -> openim.admin.SearchAppletResp 104, // 243: openim.admin.admin.GetClientConfig:output_type -> openim.admin.GetClientConfigResp 100, // 244: openim.admin.admin.SetClientConfig:output_type -> openim.admin.SetClientConfigResp 102, // 245: openim.admin.admin.DelClientConfig:output_type -> openim.admin.DelClientConfigResp 106, // 246: openim.admin.admin.GetUserToken:output_type -> openim.admin.GetUserTokenResp 88, // 247: openim.admin.admin.InvalidateToken:output_type -> openim.admin.InvalidateTokenResp 109, // 248: openim.admin.admin.LatestApplicationVersion:output_type -> openim.admin.LatestApplicationVersionResp 111, // 249: openim.admin.admin.AddApplicationVersion:output_type -> openim.admin.AddApplicationVersionResp 113, // 250: openim.admin.admin.UpdateApplicationVersion:output_type -> openim.admin.UpdateApplicationVersionResp 115, // 251: openim.admin.admin.DeleteApplicationVersion:output_type -> openim.admin.DeleteApplicationVersionResp 117, // 252: openim.admin.admin.PageApplicationVersion:output_type -> openim.admin.PageApplicationVersionResp 125, // 253: openim.admin.admin.AddSensitiveWord:output_type -> openim.admin.AddSensitiveWordResp 127, // 254: openim.admin.admin.UpdateSensitiveWord:output_type -> openim.admin.UpdateSensitiveWordResp 129, // 255: openim.admin.admin.DeleteSensitiveWord:output_type -> openim.admin.DeleteSensitiveWordResp 131, // 256: openim.admin.admin.GetSensitiveWord:output_type -> openim.admin.GetSensitiveWordResp 133, // 257: openim.admin.admin.SearchSensitiveWords:output_type -> openim.admin.SearchSensitiveWordsResp 135, // 258: openim.admin.admin.BatchAddSensitiveWords:output_type -> openim.admin.BatchAddSensitiveWordsResp 137, // 259: openim.admin.admin.BatchUpdateSensitiveWords:output_type -> openim.admin.BatchUpdateSensitiveWordsResp 139, // 260: openim.admin.admin.BatchDeleteSensitiveWords:output_type -> openim.admin.BatchDeleteSensitiveWordsResp 141, // 261: openim.admin.admin.AddSensitiveWordGroup:output_type -> openim.admin.AddSensitiveWordGroupResp 143, // 262: openim.admin.admin.UpdateSensitiveWordGroup:output_type -> openim.admin.UpdateSensitiveWordGroupResp 145, // 263: openim.admin.admin.DeleteSensitiveWordGroup:output_type -> openim.admin.DeleteSensitiveWordGroupResp 147, // 264: openim.admin.admin.GetSensitiveWordGroup:output_type -> openim.admin.GetSensitiveWordGroupResp 149, // 265: openim.admin.admin.GetAllSensitiveWordGroups:output_type -> openim.admin.GetAllSensitiveWordGroupsResp 151, // 266: openim.admin.admin.GetSensitiveWordConfig:output_type -> openim.admin.GetSensitiveWordConfigResp 153, // 267: openim.admin.admin.UpdateSensitiveWordConfig:output_type -> openim.admin.UpdateSensitiveWordConfigResp 155, // 268: openim.admin.admin.GetSensitiveWordLogs:output_type -> openim.admin.GetSensitiveWordLogsResp 160, // 269: openim.admin.admin.DeleteSensitiveWordLogs:output_type -> openim.admin.DeleteSensitiveWordLogsResp 158, // 270: openim.admin.admin.GetUserLoginRecords:output_type -> openim.admin.GetUserLoginRecordsResp 162, // 271: openim.admin.admin.GetSensitiveWordStats:output_type -> openim.admin.GetSensitiveWordStatsResp 164, // 272: openim.admin.admin.GetSensitiveWordLogStats:output_type -> openim.admin.GetSensitiveWordLogStatsResp 168, // 273: openim.admin.admin.GetScheduledTasks:output_type -> openim.admin.GetScheduledTasksResp 170, // 274: openim.admin.admin.DeleteScheduledTask:output_type -> openim.admin.DeleteScheduledTaskResp 173, // 275: openim.admin.admin.CreateSystemConfig:output_type -> openim.admin.CreateSystemConfigResp 175, // 276: openim.admin.admin.GetSystemConfig:output_type -> openim.admin.GetSystemConfigResp 177, // 277: openim.admin.admin.GetAllSystemConfigs:output_type -> openim.admin.GetAllSystemConfigsResp 179, // 278: openim.admin.admin.UpdateSystemConfig:output_type -> openim.admin.UpdateSystemConfigResp 181, // 279: openim.admin.admin.UpdateSystemConfigValue:output_type -> openim.admin.UpdateSystemConfigValueResp 183, // 280: openim.admin.admin.UpdateSystemConfigEnabled:output_type -> openim.admin.UpdateSystemConfigEnabledResp 185, // 281: openim.admin.admin.DeleteSystemConfig:output_type -> openim.admin.DeleteSystemConfigResp 187, // 282: openim.admin.admin.GetEnabledSystemConfigs:output_type -> openim.admin.GetEnabledSystemConfigsResp 192, // 283: openim.admin.admin.GetUserWallet:output_type -> openim.admin.GetUserWalletResp 194, // 284: openim.admin.admin.UpdateUserWalletBalance:output_type -> openim.admin.UpdateUserWalletBalanceResp 196, // 285: openim.admin.admin.GetUserWalletBalanceRecords:output_type -> openim.admin.GetUserWalletBalanceRecordsResp 204, // 286: openim.admin.admin.BatchUpdateWalletBalance:output_type -> openim.admin.BatchUpdateWalletBalanceResp 207, // 287: openim.admin.admin.GetWallets:output_type -> openim.admin.GetWalletsResp 198, // 288: openim.admin.admin.UpdateUserPaymentPassword:output_type -> openim.admin.UpdateUserPaymentPasswordResp 200, // 289: openim.admin.admin.SetUserWithdrawAccount:output_type -> openim.admin.SetUserWithdrawAccountResp 221, // 290: openim.admin.admin.GetRealNameAuths:output_type -> openim.admin.GetRealNameAuthsResp 223, // 291: openim.admin.admin.AuditRealNameAuth:output_type -> openim.admin.AuditRealNameAuthResp 210, // 292: openim.admin.admin.CreateWithdraw:output_type -> openim.admin.CreateWithdrawResp 212, // 293: openim.admin.admin.GetWithdraw:output_type -> openim.admin.GetWithdrawResp 214, // 294: openim.admin.admin.GetUserWithdraws:output_type -> openim.admin.GetUserWithdrawsResp 216, // 295: openim.admin.admin.GetWithdraws:output_type -> openim.admin.GetWithdrawsResp 218, // 296: openim.admin.admin.AuditWithdraw:output_type -> openim.admin.AuditWithdrawResp 225, // 297: openim.admin.admin.GetStatistics:output_type -> openim.admin.GetStatisticsResp 199, // [199:298] is the sub-list for method output_type 100, // [100:199] is the sub-list for method input_type 100, // [100:100] is the sub-list for extension type_name 100, // [100:100] is the sub-list for extension extendee 0, // [0:100] is the sub-list for field type_name } func init() { file_admin_admin_proto_init() } func file_admin_admin_proto_init() { if File_admin_admin_proto != nil { return } if !protoimpl.UnsafeEnabled { file_admin_admin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LoginResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddAdminAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddAdminAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdminUpdateInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdminUpdateInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangePasswordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangePasswordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAdminInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangeAdminPasswordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangeAdminPasswordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangeOperationPasswordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangeOperationPasswordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelAdminAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelAdminAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchAdminAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchAdminAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAdminInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetGoogleAuthKeyReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetGoogleAuthKeyResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultFriendReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DefaultFriendAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultFriendResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddDefaultGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelDefaultGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindDefaultGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GroupAttribute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchDefaultGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddInvitationCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddInvitationCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenInvitationCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenInvitationCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindInvitationCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindInvitationCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UseInvitationCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UseInvitationCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelInvitationCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelInvitationCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvitationRegister); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchInvitationCodeReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchInvitationCodeResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserIPLimitLoginReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LimitUserLoginIP); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchUserIPLimitLoginResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserIPLimitLogin); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUserIPLimitLoginReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddUserIPLimitLoginResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelUserIPLimitLoginReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelUserIPLimitLoginResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPForbidden); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IPForbiddenAdd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchIPForbiddenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchIPForbiddenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddIPForbiddenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddIPForbiddenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelIPForbiddenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelIPForbiddenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckRegisterForbiddenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckRegisterForbiddenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckLoginForbiddenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckLoginForbiddenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancellationUserReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CancellationUserResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnblockUserReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnblockUserResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchBlockUserReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockUserInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchBlockUserResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserBlockInfoReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindUserBlockInfoResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTokenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTokenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParseTokenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ParseTokenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidateTokenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidateTokenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddAppletReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddAppletResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelAppletReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelAppletResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAppletReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAppletResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindAppletReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FindAppletResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchAppletReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchAppletResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetClientConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetClientConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelClientConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelClientConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClientConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetClientConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserTokenReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserTokenResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ApplicationVersion); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LatestApplicationVersionReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LatestApplicationVersionResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddApplicationVersionReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddApplicationVersionResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateApplicationVersionReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateApplicationVersionResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteApplicationVersionReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteApplicationVersionResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PageApplicationVersionReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PageApplicationVersionResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordGroupInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordConfigInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordLogInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordStatsInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SensitiveWordLogStatsInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchAddSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchAddSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchDeleteSensitiveWordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchDeleteSensitiveWordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordGroupReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordGroupResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllSensitiveWordGroupsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllSensitiveWordGroupsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSensitiveWordConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserLoginRecordInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserLoginRecordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserLoginRecordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordLogsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSensitiveWordLogsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordStatsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordStatsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogStatsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSensitiveWordLogStatsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetScheduledTasksReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScheduledTaskMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScheduledTaskInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetScheduledTasksResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteScheduledTaskReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteScheduledTaskResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SystemConfigInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateSystemConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateSystemConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSystemConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSystemConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllSystemConfigsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAllSystemConfigsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSystemConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSystemConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSystemConfigValueReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSystemConfigValueResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSystemConfigEnabledReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateSystemConfigEnabledResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSystemConfigReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteSystemConfigResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnabledSystemConfigsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEnabledSystemConfigsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RealNameAuthInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WalletInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WalletBalanceRecordInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserWalletReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserWalletResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserWalletBalanceReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserWalletBalanceResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserWalletBalanceRecordsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserWalletBalanceRecordsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserPaymentPasswordReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateUserPaymentPasswordResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetUserWithdrawAccountReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetUserWithdrawAccountResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateUserItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateWalletBalanceReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateResultItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BatchUpdateWalletBalanceResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WalletListItemInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWalletsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WithdrawInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWithdrawReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateWithdrawResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserWithdrawsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetUserWithdrawsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuditWithdrawReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuditWithdrawResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRealNameAuthsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RealNameAuthListItemInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRealNameAuthsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuditRealNameAuthReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuditRealNameAuthResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetStatisticsReq); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_admin_admin_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetStatisticsResp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_admin_admin_proto_rawDesc, NumEnums: 0, NumMessages: 230, NumExtensions: 0, NumServices: 1, }, GoTypes: file_admin_admin_proto_goTypes, DependencyIndexes: file_admin_admin_proto_depIdxs, MessageInfos: file_admin_admin_proto_msgTypes, }.Build() File_admin_admin_proto = out.File file_admin_admin_proto_rawDesc = nil file_admin_admin_proto_goTypes = nil file_admin_admin_proto_depIdxs = nil }