// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.29.1
// 	protoc        v4.22.0
// source: friend/friend.proto

package friend

import (
	context "context"
	sdkws "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/sdkws"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	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)
)

type GetPaginationFriendsReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pagination *sdkws.RequestPagination `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination"`
	UserID     string                   `protobuf:"bytes,2,opt,name=userID,proto3" json:"userID"`
}

func (x *GetPaginationFriendsReq) Reset() {
	*x = GetPaginationFriendsReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationFriendsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationFriendsReq) ProtoMessage() {}

func (x *GetPaginationFriendsReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationFriendsReq.ProtoReflect.Descriptor instead.
func (*GetPaginationFriendsReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{0}
}

func (x *GetPaginationFriendsReq) GetPagination() *sdkws.RequestPagination {
	if x != nil {
		return x.Pagination
	}
	return nil
}

func (x *GetPaginationFriendsReq) GetUserID() string {
	if x != nil {
		return x.UserID
	}
	return ""
}

type GetPaginationFriendsResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=FriendsInfo,proto3" json:"FriendsInfo"`
	Total       int32               `protobuf:"varint,2,opt,name=total,proto3" json:"total"`
}

func (x *GetPaginationFriendsResp) Reset() {
	*x = GetPaginationFriendsResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationFriendsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationFriendsResp) ProtoMessage() {}

func (x *GetPaginationFriendsResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationFriendsResp.ProtoReflect.Descriptor instead.
func (*GetPaginationFriendsResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{1}
}

func (x *GetPaginationFriendsResp) GetFriendsInfo() []*sdkws.FriendInfo {
	if x != nil {
		return x.FriendsInfo
	}
	return nil
}

func (x *GetPaginationFriendsResp) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

type ApplyToAddFriendReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FromUserID string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID"`
	ToUserID   string `protobuf:"bytes,2,opt,name=toUserID,proto3" json:"toUserID"`
	ReqMsg     string `protobuf:"bytes,3,opt,name=reqMsg,proto3" json:"reqMsg"`
	Ex         string `protobuf:"bytes,4,opt,name=ex,proto3" json:"ex"`
}

func (x *ApplyToAddFriendReq) Reset() {
	*x = ApplyToAddFriendReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ApplyToAddFriendReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ApplyToAddFriendReq) ProtoMessage() {}

func (x *ApplyToAddFriendReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 ApplyToAddFriendReq.ProtoReflect.Descriptor instead.
func (*ApplyToAddFriendReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{2}
}

func (x *ApplyToAddFriendReq) GetFromUserID() string {
	if x != nil {
		return x.FromUserID
	}
	return ""
}

func (x *ApplyToAddFriendReq) GetToUserID() string {
	if x != nil {
		return x.ToUserID
	}
	return ""
}

func (x *ApplyToAddFriendReq) GetReqMsg() string {
	if x != nil {
		return x.ReqMsg
	}
	return ""
}

func (x *ApplyToAddFriendReq) GetEx() string {
	if x != nil {
		return x.Ex
	}
	return ""
}

type ApplyToAddFriendResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ApplyToAddFriendResp) Reset() {
	*x = ApplyToAddFriendResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ApplyToAddFriendResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ApplyToAddFriendResp) ProtoMessage() {}

func (x *ApplyToAddFriendResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 ApplyToAddFriendResp.ProtoReflect.Descriptor instead.
func (*ApplyToAddFriendResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{3}
}

type ImportFriendReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OwnerUserID   string   `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"`
	FriendUserIDs []string `protobuf:"bytes,2,rep,name=friendUserIDs,proto3" json:"friendUserIDs"`
}

func (x *ImportFriendReq) Reset() {
	*x = ImportFriendReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ImportFriendReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ImportFriendReq) ProtoMessage() {}

func (x *ImportFriendReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 ImportFriendReq.ProtoReflect.Descriptor instead.
func (*ImportFriendReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{4}
}

func (x *ImportFriendReq) GetOwnerUserID() string {
	if x != nil {
		return x.OwnerUserID
	}
	return ""
}

func (x *ImportFriendReq) GetFriendUserIDs() []string {
	if x != nil {
		return x.FriendUserIDs
	}
	return nil
}

type ImportFriendResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ImportFriendResp) Reset() {
	*x = ImportFriendResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ImportFriendResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ImportFriendResp) ProtoMessage() {}

func (x *ImportFriendResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 ImportFriendResp.ProtoReflect.Descriptor instead.
func (*ImportFriendResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{5}
}

type GetPaginationFriendsApplyToReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UserID     string                   `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"`
	Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"`
}

func (x *GetPaginationFriendsApplyToReq) Reset() {
	*x = GetPaginationFriendsApplyToReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationFriendsApplyToReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationFriendsApplyToReq) ProtoMessage() {}

func (x *GetPaginationFriendsApplyToReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationFriendsApplyToReq.ProtoReflect.Descriptor instead.
func (*GetPaginationFriendsApplyToReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{6}
}

func (x *GetPaginationFriendsApplyToReq) GetUserID() string {
	if x != nil {
		return x.UserID
	}
	return ""
}

func (x *GetPaginationFriendsApplyToReq) GetPagination() *sdkws.RequestPagination {
	if x != nil {
		return x.Pagination
	}
	return nil
}

type GetPaginationFriendsApplyToResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FriendRequests []*sdkws.FriendRequest `protobuf:"bytes,1,rep,name=FriendRequests,proto3" json:"FriendRequests"`
	Total          int32                  `protobuf:"varint,2,opt,name=total,proto3" json:"total"`
}

func (x *GetPaginationFriendsApplyToResp) Reset() {
	*x = GetPaginationFriendsApplyToResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationFriendsApplyToResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationFriendsApplyToResp) ProtoMessage() {}

func (x *GetPaginationFriendsApplyToResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationFriendsApplyToResp.ProtoReflect.Descriptor instead.
func (*GetPaginationFriendsApplyToResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{7}
}

func (x *GetPaginationFriendsApplyToResp) GetFriendRequests() []*sdkws.FriendRequest {
	if x != nil {
		return x.FriendRequests
	}
	return nil
}

func (x *GetPaginationFriendsApplyToResp) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

type GetDesignatedFriendsReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OwnerUserID   string   `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"`
	FriendUserIDs []string `protobuf:"bytes,2,rep,name=friendUserIDs,proto3" json:"friendUserIDs"`
}

func (x *GetDesignatedFriendsReq) Reset() {
	*x = GetDesignatedFriendsReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetDesignatedFriendsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetDesignatedFriendsReq) ProtoMessage() {}

func (x *GetDesignatedFriendsReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetDesignatedFriendsReq.ProtoReflect.Descriptor instead.
func (*GetDesignatedFriendsReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{8}
}

func (x *GetDesignatedFriendsReq) GetOwnerUserID() string {
	if x != nil {
		return x.OwnerUserID
	}
	return ""
}

func (x *GetDesignatedFriendsReq) GetFriendUserIDs() []string {
	if x != nil {
		return x.FriendUserIDs
	}
	return nil
}

type GetDesignatedFriendsResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FriendsInfo []*sdkws.FriendInfo `protobuf:"bytes,1,rep,name=friendsInfo,proto3" json:"friendsInfo"`
}

func (x *GetDesignatedFriendsResp) Reset() {
	*x = GetDesignatedFriendsResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetDesignatedFriendsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetDesignatedFriendsResp) ProtoMessage() {}

func (x *GetDesignatedFriendsResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetDesignatedFriendsResp.ProtoReflect.Descriptor instead.
func (*GetDesignatedFriendsResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{9}
}

func (x *GetDesignatedFriendsResp) GetFriendsInfo() []*sdkws.FriendInfo {
	if x != nil {
		return x.FriendsInfo
	}
	return nil
}

type AddBlackReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"`
	BlackUserID string `protobuf:"bytes,2,opt,name=blackUserID,proto3" json:"blackUserID"`
}

func (x *AddBlackReq) Reset() {
	*x = AddBlackReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AddBlackReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddBlackReq) ProtoMessage() {}

func (x *AddBlackReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 AddBlackReq.ProtoReflect.Descriptor instead.
func (*AddBlackReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{10}
}

func (x *AddBlackReq) GetOwnerUserID() string {
	if x != nil {
		return x.OwnerUserID
	}
	return ""
}

func (x *AddBlackReq) GetBlackUserID() string {
	if x != nil {
		return x.BlackUserID
	}
	return ""
}

type AddBlackResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *AddBlackResp) Reset() {
	*x = AddBlackResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AddBlackResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddBlackResp) ProtoMessage() {}

func (x *AddBlackResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 AddBlackResp.ProtoReflect.Descriptor instead.
func (*AddBlackResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{11}
}

type RemoveBlackReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OwnerUserID string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"`
	BlackUserID string `protobuf:"bytes,2,opt,name=blackUserID,proto3" json:"blackUserID"`
}

func (x *RemoveBlackReq) Reset() {
	*x = RemoveBlackReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RemoveBlackReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveBlackReq) ProtoMessage() {}

func (x *RemoveBlackReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 RemoveBlackReq.ProtoReflect.Descriptor instead.
func (*RemoveBlackReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{12}
}

func (x *RemoveBlackReq) GetOwnerUserID() string {
	if x != nil {
		return x.OwnerUserID
	}
	return ""
}

func (x *RemoveBlackReq) GetBlackUserID() string {
	if x != nil {
		return x.BlackUserID
	}
	return ""
}

type RemoveBlackResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *RemoveBlackResp) Reset() {
	*x = RemoveBlackResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RemoveBlackResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveBlackResp) ProtoMessage() {}

func (x *RemoveBlackResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 RemoveBlackResp.ProtoReflect.Descriptor instead.
func (*RemoveBlackResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{13}
}

type GetPaginationBlacksReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UserID     string                   `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"`
	Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"`
}

func (x *GetPaginationBlacksReq) Reset() {
	*x = GetPaginationBlacksReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationBlacksReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationBlacksReq) ProtoMessage() {}

func (x *GetPaginationBlacksReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationBlacksReq.ProtoReflect.Descriptor instead.
func (*GetPaginationBlacksReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{14}
}

func (x *GetPaginationBlacksReq) GetUserID() string {
	if x != nil {
		return x.UserID
	}
	return ""
}

func (x *GetPaginationBlacksReq) GetPagination() *sdkws.RequestPagination {
	if x != nil {
		return x.Pagination
	}
	return nil
}

type GetPaginationBlacksResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Blacks []*sdkws.BlackInfo `protobuf:"bytes,1,rep,name=blacks,proto3" json:"blacks"`
	Total  int32              `protobuf:"varint,2,opt,name=total,proto3" json:"total"`
}

func (x *GetPaginationBlacksResp) Reset() {
	*x = GetPaginationBlacksResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationBlacksResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationBlacksResp) ProtoMessage() {}

func (x *GetPaginationBlacksResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationBlacksResp.ProtoReflect.Descriptor instead.
func (*GetPaginationBlacksResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{15}
}

func (x *GetPaginationBlacksResp) GetBlacks() []*sdkws.BlackInfo {
	if x != nil {
		return x.Blacks
	}
	return nil
}

func (x *GetPaginationBlacksResp) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

type IsFriendReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UserID1 string `protobuf:"bytes,1,opt,name=userID1,proto3" json:"userID1"`
	UserID2 string `protobuf:"bytes,2,opt,name=userID2,proto3" json:"userID2"`
}

func (x *IsFriendReq) Reset() {
	*x = IsFriendReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IsFriendReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsFriendReq) ProtoMessage() {}

func (x *IsFriendReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 IsFriendReq.ProtoReflect.Descriptor instead.
func (*IsFriendReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{16}
}

func (x *IsFriendReq) GetUserID1() string {
	if x != nil {
		return x.UserID1
	}
	return ""
}

func (x *IsFriendReq) GetUserID2() string {
	if x != nil {
		return x.UserID2
	}
	return ""
}

type IsFriendResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	InUser1Friends bool `protobuf:"varint,1,opt,name=inUser1Friends,proto3" json:"inUser1Friends"` //如果userID2在userID1的好友列表中 true
	InUser2Friends bool `protobuf:"varint,2,opt,name=inUser2Friends,proto3" json:"inUser2Friends"` //如果userID1在userID2的好友列表中 true
}

func (x *IsFriendResp) Reset() {
	*x = IsFriendResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IsFriendResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsFriendResp) ProtoMessage() {}

func (x *IsFriendResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 IsFriendResp.ProtoReflect.Descriptor instead.
func (*IsFriendResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{17}
}

func (x *IsFriendResp) GetInUser1Friends() bool {
	if x != nil {
		return x.InUser1Friends
	}
	return false
}

func (x *IsFriendResp) GetInUser2Friends() bool {
	if x != nil {
		return x.InUser2Friends
	}
	return false
}

type IsBlackReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UserID1 string `protobuf:"bytes,1,opt,name=userID1,proto3" json:"userID1"`
	UserID2 string `protobuf:"bytes,2,opt,name=userID2,proto3" json:"userID2"`
}

func (x *IsBlackReq) Reset() {
	*x = IsBlackReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IsBlackReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsBlackReq) ProtoMessage() {}

func (x *IsBlackReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 IsBlackReq.ProtoReflect.Descriptor instead.
func (*IsBlackReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{18}
}

func (x *IsBlackReq) GetUserID1() string {
	if x != nil {
		return x.UserID1
	}
	return ""
}

func (x *IsBlackReq) GetUserID2() string {
	if x != nil {
		return x.UserID2
	}
	return ""
}

type IsBlackResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	InUser1Blacks bool `protobuf:"varint,1,opt,name=inUser1Blacks,proto3" json:"inUser1Blacks"` //如果userID2在userID1的黑名单列表中 true
	InUser2Blacks bool `protobuf:"varint,2,opt,name=inUser2Blacks,proto3" json:"inUser2Blacks"` //如果userID1在userID2的黑名单列表中 true
}

func (x *IsBlackResp) Reset() {
	*x = IsBlackResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *IsBlackResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IsBlackResp) ProtoMessage() {}

func (x *IsBlackResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 IsBlackResp.ProtoReflect.Descriptor instead.
func (*IsBlackResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{19}
}

func (x *IsBlackResp) GetInUser1Blacks() bool {
	if x != nil {
		return x.InUser1Blacks
	}
	return false
}

func (x *IsBlackResp) GetInUser2Blacks() bool {
	if x != nil {
		return x.InUser2Blacks
	}
	return false
}

type DeleteFriendReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OwnerUserID  string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"`
	FriendUserID string `protobuf:"bytes,2,opt,name=friendUserID,proto3" json:"friendUserID"`
}

func (x *DeleteFriendReq) Reset() {
	*x = DeleteFriendReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteFriendReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteFriendReq) ProtoMessage() {}

func (x *DeleteFriendReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 DeleteFriendReq.ProtoReflect.Descriptor instead.
func (*DeleteFriendReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{20}
}

func (x *DeleteFriendReq) GetOwnerUserID() string {
	if x != nil {
		return x.OwnerUserID
	}
	return ""
}

func (x *DeleteFriendReq) GetFriendUserID() string {
	if x != nil {
		return x.FriendUserID
	}
	return ""
}

type DeleteFriendResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DeleteFriendResp) Reset() {
	*x = DeleteFriendResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeleteFriendResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteFriendResp) ProtoMessage() {}

func (x *DeleteFriendResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 DeleteFriendResp.ProtoReflect.Descriptor instead.
func (*DeleteFriendResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{21}
}

// process
type RespondFriendApplyReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FromUserID   string `protobuf:"bytes,1,opt,name=fromUserID,proto3" json:"fromUserID"` //主动发起的申请者
	ToUserID     string `protobuf:"bytes,2,opt,name=toUserID,proto3" json:"toUserID"`     //被动添加者
	HandleResult int32  `protobuf:"varint,3,opt,name=handleResult,proto3" json:"handleResult"`
	HandleMsg    string `protobuf:"bytes,4,opt,name=handleMsg,proto3" json:"handleMsg"`
}

func (x *RespondFriendApplyReq) Reset() {
	*x = RespondFriendApplyReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RespondFriendApplyReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RespondFriendApplyReq) ProtoMessage() {}

func (x *RespondFriendApplyReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 RespondFriendApplyReq.ProtoReflect.Descriptor instead.
func (*RespondFriendApplyReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{22}
}

func (x *RespondFriendApplyReq) GetFromUserID() string {
	if x != nil {
		return x.FromUserID
	}
	return ""
}

func (x *RespondFriendApplyReq) GetToUserID() string {
	if x != nil {
		return x.ToUserID
	}
	return ""
}

func (x *RespondFriendApplyReq) GetHandleResult() int32 {
	if x != nil {
		return x.HandleResult
	}
	return 0
}

func (x *RespondFriendApplyReq) GetHandleMsg() string {
	if x != nil {
		return x.HandleMsg
	}
	return ""
}

type RespondFriendApplyResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *RespondFriendApplyResp) Reset() {
	*x = RespondFriendApplyResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RespondFriendApplyResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RespondFriendApplyResp) ProtoMessage() {}

func (x *RespondFriendApplyResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 RespondFriendApplyResp.ProtoReflect.Descriptor instead.
func (*RespondFriendApplyResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{23}
}

type SetFriendRemarkReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OwnerUserID  string `protobuf:"bytes,1,opt,name=ownerUserID,proto3" json:"ownerUserID"`
	FriendUserID string `protobuf:"bytes,2,opt,name=friendUserID,proto3" json:"friendUserID"`
	Remark       string `protobuf:"bytes,3,opt,name=remark,proto3" json:"remark"`
}

func (x *SetFriendRemarkReq) Reset() {
	*x = SetFriendRemarkReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SetFriendRemarkReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetFriendRemarkReq) ProtoMessage() {}

func (x *SetFriendRemarkReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 SetFriendRemarkReq.ProtoReflect.Descriptor instead.
func (*SetFriendRemarkReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{24}
}

func (x *SetFriendRemarkReq) GetOwnerUserID() string {
	if x != nil {
		return x.OwnerUserID
	}
	return ""
}

func (x *SetFriendRemarkReq) GetFriendUserID() string {
	if x != nil {
		return x.FriendUserID
	}
	return ""
}

func (x *SetFriendRemarkReq) GetRemark() string {
	if x != nil {
		return x.Remark
	}
	return ""
}

type SetFriendRemarkResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *SetFriendRemarkResp) Reset() {
	*x = SetFriendRemarkResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SetFriendRemarkResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetFriendRemarkResp) ProtoMessage() {}

func (x *SetFriendRemarkResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 SetFriendRemarkResp.ProtoReflect.Descriptor instead.
func (*SetFriendRemarkResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{25}
}

type GetPaginationFriendsApplyFromReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UserID     string                   `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"`
	Pagination *sdkws.RequestPagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination"`
}

func (x *GetPaginationFriendsApplyFromReq) Reset() {
	*x = GetPaginationFriendsApplyFromReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationFriendsApplyFromReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationFriendsApplyFromReq) ProtoMessage() {}

func (x *GetPaginationFriendsApplyFromReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationFriendsApplyFromReq.ProtoReflect.Descriptor instead.
func (*GetPaginationFriendsApplyFromReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{26}
}

func (x *GetPaginationFriendsApplyFromReq) GetUserID() string {
	if x != nil {
		return x.UserID
	}
	return ""
}

func (x *GetPaginationFriendsApplyFromReq) GetPagination() *sdkws.RequestPagination {
	if x != nil {
		return x.Pagination
	}
	return nil
}

type GetPaginationFriendsApplyFromResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FriendRequests []*sdkws.FriendRequest `protobuf:"bytes,1,rep,name=friendRequests,proto3" json:"friendRequests"`
	Total          int32                  `protobuf:"varint,2,opt,name=total,proto3" json:"total"`
}

func (x *GetPaginationFriendsApplyFromResp) Reset() {
	*x = GetPaginationFriendsApplyFromResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetPaginationFriendsApplyFromResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetPaginationFriendsApplyFromResp) ProtoMessage() {}

func (x *GetPaginationFriendsApplyFromResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetPaginationFriendsApplyFromResp.ProtoReflect.Descriptor instead.
func (*GetPaginationFriendsApplyFromResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{27}
}

func (x *GetPaginationFriendsApplyFromResp) GetFriendRequests() []*sdkws.FriendRequest {
	if x != nil {
		return x.FriendRequests
	}
	return nil
}

func (x *GetPaginationFriendsApplyFromResp) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

type GetFriendIDsReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UserID string `protobuf:"bytes,1,opt,name=userID,proto3" json:"userID"`
}

func (x *GetFriendIDsReq) Reset() {
	*x = GetFriendIDsReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetFriendIDsReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetFriendIDsReq) ProtoMessage() {}

func (x *GetFriendIDsReq) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetFriendIDsReq.ProtoReflect.Descriptor instead.
func (*GetFriendIDsReq) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{28}
}

func (x *GetFriendIDsReq) GetUserID() string {
	if x != nil {
		return x.UserID
	}
	return ""
}

type GetFriendIDsResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FriendIDs []string `protobuf:"bytes,1,rep,name=friendIDs,proto3" json:"friendIDs"`
}

func (x *GetFriendIDsResp) Reset() {
	*x = GetFriendIDsResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_friend_friend_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetFriendIDsResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetFriendIDsResp) ProtoMessage() {}

func (x *GetFriendIDsResp) ProtoReflect() protoreflect.Message {
	mi := &file_friend_friend_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 GetFriendIDsResp.ProtoReflect.Descriptor instead.
func (*GetFriendIDsResp) Descriptor() ([]byte, []int) {
	return file_friend_friend_proto_rawDescGZIP(), []int{29}
}

func (x *GetFriendIDsResp) GetFriendIDs() []string {
	if x != nil {
		return x.FriendIDs
	}
	return nil
}

var File_friend_friend_proto protoreflect.FileDescriptor

var file_friend_friend_proto_rawDesc = []byte{
	0x0a, 0x13, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x1a, 0x11, 0x73, 0x64, 0x6b, 0x77,
	0x73, 0x2f, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x78, 0x0a,
	0x17, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72,
	0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69,
	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f,
	0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 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, 0x72, 0x0a, 0x18, 0x67, 0x65, 0x74, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52,
	0x65, 0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x49, 0x6e,
	0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49,
	0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x46, 0x72,
	0x69, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x79, 0x0a, 0x13, 0x61,
	0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52,
	0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72,
	0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16,
	0x0a, 0x06, 0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
	0x72, 0x65, 0x71, 0x4d, 0x73, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x65, 0x78, 0x22, 0x16, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54,
	0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x59,
	0x0a, 0x0f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65,
	0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65,
	0x72, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65,
	0x72, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x69, 0x6d, 0x70,
	0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x7f, 0x0a,
	0x1e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72,
	0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 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, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70,
	0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x82,
	0x01, 0x0a, 0x1f, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x65,
	0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4f, 0x70, 0x65,
	0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e,
	0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0e, 0x46,
	0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a,
	0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x22, 0x61, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e,
	0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x12, 0x20,
	0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44,
	0x12, 0x24, 0x0a, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55,
	0x73, 0x65, 0x72, 0x49, 0x44, 0x73, 0x22, 0x5c, 0x0a, 0x18, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73,
	0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65,
	0x73, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x66,
	0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x46, 0x72, 0x69,
	0x65, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73,
	0x49, 0x6e, 0x66, 0x6f, 0x22, 0x51, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b,
	0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72,
	0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55,
	0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73,
	0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x61, 0x63,
	0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x0e, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x42, 0x6c,
	0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x54, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76,
	0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x62,
	0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x11, 0x0a,
	0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70,
	0x22, 0x77, 0x0a, 0x16, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 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, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53,
	0x65, 0x72, 0x76, 0x65, 0x72, 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, 0x17, 0x67, 0x65, 0x74,
	0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73,
	0x52, 0x65, 0x73, 0x70, 0x12, 0x35, 0x0a, 0x06, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b, 0x77, 0x73, 0x2e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x06, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x22, 0x41, 0x0a, 0x0b, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71,
	0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73,
	0x65, 0x72, 0x49, 0x44, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65,
	0x72, 0x49, 0x44, 0x32, 0x22, 0x5e, 0x0a, 0x0c, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x52, 0x65, 0x73, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x31, 0x46,
	0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e,
	0x55, 0x73, 0x65, 0x72, 0x31, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0e,
	0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x46, 0x72, 0x69,
	0x65, 0x6e, 0x64, 0x73, 0x22, 0x40, 0x0a, 0x0a, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52,
	0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x31, 0x12, 0x18, 0x0a, 0x07,
	0x75, 0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75,
	0x73, 0x65, 0x72, 0x49, 0x44, 0x32, 0x22, 0x59, 0x0a, 0x0b, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63,
	0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x31,
	0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e,
	0x55, 0x73, 0x65, 0x72, 0x31, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69,
	0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x32, 0x42, 0x6c, 0x61, 0x63, 0x6b,
	0x73, 0x22, 0x57, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x73, 0x65,
	0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72,
	0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x72,
	0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x22, 0x12, 0x0a, 0x10, 0x64, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x95,
	0x01, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d,
	0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72,
	0x6f, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x6f, 0x55, 0x73,
	0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x55, 0x73,
	0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x68, 0x61, 0x6e, 0x64,
	0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64,
	0x6c, 0x65, 0x4d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x61, 0x6e,
	0x64, 0x6c, 0x65, 0x4d, 0x73, 0x67, 0x22, 0x18, 0x0a, 0x16, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70,
	0x22, 0x72, 0x0a, 0x12, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d,
	0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x55,
	0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x77, 0x6e,
	0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
	0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x49, 0x44, 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, 0x15, 0x0a, 0x13, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x22, 0x81, 0x01, 0x0a, 0x20,
	0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69,
	0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 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, 0x45, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69,
	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4f,
	0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 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,
	0x84, 0x01, 0x0a, 0x21, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f,
	0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x49, 0x0a, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
	0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x73, 0x64, 0x6b,
	0x77, 0x73, 0x2e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x52, 0x0e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73,
	0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x29, 0x0a, 0x0f, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69,
	0x65, 0x6e, 0x64, 0x49, 0x44, 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, 0x22, 0x30, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49,
	0x44, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x49, 0x44, 0x73, 0x32, 0xa0, 0x0c, 0x0a, 0x06, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x67,
	0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x12, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65,
	0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f,
	0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x29, 0x2e, 0x4f,
	0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x2e, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69,
	0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x88, 0x01, 0x0a, 0x1b, 0x67, 0x65, 0x74, 0x50,
	0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73,
	0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x12, 0x33, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65,
	0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x34, 0x2e, 0x4f,
	0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x54, 0x6f, 0x52, 0x65,
	0x73, 0x70, 0x12, 0x8e, 0x01, 0x0a, 0x1d, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79,
	0x46, 0x72, 0x6f, 0x6d, 0x12, 0x35, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41,
	0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x1a, 0x36, 0x2e, 0x4f, 0x70,
	0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
	0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x46, 0x72, 0x6f, 0x6d, 0x52,
	0x65, 0x73, 0x70, 0x12, 0x4f, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x12,
	0x20, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66,
	0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65,
	0x71, 0x1a, 0x21, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x61, 0x64, 0x64, 0x42, 0x6c, 0x61, 0x63, 0x6b,
	0x52, 0x65, 0x73, 0x70, 0x12, 0x58, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c,
	0x61, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
	0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49,
	0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72,
	0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x4f,
	0x0a, 0x08, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x20, 0x2e, 0x4f, 0x70, 0x65,
	0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x2e, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x21, 0x2e, 0x4f,
	0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x2e, 0x69, 0x73, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12,
	0x4c, 0x0a, 0x07, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x1f, 0x2e, 0x4f, 0x70, 0x65,
	0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x2e, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x20, 0x2e, 0x4f, 0x70,
	0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x2e, 0x69, 0x73, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x70, 0x0a,
	0x13, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c,
	0x61, 0x63, 0x6b, 0x73, 0x12, 0x2b, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72,
	0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x65,
	0x71, 0x1a, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
	0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12,
	0x5b, 0x0a, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12,
	0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66,
	0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x64, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x6d, 0x0a, 0x12,
	0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70,
	0x6c, 0x79, 0x12, 0x2a, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65,
	0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64,
	0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x2b,
	0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72,
	0x69, 0x65, 0x6e, 0x64, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x46, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x64, 0x0a, 0x0f, 0x73,
	0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x27,
	0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72,
	0x69, 0x65, 0x6e, 0x64, 0x2e, 0x73, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65,
	0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x73, 0x65,
	0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x52, 0x65, 0x73,
	0x70, 0x12, 0x5c, 0x0a, 0x0d, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65,
	0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46,
	0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49,
	0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x69,
	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x12,
	0x73, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64,
	0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2c, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d,
	0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65,
	0x74, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2d, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65,
	0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x44,
	0x65, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73,
	0x52, 0x65, 0x73, 0x70, 0x12, 0x73, 0x0a, 0x14, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x2c, 0x2e, 0x4f,
	0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65,
	0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x71, 0x1a, 0x2d, 0x2e, 0x4f, 0x70, 0x65,
	0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64,
	0x2e, 0x67, 0x65, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x72,
	0x69, 0x65, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x5b, 0x0a, 0x0c, 0x67, 0x65, 0x74,
	0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x12, 0x24, 0x2e, 0x4f, 0x70, 0x65, 0x6e,
	0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e,
	0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49, 0x44, 0x73, 0x52, 0x65, 0x71, 0x1a,
	0x25, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x66,
	0x72, 0x69, 0x65, 0x6e, 0x64, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x49,
	0x44, 0x73, 0x52, 0x65, 0x73, 0x70, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x4d, 0x53, 0x44, 0x4b, 0x2f, 0x4f,
	0x70, 0x65, 0x6e, 0x2d, 0x49, 0x4d, 0x2d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x6b,
	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x62, 0x06,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_friend_friend_proto_rawDescOnce sync.Once
	file_friend_friend_proto_rawDescData = file_friend_friend_proto_rawDesc
)

func file_friend_friend_proto_rawDescGZIP() []byte {
	file_friend_friend_proto_rawDescOnce.Do(func() {
		file_friend_friend_proto_rawDescData = protoimpl.X.CompressGZIP(file_friend_friend_proto_rawDescData)
	})
	return file_friend_friend_proto_rawDescData
}

var file_friend_friend_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_friend_friend_proto_goTypes = []interface{}{
	(*GetPaginationFriendsReq)(nil),           // 0: OpenIMServer.friend.getPaginationFriendsReq
	(*GetPaginationFriendsResp)(nil),          // 1: OpenIMServer.friend.getPaginationFriendsResp
	(*ApplyToAddFriendReq)(nil),               // 2: OpenIMServer.friend.applyToAddFriendReq
	(*ApplyToAddFriendResp)(nil),              // 3: OpenIMServer.friend.applyToAddFriendResp
	(*ImportFriendReq)(nil),                   // 4: OpenIMServer.friend.importFriendReq
	(*ImportFriendResp)(nil),                  // 5: OpenIMServer.friend.importFriendResp
	(*GetPaginationFriendsApplyToReq)(nil),    // 6: OpenIMServer.friend.getPaginationFriendsApplyToReq
	(*GetPaginationFriendsApplyToResp)(nil),   // 7: OpenIMServer.friend.getPaginationFriendsApplyToResp
	(*GetDesignatedFriendsReq)(nil),           // 8: OpenIMServer.friend.getDesignatedFriendsReq
	(*GetDesignatedFriendsResp)(nil),          // 9: OpenIMServer.friend.getDesignatedFriendsResp
	(*AddBlackReq)(nil),                       // 10: OpenIMServer.friend.addBlackReq
	(*AddBlackResp)(nil),                      // 11: OpenIMServer.friend.addBlackResp
	(*RemoveBlackReq)(nil),                    // 12: OpenIMServer.friend.removeBlackReq
	(*RemoveBlackResp)(nil),                   // 13: OpenIMServer.friend.removeBlackResp
	(*GetPaginationBlacksReq)(nil),            // 14: OpenIMServer.friend.getPaginationBlacksReq
	(*GetPaginationBlacksResp)(nil),           // 15: OpenIMServer.friend.getPaginationBlacksResp
	(*IsFriendReq)(nil),                       // 16: OpenIMServer.friend.isFriendReq
	(*IsFriendResp)(nil),                      // 17: OpenIMServer.friend.isFriendResp
	(*IsBlackReq)(nil),                        // 18: OpenIMServer.friend.isBlackReq
	(*IsBlackResp)(nil),                       // 19: OpenIMServer.friend.isBlackResp
	(*DeleteFriendReq)(nil),                   // 20: OpenIMServer.friend.deleteFriendReq
	(*DeleteFriendResp)(nil),                  // 21: OpenIMServer.friend.deleteFriendResp
	(*RespondFriendApplyReq)(nil),             // 22: OpenIMServer.friend.respondFriendApplyReq
	(*RespondFriendApplyResp)(nil),            // 23: OpenIMServer.friend.respondFriendApplyResp
	(*SetFriendRemarkReq)(nil),                // 24: OpenIMServer.friend.setFriendRemarkReq
	(*SetFriendRemarkResp)(nil),               // 25: OpenIMServer.friend.setFriendRemarkResp
	(*GetPaginationFriendsApplyFromReq)(nil),  // 26: OpenIMServer.friend.getPaginationFriendsApplyFromReq
	(*GetPaginationFriendsApplyFromResp)(nil), // 27: OpenIMServer.friend.getPaginationFriendsApplyFromResp
	(*GetFriendIDsReq)(nil),                   // 28: OpenIMServer.friend.getFriendIDsReq
	(*GetFriendIDsResp)(nil),                  // 29: OpenIMServer.friend.getFriendIDsResp
	(*sdkws.RequestPagination)(nil),           // 30: OpenIMServer.sdkws.RequestPagination
	(*sdkws.FriendInfo)(nil),                  // 31: OpenIMServer.sdkws.FriendInfo
	(*sdkws.FriendRequest)(nil),               // 32: OpenIMServer.sdkws.FriendRequest
	(*sdkws.BlackInfo)(nil),                   // 33: OpenIMServer.sdkws.BlackInfo
}
var file_friend_friend_proto_depIdxs = []int32{
	30, // 0: OpenIMServer.friend.getPaginationFriendsReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination
	31, // 1: OpenIMServer.friend.getPaginationFriendsResp.FriendsInfo:type_name -> OpenIMServer.sdkws.FriendInfo
	30, // 2: OpenIMServer.friend.getPaginationFriendsApplyToReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination
	32, // 3: OpenIMServer.friend.getPaginationFriendsApplyToResp.FriendRequests:type_name -> OpenIMServer.sdkws.FriendRequest
	31, // 4: OpenIMServer.friend.getDesignatedFriendsResp.friendsInfo:type_name -> OpenIMServer.sdkws.FriendInfo
	30, // 5: OpenIMServer.friend.getPaginationBlacksReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination
	33, // 6: OpenIMServer.friend.getPaginationBlacksResp.blacks:type_name -> OpenIMServer.sdkws.BlackInfo
	30, // 7: OpenIMServer.friend.getPaginationFriendsApplyFromReq.pagination:type_name -> OpenIMServer.sdkws.RequestPagination
	32, // 8: OpenIMServer.friend.getPaginationFriendsApplyFromResp.friendRequests:type_name -> OpenIMServer.sdkws.FriendRequest
	2,  // 9: OpenIMServer.friend.friend.applyToAddFriend:input_type -> OpenIMServer.friend.applyToAddFriendReq
	6,  // 10: OpenIMServer.friend.friend.getPaginationFriendsApplyTo:input_type -> OpenIMServer.friend.getPaginationFriendsApplyToReq
	26, // 11: OpenIMServer.friend.friend.getPaginationFriendsApplyFrom:input_type -> OpenIMServer.friend.getPaginationFriendsApplyFromReq
	10, // 12: OpenIMServer.friend.friend.addBlack:input_type -> OpenIMServer.friend.addBlackReq
	12, // 13: OpenIMServer.friend.friend.removeBlack:input_type -> OpenIMServer.friend.removeBlackReq
	16, // 14: OpenIMServer.friend.friend.isFriend:input_type -> OpenIMServer.friend.isFriendReq
	18, // 15: OpenIMServer.friend.friend.isBlack:input_type -> OpenIMServer.friend.isBlackReq
	14, // 16: OpenIMServer.friend.friend.getPaginationBlacks:input_type -> OpenIMServer.friend.getPaginationBlacksReq
	20, // 17: OpenIMServer.friend.friend.deleteFriend:input_type -> OpenIMServer.friend.deleteFriendReq
	22, // 18: OpenIMServer.friend.friend.respondFriendApply:input_type -> OpenIMServer.friend.respondFriendApplyReq
	24, // 19: OpenIMServer.friend.friend.setFriendRemark:input_type -> OpenIMServer.friend.setFriendRemarkReq
	4,  // 20: OpenIMServer.friend.friend.importFriends:input_type -> OpenIMServer.friend.importFriendReq
	8,  // 21: OpenIMServer.friend.friend.getDesignatedFriends:input_type -> OpenIMServer.friend.getDesignatedFriendsReq
	0,  // 22: OpenIMServer.friend.friend.getPaginationFriends:input_type -> OpenIMServer.friend.getPaginationFriendsReq
	28, // 23: OpenIMServer.friend.friend.getFriendIDs:input_type -> OpenIMServer.friend.getFriendIDsReq
	3,  // 24: OpenIMServer.friend.friend.applyToAddFriend:output_type -> OpenIMServer.friend.applyToAddFriendResp
	7,  // 25: OpenIMServer.friend.friend.getPaginationFriendsApplyTo:output_type -> OpenIMServer.friend.getPaginationFriendsApplyToResp
	27, // 26: OpenIMServer.friend.friend.getPaginationFriendsApplyFrom:output_type -> OpenIMServer.friend.getPaginationFriendsApplyFromResp
	11, // 27: OpenIMServer.friend.friend.addBlack:output_type -> OpenIMServer.friend.addBlackResp
	13, // 28: OpenIMServer.friend.friend.removeBlack:output_type -> OpenIMServer.friend.removeBlackResp
	17, // 29: OpenIMServer.friend.friend.isFriend:output_type -> OpenIMServer.friend.isFriendResp
	19, // 30: OpenIMServer.friend.friend.isBlack:output_type -> OpenIMServer.friend.isBlackResp
	15, // 31: OpenIMServer.friend.friend.getPaginationBlacks:output_type -> OpenIMServer.friend.getPaginationBlacksResp
	21, // 32: OpenIMServer.friend.friend.deleteFriend:output_type -> OpenIMServer.friend.deleteFriendResp
	23, // 33: OpenIMServer.friend.friend.respondFriendApply:output_type -> OpenIMServer.friend.respondFriendApplyResp
	25, // 34: OpenIMServer.friend.friend.setFriendRemark:output_type -> OpenIMServer.friend.setFriendRemarkResp
	5,  // 35: OpenIMServer.friend.friend.importFriends:output_type -> OpenIMServer.friend.importFriendResp
	9,  // 36: OpenIMServer.friend.friend.getDesignatedFriends:output_type -> OpenIMServer.friend.getDesignatedFriendsResp
	1,  // 37: OpenIMServer.friend.friend.getPaginationFriends:output_type -> OpenIMServer.friend.getPaginationFriendsResp
	29, // 38: OpenIMServer.friend.friend.getFriendIDs:output_type -> OpenIMServer.friend.getFriendIDsResp
	24, // [24:39] is the sub-list for method output_type
	9,  // [9:24] is the sub-list for method input_type
	9,  // [9:9] is the sub-list for extension type_name
	9,  // [9:9] is the sub-list for extension extendee
	0,  // [0:9] is the sub-list for field type_name
}

func init() { file_friend_friend_proto_init() }
func file_friend_friend_proto_init() {
	if File_friend_friend_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_friend_friend_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationFriendsReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationFriendsResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ApplyToAddFriendReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ApplyToAddFriendResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ImportFriendReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ImportFriendResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationFriendsApplyToReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationFriendsApplyToResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDesignatedFriendsReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDesignatedFriendsResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddBlackReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddBlackResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveBlackReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveBlackResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationBlacksReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationBlacksResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IsFriendReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IsFriendResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IsBlackReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IsBlackResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteFriendReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteFriendResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespondFriendApplyReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RespondFriendApplyResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetFriendRemarkReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetFriendRemarkResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationFriendsApplyFromReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetPaginationFriendsApplyFromResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetFriendIDsReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_friend_friend_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetFriendIDsResp); 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_friend_friend_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   30,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_friend_friend_proto_goTypes,
		DependencyIndexes: file_friend_friend_proto_depIdxs,
		MessageInfos:      file_friend_friend_proto_msgTypes,
	}.Build()
	File_friend_friend_proto = out.File
	file_friend_friend_proto_rawDesc = nil
	file_friend_friend_proto_goTypes = nil
	file_friend_friend_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// FriendClient is the client API for Friend service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type FriendClient interface {
	// 申请加好友
	ApplyToAddFriend(ctx context.Context, in *ApplyToAddFriendReq, opts ...grpc.CallOption) (*ApplyToAddFriendResp, error)
	// 获取收到的好友申请列表
	GetPaginationFriendsApplyTo(ctx context.Context, in *GetPaginationFriendsApplyToReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyToResp, error)
	// 获取主动发出去的好友申请列表
	GetPaginationFriendsApplyFrom(ctx context.Context, in *GetPaginationFriendsApplyFromReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyFromResp, error)
	// 添加黑名单
	AddBlack(ctx context.Context, in *AddBlackReq, opts ...grpc.CallOption) (*AddBlackResp, error)
	// 移除黑名单
	RemoveBlack(ctx context.Context, in *RemoveBlackReq, opts ...grpc.CallOption) (*RemoveBlackResp, error)
	// 判断是否好友关系
	IsFriend(ctx context.Context, in *IsFriendReq, opts ...grpc.CallOption) (*IsFriendResp, error)
	// 判断是否在黑名单中
	IsBlack(ctx context.Context, in *IsBlackReq, opts ...grpc.CallOption) (*IsBlackResp, error)
	// 获取黑名单列表
	GetPaginationBlacks(ctx context.Context, in *GetPaginationBlacksReq, opts ...grpc.CallOption) (*GetPaginationBlacksResp, error)
	// 删除好友
	DeleteFriend(ctx context.Context, in *DeleteFriendReq, opts ...grpc.CallOption) (*DeleteFriendResp, error)
	// 对好友申请响应（同意或拒绝）
	RespondFriendApply(ctx context.Context, in *RespondFriendApplyReq, opts ...grpc.CallOption) (*RespondFriendApplyResp, error)
	// 设置好友备注
	SetFriendRemark(ctx context.Context, in *SetFriendRemarkReq, opts ...grpc.CallOption) (*SetFriendRemarkResp, error)
	// 导入好友关系
	ImportFriends(ctx context.Context, in *ImportFriendReq, opts ...grpc.CallOption) (*ImportFriendResp, error)
	// 翻页获取好友列表 无结果不返回错误
	GetDesignatedFriends(ctx context.Context, in *GetDesignatedFriendsReq, opts ...grpc.CallOption) (*GetDesignatedFriendsResp, error)
	// 获取指定好友信息 有id不存在也返回错误
	GetPaginationFriends(ctx context.Context, in *GetPaginationFriendsReq, opts ...grpc.CallOption) (*GetPaginationFriendsResp, error)
	// 获取好友ID列表
	GetFriendIDs(ctx context.Context, in *GetFriendIDsReq, opts ...grpc.CallOption) (*GetFriendIDsResp, error)
}

type friendClient struct {
	cc grpc.ClientConnInterface
}

func NewFriendClient(cc grpc.ClientConnInterface) FriendClient {
	return &friendClient{cc}
}

func (c *friendClient) ApplyToAddFriend(ctx context.Context, in *ApplyToAddFriendReq, opts ...grpc.CallOption) (*ApplyToAddFriendResp, error) {
	out := new(ApplyToAddFriendResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/applyToAddFriend", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) GetPaginationFriendsApplyTo(ctx context.Context, in *GetPaginationFriendsApplyToReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyToResp, error) {
	out := new(GetPaginationFriendsApplyToResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationFriendsApplyTo", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) GetPaginationFriendsApplyFrom(ctx context.Context, in *GetPaginationFriendsApplyFromReq, opts ...grpc.CallOption) (*GetPaginationFriendsApplyFromResp, error) {
	out := new(GetPaginationFriendsApplyFromResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationFriendsApplyFrom", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) AddBlack(ctx context.Context, in *AddBlackReq, opts ...grpc.CallOption) (*AddBlackResp, error) {
	out := new(AddBlackResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/addBlack", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) RemoveBlack(ctx context.Context, in *RemoveBlackReq, opts ...grpc.CallOption) (*RemoveBlackResp, error) {
	out := new(RemoveBlackResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/removeBlack", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) IsFriend(ctx context.Context, in *IsFriendReq, opts ...grpc.CallOption) (*IsFriendResp, error) {
	out := new(IsFriendResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/isFriend", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) IsBlack(ctx context.Context, in *IsBlackReq, opts ...grpc.CallOption) (*IsBlackResp, error) {
	out := new(IsBlackResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/isBlack", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) GetPaginationBlacks(ctx context.Context, in *GetPaginationBlacksReq, opts ...grpc.CallOption) (*GetPaginationBlacksResp, error) {
	out := new(GetPaginationBlacksResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationBlacks", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) DeleteFriend(ctx context.Context, in *DeleteFriendReq, opts ...grpc.CallOption) (*DeleteFriendResp, error) {
	out := new(DeleteFriendResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/deleteFriend", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) RespondFriendApply(ctx context.Context, in *RespondFriendApplyReq, opts ...grpc.CallOption) (*RespondFriendApplyResp, error) {
	out := new(RespondFriendApplyResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/respondFriendApply", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) SetFriendRemark(ctx context.Context, in *SetFriendRemarkReq, opts ...grpc.CallOption) (*SetFriendRemarkResp, error) {
	out := new(SetFriendRemarkResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/setFriendRemark", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) ImportFriends(ctx context.Context, in *ImportFriendReq, opts ...grpc.CallOption) (*ImportFriendResp, error) {
	out := new(ImportFriendResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/importFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) GetDesignatedFriends(ctx context.Context, in *GetDesignatedFriendsReq, opts ...grpc.CallOption) (*GetDesignatedFriendsResp, error) {
	out := new(GetDesignatedFriendsResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getDesignatedFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) GetPaginationFriends(ctx context.Context, in *GetPaginationFriendsReq, opts ...grpc.CallOption) (*GetPaginationFriendsResp, error) {
	out := new(GetPaginationFriendsResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getPaginationFriends", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *friendClient) GetFriendIDs(ctx context.Context, in *GetFriendIDsReq, opts ...grpc.CallOption) (*GetFriendIDsResp, error) {
	out := new(GetFriendIDsResp)
	err := c.cc.Invoke(ctx, "/OpenIMServer.friend.friend/getFriendIDs", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// FriendServer is the server API for Friend service.
type FriendServer interface {
	// 申请加好友
	ApplyToAddFriend(context.Context, *ApplyToAddFriendReq) (*ApplyToAddFriendResp, error)
	// 获取收到的好友申请列表
	GetPaginationFriendsApplyTo(context.Context, *GetPaginationFriendsApplyToReq) (*GetPaginationFriendsApplyToResp, error)
	// 获取主动发出去的好友申请列表
	GetPaginationFriendsApplyFrom(context.Context, *GetPaginationFriendsApplyFromReq) (*GetPaginationFriendsApplyFromResp, error)
	// 添加黑名单
	AddBlack(context.Context, *AddBlackReq) (*AddBlackResp, error)
	// 移除黑名单
	RemoveBlack(context.Context, *RemoveBlackReq) (*RemoveBlackResp, error)
	// 判断是否好友关系
	IsFriend(context.Context, *IsFriendReq) (*IsFriendResp, error)
	// 判断是否在黑名单中
	IsBlack(context.Context, *IsBlackReq) (*IsBlackResp, error)
	// 获取黑名单列表
	GetPaginationBlacks(context.Context, *GetPaginationBlacksReq) (*GetPaginationBlacksResp, error)
	// 删除好友
	DeleteFriend(context.Context, *DeleteFriendReq) (*DeleteFriendResp, error)
	// 对好友申请响应（同意或拒绝）
	RespondFriendApply(context.Context, *RespondFriendApplyReq) (*RespondFriendApplyResp, error)
	// 设置好友备注
	SetFriendRemark(context.Context, *SetFriendRemarkReq) (*SetFriendRemarkResp, error)
	// 导入好友关系
	ImportFriends(context.Context, *ImportFriendReq) (*ImportFriendResp, error)
	// 翻页获取好友列表 无结果不返回错误
	GetDesignatedFriends(context.Context, *GetDesignatedFriendsReq) (*GetDesignatedFriendsResp, error)
	// 获取指定好友信息 有id不存在也返回错误
	GetPaginationFriends(context.Context, *GetPaginationFriendsReq) (*GetPaginationFriendsResp, error)
	// 获取好友ID列表
	GetFriendIDs(context.Context, *GetFriendIDsReq) (*GetFriendIDsResp, error)
}

// UnimplementedFriendServer can be embedded to have forward compatible implementations.
type UnimplementedFriendServer struct {
}

func (*UnimplementedFriendServer) ApplyToAddFriend(context.Context, *ApplyToAddFriendReq) (*ApplyToAddFriendResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ApplyToAddFriend not implemented")
}
func (*UnimplementedFriendServer) GetPaginationFriendsApplyTo(context.Context, *GetPaginationFriendsApplyToReq) (*GetPaginationFriendsApplyToResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPaginationFriendsApplyTo not implemented")
}
func (*UnimplementedFriendServer) GetPaginationFriendsApplyFrom(context.Context, *GetPaginationFriendsApplyFromReq) (*GetPaginationFriendsApplyFromResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPaginationFriendsApplyFrom not implemented")
}
func (*UnimplementedFriendServer) AddBlack(context.Context, *AddBlackReq) (*AddBlackResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AddBlack not implemented")
}
func (*UnimplementedFriendServer) RemoveBlack(context.Context, *RemoveBlackReq) (*RemoveBlackResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RemoveBlack not implemented")
}
func (*UnimplementedFriendServer) IsFriend(context.Context, *IsFriendReq) (*IsFriendResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method IsFriend not implemented")
}
func (*UnimplementedFriendServer) IsBlack(context.Context, *IsBlackReq) (*IsBlackResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method IsBlack not implemented")
}
func (*UnimplementedFriendServer) GetPaginationBlacks(context.Context, *GetPaginationBlacksReq) (*GetPaginationBlacksResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPaginationBlacks not implemented")
}
func (*UnimplementedFriendServer) DeleteFriend(context.Context, *DeleteFriendReq) (*DeleteFriendResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteFriend not implemented")
}
func (*UnimplementedFriendServer) RespondFriendApply(context.Context, *RespondFriendApplyReq) (*RespondFriendApplyResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RespondFriendApply not implemented")
}
func (*UnimplementedFriendServer) SetFriendRemark(context.Context, *SetFriendRemarkReq) (*SetFriendRemarkResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SetFriendRemark not implemented")
}
func (*UnimplementedFriendServer) ImportFriends(context.Context, *ImportFriendReq) (*ImportFriendResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ImportFriends not implemented")
}
func (*UnimplementedFriendServer) GetDesignatedFriends(context.Context, *GetDesignatedFriendsReq) (*GetDesignatedFriendsResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetDesignatedFriends not implemented")
}
func (*UnimplementedFriendServer) GetPaginationFriends(context.Context, *GetPaginationFriendsReq) (*GetPaginationFriendsResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPaginationFriends not implemented")
}
func (*UnimplementedFriendServer) GetFriendIDs(context.Context, *GetFriendIDsReq) (*GetFriendIDsResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetFriendIDs not implemented")
}

func RegisterFriendServer(s *grpc.Server, srv FriendServer) {
	s.RegisterService(&_Friend_serviceDesc, srv)
}

func _Friend_ApplyToAddFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ApplyToAddFriendReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).ApplyToAddFriend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/ApplyToAddFriend",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).ApplyToAddFriend(ctx, req.(*ApplyToAddFriendReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_GetPaginationFriendsApplyTo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPaginationFriendsApplyToReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).GetPaginationFriendsApplyTo(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/GetPaginationFriendsApplyTo",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).GetPaginationFriendsApplyTo(ctx, req.(*GetPaginationFriendsApplyToReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_GetPaginationFriendsApplyFrom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPaginationFriendsApplyFromReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).GetPaginationFriendsApplyFrom(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/GetPaginationFriendsApplyFrom",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).GetPaginationFriendsApplyFrom(ctx, req.(*GetPaginationFriendsApplyFromReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_AddBlack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AddBlackReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).AddBlack(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/AddBlack",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).AddBlack(ctx, req.(*AddBlackReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_RemoveBlack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RemoveBlackReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).RemoveBlack(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/RemoveBlack",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).RemoveBlack(ctx, req.(*RemoveBlackReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_IsFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(IsFriendReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).IsFriend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/IsFriend",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).IsFriend(ctx, req.(*IsFriendReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_IsBlack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(IsBlackReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).IsBlack(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/IsBlack",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).IsBlack(ctx, req.(*IsBlackReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_GetPaginationBlacks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPaginationBlacksReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).GetPaginationBlacks(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/GetPaginationBlacks",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).GetPaginationBlacks(ctx, req.(*GetPaginationBlacksReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_DeleteFriend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteFriendReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).DeleteFriend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/DeleteFriend",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).DeleteFriend(ctx, req.(*DeleteFriendReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_RespondFriendApply_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RespondFriendApplyReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).RespondFriendApply(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/RespondFriendApply",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).RespondFriendApply(ctx, req.(*RespondFriendApplyReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_SetFriendRemark_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SetFriendRemarkReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).SetFriendRemark(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/SetFriendRemark",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).SetFriendRemark(ctx, req.(*SetFriendRemarkReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_ImportFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ImportFriendReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).ImportFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/ImportFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).ImportFriends(ctx, req.(*ImportFriendReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_GetDesignatedFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetDesignatedFriendsReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).GetDesignatedFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/GetDesignatedFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).GetDesignatedFriends(ctx, req.(*GetDesignatedFriendsReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_GetPaginationFriends_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetPaginationFriendsReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).GetPaginationFriends(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/GetPaginationFriends",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).GetPaginationFriends(ctx, req.(*GetPaginationFriendsReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Friend_GetFriendIDs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetFriendIDsReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(FriendServer).GetFriendIDs(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/OpenIMServer.friend.friend/GetFriendIDs",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(FriendServer).GetFriendIDs(ctx, req.(*GetFriendIDsReq))
	}
	return interceptor(ctx, in, info, handler)
}

var _Friend_serviceDesc = grpc.ServiceDesc{
	ServiceName: "OpenIMServer.friend.friend",
	HandlerType: (*FriendServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "applyToAddFriend",
			Handler:    _Friend_ApplyToAddFriend_Handler,
		},
		{
			MethodName: "getPaginationFriendsApplyTo",
			Handler:    _Friend_GetPaginationFriendsApplyTo_Handler,
		},
		{
			MethodName: "getPaginationFriendsApplyFrom",
			Handler:    _Friend_GetPaginationFriendsApplyFrom_Handler,
		},
		{
			MethodName: "addBlack",
			Handler:    _Friend_AddBlack_Handler,
		},
		{
			MethodName: "removeBlack",
			Handler:    _Friend_RemoveBlack_Handler,
		},
		{
			MethodName: "isFriend",
			Handler:    _Friend_IsFriend_Handler,
		},
		{
			MethodName: "isBlack",
			Handler:    _Friend_IsBlack_Handler,
		},
		{
			MethodName: "getPaginationBlacks",
			Handler:    _Friend_GetPaginationBlacks_Handler,
		},
		{
			MethodName: "deleteFriend",
			Handler:    _Friend_DeleteFriend_Handler,
		},
		{
			MethodName: "respondFriendApply",
			Handler:    _Friend_RespondFriendApply_Handler,
		},
		{
			MethodName: "setFriendRemark",
			Handler:    _Friend_SetFriendRemark_Handler,
		},
		{
			MethodName: "importFriends",
			Handler:    _Friend_ImportFriends_Handler,
		},
		{
			MethodName: "getDesignatedFriends",
			Handler:    _Friend_GetDesignatedFriends_Handler,
		},
		{
			MethodName: "getPaginationFriends",
			Handler:    _Friend_GetPaginationFriends_Handler,
		},
		{
			MethodName: "getFriendIDs",
			Handler:    _Friend_GetFriendIDs_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "friend/friend.proto",
}
