From 7e25a6125f98ec9dccb2a2f8803a1f2eee464750 Mon Sep 17 00:00:00 2001 From: Patryk Osmaczko Date: Mon, 22 Aug 2022 12:10:31 +0200 Subject: [PATCH] feat: introduce and distribute RequestToLeave community closes: #2812 --- protocol/communities/errors.go | 1 + protocol/communities/manager.go | 43 +++- protocol/communities/persistence.go | 32 +++ protocol/communities/persistence_test.go | 17 ++ protocol/communities/request_to_join.go | 6 +- protocol/communities/request_to_leave.go | 22 ++ protocol/communities/utils.go | 13 + protocol/messenger.go | 8 + protocol/messenger_communities.go | 28 +++ protocol/messenger_handler.go | 22 ++ protocol/migrations/migrations.go | 142 ++++++----- ...4_add_communities_requests_to_leave.up.sql | 7 + .../application_metadata_message.pb.go | 111 ++++----- .../application_metadata_message.proto | 1 + protocol/protobuf/communities.pb.go | 227 +++++++++++------- protocol/protobuf/communities.proto | 5 + protocol/v1/status_message.go | 2 + 17 files changed, 471 insertions(+), 216 deletions(-) create mode 100644 protocol/communities/request_to_leave.go create mode 100644 protocol/communities/utils.go create mode 100644 protocol/migrations/sqlite/1661242854_add_communities_requests_to_leave.up.sql diff --git a/protocol/communities/errors.go b/protocol/communities/errors.go index dc6281ec7..5b1b47059 100644 --- a/protocol/communities/errors.go +++ b/protocol/communities/errors.go @@ -26,4 +26,5 @@ var ErrNotAdmin = errors.New("no admin privileges for this community") var ErrInvalidGrant = errors.New("invalid grant") var ErrNotAuthorized = errors.New("not authorized") var ErrAlreadyMember = errors.New("already a member") +var ErrAlreadyJoined = errors.New("already joined") var ErrInvalidMessage = errors.New("invalid community description message") diff --git a/protocol/communities/manager.go b/protocol/communities/manager.go index fda405b9c..ddeb13aa2 100644 --- a/protocol/communities/manager.go +++ b/protocol/communities/manager.go @@ -853,11 +853,6 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request return nil, ErrOrgNotFound } - // If they are already a member, ignore - if community.HasMember(signer) { - return nil, ErrAlreadyMember - } - if err := community.ValidateRequestToJoin(signer, request); err != nil { return nil, err } @@ -876,7 +871,11 @@ func (m *Manager) HandleCommunityRequestToJoin(signer *ecdsa.PublicKey, request return nil, err } - if community.AcceptRequestToJoinAutomatically() { + // If user is already a member, then accept request automatically + // It may happen when member removes itself from community and then tries to rejoin + // More specifically, CommunityRequestToLeave may be delivered later than CommunityRequestToJoin, or not delivered at all + acceptAutomatically := community.AcceptRequestToJoinAutomatically() || community.HasMember(signer) + if acceptAutomatically { err = m.markRequestToJoin(signer, community) if err != nil { return nil, err @@ -933,6 +932,24 @@ func (m *Manager) HandleCommunityRequestToJoinResponse(signer *ecdsa.PublicKey, return m.persistence.SetRequestToJoinState(common.PubkeyToHex(m.identity), community.ID(), RequestToJoinStateDeclined) } +func (m *Manager) HandleCommunityRequestToLeave(signer *ecdsa.PublicKey, proto *protobuf.CommunityRequestToLeave) error { + requestToLeave := NewRequestToLeave(common.PubkeyToHex(signer), proto) + if err := m.persistence.SaveRequestToLeave(requestToLeave); err != nil { + return err + } + + // Ensure corresponding requestToJoin clock is older than requestToLeave + requestToJoin, err := m.persistence.GetRequestToJoin(requestToLeave.ID) + if err != nil { + return err + } + if requestToJoin.Clock > requestToLeave.Clock { + return ErrOldRequestToLeave + } + + return nil +} + func (m *Manager) HandleWrappedCommunityDescriptionMessage(payload []byte) (*CommunityResponse, error) { m.logger.Debug("Handling wrapped community description message") @@ -1178,9 +1195,9 @@ func (m *Manager) RequestToJoin(requester *ecdsa.PublicKey, request *requests.Re return nil, nil, err } - // We don't allow requesting access if already a member - if community.HasMember(m.identity) { - return nil, nil, ErrAlreadyMember + // We don't allow requesting access if already joined + if community.Joined() { + return nil, nil, ErrAlreadyJoined } clock := uint64(time.Now().Unix()) @@ -1335,6 +1352,14 @@ func (m *Manager) GetAdminCommunitiesChatIDs() (map[string]bool, error) { return chatIDs, nil } +func (m *Manager) IsAdminCommunityByID(communityID types.HexBytes) (bool, error) { + pubKey, err := crypto.DecompressPubkey(communityID) + if err != nil { + return false, err + } + return m.IsAdminCommunity(pubKey) +} + func (m *Manager) IsAdminCommunity(pubKey *ecdsa.PublicKey) (bool, error) { adminCommunities, err := m.Created() if err != nil { diff --git a/protocol/communities/persistence.go b/protocol/communities/persistence.go index f43c62fd7..0ef97afeb 100644 --- a/protocol/communities/persistence.go +++ b/protocol/communities/persistence.go @@ -22,6 +22,7 @@ type Persistence struct { } var ErrOldRequestToJoin = errors.New("old request to join") +var ErrOldRequestToLeave = errors.New("old request to leave") const OR = " OR " const communitiesBaseQuery = `SELECT c.id, c.private_key, c.description,c.joined,c.verified,c.muted,r.clock FROM communities_communities c LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?` @@ -309,6 +310,37 @@ func (p *Persistence) SaveRequestToJoin(request *RequestToJoin) (err error) { return err } +func (p *Persistence) SaveRequestToLeave(request *RequestToLeave) error { + tx, err := p.db.BeginTx(context.Background(), &sql.TxOptions{}) + if err != nil { + return err + } + + defer func() { + if err == nil { + err = tx.Commit() + return + } + // don't shadow original error + _ = tx.Rollback() + }() + + var clock uint64 + // Fetch any existing request to leave + err = tx.QueryRow(`SELECT clock FROM communities_requests_to_leave WHERE public_key = ? AND community_id = ?`, request.PublicKey, request.CommunityID).Scan(&clock) + if err != nil && err != sql.ErrNoRows { + return err + } + + // This is already processed + if clock >= request.Clock { + return ErrOldRequestToLeave + } + + _, err = tx.Exec(`INSERT INTO communities_requests_to_leave(id,public_key,clock,community_id) VALUES (?, ?, ?, ?)`, request.ID, request.PublicKey, request.Clock, request.CommunityID) + return err +} + func (p *Persistence) PendingRequestsToJoinForUser(pk string) ([]*RequestToJoin, error) { var requests []*RequestToJoin rows, err := p.db.Query(`SELECT id,public_key,clock,ens_name,chat_id,community_id,state FROM communities_requests_to_join WHERE state = ? AND public_key = ?`, RequestToJoinStatePending, pk) diff --git a/protocol/communities/persistence_test.go b/protocol/communities/persistence_test.go index e81da7e1a..ff9f8df95 100644 --- a/protocol/communities/persistence_test.go +++ b/protocol/communities/persistence_test.go @@ -202,6 +202,23 @@ func (s *PersistenceSuite) TestJoinedAndPendingCommunitiesWithRequests() { } } +func (s *PersistenceSuite) TestSaveRequestToLeave() { + rtl := &RequestToLeave{ + ID: []byte("0x123456"), + PublicKey: "0xffffff", + Clock: 2, + CommunityID: []byte("0x654321"), + } + + err := s.db.SaveRequestToLeave(rtl) + s.NoError(err) + + // older clocks should not be saved + rtl.Clock = 1 + err = s.db.SaveRequestToLeave(rtl) + s.Error(err) +} + func (s *PersistenceSuite) makeNewCommunity(identity *ecdsa.PrivateKey) *Community { comPrivKey, err := crypto.GenerateKey() s.NoError(err, "crypto.GenerateKey shouldn't give any error") diff --git a/protocol/communities/request_to_join.go b/protocol/communities/request_to_join.go index 7573393ad..223d12c25 100644 --- a/protocol/communities/request_to_join.go +++ b/protocol/communities/request_to_join.go @@ -1,9 +1,6 @@ package communities import ( - "fmt" - - "github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/protocol/protobuf" ) @@ -28,8 +25,7 @@ type RequestToJoin struct { } func (r *RequestToJoin) CalculateID() { - idString := fmt.Sprintf("%s-%s", r.PublicKey, r.CommunityID) - r.ID = crypto.Keccak256([]byte(idString)) + r.ID = CalculateRequestID(r.PublicKey, r.CommunityID) } func (r *RequestToJoin) ToSyncProtobuf() *protobuf.SyncCommunityRequestsToJoin { diff --git a/protocol/communities/request_to_leave.go b/protocol/communities/request_to_leave.go new file mode 100644 index 000000000..5ff839d64 --- /dev/null +++ b/protocol/communities/request_to_leave.go @@ -0,0 +1,22 @@ +package communities + +import ( + "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/protocol/protobuf" +) + +type RequestToLeave struct { + ID types.HexBytes `json:"id"` + PublicKey string `json:"publicKey"` + Clock uint64 `json:"clock"` + CommunityID types.HexBytes `json:"communityId"` +} + +func NewRequestToLeave(publicKey string, protobuf *protobuf.CommunityRequestToLeave) *RequestToLeave { + return &RequestToLeave{ + ID: CalculateRequestID(publicKey, protobuf.CommunityId), + PublicKey: publicKey, + Clock: protobuf.Clock, + CommunityID: protobuf.CommunityId, + } +} diff --git a/protocol/communities/utils.go b/protocol/communities/utils.go new file mode 100644 index 000000000..785fc0ead --- /dev/null +++ b/protocol/communities/utils.go @@ -0,0 +1,13 @@ +package communities + +import ( + "fmt" + + "github.com/status-im/status-go/eth-node/crypto" + "github.com/status-im/status-go/eth-node/types" +) + +func CalculateRequestID(publicKey string, communityID types.HexBytes) types.HexBytes { + idString := fmt.Sprintf("%s-%s", publicKey, communityID) + return crypto.Keccak256([]byte(idString)) +} diff --git a/protocol/messenger.go b/protocol/messenger.go index f9455cbc8..7d09b2419 100644 --- a/protocol/messenger.go +++ b/protocol/messenger.go @@ -4408,6 +4408,14 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte allMessagesProcessed = false continue } + case protobuf.CommunityRequestToLeave: + logger.Debug("Handling CommunityRequestToLeave") + request := msg.ParsedMessage.Interface().(protobuf.CommunityRequestToLeave) + err = m.HandleCommunityRequestToLeave(messageState, publicKey, request) + if err != nil { + logger.Warn("failed to handle CommunityRequestToLeave", zap.Error(err)) + continue + } case protobuf.CommunityMessageArchiveMagnetlink: logger.Debug("Handling CommunityMessageArchiveMagnetlink") diff --git a/protocol/messenger_communities.go b/protocol/messenger_communities.go index 02acc187e..57bb6ca8e 100644 --- a/protocol/messenger_communities.go +++ b/protocol/messenger_communities.go @@ -614,6 +614,34 @@ func (m *Messenger) LeaveCommunity(communityID types.HexBytes) (*MessengerRespon } } + isAdmin, err := m.communitiesManager.IsAdminCommunityByID(communityID) + if err != nil { + return nil, err + } + + if !isAdmin { + requestToLeaveProto := &protobuf.CommunityRequestToLeave{ + Clock: uint64(time.Now().Unix()), + CommunityId: communityID, + } + + payload, err := proto.Marshal(requestToLeaveProto) + if err != nil { + return nil, err + } + + rawMessage := common.RawMessage{ + Payload: payload, + CommunityID: communityID, + SkipEncryption: true, + MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE, + } + _, err = m.sender.SendCommunityMessage(context.Background(), rawMessage) + if err != nil { + return nil, err + } + } + return mr, nil } diff --git a/protocol/messenger_handler.go b/protocol/messenger_handler.go index 6251fab1f..ca12cab91 100644 --- a/protocol/messenger_handler.go +++ b/protocol/messenger_handler.go @@ -1022,6 +1022,28 @@ func (m *Messenger) HandleCommunityRequestToJoinResponse(state *ReceivedMessageS return nil } +func (m *Messenger) HandleCommunityRequestToLeave(state *ReceivedMessageState, signer *ecdsa.PublicKey, requestToLeaveProto protobuf.CommunityRequestToLeave) error { + if requestToLeaveProto.CommunityId == nil { + return errors.New("invalid community id") + } + + err := m.communitiesManager.HandleCommunityRequestToLeave(signer, &requestToLeaveProto) + if err != nil { + return err + } + + response, err := m.RemoveUserFromCommunity(requestToLeaveProto.CommunityId, common.PubkeyToHex(signer)) + if err != nil { + return err + } + + if len(response.Communities()) > 0 { + state.Response.AddCommunity(response.Communities()[0]) + } + + return nil +} + // handleWrappedCommunityDescriptionMessage handles a wrapped community description func (m *Messenger) handleWrappedCommunityDescriptionMessage(payload []byte) (*communities.CommunityResponse, error) { return m.communitiesManager.HandleWrappedCommunityDescriptionMessage(payload) diff --git a/protocol/migrations/migrations.go b/protocol/migrations/migrations.go index ae34494b5..cbb3fee4e 100644 --- a/protocol/migrations/migrations.go +++ b/protocol/migrations/migrations.go @@ -57,6 +57,7 @@ // 1659619997_add_discord_messages_table.up.sql (371B) // 1660226788_create_chat_identity_social_links.up.sql (318B) // 1660226789_add_walletconnectsessions_table.up.sql (215B) +// 1661242854_add_communities_requests_to_leave.up.sql (204B) // README.md (554B) // doc.go (850B) @@ -142,7 +143,7 @@ func _000001_initDownDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}} return a, nil } @@ -162,7 +163,7 @@ func _000001_initUpDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}} return a, nil } @@ -182,7 +183,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}} return a, nil } @@ -202,7 +203,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}} return a, nil } @@ -222,7 +223,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}} return a, nil } @@ -242,7 +243,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}} return a, nil } @@ -262,7 +263,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}} return a, nil } @@ -282,7 +283,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}} return a, nil } @@ -302,7 +303,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}} return a, nil } @@ -322,7 +323,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}} return a, nil } @@ -342,7 +343,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}} return a, nil } @@ -362,7 +363,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}} return a, nil } @@ -382,7 +383,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}} return a, nil } @@ -402,7 +403,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}} return a, nil } @@ -422,7 +423,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}} return a, nil } @@ -442,7 +443,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}} return a, nil } @@ -462,7 +463,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}} return a, nil } @@ -482,7 +483,7 @@ func _1603816533_add_linksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}} return a, nil } @@ -502,7 +503,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1608652331, 0)} + info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}} return a, nil } @@ -522,7 +523,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1610388501, 0)} + info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}} return a, nil } @@ -542,7 +543,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1611563400, 0)} + info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}} return a, nil } @@ -562,7 +563,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1611825589, 0)} + info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}} return a, nil } @@ -582,7 +583,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1611825589, 0)} + info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}} return a, nil } @@ -602,7 +603,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1614251236, 0)} + info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}} return a, nil } @@ -622,7 +623,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1614608661, 0)} + info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}} return a, nil } @@ -642,7 +643,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1615904318, 0)} + info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}} return a, nil } @@ -662,7 +663,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1618824585, 0)} + info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}} return a, nil } @@ -682,7 +683,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1621413223, 0)} + info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}} return a, nil } @@ -702,7 +703,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1621413223, 0)} + info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}} return a, nil } @@ -722,7 +723,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1621576592, 0)} + info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}} return a, nil } @@ -742,7 +743,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1623420243, 0)} + info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}} return a, nil } @@ -762,7 +763,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1623420243, 0)} + info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}} return a, nil } @@ -782,7 +783,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1623420243, 0)} + info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}} return a, nil } @@ -802,7 +803,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1623420243, 0)} + info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}} return a, nil } @@ -822,7 +823,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1623420243, 0)} + info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}} return a, nil } @@ -842,7 +843,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1623420243, 0)} + info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}} return a, nil } @@ -862,7 +863,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1624017080, 0)} + info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}} return a, nil } @@ -882,7 +883,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1628358694, 0)} + info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}} return a, nil } @@ -902,7 +903,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1628358694, 0)} + info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}} return a, nil } @@ -922,7 +923,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (* return nil, err } - info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1628358694, 0)} + info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}} return a, nil } @@ -942,7 +943,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1628358701, 0)} + info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}} return a, nil } @@ -962,7 +963,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1628358701, 0)} + info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}} return a, nil } @@ -982,7 +983,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1628783235, 0)} + info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}} return a, nil } @@ -1002,7 +1003,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1633515512, 0)} + info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}} return a, nil } @@ -1022,7 +1023,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1633515512, 0)} + info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}} return a, nil } @@ -1042,7 +1043,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1635162188, 0)} + info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}} return a, nil } @@ -1062,7 +1063,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1637051072, 0)} + info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}} return a, nil } @@ -1082,7 +1083,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1636362489, 0)} + info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}} return a, nil } @@ -1102,7 +1103,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1638003948, 0)} + info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}} return a, nil } @@ -1122,7 +1123,7 @@ func _1645034601_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1649237052, 0)} + info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}} return a, nil } @@ -1142,7 +1143,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0644), modTime: time.Unix(1659358463, 0)} + info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1a, 0xe0, 0x5d, 0x68, 0xb8, 0x50, 0xa4, 0xbb, 0x3e, 0x4f, 0x2, 0x87, 0xad, 0x87, 0x6e, 0x38, 0xdf, 0xc8, 0x4c, 0xe2, 0x5f, 0xd1, 0x6, 0xdc, 0xe7, 0xbd, 0x4a, 0x9c, 0xf3, 0x91, 0xa1, 0x51}} return a, nil } @@ -1162,7 +1163,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0644), modTime: time.Unix(1659358463, 0)} + info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xc1, 0x3f, 0x29, 0xe, 0x19, 0x86, 0x1a, 0x4c, 0x6c, 0x2a, 0x90, 0x9d, 0xdf, 0xb1, 0xb, 0x72, 0x25, 0xcd, 0x6c, 0x5f, 0xd, 0x51, 0x9e, 0x85, 0xc0, 0x9, 0xb7, 0xbc, 0x87, 0x23, 0xec}} return a, nil } @@ -1182,7 +1183,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0644), modTime: time.Unix(1659358463, 0)} + info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3a, 0x3f, 0x28, 0x38, 0x33, 0xdb, 0xe9, 0x4d, 0xc0, 0x54, 0x8c, 0x2a, 0x73, 0xc4, 0xdd, 0x5c, 0xc5, 0x1a, 0x93, 0x4b, 0x6, 0x13, 0xbe, 0x42, 0xd2, 0x7f, 0xd4, 0xc, 0xc5, 0x4e, 0x6d, 0xce}} return a, nil } @@ -1202,7 +1203,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0644), modTime: time.Unix(1660209377, 0)} + info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3d, 0xb7, 0xdb, 0x79, 0x1, 0x15, 0xe7, 0x76, 0x5d, 0x22, 0x54, 0x82, 0x9a, 0xbe, 0x24, 0xc1, 0x82, 0xcf, 0x67, 0x91, 0x53, 0xcc, 0xac, 0x74, 0x18, 0x61, 0x69, 0x68, 0x19, 0xca, 0x2b, 0xa8}} return a, nil } @@ -1222,7 +1223,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0644), modTime: time.Unix(1660209377, 0)} + info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x12, 0x9c, 0x96, 0xe2, 0x42, 0x3f, 0x94, 0x62, 0xc2, 0x76, 0xab, 0x3b, 0x4c, 0x85, 0x36, 0x48, 0xcc, 0x73, 0x60, 0x93, 0x5a, 0xd6, 0x7, 0xd6, 0x0, 0xee, 0x1b, 0x1e, 0x34, 0x58, 0x99}} return a, nil } @@ -1242,7 +1243,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0644), modTime: time.Unix(1660836709, 0)} + info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0x76, 0x40, 0xe9, 0x85, 0xc4, 0x38, 0xf8, 0xe5, 0x5d, 0xe8, 0x13, 0x46, 0x1b, 0xc, 0x1, 0xe9, 0x2f, 0x74, 0xd1, 0x79, 0x59, 0xa4, 0xdb, 0x4a, 0x4a, 0xf4, 0x98, 0x58, 0x3c, 0x57, 0xd3}} return a, nil } @@ -1262,11 +1263,31 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1661179580, 0)} + info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf8, 0x5c, 0x72, 0x2, 0xed, 0x36, 0x19, 0x91, 0x4d, 0x1a, 0xc1, 0xab, 0x84, 0xfa, 0x41, 0xb1, 0x46, 0xa5, 0xdb, 0x3f, 0x76, 0x47, 0xd3, 0x75, 0x3c, 0x6a, 0x8e, 0x78, 0xe6, 0x41, 0xdc, 0x7f}} return a, nil } +var __1661242854_add_communities_requests_to_leaveUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x8d\xb1\xce\x82\x30\x18\x45\xf7\x3e\xc5\x1d\x21\xf9\xdf\xe0\x9f\x4a\xf3\x11\x1b\x6b\x4b\x4a\x35\x32\x35\x5a\x3a\x34\x80\xa8\x80\x09\x6f\x6f\x62\x5c\x48\x5c\xef\xcd\x39\x47\x58\xe2\x8e\xe0\x78\xa1\x08\xb2\x84\x36\x0e\x74\x96\xb5\xab\x11\xc6\x61\x58\x6e\x69\x4e\x71\xf2\xcf\xf8\x58\xe2\x34\x4f\x7e\x1e\x7d\x1f\x2f\xaf\x88\x8c\x01\xa9\x45\xa1\x4c\xf1\x81\xf4\x51\xa9\x3f\x06\xdc\x97\x6b\x9f\x82\xef\xe2\x8a\x13\xb7\x62\xc7\xed\xe6\x0e\xfd\x18\x3a\x48\xed\xb6\xeb\x37\xb5\xfa\x5f\xca\xca\xca\x03\xb7\x0d\xf6\xd4\x20\x4b\x6d\x0e\xa3\x21\x8c\x2e\x95\x14\x0e\x96\x2a\xc5\x05\xb1\xfc\x9f\xbd\x03\x00\x00\xff\xff\xc1\xbf\x3e\x0f\xcc\x00\x00\x00") + +func _1661242854_add_communities_requests_to_leaveUpSqlBytes() ([]byte, error) { + return bindataRead( + __1661242854_add_communities_requests_to_leaveUpSql, + "1661242854_add_communities_requests_to_leave.up.sql", + ) +} + +func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) { + bytes, err := _1661242854_add_communities_requests_to_leaveUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1661496536, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x2e, 0x7d, 0x14, 0xef, 0x6e, 0x95, 0x4b, 0x6, 0x70, 0x2e, 0xd1, 0xf6, 0x59, 0xf9, 0xe, 0x56, 0xa, 0x9c, 0x80, 0x18, 0xca, 0xb9, 0x49, 0x19, 0xf, 0x89, 0x94, 0x36, 0x6d, 0x93, 0x9a}} + return a, nil +} + var _readmeMd = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x91\xc1\xce\xd3\x30\x10\x84\xef\x7e\x8a\x91\x7a\x01\xa9\x2a\x8f\xc0\x0d\x71\x82\x03\x48\x1c\xc9\x36\x9e\x36\x96\x1c\x6f\xf0\xae\x93\xe6\xed\x91\xa3\xc2\xdf\xff\x66\xed\xd8\x33\xdf\x78\x4f\xa7\x13\xbe\xea\x06\x57\x6c\x35\x39\x31\xa7\x7b\x15\x4f\x5a\xec\x73\x08\xbf\x08\x2d\x79\x7f\x4a\x43\x5b\x86\x17\xfd\x8c\x21\xea\x56\x5e\x47\x90\x4a\x14\x75\x48\xde\x64\x37\x2c\x6a\x96\xae\x99\x48\x05\xf6\x27\x77\x13\xad\x08\xae\x8a\x51\xe7\x25\xf3\xf1\xa9\x9f\xf9\x58\x58\x2c\xad\xbc\xe0\x8b\x56\xf0\x21\x5d\xeb\x4c\x95\xb3\xae\x84\x60\xd4\xdc\xe6\x82\x5d\x1b\x36\x6d\x39\x62\x92\xf5\xb8\x11\xdb\x92\xd3\x28\xce\xe0\x13\xe1\x72\xcd\x3c\x63\xd4\x65\x87\xae\xac\xe8\xc3\x28\x2e\x67\x44\x66\x3a\x21\x25\xa2\x72\xac\x14\x67\xbc\x84\x9f\x53\x32\x8c\x52\x70\x25\x56\xd6\xfd\x8d\x05\x37\xad\x30\x9d\x9f\xa6\x86\x0f\xcd\x58\x7f\xcf\x34\x93\x3b\xed\x90\x9f\xa4\x1f\xcf\x30\x85\x4d\x07\x58\xaf\x7f\x25\xc4\x9d\xf3\x72\x64\x84\xd0\x7f\xf9\x9b\x3a\x2d\x84\xef\x85\x48\x66\x8d\xd8\x88\x9b\x8c\x8c\x98\x5b\xf6\x74\x14\x4e\x33\x0d\xc9\xe0\x93\x38\xda\x12\xc5\x69\xbd\xe4\xf0\x2e\x7a\x78\x07\x1c\xfe\x13\x9f\x91\x29\x31\x95\x7b\x7f\x62\x59\x37\xb4\xe5\x5e\x25\xfe\x33\xee\xd5\x53\x71\xd6\xda\x3a\xd8\xcb\xde\x2e\xf8\xa1\x90\x55\x53\x0c\xc7\xaa\x0d\xe9\x76\x14\x29\x1c\x7b\x68\xdd\x2f\xe1\x6f\x00\x00\x00\xff\xff\x3c\x0a\xc2\xfe\x2a\x02\x00\x00") func readmeMdBytes() ([]byte, error) { @@ -1282,7 +1303,7 @@ func readmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1610388501, 0)} + info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}} return a, nil } @@ -1302,7 +1323,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1607354881, 0)} + info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0664), modTime: time.Unix(1661495993, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}} return a, nil } @@ -1512,6 +1533,8 @@ var _bindata = map[string]func() (*asset, error){ "1660226789_add_walletconnectsessions_table.up.sql": _1660226789_add_walletconnectsessions_tableUpSql, + "1661242854_add_communities_requests_to_leave.up.sql": _1661242854_add_communities_requests_to_leaveUpSql, + "README.md": readmeMd, "doc.go": docGo, @@ -1615,6 +1638,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "1659619997_add_discord_messages_table.up.sql": &bintree{_1659619997_add_discord_messages_tableUpSql, map[string]*bintree{}}, "1660226788_create_chat_identity_social_links.up.sql": &bintree{_1660226788_create_chat_identity_social_linksUpSql, map[string]*bintree{}}, "1660226789_add_walletconnectsessions_table.up.sql": &bintree{_1660226789_add_walletconnectsessions_tableUpSql, map[string]*bintree{}}, + "1661242854_add_communities_requests_to_leave.up.sql": &bintree{_1661242854_add_communities_requests_to_leaveUpSql, map[string]*bintree{}}, "README.md": &bintree{readmeMd, map[string]*bintree{}}, "doc.go": &bintree{docGo, map[string]*bintree{}}, }} diff --git a/protocol/migrations/sqlite/1661242854_add_communities_requests_to_leave.up.sql b/protocol/migrations/sqlite/1661242854_add_communities_requests_to_leave.up.sql new file mode 100644 index 000000000..55d2167c5 --- /dev/null +++ b/protocol/migrations/sqlite/1661242854_add_communities_requests_to_leave.up.sql @@ -0,0 +1,7 @@ +CREATE TABLE IF NOT EXISTS communities_requests_to_leave ( + id BLOB NOT NULL, + public_key VARCHAR NOT NULL, + clock INT NOT NULL, + community_id BLOB NOT NULL, + PRIMARY KEY (id) ON CONFLICT REPLACE +); diff --git a/protocol/protobuf/application_metadata_message.pb.go b/protocol/protobuf/application_metadata_message.pb.go index 2b18007fa..b45887da2 100644 --- a/protocol/protobuf/application_metadata_message.pb.go +++ b/protocol/protobuf/application_metadata_message.pb.go @@ -80,6 +80,7 @@ const ( ApplicationMetadataMessage_SYNC_VERIFICATION_REQUEST ApplicationMetadataMessage_Type = 54 ApplicationMetadataMessage_CONTACT_VERIFICATION_TRUSTED ApplicationMetadataMessage_Type = 55 ApplicationMetadataMessage_SYNC_CONTACT_REQUEST_DECISION ApplicationMetadataMessage_Type = 56 + ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE ApplicationMetadataMessage_Type = 57 ) var ApplicationMetadataMessage_Type_name = map[int32]string{ @@ -140,6 +141,7 @@ var ApplicationMetadataMessage_Type_name = map[int32]string{ 54: "SYNC_VERIFICATION_REQUEST", 55: "CONTACT_VERIFICATION_TRUSTED", 56: "SYNC_CONTACT_REQUEST_DECISION", + 57: "COMMUNITY_REQUEST_TO_LEAVE", } var ApplicationMetadataMessage_Type_value = map[string]int32{ @@ -200,6 +202,7 @@ var ApplicationMetadataMessage_Type_value = map[string]int32{ "SYNC_VERIFICATION_REQUEST": 54, "CONTACT_VERIFICATION_TRUSTED": 55, "SYNC_CONTACT_REQUEST_DECISION": 56, + "COMMUNITY_REQUEST_TO_LEAVE": 57, } func (x ApplicationMetadataMessage_Type) String() string { @@ -278,60 +281,60 @@ func init() { } var fileDescriptor_ad09a6406fcf24c7 = []byte{ - // 865 bytes of a gzipped FileDescriptorProto + // 874 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0x5b, 0x73, 0x13, 0x37, 0x14, 0x6e, 0x20, 0x4d, 0x40, 0xb9, 0xa0, 0x88, 0x5c, 0x9c, 0xbb, 0x31, 0x34, 0x04, 0x68, 0x4d, - 0x0b, 0xbd, 0xcd, 0x74, 0xfa, 0x20, 0x4b, 0x27, 0xb6, 0xf0, 0xae, 0xb4, 0x48, 0x5a, 0x33, 0xee, - 0x8b, 0x66, 0x29, 0x2e, 0x93, 0x19, 0x20, 0x1e, 0x62, 0x1e, 0xf2, 0x5b, 0xfb, 0x2b, 0xfa, 0x0f, - 0x3a, 0xda, 0xab, 0x6f, 0x21, 0x4f, 0xf6, 0x9e, 0xef, 0xd3, 0x39, 0x3a, 0xdf, 0xf9, 0xce, 0x2e, - 0x6a, 0x24, 0xc3, 0xe1, 0x87, 0xf3, 0xbf, 0x93, 0xd1, 0xf9, 0xc5, 0x27, 0xf7, 0x71, 0x30, 0x4a, - 0xde, 0x25, 0xa3, 0xc4, 0x7d, 0x1c, 0x5c, 0x5e, 0x26, 0xef, 0x07, 0xcd, 0xe1, 0xe7, 0x8b, 0xd1, - 0x05, 0xb9, 0x93, 0xfe, 0xbc, 0xfd, 0xf2, 0x4f, 0xe3, 0xbf, 0x35, 0xb4, 0x47, 0xab, 0x03, 0x61, - 0xce, 0x0f, 0x33, 0x3a, 0x39, 0x40, 0x77, 0x2f, 0xcf, 0xdf, 0x7f, 0x4a, 0x46, 0x5f, 0x3e, 0x0f, - 0x6a, 0x0b, 0xf5, 0x85, 0xd3, 0x55, 0x5d, 0x05, 0x48, 0x0d, 0x2d, 0x0f, 0x93, 0xab, 0x0f, 0x17, - 0xc9, 0xbb, 0xda, 0xad, 0x14, 0x2b, 0x1e, 0xc9, 0x9f, 0x68, 0x71, 0x74, 0x35, 0x1c, 0xd4, 0x6e, - 0xd7, 0x17, 0x4e, 0xd7, 0x5f, 0x3c, 0x69, 0x16, 0xf5, 0x9a, 0xd7, 0xd7, 0x6a, 0xda, 0xab, 0xe1, - 0x40, 0xa7, 0xc7, 0x1a, 0xff, 0xae, 0xa2, 0x45, 0xff, 0x48, 0x56, 0xd0, 0x72, 0x2c, 0xbb, 0x52, - 0xbd, 0x91, 0xf8, 0x1b, 0x82, 0xd1, 0x2a, 0xeb, 0x50, 0xeb, 0x42, 0x30, 0x86, 0xb6, 0x01, 0x2f, - 0x10, 0x82, 0xd6, 0x99, 0x92, 0x96, 0x32, 0xeb, 0xe2, 0x88, 0x53, 0x0b, 0xf8, 0x16, 0x39, 0x44, - 0xbb, 0x21, 0x84, 0x2d, 0xd0, 0xa6, 0x23, 0xa2, 0x3c, 0x5c, 0x1e, 0xb9, 0x4d, 0xb6, 0xd0, 0x46, - 0x44, 0x85, 0x76, 0x42, 0x1a, 0x4b, 0x83, 0x80, 0x5a, 0xa1, 0x24, 0x5e, 0xf4, 0x61, 0xd3, 0x97, - 0x6c, 0x32, 0xfc, 0x2d, 0x79, 0x88, 0x8e, 0x35, 0xbc, 0x8e, 0xc1, 0x58, 0x47, 0x39, 0xd7, 0x60, - 0x8c, 0x3b, 0x53, 0xda, 0x59, 0x4d, 0xa5, 0xa1, 0x2c, 0x25, 0x2d, 0x91, 0xa7, 0xe8, 0x84, 0x32, - 0x06, 0x91, 0x75, 0x37, 0x71, 0x97, 0xc9, 0x33, 0xf4, 0x98, 0x03, 0x0b, 0x84, 0x84, 0x1b, 0xc9, - 0x77, 0xc8, 0x0e, 0xba, 0x5f, 0x90, 0xc6, 0x81, 0xbb, 0x64, 0x13, 0x61, 0x03, 0x92, 0x4f, 0x44, - 0x11, 0x39, 0x46, 0xfb, 0xd3, 0xb9, 0xc7, 0x09, 0x2b, 0x5e, 0x9a, 0x99, 0x26, 0x5d, 0x2e, 0x20, - 0x5e, 0x9d, 0x0f, 0x53, 0xc6, 0x54, 0x2c, 0x2d, 0x5e, 0x23, 0x0f, 0xd0, 0xe1, 0x2c, 0x1c, 0xc5, - 0xad, 0x40, 0x30, 0xe7, 0xe7, 0x82, 0xd7, 0xc9, 0x11, 0xda, 0x2b, 0xe6, 0xc1, 0x14, 0x07, 0x47, - 0x79, 0x0f, 0xb4, 0x15, 0x06, 0x42, 0x90, 0x16, 0xdf, 0x23, 0x0d, 0x74, 0x14, 0xc5, 0xa6, 0xe3, - 0xa4, 0xb2, 0xe2, 0x4c, 0xb0, 0x2c, 0x85, 0x86, 0xb6, 0x30, 0x56, 0x67, 0x92, 0x63, 0xaf, 0xd0, - 0xd7, 0x39, 0x4e, 0x83, 0x89, 0x94, 0x34, 0x80, 0x37, 0xc8, 0x3e, 0xda, 0x99, 0x25, 0xbf, 0x8e, - 0x41, 0xf7, 0x31, 0x21, 0x8f, 0x50, 0xfd, 0x1a, 0xb0, 0x4a, 0x71, 0xdf, 0x77, 0x3d, 0xaf, 0x5e, - 0xaa, 0x1f, 0xde, 0xf4, 0x2d, 0xcd, 0x83, 0xf3, 0xe3, 0x5b, 0xde, 0x82, 0x10, 0xaa, 0x57, 0xc2, - 0x69, 0xc8, 0x75, 0xde, 0x26, 0xbb, 0x68, 0xab, 0xad, 0x55, 0x1c, 0xa5, 0xb2, 0x38, 0x21, 0x7b, - 0xc2, 0x66, 0xdd, 0xed, 0x90, 0x0d, 0xb4, 0x96, 0x05, 0x39, 0x48, 0x2b, 0x6c, 0x1f, 0xd7, 0x3c, - 0x9b, 0xa9, 0x30, 0x8c, 0xa5, 0xb0, 0x7d, 0xc7, 0xc1, 0x30, 0x2d, 0xa2, 0x94, 0xbd, 0x4b, 0x6a, - 0x68, 0xb3, 0x82, 0xc6, 0xf2, 0xec, 0xf9, 0x5b, 0x57, 0x48, 0x39, 0x6d, 0xe5, 0x5e, 0x29, 0x21, - 0xf1, 0x3e, 0xb9, 0x87, 0x56, 0x22, 0x21, 0x4b, 0xdb, 0x1f, 0xf8, 0xdd, 0x01, 0x2e, 0xaa, 0xdd, - 0x39, 0xf4, 0x37, 0x31, 0x96, 0xda, 0xd8, 0x14, 0xab, 0x73, 0xe4, 0x7b, 0xe1, 0x10, 0xc0, 0xd8, - 0xbe, 0x1c, 0x7b, 0x53, 0xcd, 0xf3, 0x4c, 0x5e, 0x1a, 0xd7, 0xc9, 0x1e, 0xda, 0xa6, 0x52, 0xc9, - 0x7e, 0xa8, 0x62, 0xe3, 0x42, 0xb0, 0x5a, 0x30, 0xd7, 0xa2, 0x96, 0x75, 0xf0, 0x83, 0x72, 0xab, - 0xd2, 0x96, 0x35, 0x84, 0xaa, 0x07, 0x1c, 0x37, 0xfc, 0xd4, 0xaa, 0x70, 0x5e, 0xca, 0x78, 0x01, - 0x39, 0x7e, 0x48, 0x10, 0x5a, 0x6a, 0x51, 0xd6, 0x8d, 0x23, 0xfc, 0xa8, 0x74, 0xa4, 0x57, 0xb6, - 0xe7, 0x3b, 0x65, 0x20, 0x2d, 0xe8, 0x8c, 0xfa, 0x5d, 0xe9, 0xc8, 0x69, 0x38, 0xdb, 0x46, 0xe0, - 0xf8, 0xc4, 0x3b, 0x6e, 0x2e, 0x85, 0x0b, 0x13, 0x0a, 0x63, 0x80, 0xe3, 0xc7, 0xa9, 0x12, 0x9e, - 0xd3, 0x52, 0xaa, 0x1b, 0x52, 0xdd, 0xc5, 0xa7, 0x64, 0x1b, 0x91, 0xec, 0x86, 0x01, 0x50, 0xed, - 0x3a, 0xc2, 0x58, 0xa5, 0xfb, 0xf8, 0x89, 0x97, 0x31, 0x8d, 0x1b, 0xb0, 0x56, 0xc8, 0x36, 0x7e, - 0x4a, 0xea, 0xe8, 0xa0, 0x1a, 0x04, 0xd5, 0xac, 0x23, 0x7a, 0xe0, 0x42, 0xda, 0x96, 0x60, 0x03, - 0x21, 0xbb, 0xf8, 0x99, 0x1f, 0x62, 0x7a, 0x26, 0xd2, 0xea, 0x4c, 0x04, 0xe0, 0x22, 0xc1, 0x6c, - 0xac, 0x01, 0x7f, 0xef, 0xf7, 0x3b, 0x45, 0xde, 0xd0, 0x20, 0x00, 0x5b, 0xae, 0xda, 0x0f, 0xa9, - 0xa6, 0xd9, 0x1b, 0xa5, 0x58, 0xa7, 0xc2, 0x90, 0x4d, 0x2f, 0x9e, 0x06, 0xab, 0xb3, 0x1d, 0x9b, - 0x04, 0x9f, 0x93, 0x13, 0xd4, 0xb8, 0xd6, 0x16, 0x95, 0x6b, 0x7f, 0xac, 0x26, 0x50, 0x92, 0xf3, - 0x8e, 0x0c, 0xfe, 0xc9, 0xb7, 0x54, 0x1c, 0x2d, 0x2a, 0xf4, 0x40, 0x97, 0xee, 0xc7, 0x2f, 0xbc, - 0x29, 0xa6, 0xee, 0x37, 0x41, 0x78, 0xe9, 0x53, 0x14, 0xaf, 0xa2, 0xb9, 0x8c, 0x9f, 0x4b, 0x6b, - 0x58, 0x1d, 0x1b, 0x0b, 0xdc, 0xc5, 0x06, 0x34, 0xfe, 0xa5, 0x9c, 0xf8, 0x38, 0xbb, 0xec, 0xef, - 0xd7, 0x4c, 0xed, 0xd9, 0x7c, 0x45, 0x16, 0xfc, 0x5b, 0xe9, 0x89, 0x29, 0x6d, 0x1c, 0x07, 0x26, - 0x8c, 0x2f, 0xfd, 0x7b, 0x6b, 0xed, 0xaf, 0x95, 0xe6, 0xf3, 0x3f, 0x8a, 0x4f, 0xd2, 0xdb, 0xa5, - 0xf4, 0xdf, 0xcb, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x23, 0x35, 0x10, 0x56, 0x39, 0x07, 0x00, - 0x00, + 0x0b, 0xbd, 0x4e, 0xa7, 0x0f, 0xb2, 0x74, 0x62, 0x0b, 0xef, 0x4a, 0x8b, 0xa4, 0x35, 0xe3, 0xbe, + 0x68, 0x96, 0xe2, 0x32, 0x99, 0x01, 0xe2, 0x21, 0xe6, 0x21, 0x3f, 0xa3, 0xbf, 0xb7, 0x2f, 0x1d, + 0xed, 0xd5, 0xb7, 0x34, 0x4f, 0xc9, 0x9e, 0xef, 0xd3, 0x39, 0x3a, 0xdf, 0xf9, 0x8e, 0x8c, 0x1a, + 0xc9, 0x70, 0xf8, 0xe1, 0xfc, 0xaf, 0x64, 0x74, 0x7e, 0xf1, 0xc9, 0x7d, 0x1c, 0x8c, 0x92, 0x77, + 0xc9, 0x28, 0x71, 0x1f, 0x07, 0x97, 0x97, 0xc9, 0xfb, 0x41, 0x73, 0xf8, 0xf9, 0x62, 0x74, 0x41, + 0xee, 0xa4, 0x7f, 0xde, 0x7e, 0xf9, 0xbb, 0xf1, 0xcf, 0x3a, 0xda, 0xa3, 0xd5, 0x81, 0x30, 0xe7, + 0x87, 0x19, 0x9d, 0x1c, 0xa0, 0xbb, 0x97, 0xe7, 0xef, 0x3f, 0x25, 0xa3, 0x2f, 0x9f, 0x07, 0xb5, + 0x85, 0xfa, 0xc2, 0xe9, 0xaa, 0xae, 0x02, 0xa4, 0x86, 0x96, 0x87, 0xc9, 0xd5, 0x87, 0x8b, 0xe4, + 0x5d, 0xed, 0x56, 0x8a, 0x15, 0x9f, 0xe4, 0x0f, 0xb4, 0x38, 0xba, 0x1a, 0x0e, 0x6a, 0xb7, 0xeb, + 0x0b, 0xa7, 0xeb, 0x2f, 0x9e, 0x34, 0x8b, 0x7a, 0xcd, 0xeb, 0x6b, 0x35, 0xed, 0xd5, 0x70, 0xa0, + 0xd3, 0x63, 0x8d, 0x7f, 0x57, 0xd1, 0xa2, 0xff, 0x24, 0x2b, 0x68, 0x39, 0x96, 0x5d, 0xa9, 0xde, + 0x48, 0xfc, 0x15, 0xc1, 0x68, 0x95, 0x75, 0xa8, 0x75, 0x21, 0x18, 0x43, 0xdb, 0x80, 0x17, 0x08, + 0x41, 0xeb, 0x4c, 0x49, 0x4b, 0x99, 0x75, 0x71, 0xc4, 0xa9, 0x05, 0x7c, 0x8b, 0x1c, 0xa2, 0xdd, + 0x10, 0xc2, 0x16, 0x68, 0xd3, 0x11, 0x51, 0x1e, 0x2e, 0x8f, 0xdc, 0x26, 0x5b, 0x68, 0x23, 0xa2, + 0x42, 0x3b, 0x21, 0x8d, 0xa5, 0x41, 0x40, 0xad, 0x50, 0x12, 0x2f, 0xfa, 0xb0, 0xe9, 0x4b, 0x36, + 0x19, 0xfe, 0x9a, 0x3c, 0x44, 0xc7, 0x1a, 0x5e, 0xc7, 0x60, 0xac, 0xa3, 0x9c, 0x6b, 0x30, 0xc6, + 0x9d, 0x29, 0xed, 0xac, 0xa6, 0xd2, 0x50, 0x96, 0x92, 0x96, 0xc8, 0x53, 0x74, 0x42, 0x19, 0x83, + 0xc8, 0xba, 0x9b, 0xb8, 0xcb, 0xe4, 0x19, 0x7a, 0xcc, 0x81, 0x05, 0x42, 0xc2, 0x8d, 0xe4, 0x3b, + 0x64, 0x07, 0xdd, 0x2f, 0x48, 0xe3, 0xc0, 0x5d, 0xb2, 0x89, 0xb0, 0x01, 0xc9, 0x27, 0xa2, 0x88, + 0x1c, 0xa3, 0xfd, 0xe9, 0xdc, 0xe3, 0x84, 0x15, 0x2f, 0xcd, 0x4c, 0x93, 0x2e, 0x17, 0x10, 0xaf, + 0xce, 0x87, 0x29, 0x63, 0x2a, 0x96, 0x16, 0xaf, 0x91, 0x07, 0xe8, 0x70, 0x16, 0x8e, 0xe2, 0x56, + 0x20, 0x98, 0xf3, 0x73, 0xc1, 0xeb, 0xe4, 0x08, 0xed, 0x15, 0xf3, 0x60, 0x8a, 0x83, 0xa3, 0xbc, + 0x07, 0xda, 0x0a, 0x03, 0x21, 0x48, 0x8b, 0xef, 0x91, 0x06, 0x3a, 0x8a, 0x62, 0xd3, 0x71, 0x52, + 0x59, 0x71, 0x26, 0x58, 0x96, 0x42, 0x43, 0x5b, 0x18, 0xab, 0x33, 0xc9, 0xb1, 0x57, 0xe8, 0xff, + 0x39, 0x4e, 0x83, 0x89, 0x94, 0x34, 0x80, 0x37, 0xc8, 0x3e, 0xda, 0x99, 0x25, 0xbf, 0x8e, 0x41, + 0xf7, 0x31, 0x21, 0x8f, 0x50, 0xfd, 0x1a, 0xb0, 0x4a, 0x71, 0xdf, 0x77, 0x3d, 0xaf, 0x5e, 0xaa, + 0x1f, 0xde, 0xf4, 0x2d, 0xcd, 0x83, 0xf3, 0xe3, 0x5b, 0xde, 0x82, 0x10, 0xaa, 0x57, 0xc2, 0x69, + 0xc8, 0x75, 0xde, 0x26, 0xbb, 0x68, 0xab, 0xad, 0x55, 0x1c, 0xa5, 0xb2, 0x38, 0x21, 0x7b, 0xc2, + 0x66, 0xdd, 0xed, 0x90, 0x0d, 0xb4, 0x96, 0x05, 0x39, 0x48, 0x2b, 0x6c, 0x1f, 0xd7, 0x3c, 0x9b, + 0xa9, 0x30, 0x8c, 0xa5, 0xb0, 0x7d, 0xc7, 0xc1, 0x30, 0x2d, 0xa2, 0x94, 0xbd, 0x4b, 0x6a, 0x68, + 0xb3, 0x82, 0xc6, 0xf2, 0xec, 0xf9, 0x5b, 0x57, 0x48, 0x39, 0x6d, 0xe5, 0x5e, 0x29, 0x21, 0xf1, + 0x3e, 0xb9, 0x87, 0x56, 0x22, 0x21, 0x4b, 0xdb, 0x1f, 0xf8, 0xdd, 0x01, 0x2e, 0xaa, 0xdd, 0x39, + 0xf4, 0x37, 0x31, 0x96, 0xda, 0xd8, 0x14, 0xab, 0x73, 0xe4, 0x7b, 0xe1, 0x10, 0xc0, 0xd8, 0xbe, + 0x1c, 0x7b, 0x53, 0xcd, 0xf3, 0x4c, 0x5e, 0x1a, 0xd7, 0xc9, 0x1e, 0xda, 0xa6, 0x52, 0xc9, 0x7e, + 0xa8, 0x62, 0xe3, 0x42, 0xb0, 0x5a, 0x30, 0xd7, 0xa2, 0x96, 0x75, 0xf0, 0x83, 0x72, 0xab, 0xd2, + 0x96, 0x35, 0x84, 0xaa, 0x07, 0x1c, 0x37, 0xfc, 0xd4, 0xaa, 0x70, 0x5e, 0xca, 0x78, 0x01, 0x39, + 0x7e, 0x48, 0x10, 0x5a, 0x6a, 0x51, 0xd6, 0x8d, 0x23, 0xfc, 0xa8, 0x74, 0xa4, 0x57, 0xb6, 0xe7, + 0x3b, 0x65, 0x20, 0x2d, 0xe8, 0x8c, 0xfa, 0x4d, 0xe9, 0xc8, 0x69, 0x38, 0xdb, 0x46, 0xe0, 0xf8, + 0xc4, 0x3b, 0x6e, 0x2e, 0x85, 0x0b, 0x13, 0x0a, 0x63, 0x80, 0xe3, 0xc7, 0xa9, 0x12, 0x9e, 0xd3, + 0x52, 0xaa, 0x1b, 0x52, 0xdd, 0xc5, 0xa7, 0x64, 0x1b, 0x91, 0xec, 0x86, 0x01, 0x50, 0xed, 0x3a, + 0xc2, 0x58, 0xa5, 0xfb, 0xf8, 0x89, 0x97, 0x31, 0x8d, 0x1b, 0xb0, 0x56, 0xc8, 0x36, 0x7e, 0x4a, + 0xea, 0xe8, 0xa0, 0x1a, 0x04, 0xd5, 0xac, 0x23, 0x7a, 0xe0, 0x42, 0xda, 0x96, 0x60, 0x03, 0x21, + 0xbb, 0xf8, 0x99, 0x1f, 0x62, 0x7a, 0x26, 0xd2, 0xea, 0x4c, 0x04, 0xe0, 0x22, 0xc1, 0x6c, 0xac, + 0x01, 0x7f, 0xeb, 0xf7, 0x3b, 0x45, 0xde, 0xd0, 0x20, 0x00, 0x5b, 0xae, 0xda, 0x77, 0xa9, 0xa6, + 0xd9, 0x8b, 0x52, 0xac, 0x53, 0x61, 0xc8, 0xa6, 0x17, 0x4f, 0x83, 0xd5, 0xd9, 0x8e, 0x4d, 0x82, + 0xcf, 0xc9, 0x09, 0x6a, 0x5c, 0x6b, 0x8b, 0xca, 0xb5, 0xdf, 0x57, 0x13, 0x28, 0xc9, 0x79, 0x47, + 0x06, 0xff, 0xe0, 0x5b, 0x2a, 0x8e, 0x16, 0x15, 0x7a, 0xa0, 0x4b, 0xf7, 0xe3, 0x17, 0xde, 0x14, + 0x53, 0xf7, 0x9b, 0x20, 0xbc, 0xf4, 0x29, 0x8a, 0xa7, 0x68, 0x2e, 0xe3, 0xc7, 0xd2, 0x1a, 0x56, + 0xc7, 0xc6, 0x02, 0x77, 0xb1, 0x01, 0x8d, 0x7f, 0x2a, 0x27, 0x3e, 0xce, 0x2e, 0xfb, 0xfb, 0x39, + 0x53, 0x7b, 0x36, 0x5f, 0x91, 0x05, 0xff, 0x52, 0x7a, 0x62, 0x4a, 0x1b, 0xc7, 0x81, 0x09, 0xe3, + 0x4b, 0xff, 0x9a, 0xbd, 0x52, 0x73, 0x44, 0x0a, 0x80, 0xf6, 0x00, 0xff, 0xd6, 0x5a, 0xfb, 0x73, + 0xa5, 0xf9, 0xfc, 0xf7, 0xe2, 0x27, 0xeb, 0xed, 0x52, 0xfa, 0xdf, 0xcb, 0xff, 0x02, 0x00, 0x00, + 0xff, 0xff, 0x9a, 0x46, 0x2c, 0xd1, 0x59, 0x07, 0x00, 0x00, } diff --git a/protocol/protobuf/application_metadata_message.proto b/protocol/protobuf/application_metadata_message.proto index 293f615ae..5771d60d3 100644 --- a/protocol/protobuf/application_metadata_message.proto +++ b/protocol/protobuf/application_metadata_message.proto @@ -70,5 +70,6 @@ message ApplicationMetadataMessage { SYNC_VERIFICATION_REQUEST = 54; CONTACT_VERIFICATION_TRUSTED = 55; SYNC_CONTACT_REQUEST_DECISION = 56; + COMMUNITY_REQUEST_TO_LEAVE = 57; } } diff --git a/protocol/protobuf/communities.pb.go b/protocol/protobuf/communities.pb.go index 914e04563..c31765d75 100644 --- a/protocol/protobuf/communities.pb.go +++ b/protocol/protobuf/communities.pb.go @@ -742,6 +742,53 @@ func (m *CommunityRequestToJoinResponse) GetCommunityId() []byte { return nil } +type CommunityRequestToLeave struct { + Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` + CommunityId []byte `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommunityRequestToLeave) Reset() { *m = CommunityRequestToLeave{} } +func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) } +func (*CommunityRequestToLeave) ProtoMessage() {} +func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) { + return fileDescriptor_f937943d74c1cd8b, []int{10} +} + +func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityRequestToLeave.Unmarshal(m, b) +} +func (m *CommunityRequestToLeave) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityRequestToLeave.Marshal(b, m, deterministic) +} +func (m *CommunityRequestToLeave) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityRequestToLeave.Merge(m, src) +} +func (m *CommunityRequestToLeave) XXX_Size() int { + return xxx_messageInfo_CommunityRequestToLeave.Size(m) +} +func (m *CommunityRequestToLeave) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityRequestToLeave.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityRequestToLeave proto.InternalMessageInfo + +func (m *CommunityRequestToLeave) GetClock() uint64 { + if m != nil { + return m.Clock + } + return 0 +} + +func (m *CommunityRequestToLeave) GetCommunityId() []byte { + if m != nil { + return m.CommunityId + } + return nil +} + type CommunityMessageArchiveMagnetlink struct { Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` MagnetUri string `protobuf:"bytes,2,opt,name=magnet_uri,json=magnetUri,proto3" json:"magnet_uri,omitempty"` @@ -754,7 +801,7 @@ func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMess func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) } func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{10} + return fileDescriptor_f937943d74c1cd8b, []int{11} } func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error { @@ -805,7 +852,7 @@ func (m *WakuMessage) Reset() { *m = WakuMessage{} } func (m *WakuMessage) String() string { return proto.CompactTextString(m) } func (*WakuMessage) ProtoMessage() {} func (*WakuMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{11} + return fileDescriptor_f937943d74c1cd8b, []int{12} } func (m *WakuMessage) XXX_Unmarshal(b []byte) error { @@ -882,7 +929,7 @@ func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMe func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchiveMetadata) ProtoMessage() {} func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{12} + return fileDescriptor_f937943d74c1cd8b, []int{13} } func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error { @@ -944,7 +991,7 @@ func (m *WakuMessageArchive) Reset() { *m = WakuMessageArchive{} } func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchive) ProtoMessage() {} func (*WakuMessageArchive) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{13} + return fileDescriptor_f937943d74c1cd8b, []int{14} } func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error { @@ -1001,7 +1048,7 @@ func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArch func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{14} + return fileDescriptor_f937943d74c1cd8b, []int{15} } func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error { @@ -1068,7 +1115,7 @@ func (m *WakuMessageArchiveIndex) Reset() { *m = WakuMessageArchiveIndex func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) } func (*WakuMessageArchiveIndex) ProtoMessage() {} func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) { - return fileDescriptor_f937943d74c1cd8b, []int{15} + return fileDescriptor_f937943d74c1cd8b, []int{16} } func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error { @@ -1113,6 +1160,7 @@ func init() { proto.RegisterType((*CommunityInvitation)(nil), "protobuf.CommunityInvitation") proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin") proto.RegisterType((*CommunityRequestToJoinResponse)(nil), "protobuf.CommunityRequestToJoinResponse") + proto.RegisterType((*CommunityRequestToLeave)(nil), "protobuf.CommunityRequestToLeave") proto.RegisterType((*CommunityMessageArchiveMagnetlink)(nil), "protobuf.CommunityMessageArchiveMagnetlink") proto.RegisterType((*WakuMessage)(nil), "protobuf.WakuMessage") proto.RegisterType((*WakuMessageArchiveMetadata)(nil), "protobuf.WakuMessageArchiveMetadata") @@ -1127,89 +1175,90 @@ func init() { } var fileDescriptor_f937943d74c1cd8b = []byte{ - // 1329 bytes of a gzipped FileDescriptorProto + // 1345 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcd, 0x6f, 0x1b, 0x45, - 0x14, 0xef, 0xfa, 0xdb, 0xcf, 0x1f, 0x75, 0xa6, 0x6d, 0xba, 0x4d, 0x69, 0xe3, 0x2e, 0x20, 0xb9, - 0x42, 0xb8, 0x6a, 0x2a, 0xa4, 0x8a, 0x8f, 0xb6, 0x6e, 0x6a, 0x15, 0xd3, 0xc4, 0x6e, 0xc7, 0x09, - 0x85, 0x1e, 0x58, 0x8d, 0xbd, 0x13, 0x67, 0x94, 0xf5, 0xac, 0xd9, 0x19, 0x47, 0x98, 0x03, 0x67, - 0xfe, 0x04, 0x04, 0x47, 0x2e, 0xfc, 0x1f, 0x9c, 0xb8, 0x70, 0xe7, 0xc6, 0x9f, 0x82, 0x66, 0xf6, - 0xc3, 0x6b, 0xc7, 0x4e, 0x23, 0x55, 0x9c, 0x3c, 0xef, 0xcd, 0x7b, 0xbf, 0x79, 0xdf, 0x6f, 0x0d, - 0x1b, 0x43, 0x6f, 0x3c, 0x9e, 0x72, 0x26, 0x19, 0x15, 0xcd, 0x89, 0xef, 0x49, 0x0f, 0x15, 0xf4, - 0xcf, 0x60, 0x7a, 0xb4, 0x75, 0x65, 0x78, 0x4c, 0xa4, 0xcd, 0x1c, 0xca, 0x25, 0x93, 0xb3, 0xe0, - 0xda, 0x3a, 0x85, 0xec, 0x73, 0x9f, 0x70, 0x89, 0xee, 0x40, 0x39, 0x52, 0x9e, 0xd9, 0xcc, 0x31, - 0x8d, 0xba, 0xd1, 0x28, 0xe3, 0x52, 0xcc, 0xeb, 0x38, 0xe8, 0x26, 0x14, 0xc7, 0x74, 0x3c, 0xa0, - 0xbe, 0xba, 0x4f, 0xe9, 0xfb, 0x42, 0xc0, 0xe8, 0x38, 0xe8, 0x3a, 0xe4, 0x43, 0x7c, 0x33, 0x5d, - 0x37, 0x1a, 0x45, 0x9c, 0x53, 0x64, 0xc7, 0x41, 0x57, 0x21, 0x3b, 0x74, 0xbd, 0xe1, 0x89, 0x99, - 0xa9, 0x1b, 0x8d, 0x0c, 0x0e, 0x08, 0xeb, 0x67, 0x03, 0x2e, 0xef, 0x46, 0xd8, 0xfb, 0x1a, 0x04, - 0x7d, 0x02, 0x59, 0xdf, 0x73, 0xa9, 0x30, 0x8d, 0x7a, 0xba, 0x51, 0xdd, 0xd9, 0x6e, 0x46, 0xa6, - 0x37, 0x97, 0x24, 0x9b, 0x58, 0x89, 0xe1, 0x40, 0xda, 0x7a, 0x04, 0x59, 0x4d, 0xa3, 0x1a, 0x94, - 0x0f, 0xbb, 0x2f, 0xba, 0xbd, 0xd7, 0x5d, 0x1b, 0xf7, 0xf6, 0xda, 0xb5, 0x4b, 0xa8, 0x0c, 0x05, - 0x75, 0xb2, 0x5b, 0x7b, 0x7b, 0x35, 0x03, 0x5d, 0x83, 0x0d, 0x4d, 0xed, 0xb7, 0xba, 0xad, 0xe7, - 0x6d, 0xfb, 0xb0, 0xdf, 0xc6, 0xfd, 0x5a, 0xca, 0xfa, 0xd7, 0x80, 0xab, 0xf1, 0x03, 0x2f, 0xa9, - 0x3f, 0x66, 0x42, 0x30, 0x8f, 0x0b, 0x74, 0x03, 0x0a, 0x94, 0x0b, 0xdb, 0xe3, 0xee, 0x4c, 0x87, - 0xa3, 0x80, 0xf3, 0x94, 0x8b, 0x1e, 0x77, 0x67, 0xc8, 0x84, 0xfc, 0xc4, 0x67, 0xa7, 0x44, 0x52, - 0x1d, 0x88, 0x02, 0x8e, 0x48, 0xf4, 0x05, 0xe4, 0xc8, 0x70, 0x48, 0x85, 0xd0, 0x61, 0xa8, 0xee, - 0x7c, 0xb8, 0xc2, 0x8b, 0xc4, 0x23, 0xcd, 0x96, 0x16, 0xc6, 0xa1, 0x92, 0x75, 0x00, 0xb9, 0x80, - 0x83, 0x10, 0x54, 0x23, 0x6f, 0x5a, 0xbb, 0xbb, 0xed, 0x7e, 0xbf, 0x76, 0x09, 0x6d, 0x40, 0xa5, - 0xdb, 0xb3, 0xf7, 0xdb, 0xfb, 0x4f, 0xdb, 0xb8, 0xff, 0x65, 0xe7, 0x65, 0xcd, 0x40, 0x57, 0xe0, - 0x72, 0xa7, 0xfb, 0x75, 0xe7, 0xa0, 0x75, 0xd0, 0xe9, 0x75, 0xed, 0x5e, 0x77, 0xef, 0xdb, 0x5a, - 0x0a, 0x55, 0x01, 0x7a, 0x5d, 0x1b, 0xb7, 0x5f, 0x1d, 0xb6, 0xfb, 0x07, 0xb5, 0xb4, 0xf5, 0x6b, - 0x3e, 0xe1, 0xe2, 0x33, 0x2a, 0x86, 0x3e, 0x9b, 0x48, 0xe6, 0xf1, 0x79, 0x72, 0x8c, 0x44, 0x72, - 0x50, 0x1b, 0xf2, 0x41, 0x5e, 0x85, 0x99, 0xaa, 0xa7, 0x1b, 0xa5, 0x9d, 0x8f, 0x56, 0x38, 0x91, - 0x80, 0x69, 0x06, 0x69, 0x11, 0x6d, 0x2e, 0xfd, 0x19, 0x8e, 0x74, 0xd1, 0x13, 0x28, 0x4d, 0xe6, - 0x9e, 0xea, 0x78, 0x94, 0x76, 0x6e, 0x9f, 0x1f, 0x0f, 0x9c, 0x54, 0x41, 0x3b, 0x50, 0x88, 0xea, - 0xd5, 0xcc, 0x6a, 0xf5, 0xcd, 0x84, 0xba, 0xae, 0xaf, 0xe0, 0x16, 0xc7, 0x72, 0xe8, 0x31, 0x64, - 0x55, 0xe5, 0x09, 0x33, 0xa7, 0x4d, 0xbf, 0xfb, 0x16, 0xd3, 0x15, 0x4a, 0x68, 0x78, 0xa0, 0xa7, - 0xd2, 0x3e, 0x20, 0xdc, 0x76, 0x99, 0x90, 0x66, 0xbe, 0x9e, 0x6e, 0x14, 0x71, 0x7e, 0x40, 0xf8, - 0x1e, 0x13, 0x12, 0x75, 0x01, 0x86, 0x44, 0xd2, 0x91, 0xe7, 0x33, 0x2a, 0xcc, 0x82, 0x7e, 0xa0, - 0xf9, 0xb6, 0x07, 0x62, 0x85, 0xe0, 0x95, 0x04, 0x02, 0x7a, 0x08, 0x26, 0xf1, 0x87, 0xc7, 0xec, - 0x94, 0xda, 0x63, 0x32, 0xe2, 0x54, 0xba, 0x8c, 0x9f, 0xd8, 0x41, 0x46, 0x8a, 0x3a, 0x23, 0x9b, - 0xe1, 0xfd, 0x7e, 0x7c, 0xbd, 0xab, 0x53, 0xf4, 0x1c, 0xaa, 0xc4, 0x19, 0x33, 0x6e, 0x0b, 0x2a, - 0x25, 0xe3, 0x23, 0x61, 0x82, 0x8e, 0x4f, 0x7d, 0x85, 0x35, 0x2d, 0x25, 0xd8, 0x0f, 0xe5, 0x70, - 0x85, 0x24, 0x49, 0xf4, 0x3e, 0x54, 0x18, 0x97, 0xbe, 0x67, 0x8f, 0xa9, 0x10, 0x64, 0x44, 0xcd, - 0x92, 0xee, 0xde, 0xb2, 0x66, 0xee, 0x07, 0x3c, 0x25, 0xe4, 0x4d, 0x93, 0x42, 0xe5, 0x40, 0x48, - 0x33, 0x23, 0xa1, 0xf7, 0xa0, 0x48, 0xf9, 0xd0, 0x9f, 0x4d, 0x24, 0x75, 0xcc, 0x8a, 0xee, 0x8a, - 0x39, 0x03, 0x21, 0xc8, 0x48, 0x32, 0x12, 0x66, 0x55, 0x47, 0x54, 0x9f, 0xb7, 0x0e, 0xa1, 0x9c, - 0xac, 0x1c, 0x54, 0x83, 0xf4, 0x09, 0x0d, 0x7a, 0xad, 0x88, 0xd5, 0x11, 0xdd, 0x83, 0xec, 0x29, - 0x71, 0xa7, 0x41, 0x97, 0x95, 0x76, 0x6e, 0xac, 0x1d, 0x09, 0x38, 0x90, 0xfb, 0x34, 0xf5, 0xd0, - 0xd8, 0x7a, 0x05, 0x30, 0xcf, 0xea, 0x0a, 0xd0, 0x8f, 0x17, 0x41, 0xaf, 0xaf, 0x00, 0x55, 0xfa, - 0x49, 0xc8, 0x37, 0x70, 0x79, 0x29, 0x8f, 0x2b, 0x70, 0xef, 0x2f, 0xe2, 0xde, 0x5c, 0x85, 0x1b, - 0x80, 0xcc, 0x12, 0xd8, 0xd6, 0x77, 0xb0, 0xb9, 0x3a, 0x55, 0xe8, 0x19, 0x6c, 0x4f, 0x18, 0x8f, - 0x82, 0x6e, 0x13, 0xd7, 0xb5, 0xc3, 0xde, 0xb2, 0x29, 0x27, 0x03, 0x97, 0x3a, 0xe1, 0x5c, 0xba, - 0x39, 0x61, 0x3c, 0x4c, 0x43, 0xcb, 0x75, 0xe3, 0x98, 0x6a, 0x11, 0xeb, 0x9f, 0x14, 0x54, 0x16, - 0x1c, 0x43, 0x8f, 0xe6, 0xfd, 0x6d, 0xe8, 0x1a, 0xfe, 0x60, 0x4d, 0x08, 0x2e, 0xd6, 0xd8, 0xa9, - 0x77, 0x6b, 0xec, 0xf4, 0x05, 0x1b, 0x7b, 0x1b, 0x4a, 0x61, 0xeb, 0xe8, 0x05, 0x95, 0xd1, 0x81, - 0x8f, 0xba, 0x49, 0xed, 0xa7, 0x2d, 0x28, 0x4c, 0x3c, 0xc1, 0x54, 0xd7, 0xe9, 0x69, 0x91, 0xc5, - 0x31, 0xfd, 0x3f, 0x95, 0x9a, 0xe5, 0xc0, 0xc6, 0x99, 0xdc, 0x2e, 0x1b, 0x6a, 0x9c, 0x31, 0x14, - 0x41, 0x86, 0x93, 0x71, 0xf0, 0x52, 0x11, 0xeb, 0xf3, 0x82, 0xf1, 0xe9, 0x45, 0xe3, 0xad, 0x5f, - 0x0c, 0xb8, 0x12, 0x3f, 0xd3, 0xe1, 0xa7, 0x4c, 0x12, 0x3d, 0xbd, 0x1f, 0xc0, 0xb5, 0xf9, 0xce, - 0x76, 0xe6, 0x33, 0x27, 0x5c, 0xde, 0x57, 0x87, 0x6b, 0x46, 0xfe, 0x48, 0x6d, 0xfc, 0x70, 0x83, - 0x07, 0xc4, 0xfa, 0xf5, 0x7d, 0x0b, 0x60, 0x32, 0x1d, 0xb8, 0x6c, 0x68, 0xab, 0x78, 0x65, 0xb4, - 0x4e, 0x31, 0xe0, 0xbc, 0xa0, 0x33, 0xeb, 0x0f, 0x23, 0x51, 0xbd, 0x98, 0x7e, 0x3f, 0xa5, 0x42, - 0x1e, 0x78, 0x5f, 0x79, 0x6c, 0xdd, 0x6e, 0x09, 0x97, 0x6a, 0xc2, 0x7f, 0xb5, 0x54, 0xbb, 0x2a, - 0x04, 0x6b, 0x6d, 0x58, 0xfe, 0x36, 0xc9, 0x9c, 0xfd, 0x36, 0xb9, 0x03, 0x65, 0x87, 0x89, 0x89, - 0x4b, 0x66, 0x01, 0x74, 0x56, 0x03, 0x94, 0x42, 0x9e, 0x82, 0xb7, 0xfe, 0x32, 0xe0, 0xf6, 0x6a, - 0x53, 0x31, 0x15, 0x13, 0x8f, 0x0b, 0xba, 0xc6, 0xe4, 0xcf, 0xa1, 0x18, 0x3f, 0x75, 0x4e, 0xb1, - 0x27, 0x82, 0x8c, 0xe7, 0x0a, 0x2a, 0xb1, 0x6a, 0xb7, 0xeb, 0xa9, 0x98, 0xd6, 0xdd, 0x1a, 0xd3, - 0xf3, 0x5c, 0x64, 0x92, 0xb9, 0x58, 0x76, 0x37, 0x7b, 0xc6, 0x5d, 0xeb, 0x1b, 0xb8, 0x93, 0xa8, - 0xca, 0xa0, 0xf1, 0x97, 0x17, 0xc5, 0x1a, 0x6f, 0x6e, 0x01, 0x04, 0xbb, 0xc6, 0x9e, 0xfa, 0x2c, - 0x4c, 0x41, 0x31, 0xe0, 0x1c, 0xfa, 0xcc, 0xfa, 0xcd, 0x80, 0xd2, 0x6b, 0x72, 0x32, 0x8d, 0xa6, - 0x7a, 0x0d, 0xd2, 0x82, 0x8d, 0xc2, 0x8a, 0x52, 0x47, 0x35, 0xe7, 0x25, 0x1b, 0x53, 0x21, 0xc9, - 0x78, 0xa2, 0xf5, 0x33, 0x78, 0xce, 0x50, 0x8f, 0x4a, 0x6f, 0xc2, 0x86, 0xda, 0xd7, 0x32, 0x0e, - 0x08, 0xfd, 0xbd, 0x44, 0x66, 0xae, 0x47, 0xa2, 0xe4, 0x45, 0x64, 0x70, 0xe3, 0x38, 0x8c, 0x8f, - 0x42, 0x3f, 0x23, 0x52, 0x75, 0xc9, 0x31, 0x11, 0xc7, 0x66, 0x4e, 0xb3, 0xf5, 0xd9, 0xfa, 0x09, - 0xb6, 0x12, 0xc6, 0x45, 0x2e, 0x53, 0x49, 0x1c, 0x22, 0x89, 0xc2, 0x3a, 0xa5, 0xbe, 0x88, 0x3a, - 0xa0, 0x82, 0x23, 0x52, 0x61, 0x1d, 0xf9, 0xde, 0x38, 0x34, 0x57, 0x9f, 0x51, 0x15, 0x52, 0xd2, - 0xd3, 0x66, 0x66, 0x70, 0x4a, 0x7a, 0xc8, 0x52, 0x61, 0xe7, 0x92, 0x72, 0x79, 0xa0, 0x1d, 0xc8, - 0xd4, 0xd3, 0x8d, 0x32, 0x5e, 0xe0, 0x59, 0xbf, 0x1b, 0x80, 0xce, 0x1a, 0x70, 0xce, 0xc3, 0x4f, - 0xa0, 0x30, 0x0e, 0xcd, 0x0b, 0x4b, 0x27, 0x31, 0x6b, 0xd7, 0xbb, 0x82, 0x63, 0x2d, 0x74, 0x5f, - 0x21, 0x68, 0x19, 0xf5, 0x09, 0xa5, 0xa6, 0xf5, 0xb5, 0x95, 0x08, 0x38, 0x16, 0xb3, 0xfe, 0x34, - 0x60, 0xfb, 0x2c, 0x76, 0x87, 0x3b, 0xf4, 0x87, 0x0b, 0xc4, 0xea, 0xdd, 0x4d, 0xde, 0x84, 0x9c, - 0x77, 0x74, 0x24, 0xa8, 0x0c, 0xa3, 0x1b, 0x52, 0x2a, 0x0b, 0x82, 0xfd, 0x48, 0xc3, 0x7f, 0x02, - 0xfa, 0xbc, 0x9c, 0xff, 0x4c, 0x9c, 0x7f, 0xeb, 0x6f, 0x03, 0xae, 0xaf, 0xf1, 0x02, 0xbd, 0x80, - 0x42, 0xf8, 0x61, 0x14, 0xad, 0xb0, 0x7b, 0xe7, 0xd9, 0xa8, 0x95, 0x9a, 0x21, 0x11, 0x6e, 0xb3, - 0x18, 0x60, 0xeb, 0x08, 0x2a, 0x0b, 0x57, 0x2b, 0x96, 0xc3, 0xe3, 0xc5, 0xe5, 0x70, 0xf7, 0xad, - 0x8f, 0xc5, 0x51, 0x99, 0x2f, 0x8b, 0xa7, 0x95, 0x37, 0xa5, 0xe6, 0xbd, 0xcf, 0x22, 0xcd, 0x41, - 0x4e, 0x9f, 0x1e, 0xfc, 0x17, 0x00, 0x00, 0xff, 0xff, 0x02, 0x65, 0xc2, 0x05, 0xb5, 0x0d, 0x00, + 0x14, 0xef, 0xfa, 0x23, 0xb1, 0x9f, 0x3f, 0xea, 0x4c, 0xdb, 0x64, 0x9b, 0xd2, 0xc6, 0x5d, 0x40, + 0x72, 0x85, 0x70, 0xd5, 0x54, 0x48, 0x15, 0x1f, 0x6d, 0xdd, 0xd4, 0x2a, 0xa6, 0x89, 0xdd, 0x8e, + 0x13, 0x0a, 0x3d, 0xb0, 0x1a, 0x7b, 0x27, 0xce, 0x28, 0xeb, 0x59, 0xb3, 0x33, 0xb6, 0x30, 0x07, + 0xce, 0xfc, 0x09, 0x08, 0x8e, 0x5c, 0xf8, 0x3f, 0x38, 0x71, 0xe1, 0xce, 0x8d, 0x3f, 0x05, 0xcd, + 0xec, 0x87, 0xd7, 0x5f, 0x69, 0xa5, 0x8a, 0x93, 0xe7, 0xbd, 0x79, 0xef, 0xf7, 0xbe, 0xe7, 0xad, + 0x61, 0xab, 0xef, 0x0d, 0x87, 0x63, 0xce, 0x24, 0xa3, 0xa2, 0x3e, 0xf2, 0x3d, 0xe9, 0xa1, 0x9c, + 0xfe, 0xe9, 0x8d, 0x4f, 0x77, 0xaf, 0xf4, 0xcf, 0x88, 0xb4, 0x99, 0x43, 0xb9, 0x64, 0x72, 0x1a, + 0x5c, 0x5b, 0x13, 0xc8, 0x3e, 0xf3, 0x09, 0x97, 0xe8, 0x36, 0x14, 0x23, 0xe5, 0xa9, 0xcd, 0x1c, + 0xd3, 0xa8, 0x1a, 0xb5, 0x22, 0x2e, 0xc4, 0xbc, 0x96, 0x83, 0x6e, 0x40, 0x7e, 0x48, 0x87, 0x3d, + 0xea, 0xab, 0xfb, 0x94, 0xbe, 0xcf, 0x05, 0x8c, 0x96, 0x83, 0x76, 0x60, 0x33, 0xc4, 0x37, 0xd3, + 0x55, 0xa3, 0x96, 0xc7, 0x1b, 0x8a, 0x6c, 0x39, 0xe8, 0x2a, 0x64, 0xfb, 0xae, 0xd7, 0x3f, 0x37, + 0x33, 0x55, 0xa3, 0x96, 0xc1, 0x01, 0x61, 0xfd, 0x6c, 0xc0, 0xe5, 0x83, 0x08, 0xfb, 0x48, 0x83, + 0xa0, 0x4f, 0x20, 0xeb, 0x7b, 0x2e, 0x15, 0xa6, 0x51, 0x4d, 0xd7, 0xca, 0xfb, 0x7b, 0xf5, 0xc8, + 0xf5, 0xfa, 0x82, 0x64, 0x1d, 0x2b, 0x31, 0x1c, 0x48, 0x5b, 0x0f, 0x21, 0xab, 0x69, 0x54, 0x81, + 0xe2, 0x49, 0xfb, 0x79, 0xbb, 0xf3, 0xaa, 0x6d, 0xe3, 0xce, 0x61, 0xb3, 0x72, 0x09, 0x15, 0x21, + 0xa7, 0x4e, 0x76, 0xe3, 0xf0, 0xb0, 0x62, 0xa0, 0x6b, 0xb0, 0xa5, 0xa9, 0xa3, 0x46, 0xbb, 0xf1, + 0xac, 0x69, 0x9f, 0x74, 0x9b, 0xb8, 0x5b, 0x49, 0x59, 0xff, 0x1a, 0x70, 0x35, 0x36, 0xf0, 0x82, + 0xfa, 0x43, 0x26, 0x04, 0xf3, 0xb8, 0x40, 0xd7, 0x21, 0x47, 0xb9, 0xb0, 0x3d, 0xee, 0x4e, 0x75, + 0x3a, 0x72, 0x78, 0x93, 0x72, 0xd1, 0xe1, 0xee, 0x14, 0x99, 0xb0, 0x39, 0xf2, 0xd9, 0x84, 0x48, + 0xaa, 0x13, 0x91, 0xc3, 0x11, 0x89, 0xbe, 0x80, 0x0d, 0xd2, 0xef, 0x53, 0x21, 0x74, 0x1a, 0xca, + 0xfb, 0x1f, 0xae, 0x88, 0x22, 0x61, 0xa4, 0xde, 0xd0, 0xc2, 0x38, 0x54, 0xb2, 0x8e, 0x61, 0x23, + 0xe0, 0x20, 0x04, 0xe5, 0x28, 0x9a, 0xc6, 0xc1, 0x41, 0xb3, 0xdb, 0xad, 0x5c, 0x42, 0x5b, 0x50, + 0x6a, 0x77, 0xec, 0xa3, 0xe6, 0xd1, 0x93, 0x26, 0xee, 0x7e, 0xd9, 0x7a, 0x51, 0x31, 0xd0, 0x15, + 0xb8, 0xdc, 0x6a, 0x7f, 0xdd, 0x3a, 0x6e, 0x1c, 0xb7, 0x3a, 0x6d, 0xbb, 0xd3, 0x3e, 0xfc, 0xb6, + 0x92, 0x42, 0x65, 0x80, 0x4e, 0xdb, 0xc6, 0xcd, 0x97, 0x27, 0xcd, 0xee, 0x71, 0x25, 0x6d, 0xfd, + 0xba, 0x99, 0x08, 0xf1, 0x29, 0x15, 0x7d, 0x9f, 0x8d, 0x24, 0xf3, 0xf8, 0xac, 0x38, 0x46, 0xa2, + 0x38, 0xa8, 0x09, 0x9b, 0x41, 0x5d, 0x85, 0x99, 0xaa, 0xa6, 0x6b, 0x85, 0xfd, 0x8f, 0x56, 0x04, + 0x91, 0x80, 0xa9, 0x07, 0x65, 0x11, 0x4d, 0x2e, 0xfd, 0x29, 0x8e, 0x74, 0xd1, 0x63, 0x28, 0x8c, + 0x66, 0x91, 0xea, 0x7c, 0x14, 0xf6, 0x6f, 0x5d, 0x9c, 0x0f, 0x9c, 0x54, 0x41, 0xfb, 0x90, 0x8b, + 0xfa, 0xd5, 0xcc, 0x6a, 0xf5, 0xed, 0x84, 0xba, 0xee, 0xaf, 0xe0, 0x16, 0xc7, 0x72, 0xe8, 0x11, + 0x64, 0x55, 0xe7, 0x09, 0x73, 0x43, 0xbb, 0x7e, 0xe7, 0x0d, 0xae, 0x2b, 0x94, 0xd0, 0xf1, 0x40, + 0x4f, 0x95, 0xbd, 0x47, 0xb8, 0xed, 0x32, 0x21, 0xcd, 0xcd, 0x6a, 0xba, 0x96, 0xc7, 0x9b, 0x3d, + 0xc2, 0x0f, 0x99, 0x90, 0xa8, 0x0d, 0xd0, 0x27, 0x92, 0x0e, 0x3c, 0x9f, 0x51, 0x61, 0xe6, 0xb4, + 0x81, 0xfa, 0x9b, 0x0c, 0xc4, 0x0a, 0x81, 0x95, 0x04, 0x02, 0x7a, 0x00, 0x26, 0xf1, 0xfb, 0x67, + 0x6c, 0x42, 0xed, 0x21, 0x19, 0x70, 0x2a, 0x5d, 0xc6, 0xcf, 0xed, 0xa0, 0x22, 0x79, 0x5d, 0x91, + 0xed, 0xf0, 0xfe, 0x28, 0xbe, 0x3e, 0xd0, 0x25, 0x7a, 0x06, 0x65, 0xe2, 0x0c, 0x19, 0xb7, 0x05, + 0x95, 0x92, 0xf1, 0x81, 0x30, 0x41, 0xe7, 0xa7, 0xba, 0xc2, 0x9b, 0x86, 0x12, 0xec, 0x86, 0x72, + 0xb8, 0x44, 0x92, 0x24, 0x7a, 0x1f, 0x4a, 0x8c, 0x4b, 0xdf, 0xb3, 0x87, 0x54, 0x08, 0x32, 0xa0, + 0x66, 0x41, 0x4f, 0x6f, 0x51, 0x33, 0x8f, 0x02, 0x9e, 0x12, 0xf2, 0xc6, 0x49, 0xa1, 0x62, 0x20, + 0xa4, 0x99, 0x91, 0xd0, 0x7b, 0x90, 0xa7, 0xbc, 0xef, 0x4f, 0x47, 0x92, 0x3a, 0x66, 0x49, 0x4f, + 0xc5, 0x8c, 0x81, 0x10, 0x64, 0x24, 0x19, 0x08, 0xb3, 0xac, 0x33, 0xaa, 0xcf, 0xbb, 0x27, 0x50, + 0x4c, 0x76, 0x0e, 0xaa, 0x40, 0xfa, 0x9c, 0x06, 0xb3, 0x96, 0xc7, 0xea, 0x88, 0xee, 0x42, 0x76, + 0x42, 0xdc, 0x71, 0x30, 0x65, 0x85, 0xfd, 0xeb, 0x6b, 0x9f, 0x04, 0x1c, 0xc8, 0x7d, 0x9a, 0x7a, + 0x60, 0xec, 0xbe, 0x04, 0x98, 0x55, 0x75, 0x05, 0xe8, 0xc7, 0xf3, 0xa0, 0x3b, 0x2b, 0x40, 0x95, + 0x7e, 0x12, 0xf2, 0x35, 0x5c, 0x5e, 0xa8, 0xe3, 0x0a, 0xdc, 0x7b, 0xf3, 0xb8, 0x37, 0x56, 0xe1, + 0x06, 0x20, 0xd3, 0x04, 0xb6, 0xf5, 0x1d, 0x6c, 0xaf, 0x2e, 0x15, 0x7a, 0x0a, 0x7b, 0x23, 0xc6, + 0xa3, 0xa4, 0xdb, 0xc4, 0x75, 0xed, 0x70, 0xb6, 0x6c, 0xca, 0x49, 0xcf, 0xa5, 0x4e, 0xf8, 0x2e, + 0xdd, 0x18, 0x31, 0x1e, 0x96, 0xa1, 0xe1, 0xba, 0x71, 0x4e, 0xb5, 0x88, 0xf5, 0x4f, 0x0a, 0x4a, + 0x73, 0x81, 0xa1, 0x87, 0xb3, 0xf9, 0x36, 0x74, 0x0f, 0x7f, 0xb0, 0x26, 0x05, 0x6f, 0x37, 0xd8, + 0xa9, 0x77, 0x1b, 0xec, 0xf4, 0x5b, 0x0e, 0xf6, 0x1e, 0x14, 0xc2, 0xd1, 0xd1, 0x0b, 0x2a, 0xa3, + 0x13, 0x1f, 0x4d, 0x93, 0xda, 0x4f, 0xbb, 0x90, 0x1b, 0x79, 0x82, 0xa9, 0xa9, 0xd3, 0xaf, 0x45, + 0x16, 0xc7, 0xf4, 0xff, 0xd4, 0x6a, 0x96, 0x03, 0x5b, 0x4b, 0xb5, 0x5d, 0x74, 0xd4, 0x58, 0x72, + 0x14, 0x41, 0x86, 0x93, 0x61, 0x60, 0x29, 0x8f, 0xf5, 0x79, 0xce, 0xf9, 0xf4, 0xbc, 0xf3, 0xd6, + 0x2f, 0x06, 0x5c, 0x89, 0xcd, 0xb4, 0xf8, 0x84, 0x49, 0xa2, 0x5f, 0xef, 0xfb, 0x70, 0x6d, 0xb6, + 0xb3, 0x9d, 0xd9, 0x9b, 0x13, 0x2e, 0xef, 0xab, 0xfd, 0x35, 0x4f, 0xfe, 0x40, 0x6d, 0xfc, 0x70, + 0x83, 0x07, 0xc4, 0xfa, 0xf5, 0x7d, 0x13, 0x60, 0x34, 0xee, 0xb9, 0xac, 0x6f, 0xab, 0x7c, 0x65, + 0xb4, 0x4e, 0x3e, 0xe0, 0x3c, 0xa7, 0x53, 0xeb, 0x0f, 0x23, 0xd1, 0xbd, 0x98, 0x7e, 0x3f, 0xa6, + 0x42, 0x1e, 0x7b, 0x5f, 0x79, 0x6c, 0xdd, 0x6e, 0x09, 0x97, 0x6a, 0x22, 0x7e, 0xb5, 0x54, 0xdb, + 0x2a, 0x05, 0x6b, 0x7d, 0x58, 0xfc, 0x36, 0xc9, 0x2c, 0x7f, 0x9b, 0xdc, 0x86, 0xa2, 0xc3, 0xc4, + 0xc8, 0x25, 0xd3, 0x00, 0x3a, 0xab, 0x01, 0x0a, 0x21, 0x4f, 0xc1, 0x5b, 0x7f, 0x19, 0x70, 0x6b, + 0xb5, 0xab, 0x98, 0x8a, 0x91, 0xc7, 0x05, 0x5d, 0xe3, 0xf2, 0xe7, 0x90, 0x8f, 0x4d, 0x5d, 0xd0, + 0xec, 0x89, 0x24, 0xe3, 0x99, 0x82, 0x2a, 0xac, 0xda, 0xed, 0xfa, 0x55, 0x4c, 0xeb, 0x69, 0x8d, + 0xe9, 0x59, 0x2d, 0x32, 0xc9, 0x5a, 0x2c, 0x86, 0x9b, 0x5d, 0x0a, 0xd7, 0xc2, 0xb0, 0xb3, 0x1c, + 0xca, 0x21, 0x25, 0x93, 0x75, 0x31, 0x2c, 0x62, 0xa6, 0x96, 0x31, 0xbf, 0x81, 0xdb, 0x89, 0x4e, + 0x0f, 0x1e, 0x93, 0xc5, 0xe5, 0xb3, 0x06, 0xfd, 0x26, 0x40, 0xb0, 0xbf, 0xec, 0xb1, 0xcf, 0xc2, + 0xb2, 0xe6, 0x03, 0xce, 0x89, 0xcf, 0xac, 0xdf, 0x0c, 0x28, 0xbc, 0x22, 0xe7, 0xe3, 0x68, 0x53, + 0x54, 0x20, 0x2d, 0xd8, 0x20, 0xec, 0x52, 0x75, 0x54, 0xbb, 0x43, 0xb2, 0x21, 0x15, 0x92, 0x0c, + 0x47, 0x5a, 0x3f, 0x83, 0x67, 0x0c, 0x65, 0x54, 0x7a, 0x23, 0xd6, 0xd7, 0xf9, 0x2b, 0xe2, 0x80, + 0xd0, 0xdf, 0x60, 0x64, 0xea, 0x7a, 0x24, 0x6a, 0x88, 0x88, 0x0c, 0x6e, 0x1c, 0x87, 0xf1, 0x41, + 0x98, 0xbb, 0x88, 0x54, 0x93, 0x77, 0x46, 0xc4, 0x99, 0xb9, 0xa1, 0xd9, 0xfa, 0x6c, 0xfd, 0x04, + 0xbb, 0x09, 0xe7, 0xa2, 0x90, 0xa9, 0x24, 0x0e, 0x91, 0x44, 0x61, 0x4d, 0xa8, 0x2f, 0xa2, 0xa9, + 0x2a, 0xe1, 0x88, 0x54, 0x58, 0xa7, 0xbe, 0x37, 0x0c, 0xdd, 0xd5, 0x67, 0x54, 0x86, 0x94, 0xf4, + 0xb4, 0x9b, 0x19, 0x9c, 0x92, 0x1e, 0xb2, 0x54, 0xda, 0xb9, 0xa4, 0x5c, 0x1e, 0xeb, 0x00, 0x32, + 0xd5, 0x74, 0xad, 0x88, 0xe7, 0x78, 0xd6, 0xef, 0x06, 0xa0, 0x65, 0x07, 0x2e, 0x30, 0xfc, 0x18, + 0x72, 0xc3, 0xd0, 0xbd, 0xb0, 0x1d, 0x13, 0xef, 0xf7, 0xfa, 0x50, 0x70, 0xac, 0x85, 0xee, 0x29, + 0x04, 0x2d, 0xa3, 0x3e, 0xcb, 0xd4, 0x06, 0xb8, 0xb6, 0x12, 0x01, 0xc7, 0x62, 0xd6, 0x9f, 0x06, + 0xec, 0x2d, 0x63, 0xb7, 0xb8, 0x43, 0x7f, 0x78, 0x8b, 0x5c, 0xbd, 0xbb, 0xcb, 0xdb, 0xb0, 0xe1, + 0x9d, 0x9e, 0x0a, 0x2a, 0xc3, 0xec, 0x86, 0x94, 0xaa, 0x82, 0x60, 0x3f, 0xd2, 0xf0, 0xdf, 0x85, + 0x3e, 0x2f, 0xd6, 0x3f, 0x13, 0xd7, 0xdf, 0xfa, 0xdb, 0x80, 0x9d, 0x35, 0x51, 0xa0, 0xe7, 0x90, + 0x0b, 0x3f, 0xb6, 0xa2, 0xb5, 0x78, 0xf7, 0x22, 0x1f, 0xb5, 0x52, 0x3d, 0x24, 0xc2, 0x0d, 0x19, + 0x03, 0xec, 0x9e, 0x42, 0x69, 0xee, 0x6a, 0xc5, 0xc2, 0x79, 0x34, 0xbf, 0x70, 0xee, 0xbc, 0xd1, + 0x58, 0x9c, 0x95, 0xd9, 0x02, 0x7a, 0x52, 0x7a, 0x5d, 0xa8, 0xdf, 0xfd, 0x2c, 0xd2, 0xec, 0x6d, + 0xe8, 0xd3, 0xfd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x87, 0x8a, 0x78, 0xd0, 0x09, 0x0e, 0x00, 0x00, } diff --git a/protocol/protobuf/communities.proto b/protocol/protobuf/communities.proto index 3bd14188b..6d8711fd5 100644 --- a/protocol/protobuf/communities.proto +++ b/protocol/protobuf/communities.proto @@ -92,6 +92,11 @@ message CommunityRequestToJoinResponse { bytes community_id = 5; } +message CommunityRequestToLeave { + uint64 clock = 1; + bytes community_id = 2; +} + message CommunityMessageArchiveMagnetlink { uint64 clock = 1; string magnet_uri = 2; diff --git a/protocol/v1/status_message.go b/protocol/v1/status_message.go index bdb22223c..f5fae94b0 100644 --- a/protocol/v1/status_message.go +++ b/protocol/v1/status_message.go @@ -241,6 +241,8 @@ func (m *StatusMessage) HandleApplication() error { return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoin)) case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN_RESPONSE: return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoinResponse)) + case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_LEAVE: + return m.unmarshalProtobufData(new(protobuf.CommunityRequestToLeave)) case protobuf.ApplicationMetadataMessage_EDIT_MESSAGE: return m.unmarshalProtobufData(new(protobuf.EditMessage)) case protobuf.ApplicationMetadataMessage_DELETE_MESSAGE: