feat: add SpectateCommunity api

- added `SpectateCommunity` endpoint, it is supposed to be used in
  scenarios where we want to "Go to public Community" and see its
  content without joining
- added `spectated` field to `Community`, it means we are observing the
  community and its chats but we are not members

Use case:
https://github.com/status-im/status-desktop/issues/7072#issuecomment-1246560885
This commit is contained in:
Patryk Osmaczko 2022-09-20 21:57:39 +02:00 committed by osmaczko
parent bf04ff3502
commit 73a45dd58e
13 changed files with 435 additions and 245 deletions

View File

@ -30,6 +30,7 @@ type Config struct {
Joined bool Joined bool
Requested bool Requested bool
Verified bool Verified bool
Spectated bool
Muted bool Muted bool
Logger *zap.Logger Logger *zap.Logger
RequestedToJoinAt uint64 RequestedToJoinAt uint64
@ -186,6 +187,7 @@ func (o *Community) MarshalJSON() ([]byte, error) {
Admin bool `json:"admin"` Admin bool `json:"admin"`
Verified bool `json:"verified"` Verified bool `json:"verified"`
Joined bool `json:"joined"` Joined bool `json:"joined"`
Spectated bool `json:"spectated"`
RequestedAccessAt int `json:"requestedAccessAt"` RequestedAccessAt int `json:"requestedAccessAt"`
Name string `json:"name"` Name string `json:"name"`
Description string `json:"description"` Description string `json:"description"`
@ -214,6 +216,7 @@ func (o *Community) MarshalJSON() ([]byte, error) {
Chats: make(map[string]CommunityChat), Chats: make(map[string]CommunityChat),
Categories: make(map[string]CommunityCategory), Categories: make(map[string]CommunityCategory),
Joined: o.config.Joined, Joined: o.config.Joined,
Spectated: o.config.Spectated,
CanRequestAccess: o.CanRequestAccess(o.config.MemberIdentity), CanRequestAccess: o.CanRequestAccess(o.config.MemberIdentity),
CanJoin: o.canJoin(), CanJoin: o.canJoin(),
CanManageUsers: o.CanManageUsers(o.config.MemberIdentity), CanManageUsers: o.CanManageUsers(o.config.MemberIdentity),
@ -820,6 +823,11 @@ func (o *Community) Join() {
func (o *Community) Leave() { func (o *Community) Leave() {
o.config.Joined = false o.config.Joined = false
o.config.Spectated = false
}
func (o *Community) Spectate() {
o.config.Spectated = true
} }
func (o *Community) Encrypted() bool { func (o *Community) Encrypted() bool {
@ -834,6 +842,10 @@ func (o *Community) Joined() bool {
return o.config.Joined return o.config.Joined
} }
func (o *Community) Spectated() bool {
return o.config.Spectated
}
func (o *Community) Verified() bool { func (o *Community) Verified() bool {
return o.config.Verified return o.config.Verified
} }
@ -869,8 +881,8 @@ func (o *Community) UpdateCommunityDescription(signer *ecdsa.PublicKey, descript
return response, nil return response, nil
} }
// We only calculate changes if we joined the community or we requested access, otherwise not interested // We only calculate changes if we joined/spectated the community or we requested access, otherwise not interested
if o.config.Joined || o.config.RequestedToJoinAt > 0 { if o.config.Joined || o.config.Spectated || o.config.RequestedToJoinAt > 0 {
// Check for new members at the org level // Check for new members at the org level
for pk, member := range description.Members { for pk, member := range description.Members {
if _, ok := o.config.CommunityDescription.Members[pk]; !ok { if _, ok := o.config.CommunityDescription.Members[pk]; !ok {

View File

@ -274,6 +274,10 @@ func (m *Manager) Joined() ([]*Community, error) {
return m.persistence.JoinedCommunities(m.identity) return m.persistence.JoinedCommunities(m.identity)
} }
func (m *Manager) Spectated() ([]*Community, error) {
return m.persistence.SpectatedCommunities(m.identity)
}
func (m *Manager) JoinedAndPendingCommunitiesWithRequests() ([]*Community, error) { func (m *Manager) JoinedAndPendingCommunitiesWithRequests() ([]*Community, error) {
return m.persistence.JoinedAndPendingCommunitiesWithRequests(m.identity) return m.persistence.JoinedAndPendingCommunitiesWithRequests(m.identity)
} }
@ -1023,6 +1027,21 @@ func (m *Manager) JoinCommunity(id types.HexBytes) (*Community, error) {
return community, nil return community, nil
} }
func (m *Manager) SpectateCommunity(id types.HexBytes) (*Community, error) {
community, err := m.GetByID(id)
if err != nil {
return nil, err
}
if community == nil {
return nil, ErrOrgNotFound
}
community.Spectate()
if err = m.persistence.SaveCommunity(community); err != nil {
return nil, err
}
return community, nil
}
func (m *Manager) GetMagnetlinkMessageClock(communityID types.HexBytes) (uint64, error) { func (m *Manager) GetMagnetlinkMessageClock(communityID types.HexBytes) (uint64, error) {
return m.persistence.GetMagnetlinkMessageClock(communityID) return m.persistence.GetMagnetlinkMessageClock(communityID)
} }

View File

@ -25,7 +25,7 @@ var ErrOldRequestToJoin = errors.New("old request to join")
var ErrOldRequestToLeave = errors.New("old request to leave") var ErrOldRequestToLeave = errors.New("old request to leave")
const OR = " OR " 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 = ?` const communitiesBaseQuery = `SELECT c.id, c.private_key, c.description,c.joined,c.spectated,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 = ?`
func (p *Persistence) SaveCommunity(community *Community) error { func (p *Persistence) SaveCommunity(community *Community) error {
id := community.ID() id := community.ID()
@ -35,7 +35,7 @@ func (p *Persistence) SaveCommunity(community *Community) error {
return err return err
} }
_, err = p.db.Exec(`INSERT INTO communities_communities (id, private_key, description, joined, verified) VALUES (?, ?, ?, ?, ?)`, id, crypto.FromECDSA(privateKey), description, community.config.Joined, community.config.Verified) _, err = p.db.Exec(`INSERT INTO communities_communities (id, private_key, description, joined, spectated, verified) VALUES (?, ?, ?, ?, ?, ?)`, id, crypto.FromECDSA(privateKey), description, community.config.Joined, community.config.Spectated, community.config.Verified)
return err return err
} }
@ -95,14 +95,14 @@ func (p *Persistence) queryCommunities(memberIdentity *ecdsa.PublicKey, query st
for rows.Next() { for rows.Next() {
var publicKeyBytes, privateKeyBytes, descriptionBytes []byte var publicKeyBytes, privateKeyBytes, descriptionBytes []byte
var joined, verified, muted bool var joined, spectated, verified, muted bool
var requestedToJoinAt sql.NullInt64 var requestedToJoinAt sql.NullInt64
err := rows.Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &verified, &muted, &requestedToJoinAt) err := rows.Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &requestedToJoinAt)
if err != nil { if err != nil {
return nil, err return nil, err
} }
org, err := unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, verified, muted, uint64(requestedToJoinAt.Int64), p.logger) org, err := unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, uint64(requestedToJoinAt.Int64), p.logger)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -122,6 +122,11 @@ func (p *Persistence) JoinedCommunities(memberIdentity *ecdsa.PublicKey) ([]*Com
return p.queryCommunities(memberIdentity, query) return p.queryCommunities(memberIdentity, query)
} }
func (p *Persistence) SpectatedCommunities(memberIdentity *ecdsa.PublicKey) ([]*Community, error) {
query := communitiesBaseQuery + ` WHERE c.spectated`
return p.queryCommunities(memberIdentity, query)
}
func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *sql.Rows) (comms []*Community, err error) { func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *sql.Rows) (comms []*Community, err error) {
defer func() { defer func() {
if err != nil { if err != nil {
@ -138,7 +143,7 @@ func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *s
// Community specific fields // Community specific fields
var publicKeyBytes, privateKeyBytes, descriptionBytes []byte var publicKeyBytes, privateKeyBytes, descriptionBytes []byte
var joined, verified, muted bool var joined, spectated, verified, muted bool
// Request to join specific fields // Request to join specific fields
var rtjID, rtjCommunityID []byte var rtjID, rtjCommunityID []byte
@ -146,13 +151,13 @@ func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *s
var rtjClock, rtjState sql.NullInt64 var rtjClock, rtjState sql.NullInt64
err = rows.Scan( err = rows.Scan(
&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &verified, &muted, &publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted,
&rtjID, &rtjPublicKey, &rtjClock, &rtjENSName, &rtjChatID, &rtjCommunityID, &rtjState) &rtjID, &rtjPublicKey, &rtjClock, &rtjENSName, &rtjChatID, &rtjCommunityID, &rtjState)
if err != nil { if err != nil {
return nil, err return nil, err
} }
comm, err = unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, verified, muted, uint64(rtjClock.Int64), p.logger) comm, err = unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, uint64(rtjClock.Int64), p.logger)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -169,7 +174,7 @@ func (p *Persistence) rowsToCommunities(memberIdentity *ecdsa.PublicKey, rows *s
func (p *Persistence) JoinedAndPendingCommunitiesWithRequests(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) { func (p *Persistence) JoinedAndPendingCommunitiesWithRequests(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) {
query := `SELECT query := `SELECT
c.id, c.private_key, c.description, c.joined, c.verified, c.muted, c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted,
r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state
FROM communities_communities c FROM communities_communities c
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ? LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
@ -185,7 +190,7 @@ WHERE c.Joined OR r.state = ?`
func (p *Persistence) DeletedCommunities(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) { func (p *Persistence) DeletedCommunities(memberIdentity *ecdsa.PublicKey) (comms []*Community, err error) {
query := `SELECT query := `SELECT
c.id, c.private_key, c.description, c.joined, c.verified, c.muted, c.id, c.private_key, c.description, c.joined, c.spectated, c.verified, c.muted,
r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state r.id, r.public_key, r.clock, r.ens_name, r.chat_id, r.community_id, r.state
FROM communities_communities c FROM communities_communities c
LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ? LEFT JOIN communities_requests_to_join r ON c.id = r.community_id AND r.public_key = ?
@ -207,11 +212,12 @@ func (p *Persistence) CreatedCommunities(memberIdentity *ecdsa.PublicKey) ([]*Co
func (p *Persistence) GetByID(memberIdentity *ecdsa.PublicKey, id []byte) (*Community, error) { func (p *Persistence) GetByID(memberIdentity *ecdsa.PublicKey, id []byte) (*Community, error) {
var publicKeyBytes, privateKeyBytes, descriptionBytes []byte var publicKeyBytes, privateKeyBytes, descriptionBytes []byte
var joined bool var joined bool
var spectated bool
var verified bool var verified bool
var muted bool var muted bool
var requestedToJoinAt sql.NullInt64 var requestedToJoinAt sql.NullInt64
err := p.db.QueryRow(communitiesBaseQuery+` WHERE c.id = ?`, common.PubkeyToHex(memberIdentity), id).Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &verified, &muted, &requestedToJoinAt) err := p.db.QueryRow(communitiesBaseQuery+` WHERE c.id = ?`, common.PubkeyToHex(memberIdentity), id).Scan(&publicKeyBytes, &privateKeyBytes, &descriptionBytes, &joined, &spectated, &verified, &muted, &requestedToJoinAt)
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
return nil, nil return nil, nil
@ -219,10 +225,10 @@ func (p *Persistence) GetByID(memberIdentity *ecdsa.PublicKey, id []byte) (*Comm
return nil, err return nil, err
} }
return unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, verified, muted, uint64(requestedToJoinAt.Int64), p.logger) return unmarshalCommunityFromDB(memberIdentity, publicKeyBytes, privateKeyBytes, descriptionBytes, joined, spectated, verified, muted, uint64(requestedToJoinAt.Int64), p.logger)
} }
func unmarshalCommunityFromDB(memberIdentity *ecdsa.PublicKey, publicKeyBytes, privateKeyBytes, descriptionBytes []byte, joined, verified, muted bool, requestedToJoinAt uint64, logger *zap.Logger) (*Community, error) { func unmarshalCommunityFromDB(memberIdentity *ecdsa.PublicKey, publicKeyBytes, privateKeyBytes, descriptionBytes []byte, joined, spectated, verified, muted bool, requestedToJoinAt uint64, logger *zap.Logger) (*Community, error) {
var privateKey *ecdsa.PrivateKey var privateKey *ecdsa.PrivateKey
var err error var err error
@ -263,6 +269,7 @@ func unmarshalCommunityFromDB(memberIdentity *ecdsa.PublicKey, publicKeyBytes, p
Muted: muted, Muted: muted,
RequestedToJoinAt: requestedToJoinAt, RequestedToJoinAt: requestedToJoinAt,
Joined: joined, Joined: joined,
Spectated: spectated,
} }
return New(config) return New(config)
} }

View File

@ -42,6 +42,36 @@ func (s *PersistenceSuite) SetupTest() {
s.db = &Persistence{db: db} s.db = &Persistence{db: db}
} }
func (s *PersistenceSuite) TestSaveCommunity() {
id, err := crypto.GenerateKey()
s.Require().NoError(err)
// there is one community inserted by default
communities, err := s.db.AllCommunities(&id.PublicKey)
s.Require().NoError(err)
s.Require().Len(communities, 1)
community := Community{
config: &Config{
PrivateKey: id,
ID: &id.PublicKey,
Joined: true,
Spectated: true,
Verified: true,
CommunityDescription: &protobuf.CommunityDescription{},
},
}
s.Require().NoError(s.db.SaveCommunity(&community))
communities, err = s.db.AllCommunities(&id.PublicKey)
s.Require().NoError(err)
s.Require().Len(communities, 2)
s.Equal(types.HexBytes(crypto.CompressPubkey(&id.PublicKey)), communities[1].ID())
s.Equal(true, communities[1].Joined())
s.Equal(true, communities[1].Spectated())
s.Equal(true, communities[1].Verified())
}
func (s *PersistenceSuite) TestShouldHandleSyncCommunity() { func (s *PersistenceSuite) TestShouldHandleSyncCommunity() {
sc := &protobuf.SyncCommunity{ sc := &protobuf.SyncCommunity{
Id: []byte("0x123456"), Id: []byte("0x123456"),
@ -244,6 +274,7 @@ func (s *PersistenceSuite) TestGetSyncedRawCommunity() {
Description: []byte("this is a description"), Description: []byte("this is a description"),
Joined: true, Joined: true,
Verified: true, Verified: true,
Spectated: true,
} }
// add a new community to the db // add a new community to the db

View File

@ -11,6 +11,7 @@ type RawCommunityRow struct {
PrivateKey []byte PrivateKey []byte
Description []byte Description []byte
Joined bool Joined bool
Spectated bool
Verified bool Verified bool
SyncedAt uint64 SyncedAt uint64
Muted bool Muted bool
@ -22,6 +23,7 @@ func fromSyncCommunityProtobuf(syncCommProto *protobuf.SyncCommunity) RawCommuni
PrivateKey: syncCommProto.PrivateKey, PrivateKey: syncCommProto.PrivateKey,
Description: syncCommProto.Description, Description: syncCommProto.Description,
Joined: syncCommProto.Joined, Joined: syncCommProto.Joined,
Spectated: syncCommProto.Spectated,
Verified: syncCommProto.Verified, Verified: syncCommProto.Verified,
SyncedAt: syncCommProto.Clock, SyncedAt: syncCommProto.Clock,
Muted: syncCommProto.Muted, Muted: syncCommProto.Muted,
@ -40,6 +42,7 @@ func (p *Persistence) scanRowToStruct(rowScan func(dest ...interface{}) error) (
&rcr.Verified, &rcr.Verified,
&rcr.Muted, &rcr.Muted,
&syncedAt, &syncedAt,
&rcr.Spectated,
) )
if syncedAt.Valid { if syncedAt.Valid {
rcr.SyncedAt = uint64(syncedAt.Time.Unix()) rcr.SyncedAt = uint64(syncedAt.Time.Unix())

View File

@ -1831,6 +1831,7 @@ func (s *MessengerCommunitiesSuite) TestSyncCommunity() {
s.Equal(newCommunity.Verified(), tnc.Verified()) s.Equal(newCommunity.Verified(), tnc.Verified())
s.Equal(newCommunity.Muted(), tnc.Muted()) s.Equal(newCommunity.Muted(), tnc.Muted())
s.Equal(newCommunity.Joined(), tnc.Joined()) s.Equal(newCommunity.Joined(), tnc.Joined())
s.Equal(newCommunity.Spectated(), tnc.Spectated())
s.Equal(newCommunity.IsAdmin(), tnc.IsAdmin()) s.Equal(newCommunity.IsAdmin(), tnc.IsAdmin())
s.Equal(newCommunity.InvitationOnly(), tnc.InvitationOnly()) s.Equal(newCommunity.InvitationOnly(), tnc.InvitationOnly())
} }

View File

@ -209,6 +209,10 @@ func (m *Messenger) JoinedCommunities() ([]*communities.Community, error) {
return m.communitiesManager.Joined() return m.communitiesManager.Joined()
} }
func (m *Messenger) SpectatedCommunities() ([]*communities.Community, error) {
return m.communitiesManager.Spectated()
}
func (m *Messenger) CuratedCommunities() (*communities.KnownCommunitiesResponse, error) { func (m *Messenger) CuratedCommunities() (*communities.KnownCommunitiesResponse, error) {
// Revert code to https://github.com/status-im/status-go/blob/e6a3f63ec7f2fa691878ed35f921413dc8acfc66/protocol/messenger_communities.go#L211-L226 once the curated communities contract is deployed to mainnet // Revert code to https://github.com/status-im/status-go/blob/e6a3f63ec7f2fa691878ed35f921413dc8acfc66/protocol/messenger_communities.go#L211-L226 once the curated communities contract is deployed to mainnet
@ -258,51 +262,14 @@ func (m *Messenger) CuratedCommunities() (*communities.KnownCommunitiesResponse,
return response, nil return response, nil
} }
func (m *Messenger) JoinCommunity(ctx context.Context, communityID types.HexBytes) (*MessengerResponse, error) { func (m *Messenger) initCommunityChats(community *communities.Community) ([]*Chat, error) {
mr, err := m.joinCommunity(ctx, communityID) logger := m.logger.Named("initCommunityChats")
if err != nil {
return nil, err
}
communitySettings := communities.CommunitySettings{
CommunityID: communityID.String(),
HistoryArchiveSupportEnabled: true,
}
err = m.communitiesManager.SaveCommunitySettings(communitySettings)
if err != nil {
return nil, err
}
mr.AddCommunitySettings(&communitySettings)
if com, ok := mr.communities[communityID.String()]; ok {
err = m.syncCommunity(context.Background(), com)
if err != nil {
return nil, err
}
}
return mr, nil
}
func (m *Messenger) joinCommunity(ctx context.Context, communityID types.HexBytes) (*MessengerResponse, error) {
logger := m.logger.Named("joinCommunity")
response := &MessengerResponse{}
community, err := m.communitiesManager.JoinCommunity(communityID)
if err != nil {
logger.Debug("m.communitiesManager.JoinCommunity error", zap.Error(err))
return nil, err
}
chatIDs := community.DefaultFilters() chatIDs := community.DefaultFilters()
chats := CreateCommunityChats(community, m.getTimesource()) chats := CreateCommunityChats(community, m.getTimesource())
response.AddChats(chats)
for _, chat := range response.Chats() { for _, chat := range chats {
chatIDs = append(chatIDs, chat.ID) chatIDs = append(chatIDs, chat.ID)
} }
@ -342,28 +309,123 @@ func (m *Messenger) joinCommunity(ctx context.Context, communityID types.HexByte
} }
} }
response.AddCommunity(community)
if err = m.saveChats(chats); err != nil { if err = m.saveChats(chats); err != nil {
logger.Debug("m.saveChats error", zap.Error(err)) logger.Debug("m.saveChats error", zap.Error(err))
return nil, err return nil, err
} }
err = m.reregisterForPushNotifications() return chats, nil
}
func (m *Messenger) initCommunitySettings(communityID types.HexBytes) (*communities.CommunitySettings, error) {
communitySettings, err := m.communitiesManager.GetCommunitySettingsByID(communityID)
if err != nil {
return nil, err
}
if communitySettings != nil {
return communitySettings, nil
}
communitySettings = &communities.CommunitySettings{
CommunityID: communityID.String(),
HistoryArchiveSupportEnabled: true,
}
if err := m.communitiesManager.SaveCommunitySettings(*communitySettings); err != nil {
return nil, err
}
return communitySettings, nil
}
func (m *Messenger) JoinCommunity(ctx context.Context, communityID types.HexBytes) (*MessengerResponse, error) {
mr, err := m.joinCommunity(ctx, communityID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = m.sendCurrentUserStatusToCommunity(ctx, community) if com, ok := mr.communities[communityID.String()]; ok {
err = m.syncCommunity(context.Background(), com)
if err != nil {
return nil, err
}
}
return mr, nil
}
func (m *Messenger) joinCommunity(ctx context.Context, communityID types.HexBytes) (*MessengerResponse, error) {
logger := m.logger.Named("joinCommunity")
response := &MessengerResponse{}
community, err := m.communitiesManager.JoinCommunity(communityID)
if err != nil { if err != nil {
logger.Debug("m.communitiesManager.JoinCommunity error", zap.Error(err))
return nil, err
}
// chats and settings are already initialized for spectated communities
if !community.Spectated() {
chats, err := m.initCommunityChats(community)
if err != nil {
return nil, err
}
response.AddChats(chats)
if _, err = m.initCommunitySettings(communityID); err != nil {
return nil, err
}
}
communitySettings, err := m.communitiesManager.GetCommunitySettingsByID(communityID)
if err != nil {
return nil, err
}
response.AddCommunity(community)
response.AddCommunitySettings(communitySettings)
if err = m.reregisterForPushNotifications(); err != nil {
return nil, err
}
if err = m.sendCurrentUserStatusToCommunity(ctx, community); err != nil {
logger.Debug("m.sendCurrentUserStatusToCommunity error", zap.Error(err)) logger.Debug("m.sendCurrentUserStatusToCommunity error", zap.Error(err))
return nil, err return nil, err
} }
err = m.PublishIdentityImage() if err = m.PublishIdentityImage(); err != nil {
return nil, err
}
return response, nil
}
func (m *Messenger) SpectateCommunity(communityID types.HexBytes) (*MessengerResponse, error) {
logger := m.logger.Named("SpectateCommunity")
response := &MessengerResponse{}
community, err := m.communitiesManager.SpectateCommunity(communityID)
if err != nil {
logger.Debug("SpectateCommunity error", zap.Error(err))
return nil, err
}
chats, err := m.initCommunityChats(community)
if err != nil { if err != nil {
return nil, err return nil, err
} }
response.AddChats(chats)
settings, err := m.initCommunitySettings(communityID)
if err != nil {
return nil, err
}
response.AddCommunitySettings(settings)
response.AddCommunity(community)
return response, nil return response, nil
} }

View File

@ -63,6 +63,7 @@
// 1662723928_add_discord_author_image_fields.up.sql (75B) // 1662723928_add_discord_author_image_fields.up.sql (75B)
// 1664195977_add_deleted_for_mes.up.sql (352B) // 1664195977_add_deleted_for_mes.up.sql (352B)
// 1664367420_add_discord_attachments_table.up.sql (350B) // 1664367420_add_discord_attachments_table.up.sql (350B)
// 1665079662_add_spectated_column_in_communities.up.sql (86B)
// README.md (554B) // README.md (554B)
// doc.go (850B) // doc.go (850B)
@ -148,7 +149,7 @@ func _000001_initDownDbSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -168,7 +169,7 @@ func _000001_initUpDbSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -188,7 +189,7 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -208,7 +209,7 @@ func _1586358095_add_replaceUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -228,7 +229,7 @@ func _1588665364_add_image_dataUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -248,7 +249,7 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -268,7 +269,7 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -288,7 +289,7 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -308,7 +309,7 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -328,7 +329,7 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -348,7 +349,7 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -368,7 +369,7 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -388,7 +389,7 @@ func _1597757544_add_nicknameUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -408,7 +409,7 @@ func _1598955122_add_mentionsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -428,7 +429,7 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -448,7 +449,7 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -468,7 +469,7 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -488,7 +489,7 @@ func _1603816533_add_linksUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -508,7 +509,7 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -528,7 +529,7 @@ func _1605075346_add_communitiesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -548,7 +549,7 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -568,7 +569,7 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -588,7 +589,7 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -608,7 +609,7 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -628,7 +629,7 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -648,7 +649,7 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -668,7 +669,7 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -688,7 +689,7 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -708,7 +709,7 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -728,7 +729,7 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -748,7 +749,7 @@ func _1621933219_add_mentionedUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -768,7 +769,7 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -788,7 +789,7 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset,
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -808,7 +809,7 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -828,7 +829,7 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -848,7 +849,7 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -868,7 +869,7 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -888,7 +889,7 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -908,7 +909,7 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -928,7 +929,7 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (*
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -948,7 +949,7 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -968,7 +969,7 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -988,7 +989,7 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1008,7 +1009,7 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1028,7 +1029,7 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1048,7 +1049,7 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1068,7 +1069,7 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1088,7 +1089,7 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1108,7 +1109,7 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1128,7 +1129,7 @@ func _1645034601_display_nameUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1647514829, 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}} 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 return a, nil
} }
@ -1148,7 +1149,7 @@ func _1645034602_add_mutual_contact_requestUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1645034602_add_mutual_contact_request.up.sql", size: 454, mode: os.FileMode(0664), modTime: time.Unix(1657187476, 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}} 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 return a, nil
} }
@ -1168,7 +1169,7 @@ func _1650373957_add_contact_request_stateUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1650373957_add_contact_request_state.up.sql", size: 59, mode: os.FileMode(0664), modTime: time.Unix(1657187476, 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}} 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 return a, nil
} }
@ -1188,7 +1189,7 @@ func _1656958989_contact_verificationUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1656958989_contact_verification.up.sql", size: 624, mode: os.FileMode(0664), modTime: time.Unix(1657187476, 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}} 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 return a, nil
} }
@ -1208,7 +1209,7 @@ func _1658236268_add_discord_message_authors_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1658236268_add_discord_message_authors_table.up.sql", size: 191, mode: os.FileMode(0664), modTime: time.Unix(1661976396, 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}} 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 return a, nil
} }
@ -1228,7 +1229,7 @@ func _1659619997_add_discord_messages_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1659619997_add_discord_messages_table.up.sql", size: 371, mode: os.FileMode(0664), modTime: time.Unix(1661976396, 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}} 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 return a, nil
} }
@ -1248,7 +1249,7 @@ func _1660226788_create_chat_identity_social_linksUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1660226788_create_chat_identity_social_links.up.sql", size: 318, mode: os.FileMode(0664), modTime: time.Unix(1661976396, 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}} 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 return a, nil
} }
@ -1268,7 +1269,7 @@ func _1660226789_add_walletconnectsessions_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1660226789_add_walletconnectsessions_table.up.sql", size: 215, mode: os.FileMode(0664), modTime: time.Unix(1661976396, 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}} 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 return a, nil
} }
@ -1288,7 +1289,7 @@ func _1661242854_add_communities_requests_to_leaveUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "1661242854_add_communities_requests_to_leave.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1661976396, 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}} 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 return a, nil
} }
@ -1308,7 +1309,7 @@ func _1662044232_add_chat_imageUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1662722310, 0)} info := bindataFileInfo{name: "1662044232_add_chat_image.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1663702301, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x74, 0xdf, 0x50, 0x79, 0x73, 0x9e, 0xd0, 0xff, 0xa4, 0xd3, 0x87, 0xc3, 0x48, 0x31, 0x6c, 0xdf, 0xa6, 0x20, 0x85, 0xe6, 0x4e, 0x19, 0x9d, 0xef, 0xcc, 0x84, 0x2b, 0x5d, 0x44, 0x34, 0x6}}
return a, nil return a, nil
} }
@ -1328,7 +1329,7 @@ func _1662106895_add_chat_first_message_timestampUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0664), modTime: time.Unix(1662722310, 0)} info := bindataFileInfo{name: "1662106895_add_chat_first_message_timestamp.up.sql", size: 113, mode: os.FileMode(0664), modTime: time.Unix(1663702301, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8b, 0x55, 0x74, 0xfa, 0xf5, 0x51, 0x85, 0x19, 0xfd, 0xfb, 0x6, 0x79, 0x4d, 0x1d, 0xd, 0x3, 0x46, 0x66, 0x34, 0x1e, 0xce, 0x91, 0x21, 0x29, 0xf6, 0x71, 0xe7, 0x31, 0x39, 0x8f, 0x9d, 0x5}}
return a, nil return a, nil
} }
@ -1348,7 +1349,7 @@ func _1662723928_add_discord_author_image_fieldsUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0664), modTime: time.Unix(1664368053, 0)} info := bindataFileInfo{name: "1662723928_add_discord_author_image_fields.up.sql", size: 75, mode: os.FileMode(0664), modTime: time.Unix(1663702301, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0x5b, 0x48, 0x57, 0x98, 0x55, 0x9a, 0xf1, 0x75, 0xf7, 0xb5, 0x41, 0x5e, 0x96, 0xc5, 0xce, 0xfc, 0x30, 0x5c, 0x15, 0x35, 0x9e, 0x4e, 0x4a, 0x3b, 0x38, 0x42, 0xc4, 0x27, 0x3c, 0x87, 0xbf}}
return a, nil return a, nil
} }
@ -1368,7 +1369,7 @@ func _1664195977_add_deleted_for_mesUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0664), modTime: time.Unix(1664368692, 0)} info := bindataFileInfo{name: "1664195977_add_deleted_for_mes.up.sql", size: 352, mode: os.FileMode(0664), modTime: time.Unix(1665079602, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7d, 0x9d, 0x13, 0x9, 0xaa, 0x44, 0x14, 0x93, 0xe2, 0xf5, 0x53, 0xb7, 0x79, 0xa8, 0x18, 0xf0, 0x6c, 0xa4, 0x9c, 0x73, 0xc1, 0xaa, 0xc5, 0x2e, 0xc5, 0x41, 0xd7, 0x24, 0xb0, 0xd7, 0xb8, 0xdf}}
return a, nil return a, nil
} }
@ -1388,11 +1389,31 @@ func _1664367420_add_discord_attachments_tableUpSql() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0664), modTime: time.Unix(1664438057, 0)} info := bindataFileInfo{name: "1664367420_add_discord_attachments_table.up.sql", size: 350, mode: os.FileMode(0664), modTime: time.Unix(1665079602, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0xe1, 0xb6, 0x4f, 0x6f, 0x92, 0x0, 0xb4, 0xf, 0x55, 0x12, 0x1c, 0x98, 0x6d, 0xbc, 0x1e, 0xfd, 0xae, 0x1c, 0xce, 0xd1, 0x3d, 0x2, 0x21, 0x2e, 0xc0, 0x13, 0xa, 0xb2, 0xec, 0x81, 0x13}}
return a, nil return a, nil
} }
var __1665079662_add_spectated_column_in_communitiesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\xc6\x31\x0e\x02\x21\x10\x05\xd0\xde\x53\xfc\x7b\x58\x0d\x32\x54\x5f\x26\xd1\xa1\x36\x06\x29\x28\x70\x37\x81\xbd\xff\xb6\xdb\x3d\xa1\xeb\x0b\x2e\x81\x8a\xba\x8d\x71\xfc\xfb\xea\x6d\x7e\x2e\x86\xc4\x88\x87\xb1\x3c\x33\xe6\xde\xea\xfa\xae\xf6\x43\x30\x23\xb2\x39\x72\x21\x11\x35\x49\xa1\x23\x09\xdf\x7a\xbf\x9d\x01\x00\x00\xff\xff\xe5\x76\xfe\x9f\x56\x00\x00\x00")
func _1665079662_add_spectated_column_in_communitiesUpSqlBytes() ([]byte, error) {
return bindataRead(
__1665079662_add_spectated_column_in_communitiesUpSql,
"1665079662_add_spectated_column_in_communities.up.sql",
)
}
func _1665079662_add_spectated_column_in_communitiesUpSql() (*asset, error) {
bytes, err := _1665079662_add_spectated_column_in_communitiesUpSqlBytes()
if err != nil {
return nil, err
}
info := bindataFileInfo{name: "1665079662_add_spectated_column_in_communities.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1665079602, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0x5d, 0xfe, 0xe2, 0xbe, 0xdf, 0xba, 0x45, 0xe9, 0xfc, 0xa7, 0x5f, 0xda, 0x19, 0xdb, 0x40, 0x96, 0x59, 0x78, 0xa, 0xd7, 0x4a, 0xca, 0x1a, 0x93, 0xfb, 0xae, 0x6d, 0x74, 0x7, 0x36, 0xdd}}
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") 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) { func readmeMdBytes() ([]byte, error) {
@ -1408,7 +1429,7 @@ func readmeMd() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1428,7 +1449,7 @@ func docGo() (*asset, error) {
return nil, err return nil, err
} }
info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0664), modTime: time.Unix(1662647306, 0)} info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0664), modTime: time.Unix(1645777807, 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}} 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 return a, nil
} }
@ -1650,6 +1671,8 @@ var _bindata = map[string]func() (*asset, error){
"1664367420_add_discord_attachments_table.up.sql": _1664367420_add_discord_attachments_tableUpSql, "1664367420_add_discord_attachments_table.up.sql": _1664367420_add_discord_attachments_tableUpSql,
"1665079662_add_spectated_column_in_communities.up.sql": _1665079662_add_spectated_column_in_communitiesUpSql,
"README.md": readmeMd, "README.md": readmeMd,
"doc.go": docGo, "doc.go": docGo,
@ -1759,6 +1782,7 @@ var _bintree = &bintree{nil, map[string]*bintree{
"1662723928_add_discord_author_image_fields.up.sql": &bintree{_1662723928_add_discord_author_image_fieldsUpSql, map[string]*bintree{}}, "1662723928_add_discord_author_image_fields.up.sql": &bintree{_1662723928_add_discord_author_image_fieldsUpSql, map[string]*bintree{}},
"1664195977_add_deleted_for_mes.up.sql": &bintree{_1664195977_add_deleted_for_mesUpSql, map[string]*bintree{}}, "1664195977_add_deleted_for_mes.up.sql": &bintree{_1664195977_add_deleted_for_mesUpSql, map[string]*bintree{}},
"1664367420_add_discord_attachments_table.up.sql": &bintree{_1664367420_add_discord_attachments_tableUpSql, map[string]*bintree{}}, "1664367420_add_discord_attachments_table.up.sql": &bintree{_1664367420_add_discord_attachments_tableUpSql, map[string]*bintree{}},
"1665079662_add_spectated_column_in_communities.up.sql": &bintree{_1665079662_add_spectated_column_in_communitiesUpSql, map[string]*bintree{}},
"README.md": &bintree{readmeMd, map[string]*bintree{}}, "README.md": &bintree{readmeMd, map[string]*bintree{}},
"doc.go": &bintree{docGo, map[string]*bintree{}}, "doc.go": &bintree{docGo, map[string]*bintree{}},
}} }}

View File

@ -0,0 +1 @@
ALTER TABLE communities_communities ADD COLUMN spectated BOOL NOT NULL DEFAULT FALSE;

View File

@ -907,6 +907,7 @@ type SyncCommunity struct {
RequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,8,rep,name=requests_to_join,json=requestsToJoin,proto3" json:"requests_to_join,omitempty"` RequestsToJoin []*SyncCommunityRequestsToJoin `protobuf:"bytes,8,rep,name=requests_to_join,json=requestsToJoin,proto3" json:"requests_to_join,omitempty"`
Settings *SyncCommunitySettings `protobuf:"bytes,9,opt,name=settings,proto3" json:"settings,omitempty"` Settings *SyncCommunitySettings `protobuf:"bytes,9,opt,name=settings,proto3" json:"settings,omitempty"`
Encrypted bool `protobuf:"varint,10,opt,name=encrypted,proto3" json:"encrypted,omitempty"` Encrypted bool `protobuf:"varint,10,opt,name=encrypted,proto3" json:"encrypted,omitempty"`
Spectated bool `protobuf:"varint,11,opt,name=spectated,proto3" json:"spectated,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -1007,6 +1008,13 @@ func (m *SyncCommunity) GetEncrypted() bool {
return false return false
} }
func (m *SyncCommunity) GetSpectated() bool {
if m != nil {
return m.Spectated
}
return false
}
type SyncCommunityRequestsToJoin struct { type SyncCommunityRequestsToJoin struct {
Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
@ -2118,123 +2126,123 @@ func init() {
} }
var fileDescriptor_d61ab7221f0b5518 = []byte{ var fileDescriptor_d61ab7221f0b5518 = []byte{
// 1878 bytes of a gzipped FileDescriptorProto // 1887 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x73, 0x1b, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x73, 0x1b, 0x49,
0x15, 0xdf, 0x91, 0x64, 0xfd, 0x79, 0x92, 0x6c, 0x6d, 0x6f, 0x48, 0x66, 0x9d, 0xa4, 0xe2, 0x9d, 0x15, 0xdf, 0xd1, 0xc8, 0xfa, 0xf3, 0x24, 0xd9, 0xda, 0xde, 0x90, 0xcc, 0x3a, 0x49, 0xc5, 0x3b,
0xb0, 0xb5, 0x3e, 0x80, 0x97, 0xca, 0x42, 0x2d, 0x6c, 0x76, 0x8b, 0x55, 0x64, 0xd5, 0x46, 0x9b, 0x61, 0x6b, 0x7d, 0x00, 0x2f, 0x95, 0x85, 0x5a, 0xd8, 0xec, 0x16, 0xab, 0xc8, 0xaa, 0x8d, 0x36,
0x44, 0x71, 0x8d, 0xed, 0x04, 0x28, 0xaa, 0xa6, 0xda, 0x33, 0x1d, 0xab, 0xd1, 0x68, 0x66, 0x98, 0x89, 0xe2, 0x1a, 0xdb, 0x09, 0x50, 0x54, 0x4d, 0xb5, 0x67, 0x3a, 0x56, 0xa3, 0xd1, 0xcc, 0x30,
0x6e, 0x39, 0x0c, 0x1f, 0x80, 0x33, 0xc5, 0x85, 0x2b, 0x67, 0xb8, 0x71, 0xe6, 0x03, 0x70, 0xe3, 0xdd, 0x72, 0x18, 0x3e, 0x00, 0x27, 0x0e, 0x14, 0x17, 0xae, 0x9c, 0xe1, 0xc6, 0x99, 0x0f, 0xc0,
0xc0, 0x11, 0x8a, 0x0f, 0xc0, 0x81, 0xcf, 0x40, 0xbd, 0xee, 0x9e, 0xd1, 0x8c, 0x2d, 0x19, 0x53, 0x8d, 0x03, 0x47, 0x28, 0x3e, 0x00, 0x9f, 0x82, 0x7a, 0xdd, 0x3d, 0xd2, 0x8c, 0x2d, 0x19, 0x53,
0x9c, 0x38, 0xa9, 0xdf, 0xd3, 0xeb, 0xee, 0xd7, 0xbf, 0xf7, 0xef, 0x37, 0xd0, 0x4f, 0x28, 0x4f, 0x9c, 0x38, 0x4d, 0xbf, 0x37, 0xaf, 0x5f, 0xbf, 0x7e, 0x7f, 0x7f, 0x0d, 0xbd, 0x94, 0xf2, 0x8c,
0x79, 0x74, 0x7e, 0x90, 0xa4, 0xb1, 0x8c, 0x49, 0x5b, 0xfd, 0x9c, 0x2d, 0xdf, 0x38, 0xbf, 0xb7, 0xc7, 0xe7, 0x07, 0x69, 0x96, 0xc8, 0x84, 0xb4, 0xd4, 0xe7, 0x6c, 0xf1, 0xc6, 0xfd, 0x83, 0x05,
0xa0, 0xf9, 0x84, 0xfa, 0xf3, 0x65, 0x42, 0x6e, 0xc1, 0x96, 0x1f, 0xc6, 0xfe, 0xdc, 0xb6, 0xf6, 0x8d, 0x27, 0x34, 0x98, 0x2d, 0x52, 0x72, 0x0b, 0xb6, 0x82, 0x28, 0x09, 0x66, 0x8e, 0xb5, 0x67,
0xac, 0xfd, 0x86, 0xab, 0x05, 0xb2, 0x0d, 0x35, 0x1e, 0xd8, 0xb5, 0x3d, 0x6b, 0xbf, 0xe3, 0xd6, 0xed, 0xd7, 0x3d, 0x4d, 0x90, 0x6d, 0xa8, 0xf1, 0xd0, 0xa9, 0xed, 0x59, 0xfb, 0x6d, 0xaf, 0xc6,
0x78, 0x40, 0x7e, 0x08, 0x6d, 0x3f, 0x8e, 0x24, 0xf5, 0xa5, 0xb0, 0xeb, 0x7b, 0xf5, 0xfd, 0xee, 0x43, 0xf2, 0x43, 0x68, 0x05, 0x49, 0x2c, 0x69, 0x20, 0x85, 0x63, 0xef, 0xd9, 0xfb, 0x9d, 0x47,
0xa3, 0x87, 0x07, 0xf9, 0x69, 0x07, 0xc7, 0x59, 0xe4, 0x4f, 0x22, 0x21, 0x69, 0x18, 0x52, 0xc9, 0x0f, 0x0f, 0x0a, 0x6d, 0x07, 0xc7, 0x79, 0x1c, 0x8c, 0x63, 0x21, 0x69, 0x14, 0x51, 0xc9, 0x93,
0xe3, 0x68, 0xa4, 0x2d, 0x5f, 0x3d, 0x72, 0x8b, 0x4d, 0xe4, 0x07, 0xd0, 0xf5, 0xe3, 0xc5, 0x62, 0x78, 0xa8, 0x25, 0x5f, 0x3d, 0xf2, 0x96, 0x9b, 0xc8, 0x0f, 0xa0, 0x13, 0x24, 0xf3, 0xf9, 0x22,
0x19, 0x71, 0xc9, 0x99, 0xb0, 0x1b, 0xea, 0x8c, 0x3b, 0xd5, 0x33, 0x46, 0xc6, 0x20, 0x73, 0xcb, 0xe6, 0x92, 0x33, 0xe1, 0xd4, 0x95, 0x8e, 0x3b, 0x55, 0x1d, 0x43, 0x23, 0x90, 0x7b, 0x65, 0x59,
0xb6, 0xce, 0x9f, 0x1a, 0xd0, 0x7b, 0xb1, 0x0c, 0x25, 0x1f, 0xfa, 0x7e, 0xbc, 0x8c, 0x24, 0x21, 0xf7, 0xcf, 0x75, 0xe8, 0xbe, 0x58, 0x44, 0x92, 0x0f, 0x82, 0x20, 0x59, 0xc4, 0x92, 0x10, 0xa8,
0xd0, 0x88, 0xe8, 0x82, 0x29, 0x8f, 0x3b, 0xae, 0x5a, 0x93, 0x7b, 0xd0, 0x91, 0x7c, 0xc1, 0x84, 0xc7, 0x74, 0xce, 0x94, 0xc5, 0x6d, 0x4f, 0xad, 0xc9, 0x3d, 0x68, 0x4b, 0x3e, 0x67, 0x42, 0xd2,
0xa4, 0x8b, 0x44, 0xf9, 0x5d, 0x77, 0x57, 0x0a, 0xfc, 0x97, 0x07, 0x2c, 0x92, 0xdc, 0x8f, 0x23, 0x79, 0xaa, 0xec, 0xb6, 0xbd, 0x15, 0x03, 0xff, 0xf2, 0x90, 0xc5, 0x92, 0x07, 0x49, 0xec, 0xd8,
0xbb, 0xae, 0xb6, 0xad, 0x14, 0xe4, 0x4b, 0x00, 0x3f, 0x0e, 0xe3, 0xd4, 0x9b, 0x51, 0x31, 0x33, 0x6a, 0xdb, 0x8a, 0x41, 0xbe, 0x04, 0x08, 0x92, 0x28, 0xc9, 0xfc, 0x29, 0x15, 0x53, 0x63, 0xda,
0xae, 0x7d, 0xb0, 0x72, 0xad, 0x7c, 0xf7, 0xc1, 0x28, 0x0e, 0xe3, 0x65, 0xfa, 0x94, 0x8a, 0x99, 0x07, 0x2b, 0xd3, 0xca, 0x67, 0x1f, 0x0c, 0x93, 0x28, 0x59, 0x64, 0x4f, 0xa9, 0x98, 0x7a, 0x6d,
0xdb, 0x51, 0x9b, 0x70, 0x49, 0x6c, 0x68, 0x29, 0x61, 0x12, 0xd8, 0x5b, 0xea, 0xee, 0x5c, 0x24, 0xb5, 0x09, 0x97, 0xc4, 0x81, 0xa6, 0x22, 0xc6, 0xa1, 0xb3, 0xa5, 0xce, 0x2e, 0x48, 0xf2, 0x11,
0x1f, 0xc1, 0xce, 0x9c, 0x65, 0x3e, 0x4d, 0x03, 0xcf, 0x04, 0xc3, 0x6e, 0xaa, 0xfb, 0xb7, 0x8d, 0xec, 0xcc, 0x58, 0x1e, 0xd0, 0x2c, 0xf4, 0x4d, 0x30, 0x9c, 0x86, 0x3a, 0x7f, 0xdb, 0xb0, 0x8f,
0xfa, 0x48, 0x6b, 0xc9, 0x1d, 0x68, 0xcd, 0x59, 0xe6, 0x2d, 0x79, 0x60, 0xb7, 0x94, 0x41, 0x73, 0x34, 0x97, 0xdc, 0x81, 0xe6, 0x8c, 0xe5, 0xfe, 0x82, 0x87, 0x4e, 0x53, 0x09, 0x34, 0x66, 0x2c,
0xce, 0xb2, 0x53, 0x1e, 0x90, 0xcf, 0xa1, 0xc9, 0x17, 0xf4, 0x9c, 0x09, 0xbb, 0xad, 0x3c, 0xfb, 0x3f, 0xe5, 0x21, 0xf9, 0x1c, 0x1a, 0x7c, 0x4e, 0xcf, 0x99, 0x70, 0x5a, 0xca, 0xb2, 0x6f, 0x6e,
0xe6, 0x06, 0xcf, 0x26, 0xea, 0x3d, 0x32, 0x9b, 0xa0, 0xb1, 0x6b, 0xf6, 0xec, 0x3a, 0x00, 0x2b, 0xb0, 0x6c, 0xac, 0xee, 0x23, 0xf3, 0x31, 0x0a, 0x7b, 0x66, 0xcf, 0xae, 0x0b, 0xb0, 0x32, 0x19,
0x97, 0x31, 0xd8, 0x3c, 0x0a, 0xd8, 0x2f, 0x6c, 0x6b, 0xaf, 0xbe, 0x5f, 0x77, 0xb5, 0xb0, 0xfb, 0x83, 0xcd, 0xe3, 0x90, 0xfd, 0xc2, 0xb1, 0xf6, 0xec, 0x7d, 0xdb, 0xd3, 0xc4, 0xee, 0xdf, 0x2d,
0x37, 0x0b, 0xfa, 0x95, 0xdd, 0x65, 0x67, 0xac, 0x8a, 0x33, 0x39, 0xf4, 0xb5, 0x12, 0xf4, 0x36, 0xe8, 0x55, 0x76, 0x97, 0x8d, 0xb1, 0x2a, 0xc6, 0x14, 0xae, 0xaf, 0x95, 0x5c, 0xef, 0x40, 0x33,
0xb4, 0x12, 0x9a, 0x85, 0x31, 0x0d, 0x14, 0xb4, 0x3d, 0x37, 0x17, 0xf1, 0xba, 0xb7, 0x3c, 0x90, 0xa5, 0x79, 0x94, 0xd0, 0x50, 0xb9, 0xb6, 0xeb, 0x15, 0x24, 0x1e, 0xf7, 0x96, 0x87, 0x12, 0x7d,
0x88, 0x29, 0x82, 0xa2, 0x05, 0x72, 0x1b, 0x9a, 0x33, 0xc6, 0xcf, 0x67, 0xd2, 0x60, 0x65, 0x24, 0x8a, 0x4e, 0xd1, 0x04, 0xb9, 0x0d, 0x8d, 0x29, 0xe3, 0xe7, 0x53, 0x69, 0x7c, 0x65, 0x28, 0xb2,
0xb2, 0x0b, 0xed, 0x37, 0x3c, 0x64, 0x82, 0xff, 0x92, 0x29, 0x8c, 0xea, 0x6e, 0x21, 0x93, 0x87, 0x0b, 0xad, 0x37, 0x3c, 0x62, 0x82, 0xff, 0x92, 0x29, 0x1f, 0xd9, 0xde, 0x92, 0x26, 0x0f, 0xa1,
0xd0, 0x4f, 0xd5, 0xca, 0x93, 0x34, 0x3d, 0x67, 0x52, 0x61, 0x54, 0x77, 0x7b, 0x5a, 0x79, 0xa2, 0x97, 0xa9, 0x95, 0x2f, 0x69, 0x76, 0xce, 0xa4, 0xf2, 0x91, 0xed, 0x75, 0x35, 0xf3, 0x44, 0xf1,
0x74, 0xab, 0x54, 0x6e, 0x97, 0x52, 0xd9, 0xf9, 0xab, 0x05, 0xef, 0x3d, 0x8f, 0x7d, 0x1a, 0x1a, 0x56, 0xa9, 0xdc, 0x2a, 0xa5, 0xb2, 0xfb, 0x37, 0x0b, 0xde, 0x7b, 0x9e, 0x04, 0x34, 0x32, 0x9e,
0xa4, 0x8f, 0x8c, 0x73, 0xdf, 0x83, 0xc6, 0x9c, 0x65, 0x42, 0x41, 0x51, 0x89, 0xf7, 0x1a, 0xe3, 0x3e, 0x32, 0xc6, 0x7d, 0x0f, 0xea, 0x33, 0x96, 0x0b, 0xe5, 0x8a, 0x4a, 0xbc, 0xd7, 0x08, 0x1f,
0x83, 0x67, 0x2c, 0x73, 0x95, 0x39, 0xf9, 0x0c, 0x7a, 0x0b, 0x84, 0x9d, 0x6a, 0xd8, 0x15, 0x12, 0x3c, 0x63, 0xb9, 0xa7, 0xc4, 0xc9, 0x67, 0xd0, 0x9d, 0xa3, 0xdb, 0xa9, 0x76, 0xbb, 0xf2, 0x44,
0xdd, 0x47, 0xb7, 0xd7, 0x07, 0xc5, 0xad, 0xd8, 0xe2, 0x0b, 0x13, 0x2a, 0xc4, 0xdb, 0x38, 0x0d, 0xe7, 0xd1, 0xed, 0xf5, 0x41, 0xf1, 0x2a, 0xb2, 0x78, 0xc3, 0x94, 0x0a, 0xf1, 0x36, 0xc9, 0x42,
0x4c, 0x16, 0x16, 0xf2, 0xee, 0xb7, 0xa1, 0xfe, 0x8c, 0x65, 0x6b, 0x73, 0x9b, 0x40, 0x23, 0xa0, 0x93, 0x85, 0x4b, 0x7a, 0xf7, 0xdb, 0x60, 0x3f, 0x63, 0xf9, 0xda, 0xdc, 0x26, 0x50, 0x0f, 0xa9,
0x92, 0xaa, 0xab, 0x7a, 0xae, 0x5a, 0x3b, 0xbf, 0xb2, 0x60, 0x80, 0x3e, 0x96, 0xeb, 0x6e, 0x43, 0xa4, 0xea, 0xa8, 0xae, 0xa7, 0xd6, 0xee, 0xaf, 0x2c, 0xe8, 0xa3, 0x8d, 0xe5, 0xba, 0xdb, 0x50,
0x2d, 0x7f, 0x04, 0x3b, 0xbc, 0x64, 0xe5, 0x15, 0x85, 0xbd, 0x5d, 0x56, 0x4f, 0x02, 0xf2, 0x00, 0xcb, 0x1f, 0xc1, 0x0e, 0x2f, 0x49, 0xf9, 0xcb, 0xc2, 0xde, 0x2e, 0xb3, 0xc7, 0x21, 0x79, 0x00,
0xba, 0x01, 0xbb, 0xe0, 0x3e, 0xf3, 0x64, 0x96, 0x30, 0xe3, 0x21, 0x68, 0xd5, 0x49, 0x96, 0xb0, 0x9d, 0x90, 0x5d, 0xf0, 0x80, 0xf9, 0x32, 0x4f, 0x99, 0xb1, 0x10, 0x34, 0xeb, 0x24, 0x4f, 0xd9,
0xc2, 0xb9, 0xc6, 0xca, 0x39, 0xe7, 0x9f, 0x16, 0xdc, 0xd9, 0xd0, 0x00, 0x6e, 0xd8, 0x5b, 0x1e, 0xd2, 0xb8, 0xfa, 0xca, 0x38, 0xf7, 0x5f, 0x16, 0xdc, 0xd9, 0xd0, 0x00, 0x6e, 0xd8, 0x5b, 0x1e,
0x42, 0x3f, 0x49, 0x63, 0x0c, 0xb5, 0xa7, 0x92, 0xd6, 0x5c, 0xdc, 0x33, 0x4a, 0x9d, 0x91, 0xef, 0x42, 0x2f, 0xcd, 0x12, 0x0c, 0xb5, 0xaf, 0x92, 0xd6, 0x1c, 0xdc, 0x35, 0x4c, 0x9d, 0x91, 0xef,
0x43, 0x9b, 0x45, 0xc2, 0x2b, 0x5d, 0xdf, 0x62, 0x91, 0x98, 0x22, 0x3c, 0x1f, 0x40, 0x2f, 0xa4, 0x43, 0x8b, 0xc5, 0xc2, 0x2f, 0x1d, 0xdf, 0x64, 0xb1, 0x98, 0xa0, 0x7b, 0x3e, 0x80, 0x6e, 0x44,
0x42, 0x7a, 0xcb, 0x24, 0xa0, 0x92, 0xe9, 0x0a, 0x6c, 0xb8, 0x5d, 0xd4, 0x9d, 0x6a, 0x15, 0xbe, 0x85, 0xf4, 0x17, 0x69, 0x48, 0x25, 0xd3, 0x15, 0x58, 0xf7, 0x3a, 0xc8, 0x3b, 0xd5, 0x2c, 0xbc,
0x4c, 0x64, 0x42, 0xb2, 0x85, 0x27, 0xe9, 0xb9, 0xb0, 0x9b, 0x7b, 0x75, 0x7c, 0x99, 0x56, 0x9d, 0x99, 0xc8, 0x85, 0x64, 0x73, 0x5f, 0xd2, 0x73, 0xe1, 0x34, 0xf6, 0x6c, 0xbc, 0x99, 0x66, 0x9d,
0xd0, 0x73, 0x41, 0x3e, 0x84, 0xed, 0x10, 0xc3, 0xee, 0x45, 0xdc, 0x9f, 0xab, 0x4b, 0x74, 0x11, 0xd0, 0x73, 0x41, 0x3e, 0x84, 0xed, 0x08, 0xc3, 0xee, 0xc7, 0x3c, 0x98, 0xa9, 0x43, 0x74, 0x11,
0xf6, 0x95, 0x76, 0x6a, 0x94, 0xce, 0x3f, 0xea, 0xf0, 0xfe, 0xc6, 0x6e, 0x47, 0xbe, 0x03, 0xb7, 0xf6, 0x14, 0x77, 0x62, 0x98, 0xee, 0x3f, 0x6d, 0x78, 0x7f, 0x63, 0xb7, 0x23, 0xdf, 0x81, 0x5b,
0xca, 0x8e, 0x78, 0x6a, 0x6f, 0x98, 0x99, 0xd7, 0x93, 0x92, 0x43, 0xcf, 0xf5, 0x3f, 0xff, 0xc7, 0x65, 0x43, 0x7c, 0xb5, 0x37, 0xca, 0xcd, 0xed, 0x49, 0xc9, 0xa0, 0xe7, 0xfa, 0xcf, 0xff, 0xb1,
0x50, 0x60, 0x6c, 0x69, 0x10, 0xb0, 0xc0, 0xee, 0xec, 0x59, 0xfb, 0x6d, 0x57, 0x0b, 0xd8, 0x0b, 0x2b, 0x30, 0xb6, 0x34, 0x0c, 0x59, 0xe8, 0xb4, 0xf7, 0xac, 0xfd, 0x96, 0xa7, 0x09, 0xec, 0x05,
0xce, 0x30, 0xc8, 0x2c, 0xb0, 0x41, 0xe9, 0x73, 0x11, 0xed, 0x17, 0x4b, 0xf4, 0xa9, 0xab, 0xed, 0x67, 0x18, 0x64, 0x16, 0x3a, 0xa0, 0xf8, 0x05, 0x89, 0xf2, 0xf3, 0x05, 0xda, 0xd4, 0xd1, 0xf2,
0x95, 0x80, 0xf6, 0x29, 0x5b, 0xc4, 0x17, 0x2c, 0xb0, 0x7b, 0xda, 0xde, 0x88, 0x64, 0x0f, 0x7a, 0x8a, 0x40, 0xf9, 0x8c, 0xcd, 0x93, 0x0b, 0x16, 0x3a, 0x5d, 0x2d, 0x6f, 0x48, 0xb2, 0x07, 0xdd,
0x33, 0x2a, 0x3c, 0x75, 0xac, 0xb7, 0x14, 0x76, 0x5f, 0xfd, 0x0d, 0x33, 0x2a, 0x86, 0xa8, 0x3a, 0x29, 0x15, 0xbe, 0x52, 0xeb, 0x2f, 0x84, 0xd3, 0x53, 0xbf, 0x61, 0x4a, 0xc5, 0x00, 0x59, 0xa7,
0x15, 0xe4, 0x63, 0x78, 0xef, 0x82, 0xa5, 0xfc, 0x0d, 0xf7, 0x75, 0x5e, 0x0b, 0x49, 0xe5, 0x52, 0x82, 0x7c, 0x0c, 0xef, 0x5d, 0xb0, 0x8c, 0xbf, 0xe1, 0x81, 0xce, 0x6b, 0x21, 0xa9, 0x5c, 0x08,
0xd8, 0xdb, 0xaa, 0x33, 0x90, 0xf2, 0x5f, 0xc7, 0xea, 0x1f, 0x44, 0x47, 0xa6, 0x4b, 0x21, 0x73, 0x67, 0x5b, 0x75, 0x06, 0x52, 0xfe, 0x75, 0xac, 0xfe, 0xa0, 0x77, 0x64, 0xb6, 0x10, 0xb2, 0x90,
0xcb, 0x1d, 0x65, 0xd9, 0x55, 0x3a, 0x6d, 0xe2, 0xbc, 0xbd, 0x9a, 0xcc, 0xf9, 0xd4, 0x59, 0x9f, 0xdc, 0x51, 0x92, 0x1d, 0xc5, 0xd3, 0x22, 0xee, 0xdb, 0xab, 0xc9, 0x5c, 0x4c, 0x9d, 0xf5, 0xc9,
0xcc, 0x57, 0x22, 0x56, 0x5b, 0x13, 0xb1, 0xcb, 0x61, 0xa9, 0x5f, 0x09, 0x8b, 0xf3, 0x04, 0x76, 0x7c, 0x25, 0x62, 0xb5, 0x35, 0x11, 0xbb, 0x1c, 0x16, 0xfb, 0x4a, 0x58, 0xdc, 0x27, 0xb0, 0x7b,
0x2f, 0x5f, 0x7c, 0xb4, 0x3c, 0x0b, 0xb9, 0x3f, 0x9a, 0xd1, 0x1b, 0x16, 0x92, 0xf3, 0xaf, 0x1a, 0xf9, 0xe0, 0xa3, 0xc5, 0x59, 0xc4, 0x83, 0xe1, 0x94, 0xde, 0xb0, 0x90, 0xdc, 0x5f, 0xdb, 0xd0,
0xf4, 0x2b, 0x73, 0xf4, 0x3f, 0xee, 0xeb, 0xa9, 0xac, 0x7b, 0x00, 0xdd, 0x24, 0xe5, 0x17, 0x54, 0xab, 0xcc, 0xd1, 0xff, 0xb8, 0xaf, 0xab, 0xb2, 0xee, 0x01, 0x74, 0xd2, 0x8c, 0x5f, 0x50, 0xc9,
0x32, 0x6f, 0xce, 0x32, 0xd3, 0xc4, 0xc1, 0xa8, 0xb0, 0x29, 0xed, 0x61, 0x63, 0x10, 0x7e, 0xca, 0xfc, 0x19, 0xcb, 0x4d, 0x13, 0x07, 0xc3, 0xc2, 0xa6, 0xb4, 0x87, 0x8d, 0x41, 0x04, 0x19, 0x4f,
0x13, 0xf4, 0x4b, 0x25, 0x5d, 0xcf, 0x2d, 0xab, 0xb0, 0xa7, 0xff, 0x2c, 0xe6, 0x91, 0x49, 0xb9, 0xd1, 0x2e, 0x95, 0x74, 0x5d, 0xaf, 0xcc, 0xc2, 0x9e, 0xfe, 0xb3, 0x84, 0xc7, 0x26, 0xe5, 0x5a,
0xb6, 0x6b, 0x24, 0xec, 0x78, 0x3a, 0x10, 0x2c, 0x50, 0x3d, 0xbd, 0xed, 0x16, 0xf2, 0x2a, 0x23, 0x9e, 0xa1, 0xb0, 0xe3, 0xe9, 0x40, 0xb0, 0x50, 0xf5, 0xf4, 0x96, 0xb7, 0xa4, 0x57, 0x19, 0xd1,
0x5a, 0xe5, 0x8c, 0x78, 0x09, 0x83, 0x94, 0xfd, 0x7c, 0xc9, 0x84, 0x14, 0x9e, 0x8c, 0x3d, 0x3c, 0x2c, 0x67, 0xc4, 0x4b, 0xe8, 0x67, 0xec, 0xe7, 0x0b, 0x26, 0xa4, 0xf0, 0x65, 0xe2, 0xa3, 0x1e,
0xc7, 0x0c, 0xbe, 0x0f, 0x37, 0xb1, 0x05, 0x63, 0x7e, 0x12, 0x7f, 0x1d, 0xf3, 0xc8, 0xdd, 0x4e, 0x33, 0xf8, 0x3e, 0xdc, 0x84, 0x16, 0x8c, 0xf8, 0x49, 0xf2, 0x75, 0xc2, 0x63, 0x6f, 0x3b, 0xab,
0x2b, 0x32, 0x79, 0x0c, 0x6d, 0xc1, 0xa4, 0xe4, 0xd1, 0xb9, 0x50, 0xb9, 0xda, 0x7d, 0xf4, 0x60, 0xd0, 0xe4, 0x31, 0xb4, 0x04, 0x93, 0x92, 0xc7, 0xe7, 0x42, 0xe5, 0x6a, 0xe7, 0xd1, 0x83, 0x0d,
0xc3, 0x41, 0xc7, 0xc6, 0xcc, 0x2d, 0x36, 0x20, 0x71, 0x60, 0x91, 0x9f, 0x66, 0x89, 0x2c, 0x32, 0x8a, 0x8e, 0x8d, 0x98, 0xb7, 0xdc, 0x80, 0xc0, 0x81, 0xc5, 0x41, 0x96, 0xa7, 0x72, 0x99, 0xd1,
0x7a, 0xa5, 0x70, 0xfe, 0x62, 0xc1, 0xdd, 0x6b, 0x5c, 0x31, 0x40, 0x5b, 0x05, 0xd0, 0xf7, 0x01, 0x2b, 0x06, 0xfe, 0x15, 0x29, 0x0b, 0x24, 0x5d, 0xe5, 0xf5, 0x8a, 0xe1, 0xfe, 0xd5, 0x82, 0xbb,
0x12, 0x15, 0x54, 0x85, 0xb3, 0x0e, 0x5c, 0x47, 0x6b, 0x10, 0xe6, 0x22, 0x5a, 0xf5, 0x72, 0xb4, 0xd7, 0x18, 0x6a, 0xc2, 0x60, 0x2d, 0xc3, 0x70, 0x1f, 0x20, 0x55, 0x21, 0x57, 0x51, 0xd0, 0x61,
0xae, 0x29, 0xf7, 0x3b, 0xd0, 0xf2, 0x67, 0x54, 0x62, 0x47, 0xdf, 0xd2, 0x63, 0x1a, 0xc5, 0x49, 0x6d, 0x6b, 0x0e, 0x06, 0x61, 0x19, 0x4b, 0xbb, 0x1c, 0xcb, 0x6b, 0x9a, 0xc1, 0x1d, 0x68, 0x06,
0x80, 0x09, 0x97, 0x33, 0xa8, 0x0c, 0xff, 0x6d, 0xea, 0x88, 0x15, 0xba, 0x89, 0x42, 0x1f, 0xcb, 0x53, 0x2a, 0xb1, 0xdf, 0x6f, 0xe9, 0x21, 0x8e, 0xe4, 0x38, 0xc4, 0x74, 0x2c, 0xf0, 0x55, 0x8e,
0x40, 0x57, 0x77, 0xc3, 0xd5, 0x82, 0xf3, 0x9b, 0x1a, 0x0c, 0x2e, 0xe7, 0x21, 0xf9, 0xa2, 0x44, 0x7f, 0x1b, 0x3a, 0x9e, 0x4b, 0xde, 0x58, 0xc5, 0x06, 0x8b, 0x44, 0xd7, 0x7e, 0xdd, 0xd3, 0x84,
0xfe, 0xae, 0x4c, 0xcb, 0x0d, 0xed, 0xb0, 0x44, 0xfd, 0xbe, 0x82, 0x9e, 0x79, 0x35, 0x7a, 0x27, 0xfb, 0xdb, 0x1a, 0xf4, 0x2f, 0x67, 0x29, 0xf9, 0xa2, 0x04, 0x0d, 0xaf, 0xcc, 0xd2, 0x0d, 0xcd,
0xec, 0xda, 0x65, 0x1a, 0xb3, 0x39, 0xf1, 0xdd, 0x6e, 0x52, 0xac, 0x05, 0x79, 0x0c, 0xad, 0x7c, 0xb2, 0x04, 0x0c, 0xbf, 0x82, 0xae, 0xb9, 0x35, 0x5a, 0x27, 0x9c, 0xda, 0x65, 0x90, 0xb3, 0xb9,
0xea, 0xd6, 0x55, 0x20, 0xaf, 0x71, 0x23, 0x1f, 0xc0, 0xf9, 0x8e, 0xff, 0x85, 0x80, 0x7e, 0x0a, 0x2c, 0xbc, 0x4e, 0xba, 0x5c, 0x0b, 0xf2, 0x18, 0x9a, 0xc5, 0x4c, 0xb6, 0x55, 0x98, 0xaf, 0x31,
0x3b, 0xea, 0x5f, 0x74, 0xc8, 0x74, 0xa7, 0x9b, 0x15, 0xe4, 0xe7, 0x70, 0x2b, 0xdf, 0xf8, 0x82, 0xa3, 0x18, 0xcf, 0xc5, 0x8e, 0xff, 0x05, 0x9e, 0x7e, 0x0a, 0x3b, 0xea, 0x2f, 0x1a, 0x64, 0x7a,
0x09, 0x81, 0x84, 0xcc, 0x65, 0xf4, 0xa6, 0xbb, 0xbf, 0x84, 0xdb, 0xb8, 0x7b, 0xe8, 0x4b, 0x7e, 0xd7, 0xcd, 0xca, 0xf5, 0x73, 0xb8, 0x55, 0x6c, 0x7c, 0xc1, 0x84, 0x40, 0xb8, 0xe6, 0x31, 0x7a,
0xc1, 0x65, 0x36, 0x62, 0x91, 0x64, 0xe9, 0x35, 0xfb, 0x07, 0x50, 0xe7, 0x81, 0x86, 0xb7, 0xe7, 0xd3, 0xdd, 0x5f, 0xc2, 0x6d, 0xdc, 0x3d, 0x08, 0x24, 0xbf, 0xe0, 0x32, 0x1f, 0xb2, 0x58, 0xb2,
0xe2, 0xd2, 0x39, 0xd4, 0x4d, 0xa5, 0x7a, 0xc2, 0xd0, 0xf7, 0x19, 0x66, 0xef, 0x8d, 0x4f, 0x19, 0xec, 0x9a, 0xfd, 0x7d, 0xb0, 0x79, 0xa8, 0xdd, 0xdb, 0xf5, 0x70, 0xe9, 0x1e, 0xea, 0x96, 0x53,
0xeb, 0x24, 0xaf, 0x9e, 0x72, 0xc8, 0xc5, 0x82, 0x0b, 0xf1, 0x5f, 0x1c, 0xf3, 0x3b, 0x0b, 0x7a, 0xd5, 0x30, 0x08, 0x02, 0xa6, 0x72, 0xfb, 0xa6, 0x5a, 0x46, 0x3a, 0xc9, 0xab, 0x5a, 0x0e, 0xb9,
0x78, 0xce, 0x93, 0x38, 0x9e, 0x2f, 0x68, 0x3a, 0xdf, 0xbc, 0x71, 0x99, 0x86, 0x06, 0x06, 0x5c, 0x98, 0x73, 0x21, 0xfe, 0x0b, 0x35, 0xbf, 0xb7, 0xa0, 0x8b, 0x7a, 0x9e, 0x24, 0xc9, 0x6c, 0x4e,
0x16, 0xac, 0xa3, 0x5e, 0xa2, 0x44, 0x77, 0xa1, 0xa3, 0xda, 0xad, 0x87, 0xb6, 0xba, 0x2a, 0xda, 0xb3, 0xd9, 0xe6, 0x8d, 0x8b, 0x2c, 0x32, 0x6e, 0xc0, 0xe5, 0x12, 0x93, 0xd8, 0x25, 0xc0, 0x74,
0x4a, 0x71, 0x9a, 0x86, 0xe5, 0xa1, 0xb2, 0x55, 0x1d, 0x2a, 0xf7, 0x01, 0x02, 0x16, 0x32, 0x1c, 0x17, 0xda, 0xaa, 0x19, 0xfb, 0x28, 0xab, 0xab, 0xa2, 0xa5, 0x18, 0xa7, 0x59, 0x54, 0x1e, 0x39,
0xce, 0x54, 0xaa, 0xaa, 0x68, 0xb8, 0x1d, 0xa3, 0x19, 0x4a, 0xe7, 0x6b, 0x9d, 0xfc, 0xa3, 0x90, 0x5b, 0xd5, 0x91, 0x73, 0x1f, 0x20, 0x64, 0x11, 0xc3, 0xd1, 0x4d, 0xa5, 0xaa, 0x8a, 0xba, 0xd7,
0xd1, 0xf4, 0x29, 0x17, 0x32, 0x4e, 0xb3, 0x72, 0x8d, 0x59, 0x95, 0x1a, 0xbb, 0x0f, 0xe0, 0xa3, 0x36, 0x9c, 0x81, 0x74, 0xbf, 0xd6, 0xc9, 0x3f, 0x8c, 0x18, 0xcd, 0x9e, 0x72, 0x21, 0x93, 0x2c,
0xa1, 0x3e, 0xab, 0xa6, 0xcf, 0x32, 0x9a, 0xa1, 0x74, 0xfe, 0x6c, 0x01, 0xc1, 0xc3, 0x8e, 0xf4, 0x2f, 0xd7, 0x98, 0x55, 0xa9, 0xb1, 0xfb, 0x00, 0x01, 0x0a, 0x6a, 0x5d, 0x35, 0xad, 0xcb, 0x70,
0x20, 0x38, 0xe2, 0xbe, 0x5c, 0xa6, 0x6c, 0x2d, 0xbf, 0x2b, 0x11, 0xe8, 0xda, 0x06, 0x02, 0x8d, 0x06, 0xd2, 0xfd, 0x8b, 0x05, 0x04, 0x95, 0x1d, 0xe9, 0x31, 0x71, 0xc4, 0x03, 0xb9, 0xc8, 0xd8,
0x6f, 0xef, 0x5f, 0x25, 0xd0, 0x0d, 0xa5, 0xce, 0x09, 0xf4, 0x5d, 0xe8, 0xa8, 0x41, 0xa4, 0x18, 0x5a, 0xf4, 0x57, 0x82, 0xd7, 0xb5, 0x0d, 0xf0, 0x1a, 0xef, 0xde, 0xbb, 0x0a, 0xaf, 0xeb, 0x8a,
0xf4, 0x96, 0xfa, 0x4b, 0x31, 0xe8, 0xe3, 0xb5, 0x0c, 0xba, 0xa9, 0x0c, 0x36, 0x30, 0xe8, 0x56, 0x5d, 0xc0, 0xeb, 0xbb, 0xd0, 0x56, 0x63, 0x4a, 0xe1, 0xeb, 0x2d, 0xf5, 0x4b, 0xe1, 0xeb, 0xe3,
0x99, 0x41, 0xcf, 0xe0, 0xbd, 0xab, 0x2f, 0x11, 0x9b, 0x3f, 0x12, 0xbe, 0x0f, 0xed, 0xc4, 0x18, 0xb5, 0xf8, 0xba, 0xa1, 0x04, 0x36, 0xe0, 0xeb, 0x66, 0x19, 0x5f, 0x4f, 0xe1, 0xbd, 0xab, 0x37,
0x99, 0x62, 0xbf, 0x57, 0xad, 0xb3, 0xea, 0x49, 0x6e, 0x61, 0xed, 0xfc, 0xa1, 0x06, 0xef, 0xa2, 0x11, 0x9b, 0x9f, 0x10, 0xdf, 0x87, 0x56, 0x6a, 0x84, 0x4c, 0xb1, 0xdf, 0xab, 0xd6, 0x59, 0x55,
0xc1, 0x6b, 0x1a, 0x86, 0x4c, 0x5e, 0x3f, 0x79, 0x6d, 0x68, 0xd1, 0x20, 0x48, 0x99, 0x10, 0x39, 0x93, 0xb7, 0x94, 0x76, 0xff, 0x58, 0x83, 0x77, 0x51, 0xe0, 0x35, 0x8d, 0x22, 0x26, 0xaf, 0x9f,
0x6a, 0x46, 0x44, 0x7c, 0xde, 0xaa, 0x03, 0x14, 0x6c, 0x6d, 0xd7, 0x48, 0x88, 0x3d, 0xc6, 0x4e, 0xcb, 0x0e, 0x34, 0x69, 0x18, 0x66, 0x4c, 0x88, 0xc2, 0x6b, 0x86, 0x44, 0xff, 0xbc, 0x55, 0x0a,
0xa1, 0xd6, 0x76, 0xd5, 0x1a, 0x75, 0x8a, 0xec, 0xea, 0xfe, 0xa9, 0xd6, 0x78, 0x32, 0xc6, 0x1e, 0x94, 0xdb, 0x5a, 0x9e, 0xa1, 0xd0, 0xf7, 0x18, 0x3b, 0xe5, 0xb5, 0x96, 0xa7, 0xd6, 0xc8, 0x53,
0xa7, 0xb9, 0xfe, 0x56, 0xcb, 0x45, 0xb4, 0x4e, 0xa8, 0x9c, 0x19, 0x46, 0xa4, 0xd6, 0x38, 0x22, 0x50, 0x58, 0xf7, 0x4f, 0xb5, 0x46, 0xcd, 0x18, 0x7b, 0x9c, 0xf5, 0xfa, 0x25, 0x57, 0x90, 0x28,
0x8a, 0x16, 0xae, 0xbe, 0x3c, 0x7a, 0xe5, 0x9e, 0x9e, 0xc7, 0xbb, 0x53, 0x8a, 0x37, 0xbe, 0x07, 0x9d, 0x52, 0x39, 0x35, 0x78, 0x49, 0xad, 0x71, 0x44, 0x2c, 0x5b, 0xb8, 0x7a, 0x97, 0x74, 0xcb,
0x3f, 0x0f, 0xd5, 0x40, 0xe9, 0xb8, 0x5a, 0x50, 0x51, 0xe5, 0x41, 0xc0, 0x22, 0xc3, 0x90, 0x8c, 0x3d, 0xbd, 0x88, 0x77, 0xbb, 0x14, 0x6f, 0xbc, 0x0f, 0x3e, 0x1e, 0xd5, 0xb8, 0x69, 0x7b, 0x9a,
0xb4, 0x99, 0x22, 0x39, 0x2f, 0x74, 0x86, 0x55, 0xc0, 0x12, 0xe4, 0x53, 0x68, 0x9b, 0x9e, 0x97, 0x50, 0x51, 0xe5, 0x61, 0xc8, 0x62, 0x33, 0x67, 0x0c, 0xb5, 0x19, 0x40, 0xb9, 0x2f, 0x74, 0x86,
0x77, 0xeb, 0xbb, 0x55, 0xf4, 0x2b, 0xf6, 0x6e, 0x61, 0xec, 0xfc, 0xd6, 0x82, 0x6f, 0xac, 0x9d, 0x55, 0x9c, 0x25, 0xc8, 0xa7, 0xd0, 0x32, 0x3d, 0xaf, 0xe8, 0xd6, 0x77, 0xab, 0xde, 0xaf, 0xc8,
0x87, 0x1b, 0x02, 0x70, 0x79, 0xc8, 0xe8, 0x92, 0xad, 0x0c, 0x99, 0x31, 0x3c, 0x98, 0xe9, 0x3a, 0x7b, 0x4b, 0x61, 0xf7, 0x77, 0x16, 0x7c, 0x63, 0xed, 0xb4, 0xdc, 0x10, 0x80, 0xcb, 0x43, 0x46,
0xf2, 0x68, 0xea, 0xcf, 0xf8, 0x05, 0xf3, 0xc4, 0x32, 0x49, 0xe2, 0x54, 0x7a, 0x2c, 0xa2, 0x67, 0x97, 0x6c, 0x65, 0xc8, 0x8c, 0xe0, 0xc1, 0x54, 0xd7, 0x91, 0x4f, 0xb3, 0x60, 0xca, 0x2f, 0x98,
0xa1, 0xe1, 0x42, 0x6d, 0xf7, 0x9e, 0x31, 0x1b, 0x6a, 0xab, 0x63, 0x6d, 0x34, 0xd6, 0x36, 0xce, 0x2f, 0x16, 0x69, 0x9a, 0x64, 0xd2, 0x67, 0x31, 0x3d, 0x8b, 0x0c, 0x52, 0x6a, 0x79, 0xf7, 0x8c,
0x1f, 0x2d, 0xdd, 0x81, 0x4f, 0x90, 0xa9, 0x21, 0xf7, 0x63, 0xe9, 0x0d, 0xbf, 0x2d, 0xbe, 0x80, 0xd8, 0x40, 0x4b, 0x1d, 0x6b, 0xa1, 0x91, 0x96, 0x71, 0xff, 0x64, 0xe9, 0x0e, 0x7c, 0x82, 0x38,
0xa6, 0x21, 0x7b, 0x78, 0xcf, 0xf6, 0x65, 0x0e, 0x51, 0x3a, 0xf0, 0xe0, 0x64, 0x45, 0x03, 0x5d, 0x0e, 0x91, 0x21, 0xcb, 0x6e, 0xf8, 0xf2, 0xf8, 0x02, 0x1a, 0x06, 0x0a, 0xe2, 0x39, 0xdb, 0x97,
0xb3, 0xc9, 0xf9, 0x0c, 0xba, 0x25, 0x35, 0xe9, 0x42, 0xeb, 0x74, 0xfa, 0x6c, 0xfa, 0xf2, 0xf5, 0x11, 0x46, 0x49, 0xe1, 0xc1, 0xc9, 0x0a, 0x24, 0x7a, 0x66, 0x93, 0xfb, 0x19, 0x74, 0x4a, 0x6c,
0x74, 0xf0, 0x0e, 0x0a, 0x27, 0xee, 0xe9, 0xf1, 0xc9, 0xf8, 0x70, 0x60, 0x91, 0x77, 0xa1, 0x7f, 0xd2, 0x81, 0xe6, 0xe9, 0xe4, 0xd9, 0xe4, 0xe5, 0xeb, 0x49, 0xff, 0x1d, 0x24, 0x4e, 0xbc, 0xd3,
0x3a, 0x55, 0xe2, 0xeb, 0x97, 0xee, 0xc9, 0xd3, 0x1f, 0x0f, 0x6a, 0xce, 0xaf, 0xeb, 0x9a, 0x4b, 0xe3, 0x93, 0xd1, 0x61, 0xdf, 0x22, 0xef, 0x42, 0xef, 0x74, 0xa2, 0xc8, 0xd7, 0x2f, 0xbd, 0x93,
0xbe, 0x2a, 0x11, 0x51, 0xc3, 0x0f, 0x36, 0x38, 0x4f, 0xa0, 0xf1, 0x26, 0x8d, 0x17, 0xf9, 0xc7, 0xa7, 0x3f, 0xee, 0xd7, 0xdc, 0xdf, 0xd8, 0x1a, 0x69, 0xbe, 0x2a, 0xc1, 0x54, 0x83, 0x0f, 0x36,
0x35, 0xae, 0xf1, 0x41, 0x32, 0x36, 0xad, 0xaf, 0x26, 0x63, 0xcc, 0x36, 0x7f, 0x86, 0x01, 0x8c, 0x18, 0x4f, 0xa0, 0xfe, 0x26, 0x4b, 0xe6, 0xc5, 0xd3, 0x1b, 0xd7, 0x78, 0x21, 0x99, 0x98, 0xd6,
0xce, 0x73, 0x3a, 0xb0, 0x52, 0x60, 0x48, 0x0c, 0xfb, 0xd1, 0x5d, 0xc9, 0xf0, 0xff, 0x42, 0x37, 0x57, 0x93, 0x09, 0x66, 0x5b, 0x30, 0xc5, 0x00, 0xc6, 0xe7, 0x05, 0x1c, 0x58, 0x31, 0x30, 0x24,
0x54, 0xdf, 0xa0, 0x29, 0x13, 0x49, 0x1c, 0x89, 0x3c, 0xbb, 0x0b, 0x19, 0x5b, 0x5a, 0xca, 0x92, 0x06, 0x1b, 0xe9, 0xae, 0x64, 0x5e, 0x07, 0x4b, 0xde, 0x40, 0xbd, 0x50, 0x33, 0x26, 0xd2, 0x24,
0x90, 0xeb, 0xcd, 0xba, 0x07, 0x74, 0x8c, 0x66, 0x28, 0x09, 0x5b, 0x4f, 0xb8, 0xdb, 0x0a, 0xd9, 0x16, 0x45, 0x76, 0x2f, 0x69, 0x6c, 0x69, 0x19, 0x4b, 0x23, 0xae, 0x37, 0xeb, 0x1e, 0xd0, 0x36,
0xef, 0x56, 0x91, 0x5d, 0xf3, 0xea, 0x83, 0x57, 0x57, 0x28, 0xf9, 0x3a, 0x9a, 0xee, 0xfc, 0x08, 0x9c, 0x81, 0x24, 0x6c, 0x3d, 0x1c, 0x6f, 0x29, 0xcf, 0x7e, 0xb7, 0xea, 0xd9, 0x35, 0xb7, 0x3e,
0xc8, 0x55, 0xcb, 0x2b, 0xd8, 0x1f, 0x8d, 0xa7, 0x87, 0x93, 0xe9, 0x57, 0x03, 0x8b, 0xf4, 0xa0, 0x78, 0x75, 0x05, 0xb0, 0xaf, 0x03, 0xf1, 0xee, 0x8f, 0x80, 0x5c, 0x95, 0xbc, 0xe2, 0xfb, 0xa3,
0x3d, 0x1c, 0x8d, 0xc6, 0x47, 0x18, 0x89, 0x1a, 0x4a, 0x87, 0xe3, 0xd1, 0xf3, 0xc9, 0x74, 0x7c, 0xd1, 0xe4, 0x70, 0x3c, 0xf9, 0xaa, 0x6f, 0x91, 0x2e, 0xb4, 0x06, 0xc3, 0xe1, 0xe8, 0x08, 0x23,
0x38, 0xa8, 0xa3, 0x34, 0x1a, 0x4e, 0x47, 0xe3, 0xe7, 0xe3, 0xc3, 0x41, 0xc3, 0xf9, 0xbb, 0xa5, 0x51, 0x43, 0xea, 0x70, 0x34, 0x7c, 0x3e, 0x9e, 0x8c, 0x0e, 0xfb, 0x36, 0x52, 0xc3, 0xc1, 0x64,
0x07, 0x62, 0xce, 0x51, 0xb4, 0x5f, 0x87, 0xcc, 0xe7, 0x62, 0xf3, 0xe7, 0xf3, 0x3d, 0xe8, 0x18, 0x38, 0x7a, 0x3e, 0x3a, 0xec, 0xd7, 0xdd, 0x7f, 0x58, 0x7a, 0x20, 0x16, 0x18, 0x45, 0xdb, 0x75,
0xfc, 0x26, 0x79, 0x66, 0xad, 0x14, 0xe4, 0xa7, 0xb0, 0x13, 0x98, 0xfd, 0x5e, 0x25, 0xd3, 0x3e, 0xc8, 0x02, 0x2e, 0x36, 0x3f, 0xae, 0xef, 0x41, 0xdb, 0xf8, 0x6f, 0x5c, 0x64, 0xd6, 0x8a, 0x41,
0xb9, 0x4c, 0x2d, 0xd6, 0x5d, 0x79, 0x90, 0x2f, 0x0c, 0x1c, 0xdb, 0x41, 0x45, 0x76, 0xbe, 0x05, 0x7e, 0x0a, 0x3b, 0xa1, 0xd9, 0xef, 0x57, 0x32, 0xed, 0x93, 0xcb, 0xd0, 0x62, 0xdd, 0x91, 0x07,
0xdb, 0x55, 0x8b, 0xca, 0x63, 0xdf, 0xa9, 0x3c, 0xd6, 0x7a, 0xd2, 0xff, 0x49, 0xf7, 0xe0, 0xe3, 0xc5, 0xc2, 0xb8, 0x63, 0x3b, 0xac, 0xd0, 0xee, 0xb7, 0x60, 0xbb, 0x2a, 0x51, 0xb9, 0xec, 0x3b,
0xc7, 0xf9, 0xb5, 0x67, 0x4d, 0xb5, 0xfa, 0xe4, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xd8, 0x95, 0xcb, 0x5a, 0x4f, 0x7a, 0x3f, 0xe9, 0x1c, 0x7c, 0xfc, 0xb8, 0x38, 0xf6, 0xac, 0xa1, 0x56,
0x66, 0x70, 0x06, 0x14, 0x00, 0x00, 0x9f, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x83, 0xab, 0x6c, 0x28, 0x24, 0x14, 0x00, 0x00,
} }

View File

@ -104,6 +104,7 @@ message SyncCommunity {
repeated SyncCommunityRequestsToJoin requests_to_join = 8; repeated SyncCommunityRequestsToJoin requests_to_join = 8;
SyncCommunitySettings settings = 9; SyncCommunitySettings settings = 9;
bool encrypted = 10; bool encrypted = 10;
bool spectated = 11;
} }
message SyncCommunityRequestsToJoin { message SyncCommunityRequestsToJoin {
@ -166,7 +167,7 @@ message SyncProfilePicture {
string name = 1; string name = 1;
bytes payload = 2; bytes payload = 2;
uint32 width = 3; uint32 width = 3;
uint32 height = 4; uint32 height = 4;
uint32 file_size = 5; uint32 file_size = 5;
uint32 resize_target = 6; uint32 resize_target = 6;
uint64 clock = 7; uint64 clock = 7;

View File

@ -110,11 +110,26 @@ type API struct {
s *Service s *Service
} }
func unique(communities []*communities.Community) (result []*communities.Community) {
inResult := make(map[string]bool)
for _, community := range communities {
if _, ok := inResult[community.IDString()]; !ok {
inResult[community.IDString()] = true
result = append(result, community)
}
}
return result
}
func (api *API) GetChats(ctx context.Context) (map[string]ChannelGroup, error) { func (api *API) GetChats(ctx context.Context) (map[string]ChannelGroup, error) {
joinedCommunities, err := api.s.messenger.JoinedCommunities() joinedCommunities, err := api.s.messenger.JoinedCommunities()
if err != nil { if err != nil {
return nil, err return nil, err
} }
spectatedCommunities, err := api.s.messenger.SpectatedCommunities()
if err != nil {
return nil, err
}
channels := api.s.messenger.Chats() channels := api.s.messenger.Chats()
@ -152,7 +167,7 @@ func (api *API) GetChats(ctx context.Context) (map[string]ChannelGroup, error) {
result[pubKey].Chats[chat.ID] = c result[pubKey].Chats[chat.ID] = c
} }
for _, community := range joinedCommunities { for _, community := range unique(append(joinedCommunities, spectatedCommunities...)) {
chGrp := ChannelGroup{ chGrp := ChannelGroup{
Type: Community, Type: Community,
Name: community.Name(), Name: community.Name(),

View File

@ -374,6 +374,12 @@ func (api *PublicAPI) CuratedCommunities(parent context.Context) (*communities.K
return api.service.messenger.CuratedCommunities() return api.service.messenger.CuratedCommunities()
} }
// SpectateCommunity spectates community with the given ID
// Meaning user is only a spectator, not a member
func (api *PublicAPI) SpectateCommunity(parent context.Context, communityID types.HexBytes) (*protocol.MessengerResponse, error) {
return api.service.messenger.SpectateCommunity(communityID)
}
// JoinCommunity joins a community with the given ID // JoinCommunity joins a community with the given ID
func (api *PublicAPI) JoinCommunity(parent context.Context, communityID types.HexBytes) (*protocol.MessengerResponse, error) { func (api *PublicAPI) JoinCommunity(parent context.Context, communityID types.HexBytes) (*protocol.MessengerResponse, error) {
return api.service.messenger.JoinCommunity(parent, communityID) return api.service.messenger.JoinCommunity(parent, communityID)