From a0cac4698b5a684612cd2d11e2d5ed8e998fe552 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Tue, 21 Jul 2020 06:57:53 +0800 Subject: [PATCH] supported more group operation. --- client/builders.go | 68 +- client/client.go | 18 +- client/entities.go | 25 +- client/pb/oidb/oidb.pb.go | 1596 ++++++++++++++++++++++++++++++++++++ client/pb/oidb/oidb.proto | 123 +++ protocol/packets/global.go | 5 - 6 files changed, 1826 insertions(+), 9 deletions(-) create mode 100644 client/pb/oidb/oidb.pb.go create mode 100644 client/pb/oidb/oidb.proto diff --git a/client/builders.go b/client/builders.go index e7e90e39..212bf16e 100644 --- a/client/builders.go +++ b/client/builders.go @@ -8,6 +8,7 @@ import ( "github.com/Mrs4s/MiraiGo/client/pb" "github.com/Mrs4s/MiraiGo/client/pb/cmd0x352" "github.com/Mrs4s/MiraiGo/client/pb/msg" + "github.com/Mrs4s/MiraiGo/client/pb/oidb" "github.com/Mrs4s/MiraiGo/client/pb/structmsg" "github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/MiraiGo/protocol/crypto" @@ -701,10 +702,75 @@ func (c *QQClient) buildEditGroupTagPacket(groupCode, memberUin int64, newTag st Context: map[string]string{}, Status: map[string]string{}, } - packet := packets.BuildUniPacket(c.Uin, seq, "friendlist.ModifyGroupCardReq", 1, c.OutGoingPacketSessionId, []byte{}, c.sigInfo.d2Key, pkt.ToBytes()) + packet := packets.BuildUniPacket(c.Uin, seq, "friendlist.ModifyGroupCardReq", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, pkt.ToBytes()) return seq, packet } +// OidbSvc.0x8fc_2 +func (c *QQClient) buildEditSpecialTitlePacket(groupCode, memberUin int64, newTitle string) (uint16, []byte) { + seq := c.nextSeq() + body := &oidb.D8FCReqBody{ + GroupCode: groupCode, + MemLevelInfo: []*oidb.D8FCMemberInfo{ + { + Uin: memberUin, + UinName: []byte(newTitle), + SpecialTitle: []byte(newTitle), + SpecialTitleExpireTime: -1, + }, + }, + } + b, _ := proto.Marshal(body) + req := &oidb.OIDBSSOPkg{ + Command: 2300, + ServiceType: 2, + Bodybuffer: b, + } + payload, _ := proto.Marshal(req) + packet := packets.BuildUniPacket(c.Uin, seq, "OidbSvc.0x8fc_2", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload) + return seq, packet +} + +// OidbSvc.0x89a_0 +func (c *QQClient) buildGroupOperationPacket(body *oidb.D89AReqBody) (uint16, []byte) { + seq := c.nextSeq() + b, _ := proto.Marshal(body) + req := &oidb.OIDBSSOPkg{ + Command: 2202, + Bodybuffer: b, + } + payload, _ := proto.Marshal(req) + packet := packets.BuildUniPacket(c.Uin, seq, "OidbSvc.0x89a_0", 1, c.OutGoingPacketSessionId, EmptyBytes, c.sigInfo.d2Key, payload) + return seq, packet +} + +// OidbSvc.0x89a_0 +func (c *QQClient) buildGroupNameUpdatePacket(groupCode int64, newName string) (uint16, []byte) { + body := &oidb.D89AReqBody{ + GroupCode: groupCode, + StGroupInfo: &oidb.D89AGroupinfo{ + IngGroupName: []byte(newName), + }, + } + return c.buildGroupOperationPacket(body) +} + +// OidbSvc.0x89a_0 +func (c *QQClient) buildGroupMuteAllPacket(groupCode int64, mute bool) (uint16, []byte) { + body := &oidb.D89AReqBody{ + GroupCode: groupCode, + StGroupInfo: &oidb.D89AGroupinfo{ + ShutupTime: func() int32 { + if mute { + return 1 + } + return 0 + }(), + }, + } + return c.buildGroupOperationPacket(body) +} + /* func (c *QQClient) buildMultiMsgDownRequestPacket() (uint16, []byte){ seq := c.nextSeq() diff --git a/client/client.go b/client/client.go index c68815b9..17628d71 100644 --- a/client/client.go +++ b/client/client.go @@ -435,6 +435,10 @@ func (g *GroupInfo) SelfPermission() MemberPermission { return g.FindMember(g.bot.Uin).Permission } +func (g *GroupInfo) AdministratorOrOwner() bool { + return g.SelfPermission() == Administrator || g.SelfPermission() == Owner +} + func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo { for _, m := range g.Members { f := m @@ -445,10 +449,22 @@ func (g *GroupInfo) FindMember(uin int64) *GroupMemberInfo { return nil } -func (c *QQClient) EditMemberCard(groupCode, memberUin int64, card string) { +func (c *QQClient) editMemberCard(groupCode, memberUin int64, card string) { _, _ = c.sendAndWait(c.buildEditGroupTagPacket(groupCode, memberUin, card)) } +func (c *QQClient) editMemberSpecialTitle(groupCode, memberUin int64, title string) { + _, _ = c.sendAndWait(c.buildEditSpecialTitlePacket(groupCode, memberUin, title)) +} + +func (c *QQClient) updateGroupName(groupCode int64, newName string) { + _, _ = c.sendAndWait(c.buildGroupNameUpdatePacket(groupCode, newName)) +} + +func (c *QQClient) groupMuteAll(groupCode int64, mute bool) { + _, _ = c.sendAndWait(c.buildGroupMuteAllPacket(groupCode, mute)) +} + func (g *GroupInfo) removeMember(uin int64) { if g.memLock == nil { g.memLock = new(sync.Mutex) diff --git a/client/entities.go b/client/entities.go index ec345287..33010806 100644 --- a/client/entities.go +++ b/client/entities.go @@ -2,6 +2,7 @@ package client import ( "errors" + "strings" "sync" ) @@ -174,6 +175,19 @@ const ( Member ) +func (g *GroupInfo) UpdateName(newName string) { + if g.AdministratorOrOwner() && strings.Count(newName, "") <= 20 { + g.bot.updateGroupName(g.Code, newName) + g.Name = newName + } +} + +func (g *GroupInfo) MuteAll(mute bool) { + if g.AdministratorOrOwner() { + g.bot.groupMuteAll(g.Code, mute) + } +} + func (m *GroupMemberInfo) DisplayName() string { if m.CardName == "" { return m.Nickname @@ -182,12 +196,19 @@ func (m *GroupMemberInfo) DisplayName() string { } func (m *GroupMemberInfo) EditCard(card string) { - if m.Manageable() { - m.Group.bot.EditMemberCard(m.Group.Code, m.Uin, card) + if m.Manageable() && strings.Count(card, "") <= 20 { + m.Group.bot.editMemberCard(m.Group.Code, m.Uin, card) m.CardName = card } } +func (m *GroupMemberInfo) EditSpecialTitle(title string) { + if m.Group.SelfPermission() == Owner && strings.Count(title, "") <= 6 { + m.Group.bot.editMemberSpecialTitle(m.Group.Code, m.Uin, title) + m.SpecialTitle = title + } +} + func (m *GroupMemberInfo) Manageable() bool { if m.Uin == m.Group.bot.Uin { return true diff --git a/client/pb/oidb/oidb.pb.go b/client/pb/oidb/oidb.pb.go new file mode 100644 index 00000000..c853a743 --- /dev/null +++ b/client/pb/oidb/oidb.pb.go @@ -0,0 +1,1596 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.11.4 +// source: oidb.proto + +package oidb + +import ( + proto "github.com/golang/protobuf/proto" + 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) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type OIDBSSOPkg struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Command int32 `protobuf:"varint,1,opt,name=command,proto3" json:"command,omitempty"` + ServiceType int32 `protobuf:"varint,2,opt,name=serviceType,proto3" json:"serviceType,omitempty"` + Result int32 `protobuf:"varint,3,opt,name=result,proto3" json:"result,omitempty"` + Bodybuffer []byte `protobuf:"bytes,4,opt,name=bodybuffer,proto3" json:"bodybuffer,omitempty"` + ErrorMsg string `protobuf:"bytes,5,opt,name=errorMsg,proto3" json:"errorMsg,omitempty"` + ClientVersion string `protobuf:"bytes,6,opt,name=clientVersion,proto3" json:"clientVersion,omitempty"` +} + +func (x *OIDBSSOPkg) Reset() { + *x = OIDBSSOPkg{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OIDBSSOPkg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OIDBSSOPkg) ProtoMessage() {} + +func (x *OIDBSSOPkg) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 OIDBSSOPkg.ProtoReflect.Descriptor instead. +func (*OIDBSSOPkg) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{0} +} + +func (x *OIDBSSOPkg) GetCommand() int32 { + if x != nil { + return x.Command + } + return 0 +} + +func (x *OIDBSSOPkg) GetServiceType() int32 { + if x != nil { + return x.ServiceType + } + return 0 +} + +func (x *OIDBSSOPkg) GetResult() int32 { + if x != nil { + return x.Result + } + return 0 +} + +func (x *OIDBSSOPkg) GetBodybuffer() []byte { + if x != nil { + return x.Bodybuffer + } + return nil +} + +func (x *OIDBSSOPkg) GetErrorMsg() string { + if x != nil { + return x.ErrorMsg + } + return "" +} + +func (x *OIDBSSOPkg) GetClientVersion() string { + if x != nil { + return x.ClientVersion + } + return "" +} + +type D8FCReqBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupCode int64 `protobuf:"varint,1,opt,name=groupCode,proto3" json:"groupCode,omitempty"` + ShowFlag int32 `protobuf:"varint,2,opt,name=showFlag,proto3" json:"showFlag,omitempty"` + MemLevelInfo []*D8FCMemberInfo `protobuf:"bytes,3,rep,name=memLevelInfo,proto3" json:"memLevelInfo,omitempty"` + LevelName []*D8FCLevelName `protobuf:"bytes,4,rep,name=levelName,proto3" json:"levelName,omitempty"` + UpdateTime int32 `protobuf:"varint,5,opt,name=updateTime,proto3" json:"updateTime,omitempty"` + OfficeMode int32 `protobuf:"varint,6,opt,name=officeMode,proto3" json:"officeMode,omitempty"` + GroupOpenAppid int32 `protobuf:"varint,7,opt,name=groupOpenAppid,proto3" json:"groupOpenAppid,omitempty"` + MsgClientInfo *D8FCClientInfo `protobuf:"bytes,8,opt,name=msgClientInfo,proto3" json:"msgClientInfo,omitempty"` + AuthKey []byte `protobuf:"bytes,9,opt,name=authKey,proto3" json:"authKey,omitempty"` +} + +func (x *D8FCReqBody) Reset() { + *x = D8FCReqBody{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D8FCReqBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D8FCReqBody) ProtoMessage() {} + +func (x *D8FCReqBody) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D8FCReqBody.ProtoReflect.Descriptor instead. +func (*D8FCReqBody) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{1} +} + +func (x *D8FCReqBody) GetGroupCode() int64 { + if x != nil { + return x.GroupCode + } + return 0 +} + +func (x *D8FCReqBody) GetShowFlag() int32 { + if x != nil { + return x.ShowFlag + } + return 0 +} + +func (x *D8FCReqBody) GetMemLevelInfo() []*D8FCMemberInfo { + if x != nil { + return x.MemLevelInfo + } + return nil +} + +func (x *D8FCReqBody) GetLevelName() []*D8FCLevelName { + if x != nil { + return x.LevelName + } + return nil +} + +func (x *D8FCReqBody) GetUpdateTime() int32 { + if x != nil { + return x.UpdateTime + } + return 0 +} + +func (x *D8FCReqBody) GetOfficeMode() int32 { + if x != nil { + return x.OfficeMode + } + return 0 +} + +func (x *D8FCReqBody) GetGroupOpenAppid() int32 { + if x != nil { + return x.GroupOpenAppid + } + return 0 +} + +func (x *D8FCReqBody) GetMsgClientInfo() *D8FCClientInfo { + if x != nil { + return x.MsgClientInfo + } + return nil +} + +func (x *D8FCReqBody) GetAuthKey() []byte { + if x != nil { + return x.AuthKey + } + return nil +} + +type D89AReqBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupCode int64 `protobuf:"varint,1,opt,name=groupCode,proto3" json:"groupCode,omitempty"` + StGroupInfo *D89AGroupinfo `protobuf:"bytes,2,opt,name=stGroupInfo,proto3" json:"stGroupInfo,omitempty"` + OriginalOperatorUin int64 `protobuf:"varint,3,opt,name=originalOperatorUin,proto3" json:"originalOperatorUin,omitempty"` + ReqGroupOpenAppid int32 `protobuf:"varint,4,opt,name=reqGroupOpenAppid,proto3" json:"reqGroupOpenAppid,omitempty"` +} + +func (x *D89AReqBody) Reset() { + *x = D89AReqBody{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D89AReqBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D89AReqBody) ProtoMessage() {} + +func (x *D89AReqBody) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D89AReqBody.ProtoReflect.Descriptor instead. +func (*D89AReqBody) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{2} +} + +func (x *D89AReqBody) GetGroupCode() int64 { + if x != nil { + return x.GroupCode + } + return 0 +} + +func (x *D89AReqBody) GetStGroupInfo() *D89AGroupinfo { + if x != nil { + return x.StGroupInfo + } + return nil +} + +func (x *D89AReqBody) GetOriginalOperatorUin() int64 { + if x != nil { + return x.OriginalOperatorUin + } + return 0 +} + +func (x *D89AReqBody) GetReqGroupOpenAppid() int32 { + if x != nil { + return x.ReqGroupOpenAppid + } + return 0 +} + +type D89AGroupinfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupExtAdmNum int32 `protobuf:"varint,1,opt,name=groupExtAdmNum,proto3" json:"groupExtAdmNum,omitempty"` + Flag int32 `protobuf:"varint,2,opt,name=flag,proto3" json:"flag,omitempty"` + IngGroupName []byte `protobuf:"bytes,3,opt,name=ingGroupName,proto3" json:"ingGroupName,omitempty"` + IngGroupMemo []byte `protobuf:"bytes,4,opt,name=ingGroupMemo,proto3" json:"ingGroupMemo,omitempty"` + IngGroupFingerMemo []byte `protobuf:"bytes,5,opt,name=ingGroupFingerMemo,proto3" json:"ingGroupFingerMemo,omitempty"` + IngGroupAioSkinUrl []byte `protobuf:"bytes,6,opt,name=ingGroupAioSkinUrl,proto3" json:"ingGroupAioSkinUrl,omitempty"` + IngGroupBoardSkinUrl []byte `protobuf:"bytes,7,opt,name=ingGroupBoardSkinUrl,proto3" json:"ingGroupBoardSkinUrl,omitempty"` + IngGroupCoverSkinUrl []byte `protobuf:"bytes,8,opt,name=ingGroupCoverSkinUrl,proto3" json:"ingGroupCoverSkinUrl,omitempty"` + GroupGrade int32 `protobuf:"varint,9,opt,name=groupGrade,proto3" json:"groupGrade,omitempty"` + ActiveMemberNum int32 `protobuf:"varint,10,opt,name=activeMemberNum,proto3" json:"activeMemberNum,omitempty"` + CertificationType int32 `protobuf:"varint,11,opt,name=certificationType,proto3" json:"certificationType,omitempty"` + IngCertificationText []byte `protobuf:"bytes,12,opt,name=ingCertificationText,proto3" json:"ingCertificationText,omitempty"` + IngGroupRichFingerMemo []byte `protobuf:"bytes,13,opt,name=ingGroupRichFingerMemo,proto3" json:"ingGroupRichFingerMemo,omitempty"` + StGroupNewguidelines *D89AGroupNewGuidelinesInfo `protobuf:"bytes,14,opt,name=stGroupNewguidelines,proto3" json:"stGroupNewguidelines,omitempty"` + GroupFace int32 `protobuf:"varint,15,opt,name=groupFace,proto3" json:"groupFace,omitempty"` + AddOption int32 `protobuf:"varint,16,opt,name=addOption,proto3" json:"addOption,omitempty"` + ShutupTime int32 `protobuf:"varint,17,opt,name=shutupTime,proto3" json:"shutupTime,omitempty"` + GroupTypeFlag int32 `protobuf:"varint,18,opt,name=groupTypeFlag,proto3" json:"groupTypeFlag,omitempty"` + StringGroupTag []byte `protobuf:"bytes,19,opt,name=stringGroupTag,proto3" json:"stringGroupTag,omitempty"` + MsgGroupGeoInfo *D89AGroupGeoInfo `protobuf:"bytes,20,opt,name=msgGroupGeoInfo,proto3" json:"msgGroupGeoInfo,omitempty"` + GroupClassExt int32 `protobuf:"varint,21,opt,name=groupClassExt,proto3" json:"groupClassExt,omitempty"` + IngGroupClassText []byte `protobuf:"bytes,22,opt,name=ingGroupClassText,proto3" json:"ingGroupClassText,omitempty"` + AppPrivilegeFlag int32 `protobuf:"varint,23,opt,name=appPrivilegeFlag,proto3" json:"appPrivilegeFlag,omitempty"` + AppPrivilegeMask int32 `protobuf:"varint,24,opt,name=appPrivilegeMask,proto3" json:"appPrivilegeMask,omitempty"` + StGroupExInfo *D89AGroupExInfoOnly `protobuf:"bytes,25,opt,name=stGroupExInfo,proto3" json:"stGroupExInfo,omitempty"` + GroupSecLevel int32 `protobuf:"varint,26,opt,name=groupSecLevel,proto3" json:"groupSecLevel,omitempty"` + GroupSecLevelInfo int32 `protobuf:"varint,27,opt,name=groupSecLevelInfo,proto3" json:"groupSecLevelInfo,omitempty"` + SubscriptionUin int64 `protobuf:"varint,28,opt,name=subscriptionUin,proto3" json:"subscriptionUin,omitempty"` + AllowMemberInvite int32 `protobuf:"varint,29,opt,name=allowMemberInvite,proto3" json:"allowMemberInvite,omitempty"` + IngGroupQuestion []byte `protobuf:"bytes,30,opt,name=ingGroupQuestion,proto3" json:"ingGroupQuestion,omitempty"` + IngGroupAnswer []byte `protobuf:"bytes,31,opt,name=ingGroupAnswer,proto3" json:"ingGroupAnswer,omitempty"` + GroupFlagext3 int32 `protobuf:"varint,32,opt,name=groupFlagext3,proto3" json:"groupFlagext3,omitempty"` + GroupFlagext3Mask int32 `protobuf:"varint,33,opt,name=groupFlagext3Mask,proto3" json:"groupFlagext3Mask,omitempty"` + GroupOpenAppid int32 `protobuf:"varint,34,opt,name=groupOpenAppid,proto3" json:"groupOpenAppid,omitempty"` + NoFingerOpenFlag int32 `protobuf:"varint,35,opt,name=noFingerOpenFlag,proto3" json:"noFingerOpenFlag,omitempty"` + NoCodeFingerOpenFlag int32 `protobuf:"varint,36,opt,name=noCodeFingerOpenFlag,proto3" json:"noCodeFingerOpenFlag,omitempty"` + RootId int64 `protobuf:"varint,37,opt,name=rootId,proto3" json:"rootId,omitempty"` + MsgLimitFrequency int32 `protobuf:"varint,38,opt,name=msgLimitFrequency,proto3" json:"msgLimitFrequency,omitempty"` +} + +func (x *D89AGroupinfo) Reset() { + *x = D89AGroupinfo{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D89AGroupinfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D89AGroupinfo) ProtoMessage() {} + +func (x *D89AGroupinfo) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D89AGroupinfo.ProtoReflect.Descriptor instead. +func (*D89AGroupinfo) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{3} +} + +func (x *D89AGroupinfo) GetGroupExtAdmNum() int32 { + if x != nil { + return x.GroupExtAdmNum + } + return 0 +} + +func (x *D89AGroupinfo) GetFlag() int32 { + if x != nil { + return x.Flag + } + return 0 +} + +func (x *D89AGroupinfo) GetIngGroupName() []byte { + if x != nil { + return x.IngGroupName + } + return nil +} + +func (x *D89AGroupinfo) GetIngGroupMemo() []byte { + if x != nil { + return x.IngGroupMemo + } + return nil +} + +func (x *D89AGroupinfo) GetIngGroupFingerMemo() []byte { + if x != nil { + return x.IngGroupFingerMemo + } + return nil +} + +func (x *D89AGroupinfo) GetIngGroupAioSkinUrl() []byte { + if x != nil { + return x.IngGroupAioSkinUrl + } + return nil +} + +func (x *D89AGroupinfo) GetIngGroupBoardSkinUrl() []byte { + if x != nil { + return x.IngGroupBoardSkinUrl + } + return nil +} + +func (x *D89AGroupinfo) GetIngGroupCoverSkinUrl() []byte { + if x != nil { + return x.IngGroupCoverSkinUrl + } + return nil +} + +func (x *D89AGroupinfo) GetGroupGrade() int32 { + if x != nil { + return x.GroupGrade + } + return 0 +} + +func (x *D89AGroupinfo) GetActiveMemberNum() int32 { + if x != nil { + return x.ActiveMemberNum + } + return 0 +} + +func (x *D89AGroupinfo) GetCertificationType() int32 { + if x != nil { + return x.CertificationType + } + return 0 +} + +func (x *D89AGroupinfo) GetIngCertificationText() []byte { + if x != nil { + return x.IngCertificationText + } + return nil +} + +func (x *D89AGroupinfo) GetIngGroupRichFingerMemo() []byte { + if x != nil { + return x.IngGroupRichFingerMemo + } + return nil +} + +func (x *D89AGroupinfo) GetStGroupNewguidelines() *D89AGroupNewGuidelinesInfo { + if x != nil { + return x.StGroupNewguidelines + } + return nil +} + +func (x *D89AGroupinfo) GetGroupFace() int32 { + if x != nil { + return x.GroupFace + } + return 0 +} + +func (x *D89AGroupinfo) GetAddOption() int32 { + if x != nil { + return x.AddOption + } + return 0 +} + +func (x *D89AGroupinfo) GetShutupTime() int32 { + if x != nil { + return x.ShutupTime + } + return 0 +} + +func (x *D89AGroupinfo) GetGroupTypeFlag() int32 { + if x != nil { + return x.GroupTypeFlag + } + return 0 +} + +func (x *D89AGroupinfo) GetStringGroupTag() []byte { + if x != nil { + return x.StringGroupTag + } + return nil +} + +func (x *D89AGroupinfo) GetMsgGroupGeoInfo() *D89AGroupGeoInfo { + if x != nil { + return x.MsgGroupGeoInfo + } + return nil +} + +func (x *D89AGroupinfo) GetGroupClassExt() int32 { + if x != nil { + return x.GroupClassExt + } + return 0 +} + +func (x *D89AGroupinfo) GetIngGroupClassText() []byte { + if x != nil { + return x.IngGroupClassText + } + return nil +} + +func (x *D89AGroupinfo) GetAppPrivilegeFlag() int32 { + if x != nil { + return x.AppPrivilegeFlag + } + return 0 +} + +func (x *D89AGroupinfo) GetAppPrivilegeMask() int32 { + if x != nil { + return x.AppPrivilegeMask + } + return 0 +} + +func (x *D89AGroupinfo) GetStGroupExInfo() *D89AGroupExInfoOnly { + if x != nil { + return x.StGroupExInfo + } + return nil +} + +func (x *D89AGroupinfo) GetGroupSecLevel() int32 { + if x != nil { + return x.GroupSecLevel + } + return 0 +} + +func (x *D89AGroupinfo) GetGroupSecLevelInfo() int32 { + if x != nil { + return x.GroupSecLevelInfo + } + return 0 +} + +func (x *D89AGroupinfo) GetSubscriptionUin() int64 { + if x != nil { + return x.SubscriptionUin + } + return 0 +} + +func (x *D89AGroupinfo) GetAllowMemberInvite() int32 { + if x != nil { + return x.AllowMemberInvite + } + return 0 +} + +func (x *D89AGroupinfo) GetIngGroupQuestion() []byte { + if x != nil { + return x.IngGroupQuestion + } + return nil +} + +func (x *D89AGroupinfo) GetIngGroupAnswer() []byte { + if x != nil { + return x.IngGroupAnswer + } + return nil +} + +func (x *D89AGroupinfo) GetGroupFlagext3() int32 { + if x != nil { + return x.GroupFlagext3 + } + return 0 +} + +func (x *D89AGroupinfo) GetGroupFlagext3Mask() int32 { + if x != nil { + return x.GroupFlagext3Mask + } + return 0 +} + +func (x *D89AGroupinfo) GetGroupOpenAppid() int32 { + if x != nil { + return x.GroupOpenAppid + } + return 0 +} + +func (x *D89AGroupinfo) GetNoFingerOpenFlag() int32 { + if x != nil { + return x.NoFingerOpenFlag + } + return 0 +} + +func (x *D89AGroupinfo) GetNoCodeFingerOpenFlag() int32 { + if x != nil { + return x.NoCodeFingerOpenFlag + } + return 0 +} + +func (x *D89AGroupinfo) GetRootId() int64 { + if x != nil { + return x.RootId + } + return 0 +} + +func (x *D89AGroupinfo) GetMsgLimitFrequency() int32 { + if x != nil { + return x.MsgLimitFrequency + } + return 0 +} + +type D89AGroupNewGuidelinesInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BoolEnabled bool `protobuf:"varint,1,opt,name=boolEnabled,proto3" json:"boolEnabled,omitempty"` + IngContent []byte `protobuf:"bytes,2,opt,name=ingContent,proto3" json:"ingContent,omitempty"` +} + +func (x *D89AGroupNewGuidelinesInfo) Reset() { + *x = D89AGroupNewGuidelinesInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D89AGroupNewGuidelinesInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D89AGroupNewGuidelinesInfo) ProtoMessage() {} + +func (x *D89AGroupNewGuidelinesInfo) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D89AGroupNewGuidelinesInfo.ProtoReflect.Descriptor instead. +func (*D89AGroupNewGuidelinesInfo) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{4} +} + +func (x *D89AGroupNewGuidelinesInfo) GetBoolEnabled() bool { + if x != nil { + return x.BoolEnabled + } + return false +} + +func (x *D89AGroupNewGuidelinesInfo) GetIngContent() []byte { + if x != nil { + return x.IngContent + } + return nil +} + +type D89AGroupExInfoOnly struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TribeId int32 `protobuf:"varint,1,opt,name=tribeId,proto3" json:"tribeId,omitempty"` + MoneyForAddGroup int32 `protobuf:"varint,2,opt,name=moneyForAddGroup,proto3" json:"moneyForAddGroup,omitempty"` +} + +func (x *D89AGroupExInfoOnly) Reset() { + *x = D89AGroupExInfoOnly{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D89AGroupExInfoOnly) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D89AGroupExInfoOnly) ProtoMessage() {} + +func (x *D89AGroupExInfoOnly) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D89AGroupExInfoOnly.ProtoReflect.Descriptor instead. +func (*D89AGroupExInfoOnly) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{5} +} + +func (x *D89AGroupExInfoOnly) GetTribeId() int32 { + if x != nil { + return x.TribeId + } + return 0 +} + +func (x *D89AGroupExInfoOnly) GetMoneyForAddGroup() int32 { + if x != nil { + return x.MoneyForAddGroup + } + return 0 +} + +type D89AGroupGeoInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CityId int32 `protobuf:"varint,1,opt,name=cityId,proto3" json:"cityId,omitempty"` + Longtitude int64 `protobuf:"varint,2,opt,name=longtitude,proto3" json:"longtitude,omitempty"` + Latitude int64 `protobuf:"varint,3,opt,name=latitude,proto3" json:"latitude,omitempty"` + IngGeoContent []byte `protobuf:"bytes,4,opt,name=ingGeoContent,proto3" json:"ingGeoContent,omitempty"` + PoiId int64 `protobuf:"varint,5,opt,name=poiId,proto3" json:"poiId,omitempty"` +} + +func (x *D89AGroupGeoInfo) Reset() { + *x = D89AGroupGeoInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D89AGroupGeoInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D89AGroupGeoInfo) ProtoMessage() {} + +func (x *D89AGroupGeoInfo) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D89AGroupGeoInfo.ProtoReflect.Descriptor instead. +func (*D89AGroupGeoInfo) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{6} +} + +func (x *D89AGroupGeoInfo) GetCityId() int32 { + if x != nil { + return x.CityId + } + return 0 +} + +func (x *D89AGroupGeoInfo) GetLongtitude() int64 { + if x != nil { + return x.Longtitude + } + return 0 +} + +func (x *D89AGroupGeoInfo) GetLatitude() int64 { + if x != nil { + return x.Latitude + } + return 0 +} + +func (x *D89AGroupGeoInfo) GetIngGeoContent() []byte { + if x != nil { + return x.IngGeoContent + } + return nil +} + +func (x *D89AGroupGeoInfo) GetPoiId() int64 { + if x != nil { + return x.PoiId + } + return 0 +} + +type D8FCMemberInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uin int64 `protobuf:"varint,1,opt,name=uin,proto3" json:"uin,omitempty"` + Point int32 `protobuf:"varint,2,opt,name=point,proto3" json:"point,omitempty"` + ActiveDay int32 `protobuf:"varint,3,opt,name=activeDay,proto3" json:"activeDay,omitempty"` + Level int32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"` + SpecialTitle []byte `protobuf:"bytes,5,opt,name=specialTitle,proto3" json:"specialTitle,omitempty"` + SpecialTitleExpireTime int32 `protobuf:"varint,6,opt,name=specialTitleExpireTime,proto3" json:"specialTitleExpireTime,omitempty"` + UinName []byte `protobuf:"bytes,7,opt,name=uinName,proto3" json:"uinName,omitempty"` + MemberCardName []byte `protobuf:"bytes,8,opt,name=memberCardName,proto3" json:"memberCardName,omitempty"` + Phone []byte `protobuf:"bytes,9,opt,name=phone,proto3" json:"phone,omitempty"` + Email []byte `protobuf:"bytes,10,opt,name=email,proto3" json:"email,omitempty"` + Remark []byte `protobuf:"bytes,11,opt,name=remark,proto3" json:"remark,omitempty"` + Gender int32 `protobuf:"varint,12,opt,name=gender,proto3" json:"gender,omitempty"` + Job []byte `protobuf:"bytes,13,opt,name=job,proto3" json:"job,omitempty"` + TribeLevel int32 `protobuf:"varint,14,opt,name=tribeLevel,proto3" json:"tribeLevel,omitempty"` + TribePoint int32 `protobuf:"varint,15,opt,name=tribePoint,proto3" json:"tribePoint,omitempty"` + RichCardName []*D8FCCardNameElem `protobuf:"bytes,16,rep,name=richCardName,proto3" json:"richCardName,omitempty"` + CommRichCardName []byte `protobuf:"bytes,17,opt,name=commRichCardName,proto3" json:"commRichCardName,omitempty"` +} + +func (x *D8FCMemberInfo) Reset() { + *x = D8FCMemberInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D8FCMemberInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D8FCMemberInfo) ProtoMessage() {} + +func (x *D8FCMemberInfo) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D8FCMemberInfo.ProtoReflect.Descriptor instead. +func (*D8FCMemberInfo) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{7} +} + +func (x *D8FCMemberInfo) GetUin() int64 { + if x != nil { + return x.Uin + } + return 0 +} + +func (x *D8FCMemberInfo) GetPoint() int32 { + if x != nil { + return x.Point + } + return 0 +} + +func (x *D8FCMemberInfo) GetActiveDay() int32 { + if x != nil { + return x.ActiveDay + } + return 0 +} + +func (x *D8FCMemberInfo) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *D8FCMemberInfo) GetSpecialTitle() []byte { + if x != nil { + return x.SpecialTitle + } + return nil +} + +func (x *D8FCMemberInfo) GetSpecialTitleExpireTime() int32 { + if x != nil { + return x.SpecialTitleExpireTime + } + return 0 +} + +func (x *D8FCMemberInfo) GetUinName() []byte { + if x != nil { + return x.UinName + } + return nil +} + +func (x *D8FCMemberInfo) GetMemberCardName() []byte { + if x != nil { + return x.MemberCardName + } + return nil +} + +func (x *D8FCMemberInfo) GetPhone() []byte { + if x != nil { + return x.Phone + } + return nil +} + +func (x *D8FCMemberInfo) GetEmail() []byte { + if x != nil { + return x.Email + } + return nil +} + +func (x *D8FCMemberInfo) GetRemark() []byte { + if x != nil { + return x.Remark + } + return nil +} + +func (x *D8FCMemberInfo) GetGender() int32 { + if x != nil { + return x.Gender + } + return 0 +} + +func (x *D8FCMemberInfo) GetJob() []byte { + if x != nil { + return x.Job + } + return nil +} + +func (x *D8FCMemberInfo) GetTribeLevel() int32 { + if x != nil { + return x.TribeLevel + } + return 0 +} + +func (x *D8FCMemberInfo) GetTribePoint() int32 { + if x != nil { + return x.TribePoint + } + return 0 +} + +func (x *D8FCMemberInfo) GetRichCardName() []*D8FCCardNameElem { + if x != nil { + return x.RichCardName + } + return nil +} + +func (x *D8FCMemberInfo) GetCommRichCardName() []byte { + if x != nil { + return x.CommRichCardName + } + return nil +} + +type D8FCCardNameElem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EnumCardType int32 `protobuf:"varint,1,opt,name=enumCardType,proto3" json:"enumCardType,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *D8FCCardNameElem) Reset() { + *x = D8FCCardNameElem{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D8FCCardNameElem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D8FCCardNameElem) ProtoMessage() {} + +func (x *D8FCCardNameElem) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D8FCCardNameElem.ProtoReflect.Descriptor instead. +func (*D8FCCardNameElem) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{8} +} + +func (x *D8FCCardNameElem) GetEnumCardType() int32 { + if x != nil { + return x.EnumCardType + } + return 0 +} + +func (x *D8FCCardNameElem) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +type D8FCLevelName struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level int32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *D8FCLevelName) Reset() { + *x = D8FCLevelName{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D8FCLevelName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D8FCLevelName) ProtoMessage() {} + +func (x *D8FCLevelName) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D8FCLevelName.ProtoReflect.Descriptor instead. +func (*D8FCLevelName) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{9} +} + +func (x *D8FCLevelName) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *D8FCLevelName) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type D8FCClientInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Implat int32 `protobuf:"varint,1,opt,name=implat,proto3" json:"implat,omitempty"` + IngClientver string `protobuf:"bytes,2,opt,name=ingClientver,proto3" json:"ingClientver,omitempty"` +} + +func (x *D8FCClientInfo) Reset() { + *x = D8FCClientInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_oidb_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *D8FCClientInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*D8FCClientInfo) ProtoMessage() {} + +func (x *D8FCClientInfo) ProtoReflect() protoreflect.Message { + mi := &file_oidb_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 D8FCClientInfo.ProtoReflect.Descriptor instead. +func (*D8FCClientInfo) Descriptor() ([]byte, []int) { + return file_oidb_proto_rawDescGZIP(), []int{10} +} + +func (x *D8FCClientInfo) GetImplat() int32 { + if x != nil { + return x.Implat + } + return 0 +} + +func (x *D8FCClientInfo) GetIngClientver() string { + if x != nil { + return x.IngClientver + } + return "" +} + +var File_oidb_proto protoreflect.FileDescriptor + +var file_oidb_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x6f, 0x69, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x01, 0x0a, + 0x0a, 0x4f, 0x49, 0x44, 0x42, 0x53, 0x53, 0x4f, 0x50, 0x6b, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x62, 0x6f, 0x64, 0x79, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x6f, 0x64, 0x79, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0xe3, 0x02, 0x0a, 0x0b, 0x44, 0x38, 0x46, 0x43, 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x77, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x33, 0x0a, 0x0c, 0x6d, + 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x44, 0x38, 0x46, 0x43, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x2c, 0x0a, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x38, 0x46, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26, + 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x70, 0x70, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x70, 0x65, + 0x6e, 0x41, 0x70, 0x70, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0d, 0x6d, 0x73, 0x67, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x44, 0x38, 0x46, 0x43, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, + 0x6d, 0x73, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, + 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x22, 0xbd, 0x01, 0x0a, 0x0b, 0x44, 0x38, 0x39, 0x41, + 0x52, 0x65, 0x71, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x0b, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x38, 0x39, + 0x41, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x30, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, + 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x71, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x70, 0x70, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x72, 0x65, 0x71, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x70, + 0x65, 0x6e, 0x41, 0x70, 0x70, 0x69, 0x64, 0x22, 0x81, 0x0d, 0x0a, 0x0d, 0x44, 0x38, 0x39, 0x41, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x45, 0x78, 0x74, 0x41, 0x64, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x74, 0x41, 0x64, 0x6d, 0x4e, 0x75, + 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x69, 0x6e, 0x67, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x67, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0c, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x2e, 0x0a, + 0x12, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x4d, + 0x65, 0x6d, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x69, 0x6e, 0x67, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x2e, 0x0a, + 0x12, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x69, 0x6f, 0x53, 0x6b, 0x69, 0x6e, + 0x55, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x69, 0x6e, 0x67, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x41, 0x69, 0x6f, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x32, 0x0a, + 0x14, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x6b, + 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x69, 0x6e, 0x67, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x72, + 0x6c, 0x12, 0x32, 0x0a, 0x14, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x76, + 0x65, 0x72, 0x53, 0x6b, 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x14, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x53, 0x6b, + 0x69, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, + 0x2c, 0x0a, 0x11, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, + 0x14, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x65, 0x78, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x69, 0x6e, 0x67, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x78, + 0x74, 0x12, 0x36, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x69, 0x63, + 0x68, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x16, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x69, 0x63, 0x68, 0x46, + 0x69, 0x6e, 0x67, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x12, 0x4f, 0x0a, 0x14, 0x73, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x65, 0x77, 0x67, 0x75, 0x69, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x65, + 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x44, 0x38, 0x39, 0x41, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4e, 0x65, 0x77, 0x47, 0x75, 0x69, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x14, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x65, 0x77, + 0x67, 0x75, 0x69, 0x64, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x46, 0x61, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x46, 0x61, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x64, 0x64, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x68, 0x75, 0x74, 0x75, 0x70, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x68, 0x75, 0x74, + 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, + 0x79, 0x70, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x26, 0x0a, 0x0e, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x67, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x54, 0x61, 0x67, 0x12, 0x3b, 0x0a, 0x0f, 0x6d, 0x73, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x47, 0x65, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x44, 0x38, 0x39, 0x41, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x47, 0x65, 0x6f, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0f, 0x6d, 0x73, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x47, 0x65, 0x6f, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x45, + 0x78, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x45, 0x78, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x65, 0x78, 0x74, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x11, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x54, 0x65, 0x78, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x10, 0x61, 0x70, 0x70, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x46, 0x6c, 0x61, + 0x67, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x61, 0x70, 0x70, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x3a, 0x0a, + 0x0d, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x19, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x44, 0x38, 0x39, 0x41, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x45, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4f, 0x6e, 0x6c, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x45, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x53, 0x65, 0x63, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x63, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x2c, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x65, 0x63, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x53, 0x65, 0x63, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, + 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, + 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x1d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x10, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x69, 0x6e, 0x67, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x65, 0x78, 0x74, 0x33, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x65, 0x78, 0x74, 0x33, 0x12, + 0x2c, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x6c, 0x61, 0x67, 0x65, 0x78, 0x74, 0x33, + 0x4d, 0x61, 0x73, 0x6b, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x46, 0x6c, 0x61, 0x67, 0x65, 0x78, 0x74, 0x33, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x26, 0x0a, + 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x6e, 0x41, 0x70, 0x70, 0x69, 0x64, 0x18, + 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x6e, + 0x41, 0x70, 0x70, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x6f, 0x46, 0x69, 0x6e, 0x67, 0x65, + 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x10, 0x6e, 0x6f, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x6c, 0x61, + 0x67, 0x12, 0x32, 0x0a, 0x14, 0x6e, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6e, 0x67, 0x65, + 0x72, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x14, 0x6e, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x4f, 0x70, 0x65, + 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x64, 0x18, + 0x25, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, + 0x11, 0x6d, 0x73, 0x67, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x6d, 0x73, 0x67, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x22, 0x5e, 0x0a, 0x1a, 0x44, + 0x38, 0x39, 0x41, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x65, 0x77, 0x47, 0x75, 0x69, 0x64, 0x65, + 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6f, 0x6f, + 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x62, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5b, 0x0a, 0x13, 0x44, + 0x38, 0x39, 0x41, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4f, 0x6e, + 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x62, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x72, 0x69, 0x62, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x10, + 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x46, 0x6f, 0x72, + 0x41, 0x64, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x44, 0x38, 0x39, + 0x41, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x47, 0x65, 0x6f, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x69, 0x74, 0x79, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x63, + 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x6e, 0x67, 0x74, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x6f, 0x6e, 0x67, 0x74, + 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, + 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x67, 0x47, 0x65, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x69, 0x6e, 0x67, 0x47, 0x65, 0x6f, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x49, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x49, 0x64, 0x22, 0x9b, 0x04, + 0x0a, 0x0e, 0x44, 0x38, 0x46, 0x43, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, + 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x44, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x0c, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x36, 0x0a, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, + 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x16, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x45, 0x78, + 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x69, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x75, 0x69, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, + 0x6f, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x16, + 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x62, + 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, + 0x69, 0x62, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x62, + 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, + 0x69, 0x62, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x0c, 0x72, 0x69, 0x63, 0x68, + 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x44, 0x38, 0x46, 0x43, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6c, 0x65, + 0x6d, 0x52, 0x0c, 0x72, 0x69, 0x63, 0x68, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x52, 0x69, 0x63, 0x68, 0x43, 0x61, 0x72, 0x64, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x52, + 0x69, 0x63, 0x68, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x10, 0x44, + 0x38, 0x46, 0x43, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x12, + 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x6e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x39, 0x0a, 0x0d, 0x44, 0x38, 0x46, + 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x44, 0x38, 0x46, 0x43, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x69, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x12, 0x22, + 0x0a, 0x0c, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x76, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x76, + 0x65, 0x72, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x3b, 0x6f, 0x69, 0x64, 0x62, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_oidb_proto_rawDescOnce sync.Once + file_oidb_proto_rawDescData = file_oidb_proto_rawDesc +) + +func file_oidb_proto_rawDescGZIP() []byte { + file_oidb_proto_rawDescOnce.Do(func() { + file_oidb_proto_rawDescData = protoimpl.X.CompressGZIP(file_oidb_proto_rawDescData) + }) + return file_oidb_proto_rawDescData +} + +var file_oidb_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_oidb_proto_goTypes = []interface{}{ + (*OIDBSSOPkg)(nil), // 0: OIDBSSOPkg + (*D8FCReqBody)(nil), // 1: D8FCReqBody + (*D89AReqBody)(nil), // 2: D89AReqBody + (*D89AGroupinfo)(nil), // 3: D89AGroupinfo + (*D89AGroupNewGuidelinesInfo)(nil), // 4: D89AGroupNewGuidelinesInfo + (*D89AGroupExInfoOnly)(nil), // 5: D89AGroupExInfoOnly + (*D89AGroupGeoInfo)(nil), // 6: D89AGroupGeoInfo + (*D8FCMemberInfo)(nil), // 7: D8FCMemberInfo + (*D8FCCardNameElem)(nil), // 8: D8FCCardNameElem + (*D8FCLevelName)(nil), // 9: D8FCLevelName + (*D8FCClientInfo)(nil), // 10: D8FCClientInfo +} +var file_oidb_proto_depIdxs = []int32{ + 7, // 0: D8FCReqBody.memLevelInfo:type_name -> D8FCMemberInfo + 9, // 1: D8FCReqBody.levelName:type_name -> D8FCLevelName + 10, // 2: D8FCReqBody.msgClientInfo:type_name -> D8FCClientInfo + 3, // 3: D89AReqBody.stGroupInfo:type_name -> D89AGroupinfo + 4, // 4: D89AGroupinfo.stGroupNewguidelines:type_name -> D89AGroupNewGuidelinesInfo + 6, // 5: D89AGroupinfo.msgGroupGeoInfo:type_name -> D89AGroupGeoInfo + 5, // 6: D89AGroupinfo.stGroupExInfo:type_name -> D89AGroupExInfoOnly + 8, // 7: D8FCMemberInfo.richCardName:type_name -> D8FCCardNameElem + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_oidb_proto_init() } +func file_oidb_proto_init() { + if File_oidb_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_oidb_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OIDBSSOPkg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D8FCReqBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D89AReqBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D89AGroupinfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D89AGroupNewGuidelinesInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D89AGroupExInfoOnly); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D89AGroupGeoInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D8FCMemberInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D8FCCardNameElem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D8FCLevelName); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_oidb_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*D8FCClientInfo); 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_oidb_proto_rawDesc, + NumEnums: 0, + NumMessages: 11, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_oidb_proto_goTypes, + DependencyIndexes: file_oidb_proto_depIdxs, + MessageInfos: file_oidb_proto_msgTypes, + }.Build() + File_oidb_proto = out.File + file_oidb_proto_rawDesc = nil + file_oidb_proto_goTypes = nil + file_oidb_proto_depIdxs = nil +} diff --git a/client/pb/oidb/oidb.proto b/client/pb/oidb/oidb.proto new file mode 100644 index 00000000..0819a5e4 --- /dev/null +++ b/client/pb/oidb/oidb.proto @@ -0,0 +1,123 @@ +syntax = "proto3"; + +option go_package = ".;oidb"; + +message OIDBSSOPkg { + int32 command = 1; + int32 serviceType = 2; + int32 result = 3; + bytes bodybuffer = 4; + string errorMsg = 5; + string clientVersion = 6; +} + +message D8FCReqBody { + int64 groupCode = 1; + int32 showFlag = 2; + repeated D8FCMemberInfo memLevelInfo = 3; + repeated D8FCLevelName levelName = 4; + int32 updateTime = 5; + int32 officeMode = 6; + int32 groupOpenAppid = 7; + D8FCClientInfo msgClientInfo = 8; + bytes authKey = 9; +} + +message D89AReqBody { + int64 groupCode = 1; + D89AGroupinfo stGroupInfo = 2; + int64 originalOperatorUin = 3; + int32 reqGroupOpenAppid = 4; +} + +message D89AGroupinfo { + int32 groupExtAdmNum = 1; + int32 flag = 2; + bytes ingGroupName = 3; + bytes ingGroupMemo = 4; + bytes ingGroupFingerMemo = 5; + bytes ingGroupAioSkinUrl = 6; + bytes ingGroupBoardSkinUrl = 7; + bytes ingGroupCoverSkinUrl = 8; + int32 groupGrade = 9; + int32 activeMemberNum = 10; + int32 certificationType = 11; + bytes ingCertificationText = 12; + bytes ingGroupRichFingerMemo = 13; + D89AGroupNewGuidelinesInfo stGroupNewguidelines = 14; + int32 groupFace = 15; + int32 addOption = 16; + int32 shutupTime = 17; + int32 groupTypeFlag = 18; + bytes stringGroupTag = 19; + D89AGroupGeoInfo msgGroupGeoInfo = 20; + int32 groupClassExt = 21; + bytes ingGroupClassText = 22; + int32 appPrivilegeFlag = 23; + int32 appPrivilegeMask = 24; + D89AGroupExInfoOnly stGroupExInfo = 25; + int32 groupSecLevel = 26; + int32 groupSecLevelInfo = 27; + int64 subscriptionUin = 28; + int32 allowMemberInvite = 29; + bytes ingGroupQuestion = 30; + bytes ingGroupAnswer = 31; + int32 groupFlagext3 = 32; + int32 groupFlagext3Mask = 33; + int32 groupOpenAppid = 34; + int32 noFingerOpenFlag = 35; + int32 noCodeFingerOpenFlag = 36; + int64 rootId = 37; + int32 msgLimitFrequency = 38; +} +message D89AGroupNewGuidelinesInfo { + bool boolEnabled = 1; + bytes ingContent = 2; +} +message D89AGroupExInfoOnly { + int32 tribeId = 1; + int32 moneyForAddGroup = 2; +} + +message D89AGroupGeoInfo { + int32 cityId = 1; + int64 longtitude = 2; + int64 latitude = 3; + bytes ingGeoContent = 4; + int64 poiId = 5; +} + +message D8FCMemberInfo { + int64 uin = 1; + int32 point = 2; + int32 activeDay = 3; + int32 level = 4; + bytes specialTitle = 5; + int32 specialTitleExpireTime = 6; + bytes uinName = 7; + bytes memberCardName = 8; + bytes phone = 9; + bytes email = 10; + bytes remark = 11; + int32 gender = 12; + bytes job = 13; + int32 tribeLevel = 14; + int32 tribePoint = 15; + repeated D8FCCardNameElem richCardName = 16; + bytes commRichCardName = 17; +} + +message D8FCCardNameElem { + int32 enumCardType = 1; + bytes value = 2; +} + +message D8FCLevelName { + int32 level = 1; + string name = 2; +} + +message D8FCClientInfo { + int32 implat = 1; + string ingClientver = 2; +} \ No newline at end of file diff --git a/protocol/packets/global.go b/protocol/packets/global.go index 34caaee6..d7ab7648 100644 --- a/protocol/packets/global.go +++ b/protocol/packets/global.go @@ -91,11 +91,6 @@ func ParseIncomingPacket(payload, d2key []byte) (*IncomingPacket, error) { } reader.ReadString() // uin string decrypted := func() (data []byte) { - defer func() { - if pan := recover(); pan != nil { - // TODO: bot.client.tryDecryptOrNull - } - }() switch flag2 { case 0: return reader.ReadAvailable()