mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-08 05:47:07 +09:00
Relations rework and migration p1
- store relations within the workspace as subobjects (like options) - RelationLink: remove Id, add Format - do the reinterpretation of old relation changes to add relationLink - add workspace _anytype_marketplace to the bundled relations/objectTypes
This commit is contained in:
parent
c79fc28166
commit
21f2093e52
38 changed files with 5128 additions and 5071 deletions
|
@ -247,7 +247,7 @@ func (s *service) CreateDataviewView(ctx *session.Context, req pb.RpcBlockDatavi
|
|||
|
||||
func (s *service) AddDataviewRelation(ctx *session.Context, req pb.RpcBlockDataviewRelationAddRequest) (err error) {
|
||||
err = s.DoDataview(req.ContextId, func(b dataview.Dataview) error {
|
||||
return b.AddRelations(ctx, req.BlockId, req.RelationIds, true)
|
||||
return b.AddRelations(ctx, req.BlockId, req.RelationKeys, true)
|
||||
})
|
||||
|
||||
return
|
||||
|
@ -255,7 +255,7 @@ func (s *service) AddDataviewRelation(ctx *session.Context, req pb.RpcBlockDatav
|
|||
|
||||
func (s *service) DeleteDataviewRelation(ctx *session.Context, req pb.RpcBlockDataviewRelationDeleteRequest) error {
|
||||
return s.DoDataview(req.ContextId, func(b dataview.Dataview) error {
|
||||
return b.DeleteRelations(ctx, req.BlockId, req.RelationIds, true)
|
||||
return b.DeleteRelations(ctx, req.BlockId, req.RelationKeys, true)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -584,7 +584,7 @@ func (s *service) SetRelationKey(ctx *session.Context, req pb.RpcBlockRelationSe
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return b.AddRelationAndSet(ctx, pb.RpcBlockRelationAddRequest{RelationId: rel.Id, BlockId: req.BlockId, ContextId: req.ContextId})
|
||||
return b.AddRelationAndSet(ctx, pb.RpcBlockRelationAddRequest{RelationKey: rel.Key, BlockId: req.BlockId, ContextId: req.ContextId})
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/template"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation/relationutils"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/database"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
||||
|
@ -43,7 +43,7 @@ func (p *Archive) Init(ctx *smartblock.InitContext) (err error) {
|
|||
return smartblock.ObjectApplyTemplate(p, ctx.State, template.WithEmpty, template.WithNoDuplicateLinks(), template.WithNoObjectTypes(), template.WithDetailName("Archive"), template.WithDetailIconEmoji("🗑"))
|
||||
}
|
||||
|
||||
func (p *Archive) Relations(_ *state.State) relation.Relations {
|
||||
func (p *Archive) Relations(_ *state.State) relationutils.Relations {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -313,7 +313,7 @@ func (bs *basic) AddRelationAndSet(ctx *session.Context, req pb.RpcBlockRelation
|
|||
return smartblock.ErrSimpleBlockNotFound
|
||||
}
|
||||
|
||||
rel, err := bs.RelationService().FetchId(req.RelationId)
|
||||
rel, err := bs.RelationService().FetchKey(req.RelationKey)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/template"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation/relationutils"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/logging"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
||||
)
|
||||
|
@ -30,7 +30,7 @@ func (p *Breadcrumbs) Init(ctx *smartblock.InitContext) (err error) {
|
|||
return smartblock.ObjectApplyTemplate(p, ctx.State, template.WithEmpty, template.WithNoObjectTypes())
|
||||
}
|
||||
|
||||
func (p *Breadcrumbs) Relations(_ *state.State) relation.Relations {
|
||||
func (p *Breadcrumbs) Relations(_ *state.State) relationutils.Relations {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -108,14 +108,14 @@ func (d *sdataview) SetSource(ctx *session.Context, blockId string, source []str
|
|||
return d.Apply(s, smartblock.NoRestrictions)
|
||||
}
|
||||
|
||||
func (d *sdataview) AddRelations(ctx *session.Context, blockId string, relationIds []string, showEvent bool) error {
|
||||
func (d *sdataview) AddRelations(ctx *session.Context, blockId string, relationKeys []string, showEvent bool) error {
|
||||
s := d.NewStateCtx(ctx)
|
||||
tb, err := getDataviewBlock(s, blockId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, id := range relationIds {
|
||||
relation, err2 := d.RelationService().FetchId(id)
|
||||
for _, key := range relationKeys {
|
||||
relation, err2 := d.RelationService().FetchKey(key)
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
|
@ -420,7 +420,7 @@ func SchemaBySources(sources []string, store objectstore.ObjectStore, optionalRe
|
|||
hasType = true
|
||||
}
|
||||
|
||||
if sbt == smartblock2.SmartBlockTypeIndexedRelation || sbt == smartblock2.SmartBlockTypeBundledRelation {
|
||||
if sbt == smartblock2.SmartBlockTypeBundledRelation {
|
||||
if hasType {
|
||||
return nil, fmt.Errorf("dataview source contains both type and relation")
|
||||
}
|
||||
|
@ -619,8 +619,8 @@ func DataviewBlockBySource(store objectstore.ObjectStore, source []string) (res
|
|||
|
||||
for _, rel := range schema.RequiredRelations() {
|
||||
relations = append(relations, &model.RelationLink{
|
||||
Id: rel.Id,
|
||||
Key: rel.Key,
|
||||
Format: rel.Format,
|
||||
Key: rel.Key,
|
||||
})
|
||||
viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{Key: rel.Key, IsVisible: true})
|
||||
}
|
||||
|
@ -632,8 +632,8 @@ func DataviewBlockBySource(store objectstore.ObjectStore, source []string) (res
|
|||
}
|
||||
|
||||
relations = append(relations, &model.RelationLink{
|
||||
Id: rel.Id,
|
||||
Key: rel.Key,
|
||||
Format: rel.Format,
|
||||
Key: rel.Key,
|
||||
})
|
||||
viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{Key: rel.Key, IsVisible: false})
|
||||
}
|
||||
|
@ -652,8 +652,8 @@ func DataviewBlockBySource(store objectstore.ObjectStore, source []string) (res
|
|||
continue
|
||||
}
|
||||
relations = append(relations, &model.RelationLink{
|
||||
Id: rel.Id,
|
||||
Key: rel.Key,
|
||||
Format: rel.Format,
|
||||
Key: rel.Key,
|
||||
})
|
||||
viewRelations = append(viewRelations, &model.BlockContentDataviewRelation{Key: rel.Key, IsVisible: false})
|
||||
}
|
||||
|
|
|
@ -8,21 +8,31 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/template"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/source"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/addr"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/pbtypes"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var ErrOptionNotFound = errors.New("option not found")
|
||||
var ErrSubObjectNotFound = errors.New("sub object not found")
|
||||
|
||||
func (w *Workspaces) Open(subId string) (sb smartblock.SmartBlock, err error) {
|
||||
w.Lock()
|
||||
defer w.Unlock()
|
||||
if strings.HasPrefix(subId, addr.RelationKeyToIdPrefix) {
|
||||
subId = strings.TrimPrefix(subId, addr.RelationKeyToIdPrefix)
|
||||
if opt, ok := w.relations[subId]; ok {
|
||||
return opt, nil
|
||||
}
|
||||
return nil, ErrSubObjectNotFound
|
||||
}
|
||||
if opt, ok := w.options[subId]; ok {
|
||||
return opt, nil
|
||||
}
|
||||
return nil, ErrOptionNotFound
|
||||
|
||||
return nil, ErrSubObjectNotFound
|
||||
}
|
||||
|
||||
func (w *Workspaces) CreateRelationOption(opt *types.Struct) (subId string, err error) {
|
||||
|
@ -49,13 +59,13 @@ func (w *Workspaces) CreateRelationOption(opt *types.Struct) (subId string, err
|
|||
|
||||
func (w *Workspaces) initOption(st *state.State, subId string) (err error) {
|
||||
opt := NewOption()
|
||||
subState, err := w.optionSubState(st, subId)
|
||||
subState, err := w.subState(st, collectionKeyRelationOptions, subId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
w.options[subId] = opt
|
||||
if err = opt.Init(&smartblock.InitContext{
|
||||
Source: w.sourceService.NewStaticSource(subId, model.SmartBlockType_RelationOption, subState, w.onOptionChange),
|
||||
Source: w.sourceService.NewStaticSource(subId, model.SmartBlockType_SubObjectRelationOption, subState, w.onOptionChange),
|
||||
App: w.app,
|
||||
}); err != nil {
|
||||
return
|
||||
|
@ -74,30 +84,31 @@ func (w *Workspaces) Locked() bool {
|
|||
return true
|
||||
}
|
||||
}
|
||||
|
||||
for _, rel := range w.relations {
|
||||
if rel.Locked() {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (w *Workspaces) optionSubState(st *state.State, subId string) (*state.State, error) {
|
||||
optData := pbtypes.GetStruct(st.GetCollection(collectionKeyRelationOptions), subId)
|
||||
if optData == nil || optData.Fields == nil {
|
||||
return nil, fmt.Errorf("no data for option: %v", subId)
|
||||
}
|
||||
subState := state.NewDoc(subId, nil).(*state.State)
|
||||
for k, v := range optData.Fields {
|
||||
if _, err := bundle.GetRelation(bundle.RelationKey(k)); err == nil {
|
||||
subState.SetDetailAndBundledRelation(bundle.RelationKey(k), v)
|
||||
}
|
||||
}
|
||||
return subState, nil
|
||||
}
|
||||
|
||||
func (w *Workspaces) updateOptions(info smartblock.ApplyInfo) (err error) {
|
||||
func (w *Workspaces) updateSubObject(info smartblock.ApplyInfo) (err error) {
|
||||
for _, ch := range info.Changes {
|
||||
if keySet := ch.GetStoreKeySet(); keySet != nil {
|
||||
if len(keySet.Path) >= 2 && keySet.Path[0] == collectionKeyRelationOptions {
|
||||
if opt, ok := w.options[keySet.Path[1]]; ok {
|
||||
if e := opt.SetStruct(pbtypes.GetStruct(w.NewState().GetCollection(collectionKeyRelationOptions), keySet.Path[1])); e != nil {
|
||||
log.With("threadId", w.Id()).Errorf("options: can't set struct: %v", e)
|
||||
if len(keySet.Path) >= 2 {
|
||||
switch keySet.Path[0] {
|
||||
case collectionKeyRelationOptions:
|
||||
if opt, ok := w.options[keySet.Path[1]]; ok {
|
||||
if e := opt.SetStruct(pbtypes.GetStruct(w.NewState().GetCollection(collectionKeyRelationOptions), keySet.Path[1])); e != nil {
|
||||
log.With("threadId", w.Id()).Errorf("options: can't set struct: %v", e)
|
||||
}
|
||||
}
|
||||
case collectionKeyRelations:
|
||||
if opt, ok := w.relations[keySet.Path[1]]; ok {
|
||||
if e := opt.SetStruct(pbtypes.GetStruct(w.NewState().GetCollection(collectionKeyRelations), keySet.Path[1])); e != nil {
|
||||
log.With("threadId", w.Id()).Errorf("relations: can't set struct: %v", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
package editor
|
||||
|
||||
import (
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/template"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
||||
)
|
||||
|
||||
type Relation struct {
|
||||
*Set
|
||||
}
|
||||
|
||||
func NewRelation() *Relation {
|
||||
return &Relation{
|
||||
Set: NewSet(),
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Relation) Init(ctx *smartblock.InitContext) (err error) {
|
||||
if err = p.SmartBlock.Init(ctx); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
dataview := model.BlockContentOfDataview{
|
||||
Dataview: &model.BlockContentDataview{
|
||||
Source: []string{p.Id()},
|
||||
Views: []*model.BlockContentDataviewView{
|
||||
{
|
||||
Id: "relationObjects",
|
||||
Type: model.BlockContentDataviewView_Table,
|
||||
Name: "All",
|
||||
Sorts: []*model.BlockContentDataviewSort{
|
||||
{
|
||||
RelationKey: "name",
|
||||
Type: model.BlockContentDataviewSort_Asc,
|
||||
},
|
||||
},
|
||||
Relations: []*model.BlockContentDataviewRelation{},
|
||||
Filters: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
return smartblock.ObjectApplyTemplate(p, ctx.State,
|
||||
template.WithObjectTypesAndLayout([]string{bundle.TypeKeyRelation.URL()}),
|
||||
template.WithEmpty,
|
||||
template.WithTitle,
|
||||
template.WithDefaultFeaturedRelations,
|
||||
template.WithDescription,
|
||||
template.WithDataview(dataview, true),
|
||||
template.WithFeaturedRelations,
|
||||
)
|
||||
}
|
129
core/block/editor/relations.go
Normal file
129
core/block/editor/relations.go
Normal file
|
@ -0,0 +1,129 @@
|
|||
package editor
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/smartblock"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/template"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/source"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/addr"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/pbtypes"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (w *Workspaces) CreateRelation(details *types.Struct) (id, key string, err error) {
|
||||
if details == nil || details.Fields == nil {
|
||||
return "", "", fmt.Errorf("create relation: no data")
|
||||
}
|
||||
|
||||
if v, ok := details.GetFields()[bundle.RelationKeyRelationFormat.String()]; !ok {
|
||||
return "", "", fmt.Errorf("missing relation format")
|
||||
} else if i, ok := v.Kind.(*types.Value_NumberValue); !ok {
|
||||
return "", "", fmt.Errorf("invalid relation format: not a number")
|
||||
} else if model.RelationFormat(int(i.NumberValue)).String() == "" {
|
||||
return "", "", fmt.Errorf("invalid relation format: unknown enum")
|
||||
}
|
||||
|
||||
if pbtypes.GetString(details, bundle.RelationKeyName.String()) == "" {
|
||||
return "", "", fmt.Errorf("missing relation name")
|
||||
}
|
||||
|
||||
if pbtypes.GetString(details, bundle.RelationKeyType.String()) != bundle.TypeKeyRelation.URL() {
|
||||
return "", "", fmt.Errorf("incorrect object type")
|
||||
}
|
||||
|
||||
key = bson.NewObjectId().Hex()
|
||||
id = addr.RelationKeyToIdPrefix + key
|
||||
details.Fields[bundle.RelationKeyId.String()] = pbtypes.String(id)
|
||||
details.Fields[bundle.RelationKeyRelationKey.String()] = pbtypes.String(key)
|
||||
|
||||
st := w.NewState()
|
||||
st.SetInStore([]string{collectionKeyRelations, key}, pbtypes.Struct(details))
|
||||
if err = w.initRelation(st, key); err != nil {
|
||||
return
|
||||
}
|
||||
if err = w.Apply(st, smartblock.NoHooks); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (w *Workspaces) initRelation(st *state.State, relationKey string) (err error) {
|
||||
rel := NewRelation()
|
||||
subState, err := w.subState(st, collectionKeyRelations, addr.RelationKeyToIdPrefix+relationKey)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
w.relations[relationKey] = rel
|
||||
if err = rel.Init(&smartblock.InitContext{
|
||||
Source: w.sourceService.NewStaticSource(addr.RelationKeyToIdPrefix+relationKey, model.SmartBlockType_SubObjectRelation, subState, w.onRelationChange),
|
||||
App: w.app,
|
||||
}); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (w *Workspaces) subState(st *state.State, collection string, id string) (*state.State, error) {
|
||||
var subId string
|
||||
if collection == collectionKeyRelations {
|
||||
subId = strings.TrimPrefix(id, addr.RelationKeyToIdPrefix)
|
||||
} else {
|
||||
subId = id
|
||||
}
|
||||
data := pbtypes.GetStruct(st.GetCollection(collection), subId)
|
||||
if data == nil || data.Fields == nil {
|
||||
return nil, fmt.Errorf("no data for subId %s: %v", collection, subId)
|
||||
}
|
||||
subState := state.NewDoc(id, nil).(*state.State)
|
||||
for k, v := range data.Fields {
|
||||
if _, err := bundle.GetRelation(bundle.RelationKey(k)); err == nil {
|
||||
subState.SetDetailAndBundledRelation(bundle.RelationKey(k), v)
|
||||
}
|
||||
}
|
||||
subState.SetObjectType(pbtypes.GetString(data, bundle.RelationKeyType.String()))
|
||||
return subState, nil
|
||||
}
|
||||
|
||||
func (w *Workspaces) onRelationChange(params source.PushChangeParams) (changeId string, err error) {
|
||||
st := w.NewState()
|
||||
id := params.State.RootId()
|
||||
subId := strings.TrimPrefix(id, addr.RelationKeyToIdPrefix)
|
||||
if _, ok := w.relations[subId]; !ok {
|
||||
return "", fmt.Errorf("onRelationChange: relation not exists")
|
||||
}
|
||||
st.SetInStore([]string{collectionKeyRelations, subId}, pbtypes.Struct(params.State.CombinedDetails()))
|
||||
return "", w.Apply(st, smartblock.NoHooks)
|
||||
}
|
||||
|
||||
func NewRelation() *Relation {
|
||||
return &Relation{
|
||||
SmartBlock: smartblock.New(),
|
||||
}
|
||||
}
|
||||
|
||||
type Relation struct {
|
||||
smartblock.SmartBlock
|
||||
}
|
||||
|
||||
func (o *Relation) Init(ctx *smartblock.InitContext) (err error) {
|
||||
if err = o.SmartBlock.Init(ctx); err != nil {
|
||||
return
|
||||
}
|
||||
return smartblock.ObjectApplyTemplate(o, ctx.State,
|
||||
template.WithObjectTypesAndLayout([]string{bundle.TypeKeyRelation.URL()}),
|
||||
)
|
||||
}
|
||||
|
||||
func (o *Relation) SetStruct(st *types.Struct) error {
|
||||
o.Lock()
|
||||
defer o.Unlock()
|
||||
s := o.NewState()
|
||||
s.SetDetails(st)
|
||||
return o.Apply(s)
|
||||
}
|
|
@ -4,6 +4,8 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation/relationutils"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/addr"
|
||||
"sort"
|
||||
"strings"
|
||||
"sync"
|
||||
|
@ -100,7 +102,7 @@ type SmartBlock interface {
|
|||
Anytype() core.Service
|
||||
RelationService() relation2.Service
|
||||
SetDetails(ctx *session.Context, details []*pb.RpcObjectSetDetailsDetail, showEvent bool) (err error)
|
||||
Relations(s *state.State) relation2.Relations
|
||||
Relations(s *state.State) relationutils.Relations
|
||||
HasRelation(s *state.State, relationKey string) bool
|
||||
AddExtraRelations(ctx *session.Context, relationIds ...string) (err error)
|
||||
RemoveExtraRelations(ctx *session.Context, relationKeys []string) (err error)
|
||||
|
@ -176,7 +178,7 @@ type smartBlock struct {
|
|||
}
|
||||
|
||||
func (sb *smartBlock) FileRelationKeys(s *state.State) (fileKeys []string) {
|
||||
for _, rel := range sb.Relations(s) {
|
||||
for _, rel := range s.GetRelationLinks() {
|
||||
// coverId can contains both hash or predefined cover id
|
||||
if rel.Format == model.RelationFormat_file || rel.Key == bundle.RelationKeyCoverId.String() {
|
||||
if slice.FindPos(fileKeys, rel.Key) == -1 {
|
||||
|
@ -188,7 +190,7 @@ func (sb *smartBlock) FileRelationKeys(s *state.State) (fileKeys []string) {
|
|||
}
|
||||
|
||||
func (sb *smartBlock) HasRelation(s *state.State, key string) bool {
|
||||
for _, rel := range sb.Relations(s) {
|
||||
for _, rel := range s.GetRelationLinks() {
|
||||
if rel.Key == key {
|
||||
return true
|
||||
}
|
||||
|
@ -501,10 +503,10 @@ func (sb *smartBlock) dependentSmartIds(includeRelations, includeObjTypes, inclu
|
|||
|
||||
details := sb.CombinedDetails()
|
||||
|
||||
for _, rel := range sb.Relations(nil) {
|
||||
for _, rel := range sb.GetRelationLinks() {
|
||||
// do not index local dates such as lastOpened/lastModified
|
||||
if includeRelations {
|
||||
ids = append(ids, rel.Id)
|
||||
ids = append(ids, addr.RelationKeyToIdPrefix+rel.Key)
|
||||
}
|
||||
if rel.Format == model.RelationFormat_date &&
|
||||
(slice.FindPos(bundle.LocalRelationsKeys, rel.Key) == 0) && (slice.FindPos(bundle.DerivedRelationsKeys, rel.Key) == 0) {
|
||||
|
@ -525,9 +527,10 @@ func (sb *smartBlock) dependentSmartIds(includeRelations, includeObjTypes, inclu
|
|||
continue
|
||||
}
|
||||
|
||||
if rel.Hidden && !includeHidden {
|
||||
continue
|
||||
}
|
||||
// todo refactor: should we have this case preserved? we don't have hidden flag available in the state anymore
|
||||
//if rel.Hidden && !includeHidden {
|
||||
// continue
|
||||
//}
|
||||
|
||||
if rel.Key == bundle.RelationKeyId.String() ||
|
||||
rel.Key == bundle.RelationKeyType.String() || // always skip type because it was proceed above
|
||||
|
@ -802,8 +805,8 @@ func (sb *smartBlock) SetDetails(ctx *session.Context, details []*pb.RpcObjectSe
|
|||
return fmt.Errorf("relation %s is not found", detail.Key)
|
||||
}
|
||||
s.AddRelationLinks(&model.RelationLink{
|
||||
Id: rel.Id,
|
||||
Key: rel.Key,
|
||||
Format: rel.Format,
|
||||
Key: rel.Key,
|
||||
})
|
||||
|
||||
err = sb.RelationService().ValidateFormat(detail.Key, detail.Value)
|
||||
|
@ -852,19 +855,19 @@ func (sb *smartBlock) SetDetails(ctx *session.Context, details []*pb.RpcObjectSe
|
|||
return nil
|
||||
}
|
||||
|
||||
func (sb *smartBlock) AddExtraRelations(ctx *session.Context, relationIds ...string) (err error) {
|
||||
func (sb *smartBlock) AddExtraRelations(ctx *session.Context, relationKeys ...string) (err error) {
|
||||
s := sb.NewStateCtx(ctx)
|
||||
if err = sb.addRelations(s, relationIds...); err != nil {
|
||||
if err = sb.addRelations(s, relationKeys...); err != nil {
|
||||
return
|
||||
}
|
||||
return sb.Apply(s)
|
||||
}
|
||||
|
||||
func (sb *smartBlock) addRelations(s *state.State, relationIds ...string) (err error) {
|
||||
if len(relationIds) == 0 {
|
||||
func (sb *smartBlock) addRelations(s *state.State, relationKeys ...string) (err error) {
|
||||
if len(relationKeys) == 0 {
|
||||
return
|
||||
}
|
||||
relations, err := sb.relationService.FetchIds(relationIds...)
|
||||
relations, err := sb.relationService.FetchKeys(relationKeys...)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -1174,7 +1177,8 @@ func (sb *smartBlock) Close() (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func hasDepIds(relations relation2.Relations, act *undo.Action) bool {
|
||||
// todo refactor: use relationLinks instead
|
||||
func hasDepIds(relations relationutils.Relations, act *undo.Action) bool {
|
||||
if act == nil {
|
||||
return true
|
||||
}
|
||||
|
@ -1313,7 +1317,8 @@ func (sb *smartBlock) baseRelations() []*model.Relation {
|
|||
return rels
|
||||
}
|
||||
|
||||
func (sb *smartBlock) Relations(s *state.State) relation2.Relations {
|
||||
// deprecated, use RelationLinks instead
|
||||
func (sb *smartBlock) Relations(s *state.State) relationutils.Relations {
|
||||
var links []*model.RelationLink
|
||||
if s == nil {
|
||||
links = sb.Doc.GetRelationLinks()
|
||||
|
|
|
@ -3,6 +3,7 @@ package state
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation/relationutils"
|
||||
"strings"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/threads"
|
||||
|
@ -37,13 +38,17 @@ func NewDocFromSnapshot(rootId string, snapshot *pb.ChangeSnapshot) Doc {
|
|||
blocks: blocks,
|
||||
details: pbtypes.StructCutKeys(snapshot.Data.Details, append(bundle.DerivedRelationsKeys, bundle.LocalRelationsKeys...)),
|
||||
extraRelations: snapshot.Data.ExtraRelations,
|
||||
relationLinks: snapshot.Data.RelationLinks,
|
||||
objectTypes: snapshot.Data.ObjectTypes,
|
||||
fileKeys: fileKeys,
|
||||
store: snapshot.Data.Collections,
|
||||
relationLinks: snapshot.Data.RelationLinks,
|
||||
}
|
||||
s.InjectDerivedDetails()
|
||||
|
||||
if len(snapshot.Data.RelationLinks) == 0 && len(snapshot.Data.ExtraRelations) > 0 {
|
||||
s.relationLinks = relationutils.MigrateRelationsModels(snapshot.Data.ExtraRelations)
|
||||
}
|
||||
|
||||
s.InjectDerivedDetails()
|
||||
return s
|
||||
}
|
||||
|
||||
|
@ -210,7 +215,7 @@ func (s *State) changeBlockDetailsUnset(unset *pb.ChangeDetailsUnset) error {
|
|||
func (s *State) changeRelationAdd(add *pb.ChangeRelationAdd) error {
|
||||
rl := s.GetRelationLinks()
|
||||
for _, r := range add.RelationLinks {
|
||||
if !rl.Has(r.Id) {
|
||||
if !rl.Has(r.Key) {
|
||||
rl = rl.Append(r)
|
||||
}
|
||||
}
|
||||
|
@ -219,11 +224,17 @@ func (s *State) changeRelationAdd(add *pb.ChangeRelationAdd) error {
|
|||
}
|
||||
|
||||
func (s *State) changeRelationRemove(rem *pb.ChangeRelationRemove) error {
|
||||
s.RemoveRelation(rem.RelationId...)
|
||||
s.RemoveRelation(rem.RelationKey...)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *State) changeOldRelationAdd(add *pb.Change_RelationAdd) error {
|
||||
// MIGRATION: add old relation as new relationLinks
|
||||
err := s.changeRelationAdd(&pb.ChangeRelationAdd{RelationLinks: []*model.RelationLink{{Key: add.Relation.Key, Format: add.Relation.Format}}})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, rel := range s.OldExtraRelations() {
|
||||
if rel.Key == add.Relation.Key {
|
||||
// todo: update?
|
||||
|
@ -250,6 +261,11 @@ func (s *State) changeOldRelationRemove(remove *pb.Change_RelationRemove) error
|
|||
}
|
||||
}
|
||||
|
||||
err := s.changeRelationRemove(&pb.ChangeRelationRemove{RelationKey: []string{remove.Key}})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Warnf("changeOldRelationRemove: relation to remove not found")
|
||||
return nil
|
||||
}
|
||||
|
@ -470,7 +486,7 @@ func (s *State) fillChanges(msgs []simple.EventMessage) {
|
|||
cb.AddChange(&pb.ChangeContent{
|
||||
Value: &pb.ChangeContentValueOfRelationRemove{
|
||||
RelationRemove: &pb.ChangeRelationRemove{
|
||||
RelationId: delRelIds,
|
||||
RelationKey: delRelIds,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
|
|
@ -2,6 +2,7 @@ package state
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/latex"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/table"
|
||||
|
@ -159,8 +160,14 @@ func (s *State) applyEvent(ev *pb.EventMessage) (err error) {
|
|||
case *pb.EventMessageValueOfBlockDataviewOldRelationSet:
|
||||
if err = apply(o.BlockDataviewOldRelationSet.Id, func(b simple.Block) error {
|
||||
if f, ok := b.(dataview.Block); ok && o.BlockDataviewOldRelationSet.Relation != nil {
|
||||
if er := f.UpdateRelation(o.BlockDataviewOldRelationSet.RelationKey, *o.BlockDataviewOldRelationSet.Relation); er == dataview.ErrRelationNotFound {
|
||||
f.AddRelationOld(*o.BlockDataviewOldRelationSet.Relation)
|
||||
if er := f.UpdateRelationOld(o.BlockDataviewOldRelationSet.RelationKey, *o.BlockDataviewOldRelationSet.Relation); er == dataview.ErrRelationNotFound {
|
||||
rel := o.BlockDataviewOldRelationSet.Relation
|
||||
f.AddRelationOld(*rel)
|
||||
// MIGRATION: reinterpretation of old changes as new changes
|
||||
f.AddRelation(&model.RelationLink{
|
||||
Key: rel.Key,
|
||||
Format: rel.Format,
|
||||
})
|
||||
} else {
|
||||
return er
|
||||
}
|
||||
|
@ -173,7 +180,12 @@ func (s *State) applyEvent(ev *pb.EventMessage) (err error) {
|
|||
case *pb.EventMessageValueOfBlockDataviewOldRelationDelete:
|
||||
if err = apply(o.BlockDataviewOldRelationDelete.Id, func(b simple.Block) error {
|
||||
if f, ok := b.(dataview.Block); ok {
|
||||
return f.DeleteRelationOld(o.BlockDataviewOldRelationDelete.RelationKey)
|
||||
err = f.DeleteRelationOld(o.BlockDataviewOldRelationDelete.RelationKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// MIGRATION: reinterpretation of old changes as new changes
|
||||
f.DeleteRelation(o.BlockDataviewOldRelationDelete.RelationKey)
|
||||
}
|
||||
return fmt.Errorf("not a dataview block")
|
||||
}); err != nil {
|
||||
|
@ -191,7 +203,19 @@ func (s *State) applyEvent(ev *pb.EventMessage) (err error) {
|
|||
}); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
case *pb.EventMessageValueOfBlockDataviewRelationDelete:
|
||||
if err = apply(o.BlockDataviewRelationDelete.Id, func(b simple.Block) error {
|
||||
if f, ok := b.(dataview.Block); ok {
|
||||
for _, rel := range o.BlockDataviewRelationDelete.RelationIds {
|
||||
// todo: implement DeleteRelations?
|
||||
f.DeleteRelation(rel)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("not a dataview block")
|
||||
}); err != nil {
|
||||
return
|
||||
}
|
||||
case *pb.EventMessageValueOfBlockSetRelation:
|
||||
if err = apply(o.BlockSetRelation.Id, func(b simple.Block) error {
|
||||
if f, ok := b.(relation.Block); ok {
|
||||
|
|
|
@ -1148,8 +1148,8 @@ func (s *State) Copy() *State {
|
|||
relationLinks := make([]*model.RelationLink, len(s.relationLinks))
|
||||
for i, rl := range s.relationLinks {
|
||||
relationLinks[i] = &model.RelationLink{
|
||||
Id: rl.Id,
|
||||
Key: rl.Key,
|
||||
Format: rl.Format,
|
||||
Key: rl.Key,
|
||||
}
|
||||
}
|
||||
copy := &State{
|
||||
|
@ -1438,7 +1438,7 @@ func (s *State) SetContext(context *session.Context) {
|
|||
func (s *State) AddRelationLinks(links ...*model.RelationLink) {
|
||||
relLinks := s.GetRelationLinks()
|
||||
for _, l := range links {
|
||||
if !relLinks.Has(l.Id) {
|
||||
if !relLinks.Has(l.Key) {
|
||||
relLinks = append(relLinks, l)
|
||||
}
|
||||
}
|
||||
|
@ -1467,21 +1467,24 @@ func (s *State) GetRelationLinks() pbtypes.RelationLinks {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *State) RemoveRelation(ids ...string) {
|
||||
func (s *State) RemoveRelation(keys ...string) {
|
||||
relLinks := s.GetRelationLinks()
|
||||
keysToRemove := make([]string, 0, len(ids))
|
||||
for _, id := range ids {
|
||||
if keyToRemove, ok := relLinks.Key(id); ok {
|
||||
keysToRemove = append(keysToRemove, keyToRemove)
|
||||
relLinks = relLinks.Remove(id)
|
||||
relLinksFiltered := make(pbtypes.RelationLinks, 0, len(relLinks))
|
||||
for _, link := range relLinks {
|
||||
if slice.FindPos(keys, link.Key) < 0 {
|
||||
continue
|
||||
}
|
||||
relLinksFiltered = append(relLinksFiltered, &model.RelationLink{
|
||||
Key: link.Key,
|
||||
Format: link.Format,
|
||||
})
|
||||
}
|
||||
// remove detail value
|
||||
s.RemoveDetail(keysToRemove...)
|
||||
s.RemoveDetail(keys...)
|
||||
// remove from the list of featured relations
|
||||
featuredList := pbtypes.GetStringList(s.Details(), bundle.RelationKeyFeaturedRelations.String())
|
||||
featuredList = slice.Filter(featuredList, func(s string) bool {
|
||||
return slice.FindPos(keysToRemove, s) == -1
|
||||
return slice.FindPos(keys, s) == -1
|
||||
})
|
||||
s.SetDetail(bundle.RelationKeyFeaturedRelations.String(), pbtypes.StringList(featuredList))
|
||||
s.relationLinks = relLinks
|
||||
|
@ -1559,7 +1562,7 @@ func (s *State) AddBundledRelations(keys ...bundle.RelationKey) {
|
|||
links := make([]*model.RelationLink, 0, len(keys))
|
||||
for _, key := range keys {
|
||||
rel := bundle.MustGetRelation(key)
|
||||
links = append(links, &model.RelationLink{Id: rel.Id, Key: rel.Key})
|
||||
links = append(links, &model.RelationLink{Format: rel.Format, Key: rel.Key})
|
||||
}
|
||||
s.AddRelationLinks(links...)
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@ var WithRelations = func(rels []bundle.RelationKey) StateTransformer {
|
|||
continue
|
||||
}
|
||||
rel := bundle.MustGetRelation(relKey)
|
||||
links = append(links, &model.RelationLink{Id: rel.Id, Key: rel.Key})
|
||||
links = append(links, &model.RelationLink{Format: rel.Format, Key: rel.Key})
|
||||
}
|
||||
s.AddRelationLinks(links...)
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ const (
|
|||
collectionKeyId = "id"
|
||||
collectionKeyKey = "key"
|
||||
collectionKeyRelationOptions = "relationOptions"
|
||||
collectionKeyRelations = "relations"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -47,6 +48,7 @@ func NewWorkspace(dmservice DetailsModifier) *Workspaces {
|
|||
Set: NewSet(),
|
||||
DetailsModifier: dmservice,
|
||||
options: map[string]*Option{},
|
||||
relations: map[string]*Relation{},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,7 +60,8 @@ type Workspaces struct {
|
|||
|
||||
changedRelationIds, changedRelationIdsOptions []string
|
||||
|
||||
options map[string]*Option
|
||||
options map[string]*Option
|
||||
relations map[string]*Relation
|
||||
|
||||
sourceService source.Service
|
||||
app *app.App
|
||||
|
@ -105,7 +108,7 @@ func (p *Workspaces) DeleteSubObject(objectId string) error {
|
|||
st := p.NewState()
|
||||
err := p.ObjectStore().DeleteObject(objectId)
|
||||
if err != nil {
|
||||
log.Errorf("error deleting sub object from store %s %s %v", objectId, p.Id() , err.Error())
|
||||
log.Errorf("error deleting sub object from store %s %s %v", objectId, p.Id(), err.Error())
|
||||
}
|
||||
st.RemoveFromStore([]string{collectionKeyRelationOptions, objectId})
|
||||
return p.Apply(st, smartblock.NoEvent, smartblock.NoHistory)
|
||||
|
@ -314,7 +317,7 @@ func (p *Workspaces) Init(ctx *smartblock.InitContext) (err error) {
|
|||
}
|
||||
|
||||
p.AddHook(p.updateObjects, smartblock.HookAfterApply)
|
||||
p.AddHook(p.updateOptions, smartblock.HookAfterApply)
|
||||
p.AddHook(p.updateSubObject, smartblock.HookAfterApply)
|
||||
|
||||
data := ctx.State.GetCollection(collectionKeyRelationOptions)
|
||||
if data != nil && data.Fields != nil {
|
||||
|
|
|
@ -46,7 +46,14 @@ var (
|
|||
model.SmartBlockType_Archive: objRestrictAll,
|
||||
model.SmartBlockType_Set: objRestrictEdit,
|
||||
model.SmartBlockType_BundledRelation: objRestrictAll,
|
||||
model.SmartBlockType_IndexedRelation: {
|
||||
model.SmartBlockType_SubObjectRelation: {
|
||||
model.Restrictions_Blocks,
|
||||
model.Restrictions_Relations,
|
||||
model.Restrictions_LayoutChange,
|
||||
model.Restrictions_TypeChange,
|
||||
model.Restrictions_Template,
|
||||
},
|
||||
model.SmartBlockType_SubObjectRelationOption: {
|
||||
model.Restrictions_Blocks,
|
||||
model.Restrictions_Relations,
|
||||
model.Restrictions_LayoutChange,
|
||||
|
@ -57,7 +64,6 @@ var (
|
|||
model.SmartBlockType_STObjectType: objRestrictEdit,
|
||||
model.SmartBlockType_BundledTemplate: objRestrictAll,
|
||||
model.SmartBlockType_Template: {},
|
||||
model.SmartBlockType_RelationOption: objRestrictEdit,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -192,6 +192,7 @@ type Service interface {
|
|||
UpdateDataviewGroupOrder(ctx *session.Context, req pb.RpcBlockDataviewGroupOrderUpdateRequest) error
|
||||
UpdateDataviewObjectOrder(ctx *session.Context, req pb.RpcBlockDataviewObjectOrderUpdateRequest) error
|
||||
|
||||
CreateRelation(opt *types.Struct) (id, key string, err error)
|
||||
CreateRelationOption(opt *types.Struct) (id string, err error)
|
||||
RemoveListOption(ctx *session.Context, ids []string, checkInObjects bool) error
|
||||
|
||||
|
@ -1101,6 +1102,19 @@ func (s *service) CreateRelationOption(opt *types.Struct) (id string, err error)
|
|||
return
|
||||
}
|
||||
|
||||
func (s *service) CreateRelation(rel *types.Struct) (id, key string, err error) {
|
||||
// todo: rewrite to the current workspace id
|
||||
err = s.Do(s.anytype.PredefinedBlocks().Account, func(b smartblock.SmartBlock) error {
|
||||
workspace, ok := b.(*editor.Workspaces)
|
||||
if !ok {
|
||||
return fmt.Errorf("incorrect object with workspace id")
|
||||
}
|
||||
id, key, err = workspace.CreateRelation(rel)
|
||||
return err
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (s *service) RemoveListOption(ctx *session.Context, optIds []string, checkInObjects bool) error {
|
||||
var workspace *editor.Workspaces
|
||||
if err := s.Do(s.anytype.PredefinedBlocks().Account, func(b smartblock.SmartBlock) error {
|
||||
|
@ -1194,9 +1208,12 @@ func (s *service) newSmartBlock(id string, initCtx *smartblock.InitContext) (sb
|
|||
case model.SmartBlockType_STObjectType,
|
||||
model.SmartBlockType_BundledObjectType:
|
||||
sb = editor.NewObjectType()
|
||||
case model.SmartBlockType_BundledRelation,
|
||||
model.SmartBlockType_IndexedRelation:
|
||||
case model.SmartBlockType_BundledRelation:
|
||||
sb = editor.NewSet()
|
||||
case model.SmartBlockType_SubObjectRelation:
|
||||
sb = editor.NewRelation()
|
||||
case model.SmartBlockType_SubObjectRelationOption:
|
||||
sb = editor.NewOption()
|
||||
case model.SmartBlockType_File:
|
||||
sb = editor.NewFiles()
|
||||
case model.SmartBlockType_MarketplaceType:
|
||||
|
|
|
@ -3,6 +3,7 @@ package dataview
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/addr"
|
||||
|
||||
"github.com/globalsign/mgo/bson"
|
||||
|
||||
|
@ -62,7 +63,7 @@ type Block interface {
|
|||
// AddRelationOld DEPRECATED
|
||||
AddRelationOld(relation model.Relation)
|
||||
// UpdateRelation DEPRECATED
|
||||
UpdateRelation(relationKey string, relation model.Relation) error
|
||||
UpdateRelationOld(relationKey string, relation model.Relation) error
|
||||
// DeleteRelationOld DEPRECATED
|
||||
DeleteRelationOld(relationKey string) error
|
||||
}
|
||||
|
@ -286,7 +287,7 @@ func (l *Dataview) getActiveView() *model.BlockContentDataviewView {
|
|||
|
||||
func (l *Dataview) FillSmartIds(ids []string) []string {
|
||||
for _, rl := range l.content.RelationLinks {
|
||||
ids = append(ids, rl.Id)
|
||||
ids = append(ids, addr.RelationKeyToIdPrefix+rl.Key)
|
||||
}
|
||||
return ids
|
||||
}
|
||||
|
@ -296,20 +297,15 @@ func (l *Dataview) HasSmartIds() bool {
|
|||
}
|
||||
|
||||
func (d *Dataview) AddRelation(relation *model.RelationLink) error {
|
||||
if pbtypes.RelationLinks(d.content.RelationLinks).Has(relation.Id) {
|
||||
if pbtypes.RelationLinks(d.content.RelationLinks).Has(relation.Key) {
|
||||
return ErrRelationExists
|
||||
}
|
||||
d.content.RelationLinks = append(d.content.RelationLinks, relation)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Dataview) DeleteRelation(relationId string) error {
|
||||
relationKey, ok := pbtypes.RelationLinks(d.content.RelationLinks).Key(relationId)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
d.content.RelationLinks = pbtypes.RelationLinks(d.content.RelationLinks).Remove(relationId)
|
||||
func (d *Dataview) DeleteRelation(relationKey string) error {
|
||||
d.content.RelationLinks = pbtypes.RelationLinks(d.content.RelationLinks).Remove(relationKey)
|
||||
|
||||
for _, view := range d.content.Views {
|
||||
var filteredFilters []*model.BlockContentDataviewFilter
|
||||
|
@ -454,7 +450,7 @@ func (s *Dataview) GetRelation(relationKey string) (*model.Relation, error) {
|
|||
return nil, ErrRelationNotFound
|
||||
}
|
||||
|
||||
func (s *Dataview) UpdateRelation(relationKey string, rel model.Relation) error {
|
||||
func (s *Dataview) UpdateRelationOld(relationKey string, rel model.Relation) error {
|
||||
var found bool
|
||||
if relationKey != rel.Key {
|
||||
return fmt.Errorf("changing key of existing relation is retricted")
|
||||
|
|
|
@ -72,6 +72,7 @@ func getDetailsForBundledObjectType(id string) (extraRels []*model.Relation, p *
|
|||
bundle.RelationKeyIsHidden.String(): pbtypes.Bool(ot.Hidden),
|
||||
bundle.RelationKeyIsArchived.String(): pbtypes.Bool(false),
|
||||
bundle.RelationKeyIsReadonly.String(): pbtypes.Bool(ot.Readonly),
|
||||
bundle.RelationKeyWorkspaceId.String(): pbtypes.String("_anytype_marketplace"),
|
||||
}}
|
||||
|
||||
return extraRels, det, nil
|
||||
|
@ -85,7 +86,7 @@ func (v *bundledObjectType) ReadDoc(ctx context.Context, receiver ChangeReceiver
|
|||
return nil, err
|
||||
}
|
||||
for _, r := range rels {
|
||||
s.AddRelationLinks(&model.RelationLink{Id: addr.BundledRelationURLPrefix + r.Key, Key: r.Key})
|
||||
s.AddRelationLinks(&model.RelationLink{Format: r.Format, Key: r.Key})
|
||||
}
|
||||
s.SetDetails(d)
|
||||
s.SetObjectType(bundle.TypeKeyObjectType.URL())
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/pbtypes"
|
||||
"strings"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/change"
|
||||
|
@ -57,7 +58,9 @@ func (v *bundledRelation) getDetails(id string) (p *types.Struct, err error) {
|
|||
return nil, err
|
||||
}
|
||||
rel.Creator = addr.AnytypeProfileId
|
||||
return bundle.GetDetailsForRelation(true, rel), nil
|
||||
details := bundle.GetDetailsForRelation(true, rel)
|
||||
details.Fields[bundle.RelationKeyWorkspaceId.String()] = pbtypes.String("_anytype_marketplace")
|
||||
return details, nil
|
||||
}
|
||||
|
||||
func (v *bundledRelation) ReadDoc(_ context.Context, _ ChangeReceiver, empty bool) (doc state.Doc, err error) {
|
||||
|
|
|
@ -81,7 +81,7 @@ func (s *service) SourceTypeBySbType(blockType smartblock.SmartBlockType) (Sourc
|
|||
return &files{a: s.anytype}, nil
|
||||
case smartblock.SmartBlockTypeBundledObjectType:
|
||||
return &bundledObjectType{a: s.anytype}, nil
|
||||
case smartblock.SmartBlockTypeBundledRelation, smartblock.SmartBlockTypeIndexedRelation:
|
||||
case smartblock.SmartBlockTypeBundledRelation:
|
||||
return &bundledRelation{a: s.anytype}, nil
|
||||
case smartblock.SmartBlockTypeWorkspaceOld:
|
||||
return &threadDB{a: s.anytype}, nil
|
||||
|
|
|
@ -138,11 +138,10 @@ func (mw *Middleware) ObjectCreate(cctx context.Context, req *pb.RpcObjectCreate
|
|||
InternalFlags: req.InternalFlags,
|
||||
})
|
||||
case bundle.TypeKeyRelation:
|
||||
rl, err2 := mw.relationCreate(&pb.RpcObjectCreateRelationRequest{
|
||||
id, _, err = mw.objectCreateRelation(&pb.RpcObjectCreateRelationRequest{
|
||||
Details: req.Details,
|
||||
})
|
||||
id = rl.Id
|
||||
err = err2
|
||||
|
||||
case bundle.TypeKeyRelationOption:
|
||||
id, err = mw.objectCreateRelationOption(&pb.RpcObjectCreateRelationOptionRequest{
|
||||
Details: req.Details,
|
||||
|
|
|
@ -500,12 +500,12 @@ func (mw *Middleware) ObjectRelationAdd(cctx context.Context, req *pb.RpcObjectR
|
|||
}
|
||||
return m
|
||||
}
|
||||
if len(req.RelationIds) == 0 {
|
||||
if len(req.RelationKeys) == 0 {
|
||||
return response(pb.RpcObjectRelationAddResponseError_BAD_INPUT, fmt.Errorf("relation is nil"))
|
||||
}
|
||||
|
||||
err := mw.doBlockService(func(bs block.Service) (err error) {
|
||||
return bs.AddExtraRelations(ctx, req.ContextId, req.RelationIds)
|
||||
return bs.AddExtraRelations(ctx, req.ContextId, req.RelationKeys)
|
||||
})
|
||||
if err != nil {
|
||||
return response(pb.RpcObjectRelationAddResponseError_BAD_INPUT, err)
|
||||
|
@ -526,7 +526,7 @@ func (mw *Middleware) ObjectRelationDelete(cctx context.Context, req *pb.RpcObje
|
|||
return m
|
||||
}
|
||||
err := mw.doBlockService(func(bs block.Service) (err error) {
|
||||
return bs.RemoveExtraRelations(ctx, req.ContextId, []string{req.RelationId})
|
||||
return bs.RemoveExtraRelations(ctx, req.ContextId, []string{req.RelationKey})
|
||||
})
|
||||
if err != nil {
|
||||
return response(pb.RpcObjectRelationDeleteResponseError_BAD_INPUT, err)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package relation
|
||||
package relationutils
|
||||
|
||||
import (
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
|
||||
|
@ -37,8 +37,8 @@ type Relation struct {
|
|||
|
||||
func (r *Relation) RelationLink() *model.RelationLink {
|
||||
return &model.RelationLink{
|
||||
Id: r.Id,
|
||||
Key: r.Key,
|
||||
Format: r.Format,
|
||||
Key: r.Key,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,3 +94,14 @@ func (rs Relations) GetModelByKey(key string) *model.Relation {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func MigrateRelationsModels(rels []*model.Relation) (relLinks []*model.RelationLink) {
|
||||
relLinks = make([]*model.RelationLink, 0, len(rels))
|
||||
for _, rel := range rels {
|
||||
relLinks = append(relLinks, &model.RelationLink{
|
||||
Key: rel.Key,
|
||||
Format: rel.Format,
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
|
@ -1,23 +1,19 @@
|
|||
package relation
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation/relationutils"
|
||||
"net/url"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/app"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/editor/state"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
|
||||
coresb "github.com/anytypeio/go-anytype-middleware/pkg/lib/core/smartblock"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/database"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/addr"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/localstore/objectstore"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/pbtypes"
|
||||
"github.com/anytypeio/go-anytype-middleware/util/slice"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/ipfs/go-datastore/query"
|
||||
|
@ -36,34 +32,26 @@ func New() Service {
|
|||
return new(service)
|
||||
}
|
||||
|
||||
type objectCreator interface {
|
||||
CreateSmartBlockFromState(ctx context.Context, sbType coresb.SmartBlockType, details *types.Struct, relationIds []string, createState *state.State) (id string, newDetails *types.Struct, err error)
|
||||
}
|
||||
|
||||
type Service interface {
|
||||
FetchIds(ids ...string) (relations Relations, err error)
|
||||
FetchId(id string) (relation *Relation, err error)
|
||||
FetchKey(key string, opts ...FetchOption) (relation *Relation, err error)
|
||||
FetchLinks(links pbtypes.RelationLinks) (relations Relations, err error)
|
||||
FetchKeys(keys ...string) (relations relationutils.Relations, err error)
|
||||
FetchKey(key string, opts ...FetchOption) (relation *relationutils.Relation, err error)
|
||||
FetchLinks(links pbtypes.RelationLinks) (relations relationutils.Relations, err error)
|
||||
|
||||
Create(details *types.Struct) (rl *model.RelationLink, err error)
|
||||
//Create(details *types.Struct) (rl *model.RelationLink, err error)
|
||||
//CreateOption(relationKey string, opt *model.RelationOption) (id string, err error)
|
||||
MigrateRelations(rels []*model.Relation) (relLinks []*model.RelationLink, err error)
|
||||
ValidateFormat(key string, v *types.Value) error
|
||||
app.Component
|
||||
}
|
||||
|
||||
type service struct {
|
||||
objectStore objectstore.ObjectStore
|
||||
objectCreator objectCreator
|
||||
mu sync.RWMutex
|
||||
objectStore objectstore.ObjectStore
|
||||
mu sync.RWMutex
|
||||
|
||||
migrateCache map[string]*model.RelationLink
|
||||
}
|
||||
|
||||
func (s *service) Init(a *app.App) (err error) {
|
||||
s.objectStore = a.MustComponent(objectstore.CName).(objectstore.ObjectStore)
|
||||
s.objectCreator = a.MustComponent(blockServiceCName).(objectCreator)
|
||||
s.migrateCache = make(map[string]*model.RelationLink)
|
||||
return
|
||||
}
|
||||
|
@ -72,34 +60,25 @@ func (s *service) Name() (name string) {
|
|||
return CName
|
||||
}
|
||||
|
||||
func (s *service) FetchLinks(links pbtypes.RelationLinks) (relations Relations, err error) {
|
||||
ids := make([]string, 0, len(links))
|
||||
func (s *service) FetchLinks(links pbtypes.RelationLinks) (relations relationutils.Relations, err error) {
|
||||
keys := make([]string, 0, len(links))
|
||||
for _, l := range links {
|
||||
ids = append(ids, l.Id)
|
||||
keys = append(keys, l.Key)
|
||||
}
|
||||
return s.fetchIds(ids...)
|
||||
return s.fetchKeys(keys...)
|
||||
}
|
||||
|
||||
func (s *service) FetchIds(ids ...string) (relations Relations, err error) {
|
||||
func (s *service) FetchKeys(keys ...string) (relations relationutils.Relations, err error) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
return s.fetchIds(ids...)
|
||||
return s.fetchKeys(keys...)
|
||||
}
|
||||
|
||||
func (s *service) fetchIds(ids ...string) (relations []*Relation, err error) {
|
||||
ids = slice.Filter(ids, func(id string) bool {
|
||||
if !strings.HasPrefix(id, addr.BundledRelationURLPrefix) {
|
||||
return true
|
||||
}
|
||||
r, _ := bundle.GetRelation(bundle.RelationKey(strings.TrimPrefix(id, addr.BundledRelationURLPrefix)))
|
||||
if r != nil {
|
||||
r.Id = id
|
||||
relations = append(relations, &Relation{r})
|
||||
return false
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
func (s *service) fetchKeys(keys ...string) (relations []*relationutils.Relation, err error) {
|
||||
ids := make([]string, 0, len(keys))
|
||||
for _, key := range keys {
|
||||
ids = append(ids, addr.RelationKeyToIdPrefix+key)
|
||||
}
|
||||
records, err := s.objectStore.QueryById(ids)
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -109,22 +88,11 @@ func (s *service) fetchIds(ids ...string) (relations []*Relation, err error) {
|
|||
if pbtypes.GetString(rec.Details, bundle.RelationKeyType.String()) != bundle.TypeKeyRelation.URL() {
|
||||
continue
|
||||
}
|
||||
relations = append(relations, RelationFromStruct(rec.Details))
|
||||
relations = append(relations, relationutils.RelationFromStruct(rec.Details))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *service) FetchId(id string) (relation *Relation, err error) {
|
||||
rels, err := s.FetchIds(id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if len(rels) == 0 {
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
return rels[0], nil
|
||||
}
|
||||
|
||||
type fetchOptions struct {
|
||||
workspaceId *string
|
||||
}
|
||||
|
@ -137,17 +105,13 @@ func WithWorkspaceId(id string) FetchOption {
|
|||
}
|
||||
}
|
||||
|
||||
func (s *service) FetchKey(key string, opts ...FetchOption) (relation *Relation, err error) {
|
||||
func (s *service) FetchKey(key string, opts ...FetchOption) (relation *relationutils.Relation, err error) {
|
||||
s.mu.RLock()
|
||||
defer s.mu.RUnlock()
|
||||
return s.fetchKey(key, opts...)
|
||||
}
|
||||
|
||||
func (s *service) fetchKey(key string, opts ...FetchOption) (relation *Relation, err error) {
|
||||
if b, _ := bundle.GetRelation(bundle.RelationKey(key)); b != nil {
|
||||
b.Id = addr.BundledRelationURLPrefix + key
|
||||
return &Relation{b}, nil
|
||||
}
|
||||
func (s *service) fetchKey(key string, opts ...FetchOption) (relation *relationutils.Relation, err error) {
|
||||
o := &fetchOptions{}
|
||||
for _, apply := range opts {
|
||||
apply(o)
|
||||
|
@ -181,12 +145,12 @@ func (s *service) fetchKey(key string, opts ...FetchOption) (relation *Relation,
|
|||
Filters: []query.Filter{f},
|
||||
})
|
||||
for _, rec := range records {
|
||||
return RelationFromStruct(rec.Details), nil
|
||||
return relationutils.RelationFromStruct(rec.Details), nil
|
||||
}
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
|
||||
func (s *service) fetchOptionsByKey(key string) (relation *Relation, err error) {
|
||||
func (s *service) fetchOptionsByKey(key string) (relation *relationutils.Relation, err error) {
|
||||
q := database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
|
@ -209,77 +173,11 @@ func (s *service) fetchOptionsByKey(key string) (relation *Relation, err error)
|
|||
Filters: []query.Filter{f},
|
||||
})
|
||||
for _, rec := range records {
|
||||
return RelationFromStruct(rec.Details), nil
|
||||
return relationutils.RelationFromStruct(rec.Details), nil
|
||||
}
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
|
||||
func (s *service) Create(details *types.Struct) (rl *model.RelationLink, err error) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
rel := &model.Relation{
|
||||
Key: generateRelationKey(),
|
||||
}
|
||||
return s.create(rel, details, true)
|
||||
}
|
||||
|
||||
func (s *service) create(rel *model.Relation, reqDetails *types.Struct, checkForExists bool) (rl *model.RelationLink, err error) {
|
||||
if checkForExists {
|
||||
if _, e := s.fetchKey(rel.Key); e != ErrNotFound {
|
||||
return nil, ErrExists
|
||||
}
|
||||
}
|
||||
st := state.NewDoc("", nil).(*state.State)
|
||||
st.SetObjectType(bundle.TypeKeyRelation.URL())
|
||||
r := &Relation{Relation: rel}
|
||||
details := r.ToStruct()
|
||||
details = pbtypes.StructMerge(details, reqDetails, false)
|
||||
for k, v := range details.Fields {
|
||||
st.SetDetailAndBundledRelation(bundle.RelationKey(k), v)
|
||||
}
|
||||
|
||||
id, _, err := s.objectCreator.CreateSmartBlockFromState(context.TODO(), coresb.SmartBlockTypeIndexedRelation, details, nil, st)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return &model.RelationLink{
|
||||
Id: id,
|
||||
Key: rel.Key,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *service) MigrateRelations(rels []*model.Relation) (relLinks []*model.RelationLink, err error) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
relLinks = make([]*model.RelationLink, 0, len(rels))
|
||||
|
||||
for _, rel := range rels {
|
||||
link, ok := s.migrateCache[rel.Key]
|
||||
if !ok {
|
||||
link, err = s.migrateRelation(rel)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.migrateCache[rel.Key] = link
|
||||
}
|
||||
relLinks = append(relLinks, link)
|
||||
if len(rel.SelectDict) > 0 {
|
||||
if err = s.migrateOptions(rel); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *service) migrateRelation(rel *model.Relation) (rl *model.RelationLink, err error) {
|
||||
dbRel, e := s.fetchKey(rel.Key)
|
||||
if e == nil {
|
||||
return dbRel.RelationLink(), nil
|
||||
}
|
||||
return s.create(rel, nil, false)
|
||||
}
|
||||
|
||||
func (s *service) migrateOptions(rel *model.Relation) (err error) {
|
||||
|
||||
return
|
||||
|
@ -412,7 +310,7 @@ func (s *service) ValidateFormat(key string, v *types.Value) error {
|
|||
}
|
||||
}
|
||||
|
||||
func (s *service) validateOptions(rel *Relation, v []string) error {
|
||||
func (s *service) validateOptions(rel *relationutils.Relation, v []string) error {
|
||||
//TODO:
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@ import (
|
|||
"github.com/gogo/protobuf/types"
|
||||
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation"
|
||||
"github.com/anytypeio/go-anytype-middleware/pb"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/bundle"
|
||||
"github.com/anytypeio/go-anytype-middleware/pkg/lib/core"
|
||||
|
@ -75,7 +74,7 @@ func (mw *Middleware) ObjectTypeRelationAdd(cctx context.Context, req *pb.RpcObj
|
|||
}
|
||||
|
||||
err = mw.doBlockService(func(bs block.Service) (err error) {
|
||||
err = bs.AddExtraRelations(nil, objType.Url, req.RelationIds)
|
||||
err = bs.AddExtraRelations(nil, objType.Url, req.RelationKeys)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -300,24 +299,12 @@ func (mw *Middleware) ObjectCreateRelation(cctx context.Context, req *pb.RpcObje
|
|||
Key: key,
|
||||
}
|
||||
}
|
||||
rl, err := mw.relationCreate(req)
|
||||
id, key, err := mw.objectCreateRelation(req)
|
||||
|
||||
if err != nil {
|
||||
return response("", "", err)
|
||||
}
|
||||
return response(rl.Id, rl.Key, err)
|
||||
}
|
||||
|
||||
func (mw *Middleware) relationCreate(req *pb.RpcObjectCreateRelationRequest) (*model.RelationLink, error) {
|
||||
var rl *model.RelationLink
|
||||
err := mw.doRelationService(func(rs relation.Service) error {
|
||||
var err error
|
||||
rl, err = rs.Create(req.Details)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return rl, err
|
||||
return response(id, key, err)
|
||||
}
|
||||
|
||||
func (mw *Middleware) ObjectCreateRelationOption(cctx context.Context, req *pb.RpcObjectCreateRelationOptionRequest) *pb.RpcObjectCreateRelationOptionResponse {
|
||||
|
@ -343,15 +330,30 @@ func (mw *Middleware) ObjectCreateRelationOption(cctx context.Context, req *pb.R
|
|||
}
|
||||
|
||||
func (mw *Middleware) objectCreateRelationOption(req *pb.RpcObjectCreateRelationOptionRequest) (string, error) {
|
||||
req.Details.Fields[bundle.RelationKeyType.String()] = pbtypes.String(bundle.TypeKeyRelationOption.URL())
|
||||
req.Details.Fields[bundle.RelationKeyLayout.String()] = pbtypes.Float64(float64(model.ObjectType_relationOption))
|
||||
var id string
|
||||
err := mw.doBlockService(func(rs block.Service) error {
|
||||
var err error
|
||||
id, err = rs.CreateRelationOption(req.Details)
|
||||
id, err = rs.
|
||||
CreateRelationOption(req.Details)
|
||||
return err
|
||||
})
|
||||
return id, err
|
||||
}
|
||||
|
||||
func (mw *Middleware) objectCreateRelation(req *pb.RpcObjectCreateRelationRequest) (id, key string, err error) {
|
||||
req.Details.Fields[bundle.RelationKeyType.String()] = pbtypes.String(bundle.TypeKeyRelation.URL())
|
||||
req.Details.Fields[bundle.RelationKeyLayout.String()] = pbtypes.Float64(float64(model.ObjectType_relation))
|
||||
|
||||
err = mw.doBlockService(func(rs block.Service) error {
|
||||
var err error
|
||||
id, key, err = rs.CreateRelation(req.Details)
|
||||
return err
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
func (mw *Middleware) RelationListRemoveOption(cctx context.Context, request *pb.RpcRelationListRemoveOptionRequest) *pb.RpcRelationListRemoveOptionResponse {
|
||||
ctx := mw.newContext(cctx)
|
||||
response := func(code pb.RpcRelationListRemoveOptionResponseErrorCode, err error) *pb.RpcRelationListRemoveOptionResponse {
|
||||
|
@ -366,7 +368,7 @@ func (mw *Middleware) RelationListRemoveOption(cctx context.Context, request *pb
|
|||
|
||||
return &pb.RpcRelationListRemoveOptionResponse{
|
||||
Error: &pb.RpcRelationListRemoveOptionResponseError{
|
||||
Code: code,
|
||||
Code: code,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,12 +65,13 @@ func TestRelations_New_Account(t *testing.T) {
|
|||
|
||||
relName := "test_str"
|
||||
relDesc := "test_str_desc"
|
||||
|
||||
relFormat := model.RelationFormat_tag
|
||||
respRelationCreate := mw.ObjectCreateRelation(context.Background(), &pb.RpcObjectCreateRelationRequest{
|
||||
Details: &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyRelationFormat.String(): pbtypes.Float64(float64(model.RelationFormat_tag)),
|
||||
bundle.RelationKeyName.String(): pbtypes.String(relName),
|
||||
bundle.RelationKeyDescription.String(): pbtypes.String(relDesc),
|
||||
bundle.RelationKeyRelationFormat.String(): pbtypes.Float64(float64(relFormat)),
|
||||
bundle.RelationKeyName.String(): pbtypes.String(relName),
|
||||
bundle.RelationKeyDescription.String(): pbtypes.String(relDesc),
|
||||
bundle.RelationKeyType.String(): pbtypes.String(bundle.TypeKeyRelation.URL()),
|
||||
}},
|
||||
})
|
||||
require.Equal(t, 0, int(respRelationCreate.Error.Code), respRelationCreate.Error.Description)
|
||||
|
@ -78,8 +79,8 @@ func TestRelations_New_Account(t *testing.T) {
|
|||
require.True(t, respRelationCreate.ObjectId != "")
|
||||
|
||||
respObjectRelationAdd := mw.ObjectRelationAdd(context.Background(), &pb.RpcObjectRelationAddRequest{
|
||||
ContextId: setId,
|
||||
RelationIds: []string{respRelationCreate.ObjectId},
|
||||
ContextId: setId,
|
||||
RelationKeys: []string{respRelationCreate.Key},
|
||||
})
|
||||
require.Equal(t, 0, int(respObjectRelationAdd.Error.Code), respObjectRelationAdd.Error.Description)
|
||||
|
||||
|
@ -95,9 +96,9 @@ func TestRelations_New_Account(t *testing.T) {
|
|||
require.Equal(t, 0, int(respObjectSetDetails.Error.Code), respObjectSetDetails.Error.Description)
|
||||
|
||||
respBlockDataviewRelationAdd := mw.BlockDataviewRelationAdd(context.Background(), &pb.RpcBlockDataviewRelationAddRequest{
|
||||
ContextId: setId,
|
||||
BlockId: "dataview",
|
||||
RelationId: respRelationCreate.ObjectId,
|
||||
ContextId: setId,
|
||||
BlockId: "dataview",
|
||||
RelationKeys: []string{respRelationCreate.Key},
|
||||
})
|
||||
|
||||
require.Equal(t, 0, int(respBlockDataviewRelationAdd.Error.Code), respBlockDataviewRelationAdd.Error.Description)
|
||||
|
@ -107,7 +108,7 @@ func TestRelations_New_Account(t *testing.T) {
|
|||
|
||||
var found bool
|
||||
for _, rel := range respObjectShow.ObjectView.RelationLinks {
|
||||
if rel.Id == respRelationCreate.ObjectId && rel.Key == respRelationCreate.Key {
|
||||
if rel.Key == respRelationCreate.Key && rel.Format == relFormat {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
|
@ -135,7 +136,7 @@ func TestRelations_New_Account(t *testing.T) {
|
|||
|
||||
found = false
|
||||
for _, rel := range dataviewBlock.GetDataview().RelationLinks {
|
||||
if rel.Id == respRelationCreate.ObjectId && rel.Key == respRelationCreate.Key {
|
||||
if rel.Format == relFormat && rel.Key == respRelationCreate.Key {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
|
@ -145,10 +146,10 @@ func TestRelations_New_Account(t *testing.T) {
|
|||
|
||||
respRelationCreateOption := mw.ObjectCreateRelationOption(context.Background(), &pb.RpcObjectCreateRelationOptionRequest{
|
||||
Details: &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyRelationKey.String(): pbtypes.String(respRelationCreate.Key),
|
||||
bundle.RelationKeyRelationOptionText.String(): pbtypes.String("test_option_text"),
|
||||
bundle.RelationKeyRelationKey.String(): pbtypes.String(respRelationCreate.Key),
|
||||
bundle.RelationKeyRelationOptionText.String(): pbtypes.String("test_option_text"),
|
||||
bundle.RelationKeyRelationOptionColor.String(): pbtypes.String("red"),
|
||||
},
|
||||
},
|
||||
}})
|
||||
|
||||
require.Equal(t, 0, int(respRelationCreateOption.Error.Code), respRelationCreateOption.Error.Description)
|
||||
|
|
6800
docs/proto.md
6800
docs/proto.md
File diff suppressed because it is too large
Load diff
176
pb/changes.pb.go
176
pb/changes.pb.go
|
@ -915,7 +915,7 @@ func (m *ChangeRelationAdd) GetRelationLinks() []*model.RelationLink {
|
|||
}
|
||||
|
||||
type ChangeRelationRemove struct {
|
||||
RelationId []string `protobuf:"bytes,1,rep,name=relationId,proto3" json:"relationId,omitempty"`
|
||||
RelationKey []string `protobuf:"bytes,1,rep,name=relationKey,proto3" json:"relationKey,omitempty"`
|
||||
}
|
||||
|
||||
func (m *ChangeRelationRemove) Reset() { *m = ChangeRelationRemove{} }
|
||||
|
@ -951,9 +951,9 @@ func (m *ChangeRelationRemove) XXX_DiscardUnknown() {
|
|||
|
||||
var xxx_messageInfo_ChangeRelationRemove proto.InternalMessageInfo
|
||||
|
||||
func (m *ChangeRelationRemove) GetRelationId() []string {
|
||||
func (m *ChangeRelationRemove) GetRelationKey() []string {
|
||||
if m != nil {
|
||||
return m.RelationId
|
||||
return m.RelationKey
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -1494,83 +1494,83 @@ func init() { proto.RegisterFile("pb/protos/changes.proto", fileDescriptor_2b02b
|
|||
|
||||
var fileDescriptor_2b02bba284ea1e46 = []byte{
|
||||
// 1229 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4f, 0x73, 0xdb, 0x44,
|
||||
0x14, 0xb7, 0x62, 0xc7, 0xb1, 0x9f, 0x12, 0x37, 0xdd, 0xe9, 0x34, 0x42, 0x0d, 0xae, 0xdb, 0x06,
|
||||
0xc6, 0x03, 0x1d, 0x19, 0x1c, 0x86, 0x92, 0x52, 0x86, 0xa9, 0xf3, 0x07, 0x67, 0x48, 0x48, 0x66,
|
||||
0x43, 0x39, 0x70, 0xc9, 0xac, 0xad, 0x8d, 0xad, 0x5a, 0xb6, 0x34, 0xd2, 0x3a, 0x33, 0xfe, 0x14,
|
||||
0x30, 0x7c, 0x04, 0x3e, 0x0d, 0xc7, 0xde, 0xe0, 0xc8, 0x24, 0x1f, 0x81, 0x2b, 0x07, 0x66, 0x57,
|
||||
0x2b, 0x69, 0xe5, 0xc8, 0x0d, 0x3d, 0xc0, 0xa5, 0xf5, 0xdb, 0xfd, 0xfd, 0x7e, 0xfb, 0xde, 0xdb,
|
||||
0xd5, 0x6f, 0x37, 0xb0, 0xe1, 0xf7, 0x5a, 0x7e, 0xe0, 0x31, 0x2f, 0x6c, 0xf5, 0x87, 0x64, 0x32,
|
||||
0xa0, 0xa1, 0x25, 0x42, 0xb4, 0x42, 0x26, 0x33, 0x36, 0xf3, 0xa9, 0xb9, 0xe5, 0x8f, 0x06, 0x2d,
|
||||
0xd7, 0xe9, 0xb5, 0xfc, 0x5e, 0x6b, 0xec, 0xd9, 0xd4, 0x8d, 0xf1, 0x22, 0x90, 0x70, 0xf3, 0x7e,
|
||||
0xaa, 0x43, 0x2f, 0xe9, 0x84, 0xc5, 0xe3, 0x9b, 0x03, 0xcf, 0x1b, 0xb8, 0x34, 0x9a, 0xeb, 0x4d,
|
||||
0x2f, 0x5a, 0x21, 0x0b, 0xa6, 0x7d, 0x16, 0xcd, 0x3e, 0xfe, 0xd5, 0x84, 0xf2, 0xae, 0x58, 0x16,
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0xdb, 0x36,
|
||||
0x14, 0xb7, 0x62, 0xc7, 0xb1, 0x9f, 0x12, 0x37, 0x25, 0x8a, 0x46, 0x53, 0x33, 0xd7, 0x6d, 0xb3,
|
||||
0xc1, 0xd8, 0x0a, 0x19, 0x73, 0x86, 0x75, 0xe9, 0x3a, 0x0c, 0x75, 0xfe, 0xcc, 0x41, 0x93, 0x25,
|
||||
0x60, 0xd6, 0x1d, 0x76, 0x09, 0x68, 0x8b, 0xb1, 0x55, 0xcb, 0x96, 0x20, 0xd1, 0x01, 0xfc, 0x29,
|
||||
0x36, 0xec, 0x33, 0xec, 0xc3, 0xec, 0xd8, 0xdb, 0x76, 0x1c, 0x92, 0x8f, 0xb0, 0xeb, 0x0e, 0x03,
|
||||
0x29, 0x4a, 0xa2, 0x1c, 0xb9, 0x59, 0x0f, 0xdb, 0x25, 0x31, 0xc9, 0xdf, 0xef, 0xc7, 0xf7, 0x1e,
|
||||
0x9f, 0x7e, 0x24, 0x6c, 0xf8, 0xbd, 0x96, 0x1f, 0x78, 0xcc, 0x0b, 0x5b, 0xfd, 0x21, 0x99, 0x0c,
|
||||
0x68, 0x68, 0x89, 0x21, 0x5a, 0x21, 0x93, 0x19, 0x9b, 0xf9, 0xd4, 0xdc, 0xf2, 0x47, 0x83, 0x96,
|
||||
0xeb, 0xf4, 0x5a, 0x7e, 0xaf, 0x35, 0xf6, 0x6c, 0xea, 0xc6, 0x78, 0x31, 0x90, 0x70, 0xf3, 0x7e,
|
||||
0xaa, 0x43, 0x2f, 0xe9, 0x84, 0xc5, 0xf3, 0x9b, 0x03, 0xcf, 0x1b, 0xb8, 0x34, 0x5a, 0xeb, 0x4d,
|
||||
0x2f, 0x5a, 0x21, 0x0b, 0xa6, 0x7d, 0x16, 0xad, 0x3e, 0xfe, 0xd5, 0x84, 0xf2, 0xae, 0xd8, 0x16,
|
||||
0x3d, 0x82, 0x55, 0x3f, 0xa0, 0x97, 0x8e, 0x37, 0x0d, 0xcf, 0x1d, 0x3b, 0x34, 0xb4, 0x46, 0xb1,
|
||||
0x59, 0xc5, 0x7a, 0x3c, 0x76, 0x68, 0x87, 0xa8, 0x09, 0xeb, 0x2e, 0x09, 0xd9, 0x79, 0x38, 0x21,
|
||||
0x7e, 0x38, 0xf4, 0xd8, 0xb9, 0x63, 0x1b, 0x4b, 0x0d, 0xad, 0x59, 0xc5, 0x35, 0x3e, 0x7e, 0x26,
|
||||
0x87, 0x0f, 0x6d, 0xf4, 0x11, 0xdc, 0x4d, 0xc4, 0xc6, 0x94, 0x11, 0xa1, 0xb8, 0x2c, 0x14, 0xef,
|
||||
0xc4, 0x13, 0xc7, 0x94, 0x11, 0xae, 0xfa, 0x29, 0xac, 0xf4, 0xbd, 0x09, 0xa3, 0x13, 0x66, 0x14,
|
||||
0x1b, 0xc5, 0xa6, 0xde, 0xde, 0xb0, 0x64, 0xe9, 0x56, 0x94, 0x9a, 0xb5, 0x1b, 0x4d, 0xe3, 0x18,
|
||||
0x87, 0x3e, 0x83, 0x4a, 0x9c, 0x83, 0x51, 0x6a, 0x68, 0x4d, 0xbd, 0x6d, 0xcc, 0x73, 0xe2, 0x64,
|
||||
0x70, 0x82, 0xe4, 0xac, 0x0b, 0xc7, 0xa5, 0xdf, 0xd2, 0x59, 0x68, 0x94, 0xc5, 0x4a, 0x37, 0x58,
|
||||
0x07, 0x72, 0x1e, 0x27, 0x48, 0xb4, 0x09, 0x55, 0xe6, 0x8c, 0x69, 0xc8, 0xc8, 0xd8, 0x37, 0x56,
|
||||
0x1a, 0x5a, 0xb3, 0x88, 0xd3, 0x01, 0xf3, 0x6f, 0x0d, 0x2a, 0xf1, 0x52, 0xa8, 0x03, 0x15, 0xd7,
|
||||
0x1b, 0x74, 0x29, 0x91, 0xed, 0xd3, 0xdb, 0x1f, 0x2e, 0x4a, 0xcb, 0x3a, 0x92, 0xc0, 0xfd, 0x09,
|
||||
0x0b, 0x66, 0x38, 0xe1, 0xa1, 0x1d, 0x28, 0xd9, 0x84, 0x11, 0xd1, 0x57, 0xbd, 0xfd, 0x41, 0xc2,
|
||||
0x17, 0x9b, 0x6d, 0x9d, 0x8d, 0x49, 0xc0, 0x3a, 0xae, 0xd7, 0x1f, 0xc5, 0x42, 0x1d, 0x12, 0x52,
|
||||
0x2c, 0x28, 0x99, 0xfa, 0x8a, 0xff, 0xb6, 0x3e, 0xf3, 0x4b, 0x58, 0xcb, 0xe4, 0x82, 0xd6, 0xa1,
|
||||
0x38, 0xa2, 0x33, 0x43, 0x13, 0x1b, 0xcb, 0x7f, 0xa2, 0x7b, 0xb0, 0x7c, 0x49, 0xdc, 0x29, 0x95,
|
||||
0x9b, 0x1d, 0x05, 0xcf, 0x97, 0xbe, 0xd0, 0xcc, 0x9f, 0x34, 0xa8, 0xc4, 0x9a, 0x08, 0x41, 0x69,
|
||||
0x48, 0xc2, 0xa1, 0x64, 0x8a, 0xdf, 0xe8, 0x73, 0x28, 0x8d, 0x78, 0x3e, 0x4b, 0x22, 0x9f, 0xc7,
|
||||
0x8b, 0xf2, 0xb1, 0xf8, 0x3f, 0x51, 0x2b, 0x04, 0xde, 0x7c, 0x06, 0xd5, 0x64, 0xe8, 0x9d, 0x32,
|
||||
0xfa, 0xab, 0x02, 0x2b, 0xf2, 0xbc, 0xa0, 0xaf, 0x41, 0xef, 0xf1, 0x5e, 0xed, 0x06, 0x94, 0x30,
|
||||
0x2a, 0xf8, 0x7a, 0xfb, 0xc1, 0x7c, 0x0e, 0x9d, 0x14, 0xd2, 0x2d, 0x60, 0x95, 0x91, 0x08, 0xbc,
|
||||
0xf2, 0x6d, 0x2e, 0xb0, 0xf4, 0x16, 0x81, 0x08, 0x92, 0x08, 0x44, 0x61, 0x22, 0x80, 0xe9, 0xd8,
|
||||
0xbb, 0xa4, 0x46, 0xf1, 0x2d, 0x02, 0x11, 0x24, 0x11, 0x88, 0x42, 0xb4, 0x03, 0x55, 0x11, 0x1e,
|
||||
0x73, 0x7a, 0x74, 0xd4, 0xdf, 0xcb, 0xa5, 0x1f, 0x47, 0xe4, 0x14, 0x8d, 0xba, 0x50, 0x13, 0xc1,
|
||||
0xde, 0xd4, 0x77, 0x9d, 0x3e, 0xcf, 0x7f, 0x59, 0xf0, 0xeb, 0xb9, 0xfc, 0x04, 0xd5, 0x2d, 0xe0,
|
||||
0x39, 0x1e, 0xaf, 0x22, 0xa0, 0x2e, 0x61, 0x8e, 0x37, 0x79, 0x69, 0xdb, 0x46, 0x3b, 0xbf, 0x0a,
|
||||
0x9c, 0x42, 0x78, 0x15, 0x0a, 0x83, 0xa7, 0x12, 0x87, 0xb2, 0x13, 0xdb, 0xf9, 0xa9, 0xe0, 0x0c,
|
||||
0x8a, 0xa7, 0x92, 0xe5, 0xa1, 0x17, 0x00, 0x36, 0x65, 0xc4, 0x71, 0xc3, 0x33, 0xca, 0x0c, 0x5b,
|
||||
0xa8, 0x98, 0xf3, 0x2a, 0x7b, 0x09, 0xa2, 0x5b, 0xc0, 0x0a, 0x1e, 0x75, 0x60, 0x55, 0x46, 0xaf,
|
||||
0x26, 0x21, 0x65, 0x06, 0x15, 0xfc, 0xcd, 0x05, 0x7c, 0x81, 0xe9, 0x16, 0x70, 0x86, 0x83, 0xbe,
|
||||
0x81, 0x3b, 0x9e, 0x6b, 0x9f, 0xab, 0x0d, 0xb9, 0xc8, 0x97, 0x39, 0xcf, 0x76, 0xa4, 0xe6, 0xb9,
|
||||
0xb6, 0x32, 0x82, 0x4e, 0x01, 0xa9, 0x42, 0xb2, 0x31, 0x03, 0xa1, 0xf5, 0x70, 0xa1, 0x56, 0xd2,
|
||||
0x99, 0xbb, 0x8a, 0x9c, 0x6c, 0xce, 0x9c, 0xa2, 0x3c, 0xb5, 0xc3, 0x5b, 0x14, 0x93, 0x93, 0xab,
|
||||
0x2a, 0xca, 0xf3, 0xbb, 0x0f, 0x6b, 0x5e, 0xef, 0x35, 0xed, 0xb3, 0xef, 0x67, 0x3e, 0xe5, 0xa5,
|
||||
0x3a, 0x42, 0xec, 0xfd, 0x79, 0xb1, 0x13, 0x15, 0xd4, 0x2d, 0xe0, 0x2c, 0x0b, 0x7d, 0x07, 0xeb,
|
||||
0xe9, 0x80, 0x2c, 0xf4, 0xb5, 0x50, 0x6a, 0x2c, 0x56, 0x4a, 0x2a, 0xbd, 0xc1, 0xe5, 0x07, 0x32,
|
||||
0x64, 0x5e, 0xc0, 0xad, 0x83, 0x1f, 0x83, 0x51, 0xfe, 0x81, 0x3c, 0x4b, 0x21, 0xfc, 0x40, 0x2a,
|
||||
0x0c, 0x5e, 0x57, 0x1c, 0x46, 0x27, 0xc1, 0xcd, 0xaf, 0xeb, 0x4c, 0x05, 0xf1, 0xba, 0x32, 0xac,
|
||||
0xce, 0x8a, 0xb4, 0x21, 0xf3, 0x17, 0x0d, 0x74, 0xc5, 0x47, 0x90, 0x09, 0x15, 0x46, 0x82, 0x01,
|
||||
0x65, 0x87, 0xb6, 0xb4, 0xad, 0x24, 0x46, 0x3b, 0x50, 0xf1, 0xbd, 0xd0, 0xe1, 0x5d, 0x16, 0x8e,
|
||||
0x52, 0x53, 0x96, 0x8d, 0x5c, 0x5e, 0x28, 0x59, 0xa7, 0x12, 0x84, 0x13, 0x38, 0x7a, 0x0a, 0x65,
|
||||
0xf1, 0x69, 0xc6, 0xfe, 0x7e, 0x2f, 0x8f, 0x88, 0x25, 0xc6, 0xfc, 0x4a, 0xe6, 0x24, 0xf7, 0xd2,
|
||||
0x82, 0x72, 0xf4, 0x32, 0x90, 0x66, 0x7c, 0x3f, 0x21, 0xef, 0xf3, 0x61, 0xeb, 0x98, 0x86, 0x21,
|
||||
0x19, 0x50, 0x2c, 0x51, 0xe6, 0x43, 0x49, 0x97, 0x3d, 0x5f, 0x87, 0x62, 0xfa, 0x2c, 0xe0, 0x3f,
|
||||
0x4d, 0x06, 0xd5, 0xc4, 0x7a, 0xfe, 0xab, 0x8a, 0xe5, 0xaa, 0xc5, 0x74, 0xd5, 0x19, 0xd4, 0xb2,
|
||||
0x86, 0xf5, 0xff, 0x2d, 0x7d, 0x04, 0x90, 0x5a, 0x4b, 0xce, 0xad, 0xf4, 0x54, 0xbd, 0x95, 0x78,
|
||||
0x83, 0xa3, 0xb7, 0x97, 0x15, 0xbf, 0xbd, 0xac, 0x1f, 0xf8, 0xac, 0xbc, 0xad, 0xcc, 0x06, 0xac,
|
||||
0xaa, 0x46, 0x73, 0x53, 0xcf, 0x3c, 0x05, 0x5d, 0x35, 0x8c, 0x97, 0xb0, 0x16, 0x7f, 0xda, 0x47,
|
||||
0xce, 0x64, 0x14, 0xbf, 0x31, 0x1e, 0xcc, 0x15, 0x84, 0x15, 0x0c, 0xce, 0x32, 0xcc, 0x4f, 0xa0,
|
||||
0x36, 0xe7, 0x19, 0x75, 0x80, 0x18, 0x22, 0xda, 0xc7, 0x8b, 0x55, 0x46, 0xcc, 0x5d, 0x58, 0x55,
|
||||
0x7d, 0x0c, 0x6d, 0x43, 0x25, 0x9e, 0x95, 0x65, 0x6e, 0x2c, 0x58, 0x1f, 0x27, 0x40, 0xf3, 0xf7,
|
||||
0x22, 0xdc, 0x99, 0xf3, 0x9b, 0x9c, 0xf6, 0x3d, 0x83, 0xf2, 0x85, 0x17, 0x8c, 0x09, 0x5b, 0xb0,
|
||||
0x53, 0xb1, 0xc0, 0x81, 0x00, 0x75, 0x0b, 0x58, 0xc2, 0xd1, 0x3d, 0x28, 0x4d, 0xc8, 0x38, 0xba,
|
||||
0x5e, 0xab, 0xdd, 0x02, 0x16, 0x11, 0x7a, 0xc1, 0xcd, 0xfe, 0x82, 0x4c, 0x5d, 0x26, 0xda, 0x2e,
|
||||
0x6f, 0xcf, 0x05, 0x9b, 0x12, 0xd9, 0x7c, 0x8a, 0x46, 0x27, 0xa0, 0xa7, 0xb6, 0x13, 0xca, 0xab,
|
||||
0xf3, 0xe3, 0x5b, 0x4c, 0x54, 0x71, 0xaf, 0x90, 0x5b, 0x8e, 0xa2, 0x80, 0xee, 0xc3, 0xf2, 0x78,
|
||||
0xea, 0x32, 0xc7, 0x28, 0x37, 0xb4, 0x66, 0xa5, 0x5b, 0xc0, 0x51, 0x88, 0x0e, 0x00, 0x42, 0xea,
|
||||
0xd2, 0x3e, 0xdb, 0x73, 0xfa, 0x4c, 0x3c, 0x30, 0xf5, 0xf6, 0xd6, 0x6d, 0xeb, 0x70, 0x2c, 0xbf,
|
||||
0xdb, 0x52, 0xa6, 0xf9, 0x1c, 0x4a, 0xfc, 0x7f, 0xd4, 0x86, 0x92, 0xcd, 0x95, 0xa2, 0x8f, 0xbc,
|
||||
0xbe, 0xa0, 0x87, 0xd6, 0x89, 0x2f, 0xf6, 0x48, 0x60, 0xcd, 0x16, 0xe8, 0x4a, 0xe6, 0xa8, 0x91,
|
||||
0xad, 0x5d, 0xfe, 0x25, 0xa0, 0x0c, 0xa5, 0xc6, 0xf7, 0x44, 0xd9, 0xd8, 0xd4, 0x28, 0xe6, 0xce,
|
||||
0xf1, 0x23, 0x58, 0xcb, 0x5c, 0x10, 0x1c, 0x32, 0x0d, 0xdc, 0x18, 0x32, 0x0d, 0x5c, 0x73, 0x0b,
|
||||
0xd6, 0xe7, 0x9d, 0x3f, 0x07, 0x75, 0x02, 0xba, 0x62, 0xea, 0xfc, 0xc1, 0xe9, 0x13, 0x36, 0x94,
|
||||
0x09, 0x8a, 0xdf, 0xef, 0xf8, 0x0d, 0x3e, 0x81, 0xb5, 0x8c, 0xc5, 0xe7, 0x49, 0x76, 0x36, 0x7f,
|
||||
0xbb, 0xaa, 0x6b, 0x6f, 0xae, 0xea, 0xda, 0x9f, 0x57, 0x75, 0xed, 0xe7, 0xeb, 0x7a, 0xe1, 0xcd,
|
||||
0x75, 0xbd, 0xf0, 0xc7, 0x75, 0xbd, 0xf0, 0xe3, 0x92, 0xdf, 0xeb, 0x95, 0x85, 0xf2, 0xf6, 0x3f,
|
||||
0x01, 0x00, 0x00, 0xff, 0xff, 0x24, 0xfa, 0xc4, 0xf2, 0xc9, 0x0d, 0x00, 0x00,
|
||||
0x59, 0xc5, 0x7a, 0x3c, 0x77, 0x68, 0x87, 0xa8, 0x09, 0xeb, 0x2e, 0x09, 0xd9, 0x79, 0x38, 0x21,
|
||||
0x7e, 0x38, 0xf4, 0xd8, 0xb9, 0x63, 0x1b, 0x4b, 0x0d, 0xad, 0x59, 0xc5, 0x35, 0x3e, 0x7f, 0x26,
|
||||
0xa7, 0x0f, 0x6d, 0xf4, 0x09, 0xdc, 0x4d, 0xc4, 0xc6, 0x94, 0x11, 0xa1, 0xb8, 0x2c, 0x14, 0xef,
|
||||
0xc4, 0x0b, 0xc7, 0x94, 0x11, 0xae, 0xfa, 0x19, 0xac, 0xf4, 0xbd, 0x09, 0xa3, 0x13, 0x66, 0x14,
|
||||
0x1b, 0xc5, 0xa6, 0xde, 0xde, 0xb0, 0x64, 0xea, 0x56, 0x14, 0x9a, 0xb5, 0x1b, 0x2d, 0xe3, 0x18,
|
||||
0x87, 0x3e, 0x87, 0x4a, 0x1c, 0x83, 0x51, 0x6a, 0x68, 0x4d, 0xbd, 0x6d, 0xcc, 0x73, 0xe2, 0x60,
|
||||
0x70, 0x82, 0xe4, 0xac, 0x0b, 0xc7, 0xa5, 0xaf, 0xe8, 0x2c, 0x34, 0xca, 0x62, 0xa7, 0x1b, 0xac,
|
||||
0x03, 0xb9, 0x8e, 0x13, 0x24, 0xda, 0x84, 0x2a, 0x73, 0xc6, 0x34, 0x64, 0x64, 0xec, 0x1b, 0x2b,
|
||||
0x0d, 0xad, 0x59, 0xc4, 0xe9, 0x84, 0xf9, 0xb7, 0x06, 0x95, 0x78, 0x2b, 0xd4, 0x81, 0x8a, 0xeb,
|
||||
0x0d, 0xba, 0x94, 0xc8, 0xf2, 0xe9, 0xed, 0x8f, 0x17, 0x85, 0x65, 0x1d, 0x49, 0xe0, 0xfe, 0x84,
|
||||
0x05, 0x33, 0x9c, 0xf0, 0xd0, 0x0e, 0x94, 0x6c, 0xc2, 0x88, 0xa8, 0xab, 0xde, 0xfe, 0x28, 0xe1,
|
||||
0x8b, 0xc3, 0xb6, 0xce, 0xc6, 0x24, 0x60, 0x1d, 0xd7, 0xeb, 0x8f, 0x62, 0xa1, 0x0e, 0x09, 0x29,
|
||||
0x16, 0x94, 0x4c, 0x7e, 0xc5, 0x7f, 0x9b, 0x9f, 0xf9, 0x15, 0xac, 0x65, 0x62, 0x41, 0xeb, 0x50,
|
||||
0x1c, 0xd1, 0x99, 0xa1, 0x89, 0x83, 0xe5, 0x3f, 0xd1, 0x3d, 0x58, 0xbe, 0x24, 0xee, 0x94, 0xca,
|
||||
0xc3, 0x8e, 0x06, 0xcf, 0x97, 0xbe, 0xd4, 0xcc, 0x9f, 0x34, 0xa8, 0xc4, 0x9a, 0x08, 0x41, 0x69,
|
||||
0x48, 0xc2, 0xa1, 0x64, 0x8a, 0xdf, 0xe8, 0x0b, 0x28, 0x8d, 0x78, 0x3c, 0x4b, 0x22, 0x9e, 0xc7,
|
||||
0x8b, 0xe2, 0xb1, 0xf8, 0x9f, 0xa8, 0x14, 0x02, 0x6f, 0x3e, 0x83, 0x6a, 0x32, 0xf5, 0x5e, 0x11,
|
||||
0xfd, 0x55, 0x81, 0x15, 0xd9, 0x2f, 0xe8, 0x1b, 0xd0, 0x7b, 0xbc, 0x56, 0xbb, 0x01, 0x25, 0x8c,
|
||||
0x0a, 0xbe, 0xde, 0x7e, 0x30, 0x1f, 0x43, 0x27, 0x85, 0x74, 0x0b, 0x58, 0x65, 0x24, 0x02, 0xaf,
|
||||
0x7d, 0x9b, 0x0b, 0x2c, 0xbd, 0x43, 0x20, 0x82, 0x24, 0x02, 0xd1, 0x30, 0x11, 0xc0, 0x74, 0xec,
|
||||
0x5d, 0x52, 0xa3, 0xf8, 0x0e, 0x81, 0x08, 0x92, 0x08, 0x44, 0x43, 0xb4, 0x03, 0x55, 0x31, 0x3c,
|
||||
0xe6, 0xf4, 0xa8, 0xd5, 0x3f, 0xc8, 0xa5, 0x1f, 0x47, 0xe4, 0x14, 0x8d, 0xba, 0x50, 0x13, 0x83,
|
||||
0xbd, 0xa9, 0xef, 0x3a, 0x7d, 0x1e, 0xff, 0xb2, 0xe0, 0xd7, 0x73, 0xf9, 0x09, 0xaa, 0x5b, 0xc0,
|
||||
0x73, 0x3c, 0x9e, 0x45, 0x40, 0x5d, 0xc2, 0x1c, 0x6f, 0xf2, 0xd2, 0xb6, 0x8d, 0x76, 0x7e, 0x16,
|
||||
0x38, 0x85, 0xf0, 0x2c, 0x14, 0x06, 0x0f, 0x25, 0x1e, 0xca, 0x4a, 0x6c, 0xe7, 0x87, 0x82, 0x33,
|
||||
0x28, 0x1e, 0x4a, 0x96, 0x87, 0x5e, 0x00, 0xd8, 0x94, 0x11, 0xc7, 0x0d, 0xcf, 0x28, 0x33, 0x6c,
|
||||
0xa1, 0x62, 0xce, 0xab, 0xec, 0x25, 0x88, 0x6e, 0x01, 0x2b, 0x78, 0xd4, 0x81, 0x55, 0x39, 0x7a,
|
||||
0x3d, 0x09, 0x29, 0x33, 0xa8, 0xe0, 0x6f, 0x2e, 0xe0, 0x0b, 0x4c, 0xb7, 0x80, 0x33, 0x1c, 0xf4,
|
||||
0x2d, 0xdc, 0xf1, 0x5c, 0xfb, 0x5c, 0x2d, 0xc8, 0x45, 0xbe, 0xcc, 0x79, 0xb6, 0x22, 0x35, 0xcf,
|
||||
0xb5, 0x95, 0x19, 0x74, 0x0a, 0x48, 0x15, 0x92, 0x85, 0x19, 0x08, 0xad, 0x87, 0x0b, 0xb5, 0x92,
|
||||
0xca, 0xdc, 0x55, 0xe4, 0x64, 0x71, 0xe6, 0x14, 0x65, 0xd7, 0x0e, 0x6f, 0x51, 0x4c, 0x3a, 0x57,
|
||||
0x55, 0x94, 0xfd, 0xbb, 0x0f, 0x6b, 0x5e, 0xef, 0x0d, 0xed, 0xb3, 0xef, 0x67, 0x3e, 0xe5, 0xa9,
|
||||
0x3a, 0x42, 0xec, 0xc3, 0x79, 0xb1, 0x13, 0x15, 0xd4, 0x2d, 0xe0, 0x2c, 0x0b, 0x7d, 0x07, 0xeb,
|
||||
0xe9, 0x84, 0x4c, 0xf4, 0x8d, 0x50, 0x6a, 0x2c, 0x56, 0x4a, 0x32, 0xbd, 0xc1, 0xe5, 0x0d, 0x19,
|
||||
0x32, 0x2f, 0xe0, 0xd6, 0xc1, 0xdb, 0x60, 0x94, 0xdf, 0x90, 0x67, 0x29, 0x84, 0x37, 0xa4, 0xc2,
|
||||
0xe0, 0x79, 0xc5, 0xc3, 0xa8, 0x13, 0xdc, 0xfc, 0xbc, 0xce, 0x54, 0x10, 0xcf, 0x2b, 0xc3, 0xea,
|
||||
0xac, 0x48, 0x1b, 0x32, 0x7f, 0xd1, 0x40, 0x57, 0x7c, 0x04, 0x99, 0x50, 0x61, 0x24, 0x18, 0x50,
|
||||
0x76, 0x68, 0x4b, 0xdb, 0x4a, 0xc6, 0x68, 0x07, 0x2a, 0xbe, 0x17, 0x3a, 0xbc, 0xca, 0xc2, 0x51,
|
||||
0x6a, 0xca, 0xb6, 0x91, 0xcb, 0x0b, 0x25, 0xeb, 0x54, 0x82, 0x70, 0x02, 0x47, 0x4f, 0xa1, 0x2c,
|
||||
0x3e, 0xcd, 0xd8, 0xdf, 0xef, 0xe5, 0x11, 0xb1, 0xc4, 0x98, 0x5f, 0xcb, 0x98, 0xe4, 0x59, 0x5a,
|
||||
0x50, 0x8e, 0x5e, 0x06, 0xd2, 0x8c, 0xef, 0x27, 0xe4, 0x7d, 0x3e, 0x6d, 0x1d, 0xd3, 0x30, 0x24,
|
||||
0x03, 0x8a, 0x25, 0xca, 0x7c, 0x28, 0xe9, 0xb2, 0xe6, 0xeb, 0x50, 0x4c, 0x9f, 0x05, 0xfc, 0xa7,
|
||||
0xc9, 0xa0, 0x9a, 0x58, 0xcf, 0x7f, 0x95, 0xb1, 0xdc, 0xb5, 0x98, 0xee, 0x3a, 0x83, 0x5a, 0xd6,
|
||||
0xb0, 0xfe, 0xbf, 0xad, 0x8f, 0x00, 0x52, 0x6b, 0xc9, 0xb9, 0x95, 0x9e, 0xaa, 0xb7, 0x12, 0x2f,
|
||||
0x70, 0xf4, 0xf6, 0xb2, 0xe2, 0xb7, 0x97, 0xf5, 0x03, 0x5f, 0x95, 0xb7, 0x95, 0xd9, 0x80, 0x55,
|
||||
0xd5, 0x68, 0x6e, 0xea, 0x99, 0xa7, 0xa0, 0xab, 0x86, 0xf1, 0x12, 0xd6, 0xe2, 0x4f, 0xfb, 0xc8,
|
||||
0x99, 0x8c, 0xe2, 0x37, 0xc6, 0x83, 0xb9, 0x84, 0xb0, 0x82, 0xc1, 0x59, 0x86, 0xd9, 0x86, 0xda,
|
||||
0x9c, 0x67, 0x34, 0x52, 0x6f, 0x7f, 0x25, 0x76, 0x17, 0xaf, 0x3e, 0x65, 0xca, 0xdc, 0x85, 0x55,
|
||||
0xd5, 0xc9, 0xd0, 0x36, 0x54, 0xe2, 0x65, 0x99, 0xe8, 0xc6, 0x82, 0x08, 0x70, 0x02, 0x34, 0x7f,
|
||||
0x2f, 0xc2, 0x9d, 0x39, 0xc7, 0xc9, 0x29, 0xe0, 0x33, 0x28, 0x5f, 0x78, 0xc1, 0x98, 0xb0, 0x05,
|
||||
0x67, 0x15, 0x0b, 0x1c, 0x08, 0x50, 0xb7, 0x80, 0x25, 0x1c, 0xdd, 0x83, 0xd2, 0x84, 0x8c, 0xa3,
|
||||
0x0b, 0xb6, 0xda, 0x2d, 0x60, 0x31, 0x42, 0x2f, 0xb8, 0xdd, 0x5f, 0x90, 0xa9, 0xcb, 0x44, 0xe1,
|
||||
0xe5, 0xfd, 0xb9, 0xe0, 0x58, 0x22, 0xa3, 0x4f, 0xd1, 0xe8, 0x04, 0xf4, 0xd4, 0x78, 0x42, 0x79,
|
||||
0x79, 0x7e, 0x7a, 0x8b, 0x8d, 0x2a, 0xfe, 0x15, 0x72, 0xd3, 0x51, 0x14, 0xd0, 0x7d, 0x58, 0x1e,
|
||||
0x4f, 0x5d, 0xe6, 0x18, 0xe5, 0x86, 0xd6, 0xac, 0x74, 0x0b, 0x38, 0x1a, 0xa2, 0x03, 0x80, 0x90,
|
||||
0xba, 0xb4, 0xcf, 0xf6, 0x9c, 0x3e, 0x13, 0x4f, 0x4c, 0xbd, 0xbd, 0x75, 0xdb, 0x3e, 0x1c, 0xcb,
|
||||
0x6f, 0xb7, 0x94, 0x69, 0x3e, 0x87, 0x12, 0xff, 0x8f, 0xda, 0x50, 0xb2, 0xb9, 0x52, 0xf4, 0x99,
|
||||
0xd7, 0x17, 0xd4, 0xd0, 0x3a, 0xf1, 0xc5, 0x19, 0x09, 0xac, 0xd9, 0x02, 0x5d, 0x89, 0x9c, 0x77,
|
||||
0x85, 0x9a, 0xbb, 0xec, 0x0a, 0x65, 0x2a, 0xb5, 0xbe, 0x27, 0xca, 0xc1, 0xa6, 0x56, 0x31, 0xd7,
|
||||
0xc9, 0x8f, 0x60, 0x2d, 0x73, 0x45, 0x70, 0xc8, 0x34, 0x70, 0x63, 0xc8, 0x34, 0x70, 0xcd, 0x2d,
|
||||
0x58, 0x9f, 0xf7, 0xfe, 0x1c, 0xd4, 0x09, 0xe8, 0x8a, 0xad, 0xf3, 0x27, 0xa7, 0x4f, 0xd8, 0x50,
|
||||
0x06, 0x28, 0x7e, 0xbf, 0xe7, 0x57, 0xf8, 0x04, 0xd6, 0x32, 0x26, 0x9f, 0x27, 0xd9, 0xd9, 0xfc,
|
||||
0xed, 0xaa, 0xae, 0xbd, 0xbd, 0xaa, 0x6b, 0x7f, 0x5e, 0xd5, 0xb5, 0x9f, 0xaf, 0xeb, 0x85, 0xb7,
|
||||
0xd7, 0xf5, 0xc2, 0x1f, 0xd7, 0xf5, 0xc2, 0x8f, 0x4b, 0x7e, 0xaf, 0x57, 0x16, 0xca, 0xdb, 0xff,
|
||||
0x04, 0x00, 0x00, 0xff, 0xff, 0x46, 0x3d, 0xb8, 0x26, 0xcb, 0x0d, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *Change) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -2508,11 +2508,11 @@ func (m *ChangeRelationRemove) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if len(m.RelationId) > 0 {
|
||||
for iNdEx := len(m.RelationId) - 1; iNdEx >= 0; iNdEx-- {
|
||||
i -= len(m.RelationId[iNdEx])
|
||||
copy(dAtA[i:], m.RelationId[iNdEx])
|
||||
i = encodeVarintChanges(dAtA, i, uint64(len(m.RelationId[iNdEx])))
|
||||
if len(m.RelationKey) > 0 {
|
||||
for iNdEx := len(m.RelationKey) - 1; iNdEx >= 0; iNdEx-- {
|
||||
i -= len(m.RelationKey[iNdEx])
|
||||
copy(dAtA[i:], m.RelationKey[iNdEx])
|
||||
i = encodeVarintChanges(dAtA, i, uint64(len(m.RelationKey[iNdEx])))
|
||||
i--
|
||||
dAtA[i] = 0xa
|
||||
}
|
||||
|
@ -3389,8 +3389,8 @@ func (m *ChangeRelationRemove) Size() (n int) {
|
|||
}
|
||||
var l int
|
||||
_ = l
|
||||
if len(m.RelationId) > 0 {
|
||||
for _, s := range m.RelationId {
|
||||
if len(m.RelationKey) > 0 {
|
||||
for _, s := range m.RelationKey {
|
||||
l = len(s)
|
||||
n += 1 + l + sovChanges(uint64(l))
|
||||
}
|
||||
|
@ -5817,7 +5817,7 @@ func (m *ChangeRelationRemove) Unmarshal(dAtA []byte) error {
|
|||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field RelationId", wireType)
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field RelationKey", wireType)
|
||||
}
|
||||
var stringLen uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
|
@ -5845,7 +5845,7 @@ func (m *ChangeRelationRemove) Unmarshal(dAtA []byte) error {
|
|||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.RelationId = append(m.RelationId, string(dAtA[iNdEx:postIndex]))
|
||||
m.RelationKey = append(m.RelationKey, string(dAtA[iNdEx:postIndex]))
|
||||
iNdEx = postIndex
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
|
|
1576
pb/commands.pb.go
1576
pb/commands.pb.go
File diff suppressed because it is too large
Load diff
|
@ -102,7 +102,7 @@ message Change {
|
|||
}
|
||||
|
||||
message RelationRemove {
|
||||
repeated string relationId = 1;
|
||||
repeated string relationKey = 1;
|
||||
}
|
||||
|
||||
message _RelationAdd {
|
||||
|
|
|
@ -1657,7 +1657,7 @@ message Rpc {
|
|||
message Add {
|
||||
message Request {
|
||||
string contextId = 1;
|
||||
repeated string relationIds = 2;
|
||||
repeated string relationKeys = 2;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -1680,7 +1680,7 @@ message Rpc {
|
|||
message Delete {
|
||||
message Request {
|
||||
string contextId = 1;
|
||||
string relationId = 2;
|
||||
string relationKey = 2;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -1773,7 +1773,7 @@ message Rpc {
|
|||
message Add {
|
||||
message Request {
|
||||
string objectTypeUrl = 1;
|
||||
repeated string relationIds = 2;
|
||||
repeated string relationKeys = 2;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -1798,7 +1798,7 @@ message Rpc {
|
|||
message Remove {
|
||||
message Request {
|
||||
string objectTypeUrl = 1;
|
||||
string relationId = 2;
|
||||
string relationKey = 2;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -3900,7 +3900,7 @@ message Rpc {
|
|||
message Request {
|
||||
string contextId = 1;
|
||||
string blockId = 2;
|
||||
string relationId = 3;
|
||||
string relationKey = 3;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -4132,7 +4132,7 @@ message Rpc {
|
|||
message Request {
|
||||
string contextId = 1;
|
||||
string blockId = 2; // id of dataview block to add relation
|
||||
repeated string relationIds = 3;
|
||||
repeated string relationKeys = 3;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -4156,7 +4156,7 @@ message Rpc {
|
|||
message Request {
|
||||
string contextId = 1;
|
||||
string blockId = 2; // id of dataview block to add relation
|
||||
repeated string relationIds = 3;
|
||||
repeated string relationKeys = 3;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
|
|
@ -404,7 +404,7 @@ var (
|
|||
Name: "Relation",
|
||||
Readonly: true,
|
||||
Relations: []*model.Relation{relations[RelationKeyId], relations[RelationKeyName], relations[RelationKeyLayout], relations[RelationKeyDescription], relations[RelationKeyCreator], relations[RelationKeyLayoutAlign], relations[RelationKeyIsHidden], relations[RelationKeyIsDraft], relations[RelationKeyWorkspaceId], relations[RelationKeyInternalFlags], relations[RelationKeyMpAddedToLibrary], relations[RelationKeyRelationFormat], relations[RelationKeyRelationMaxCount], relations[RelationKeyRelationDefaultValue], relations[RelationKeyRelationFormatObjectTypes]},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_IndexedRelation, model.SmartBlockType_BundledRelation},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_SubObjectRelation},
|
||||
Url: TypePrefix + "relation",
|
||||
},
|
||||
TypeKeyRelationOption: {
|
||||
|
@ -416,7 +416,7 @@ var (
|
|||
Name: "Relation option",
|
||||
Readonly: true,
|
||||
Relations: []*model.Relation{relations[RelationKeyId], relations[RelationKeyName], relations[RelationKeyDescription], relations[RelationKeyType], relations[RelationKeyCreator], relations[RelationKeyCreatedDate], relations[RelationKeyLayout], relations[RelationKeyLastModifiedBy], relations[RelationKeyIconImage], relations[RelationKeyIconEmoji], relations[RelationKeyCoverId], relations[RelationKeyLastModifiedDate], relations[RelationKeyLastOpenedDate], relations[RelationKeyCoverX], relations[RelationKeyCoverY], relations[RelationKeyCoverScale], relations[RelationKeyFeaturedRelations], relations[RelationKeyCoverType], relations[RelationKeyLayoutAlign], relations[RelationKeyIsHidden], relations[RelationKeyIsArchived], relations[RelationKeyIsFavorite], relations[RelationKeyIsDraft], relations[RelationKeyWorkspaceId], relations[RelationKeyInternalFlags]},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_RelationOption},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_SubObjectRelationOption},
|
||||
Url: TypePrefix + "relationOption",
|
||||
},
|
||||
TypeKeyResume: {
|
||||
|
|
|
@ -17,36 +17,42 @@ type SmartBlockType uint64
|
|||
const (
|
||||
SmartBlockTypeAccountOld = SmartBlockType(model.SmartBlockType_AccountOld)
|
||||
|
||||
SmartBlockTypePage = SmartBlockType(model.SmartBlockType_Page)
|
||||
SmartBlockTypeProfilePage = SmartBlockType(model.SmartBlockType_ProfilePage)
|
||||
SmartBlockTypeHome = SmartBlockType(model.SmartBlockType_Home)
|
||||
SmartBlockTypeArchive = SmartBlockType(model.SmartBlockType_Archive)
|
||||
SmartBlockTypeDatabase = SmartBlockType(model.SmartBlockType_Database)
|
||||
SmartBlockTypeSet = SmartBlockType(model.SmartBlockType_Set)
|
||||
SmartBlockTypeObjectType = SmartBlockType(model.SmartBlockType_STObjectType)
|
||||
SmartBlockTypeFile = SmartBlockType(model.SmartBlockType_File)
|
||||
SmartblockTypeMarketplaceType = SmartBlockType(model.SmartBlockType_MarketplaceType)
|
||||
SmartblockTypeMarketplaceRelation = SmartBlockType(model.SmartBlockType_MarketplaceRelation)
|
||||
SmartblockTypeMarketplaceTemplate = SmartBlockType(model.SmartBlockType_MarketplaceTemplate)
|
||||
SmartBlockTypeTemplate = SmartBlockType(model.SmartBlockType_Template)
|
||||
SmartBlockTypeBundledTemplate = SmartBlockType(model.SmartBlockType_BundledTemplate)
|
||||
SmartBlockTypeBundledRelation = SmartBlockType(model.SmartBlockType_BundledRelation)
|
||||
SmartBlockTypeIndexedRelation = SmartBlockType(model.SmartBlockType_IndexedRelation)
|
||||
SmartBlockTypeBundledObjectType = SmartBlockType(model.SmartBlockType_BundledObjectType)
|
||||
SmartBlockTypeAnytypeProfile = SmartBlockType(model.SmartBlockType_AnytypeProfile)
|
||||
SmartBlockTypeDate = SmartBlockType(model.SmartBlockType_Date)
|
||||
SmartBlockTypeBreadcrumbs = SmartBlockType(model.SmartBlockType_Breadcrumbs)
|
||||
SmartBlockTypeWorkspaceOld = SmartBlockType(model.SmartBlockType_WorkspaceOld) // deprecated thread-based workspaces
|
||||
SmartBlockTypeWorkspace = SmartBlockType(model.SmartBlockType_Workspace)
|
||||
SmartBlockTypePage = SmartBlockType(model.SmartBlockType_Page)
|
||||
SmartBlockTypeProfilePage = SmartBlockType(model.SmartBlockType_ProfilePage)
|
||||
SmartBlockTypeHome = SmartBlockType(model.SmartBlockType_Home)
|
||||
SmartBlockTypeArchive = SmartBlockType(model.SmartBlockType_Archive)
|
||||
SmartBlockTypeDatabase = SmartBlockType(model.SmartBlockType_Database)
|
||||
SmartBlockTypeSet = SmartBlockType(model.SmartBlockType_Set)
|
||||
SmartBlockTypeObjectType = SmartBlockType(model.SmartBlockType_STObjectType)
|
||||
SmartBlockTypeFile = SmartBlockType(model.SmartBlockType_File)
|
||||
SmartblockTypeMarketplaceType = SmartBlockType(model.SmartBlockType_MarketplaceType)
|
||||
SmartblockTypeMarketplaceRelation = SmartBlockType(model.SmartBlockType_MarketplaceRelation)
|
||||
SmartblockTypeMarketplaceTemplate = SmartBlockType(model.SmartBlockType_MarketplaceTemplate)
|
||||
SmartBlockTypeTemplate = SmartBlockType(model.SmartBlockType_Template)
|
||||
SmartBlockTypeBundledTemplate = SmartBlockType(model.SmartBlockType_BundledTemplate)
|
||||
SmartBlockTypeBundledRelation = SmartBlockType(model.SmartBlockType_BundledRelation)
|
||||
SmartBlockTypeSubObjectRelation = SmartBlockType(model.SmartBlockType_SubObjectRelation)
|
||||
SmartBlockTypeSubObjectRelationOption = SmartBlockType(model.SmartBlockType_SubObjectRelationOption)
|
||||
SmartBlockTypeBundledObjectType = SmartBlockType(model.SmartBlockType_BundledObjectType)
|
||||
SmartBlockTypeAnytypeProfile = SmartBlockType(model.SmartBlockType_AnytypeProfile)
|
||||
SmartBlockTypeDate = SmartBlockType(model.SmartBlockType_Date)
|
||||
SmartBlockTypeBreadcrumbs = SmartBlockType(model.SmartBlockType_Breadcrumbs)
|
||||
SmartBlockTypeWorkspaceOld = SmartBlockType(model.SmartBlockType_WorkspaceOld) // deprecated thread-based workspaces
|
||||
SmartBlockTypeWorkspace = SmartBlockType(model.SmartBlockType_Workspace)
|
||||
)
|
||||
|
||||
func SmartBlockTypeFromID(id string) (SmartBlockType, error) {
|
||||
if strings.HasPrefix(id, addr.BundledRelationURLPrefix) {
|
||||
return SmartBlockTypeBundledRelation, nil
|
||||
}
|
||||
if strings.HasPrefix(id, addr.CustomRelationURLPrefix) {
|
||||
return SmartBlockTypeIndexedRelation, nil
|
||||
if strings.HasPrefix(id, addr.RelationKeyToIdPrefix) {
|
||||
return SmartBlockTypeSubObjectRelation, nil
|
||||
}
|
||||
// workaround for options that have no prefix
|
||||
if bson.IsObjectIdHex(id) {
|
||||
return SmartBlockTypeSubObjectRelationOption, nil
|
||||
}
|
||||
|
||||
if strings.HasPrefix(id, addr.BundledObjectTypeURLPrefix) {
|
||||
return SmartBlockTypeBundledObjectType, nil
|
||||
}
|
||||
|
@ -60,9 +66,6 @@ func SmartBlockTypeFromID(id string) (SmartBlockType, error) {
|
|||
}
|
||||
return SmartBlockType(sbt), nil
|
||||
}
|
||||
if bson.IsObjectIdHex(id) {
|
||||
return SmartBlockTypePage, nil
|
||||
}
|
||||
if strings.HasPrefix(id, addr.DatePrefix) {
|
||||
return SmartBlockTypeDate, nil
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
RelationKeyToIdPrefix = ":rel:"
|
||||
|
||||
BundledRelationURLPrefix = "_br"
|
||||
BundledObjectTypeURLPrefix = "_ot"
|
||||
CustomRelationURLPrefix = "_ir"
|
||||
|
|
|
@ -26,29 +26,29 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
type SmartBlockType int32
|
||||
|
||||
const (
|
||||
SmartBlockType_AccountOld SmartBlockType = 0
|
||||
SmartBlockType_Breadcrumbs SmartBlockType = 1
|
||||
SmartBlockType_Page SmartBlockType = 16
|
||||
SmartBlockType_ProfilePage SmartBlockType = 17
|
||||
SmartBlockType_Home SmartBlockType = 32
|
||||
SmartBlockType_Archive SmartBlockType = 48
|
||||
SmartBlockType_Database SmartBlockType = 64
|
||||
SmartBlockType_Set SmartBlockType = 65
|
||||
SmartBlockType_STObjectType SmartBlockType = 96
|
||||
SmartBlockType_File SmartBlockType = 256
|
||||
SmartBlockType_Template SmartBlockType = 288
|
||||
SmartBlockType_BundledTemplate SmartBlockType = 289
|
||||
SmartBlockType_MarketplaceType SmartBlockType = 272
|
||||
SmartBlockType_MarketplaceRelation SmartBlockType = 273
|
||||
SmartBlockType_MarketplaceTemplate SmartBlockType = 274
|
||||
SmartBlockType_BundledRelation SmartBlockType = 512
|
||||
SmartBlockType_IndexedRelation SmartBlockType = 513
|
||||
SmartBlockType_BundledObjectType SmartBlockType = 514
|
||||
SmartBlockType_AnytypeProfile SmartBlockType = 515
|
||||
SmartBlockType_Date SmartBlockType = 516
|
||||
SmartBlockType_WorkspaceOld SmartBlockType = 517
|
||||
SmartBlockType_Workspace SmartBlockType = 518
|
||||
SmartBlockType_RelationOption SmartBlockType = 519
|
||||
SmartBlockType_AccountOld SmartBlockType = 0
|
||||
SmartBlockType_Breadcrumbs SmartBlockType = 1
|
||||
SmartBlockType_Page SmartBlockType = 16
|
||||
SmartBlockType_ProfilePage SmartBlockType = 17
|
||||
SmartBlockType_Home SmartBlockType = 32
|
||||
SmartBlockType_Archive SmartBlockType = 48
|
||||
SmartBlockType_Database SmartBlockType = 64
|
||||
SmartBlockType_Set SmartBlockType = 65
|
||||
SmartBlockType_STObjectType SmartBlockType = 96
|
||||
SmartBlockType_File SmartBlockType = 256
|
||||
SmartBlockType_Template SmartBlockType = 288
|
||||
SmartBlockType_BundledTemplate SmartBlockType = 289
|
||||
SmartBlockType_MarketplaceType SmartBlockType = 272
|
||||
SmartBlockType_MarketplaceRelation SmartBlockType = 273
|
||||
SmartBlockType_MarketplaceTemplate SmartBlockType = 274
|
||||
SmartBlockType_BundledRelation SmartBlockType = 512
|
||||
SmartBlockType_SubObjectRelation SmartBlockType = 513
|
||||
SmartBlockType_BundledObjectType SmartBlockType = 514
|
||||
SmartBlockType_AnytypeProfile SmartBlockType = 515
|
||||
SmartBlockType_Date SmartBlockType = 516
|
||||
SmartBlockType_WorkspaceOld SmartBlockType = 517
|
||||
SmartBlockType_Workspace SmartBlockType = 518
|
||||
SmartBlockType_SubObjectRelationOption SmartBlockType = 519
|
||||
)
|
||||
|
||||
var SmartBlockType_name = map[int32]string{
|
||||
|
@ -68,39 +68,39 @@ var SmartBlockType_name = map[int32]string{
|
|||
273: "MarketplaceRelation",
|
||||
274: "MarketplaceTemplate",
|
||||
512: "BundledRelation",
|
||||
513: "IndexedRelation",
|
||||
513: "SubObjectRelation",
|
||||
514: "BundledObjectType",
|
||||
515: "AnytypeProfile",
|
||||
516: "Date",
|
||||
517: "WorkspaceOld",
|
||||
518: "Workspace",
|
||||
519: "RelationOption",
|
||||
519: "SubObjectRelationOption",
|
||||
}
|
||||
|
||||
var SmartBlockType_value = map[string]int32{
|
||||
"AccountOld": 0,
|
||||
"Breadcrumbs": 1,
|
||||
"Page": 16,
|
||||
"ProfilePage": 17,
|
||||
"Home": 32,
|
||||
"Archive": 48,
|
||||
"Database": 64,
|
||||
"Set": 65,
|
||||
"STObjectType": 96,
|
||||
"File": 256,
|
||||
"Template": 288,
|
||||
"BundledTemplate": 289,
|
||||
"MarketplaceType": 272,
|
||||
"MarketplaceRelation": 273,
|
||||
"MarketplaceTemplate": 274,
|
||||
"BundledRelation": 512,
|
||||
"IndexedRelation": 513,
|
||||
"BundledObjectType": 514,
|
||||
"AnytypeProfile": 515,
|
||||
"Date": 516,
|
||||
"WorkspaceOld": 517,
|
||||
"Workspace": 518,
|
||||
"RelationOption": 519,
|
||||
"AccountOld": 0,
|
||||
"Breadcrumbs": 1,
|
||||
"Page": 16,
|
||||
"ProfilePage": 17,
|
||||
"Home": 32,
|
||||
"Archive": 48,
|
||||
"Database": 64,
|
||||
"Set": 65,
|
||||
"STObjectType": 96,
|
||||
"File": 256,
|
||||
"Template": 288,
|
||||
"BundledTemplate": 289,
|
||||
"MarketplaceType": 272,
|
||||
"MarketplaceRelation": 273,
|
||||
"MarketplaceTemplate": 274,
|
||||
"BundledRelation": 512,
|
||||
"SubObjectRelation": 513,
|
||||
"BundledObjectType": 514,
|
||||
"AnytypeProfile": 515,
|
||||
"Date": 516,
|
||||
"WorkspaceOld": 517,
|
||||
"Workspace": 518,
|
||||
"SubObjectRelationOption": 519,
|
||||
}
|
||||
|
||||
func (x SmartBlockType) String() string {
|
||||
|
@ -5002,8 +5002,8 @@ func (m *RelationOption) GetScope() RelationOptionScope {
|
|||
}
|
||||
|
||||
type RelationLink struct {
|
||||
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||
Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
|
||||
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
|
||||
Format RelationFormat `protobuf:"varint,2,opt,name=format,proto3,enum=anytype.model.RelationFormat" json:"format,omitempty"`
|
||||
}
|
||||
|
||||
func (m *RelationLink) Reset() { *m = RelationLink{} }
|
||||
|
@ -5039,13 +5039,6 @@ func (m *RelationLink) XXX_DiscardUnknown() {
|
|||
|
||||
var xxx_messageInfo_RelationLink proto.InternalMessageInfo
|
||||
|
||||
func (m *RelationLink) GetId() string {
|
||||
if m != nil {
|
||||
return m.Id
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *RelationLink) GetKey() string {
|
||||
if m != nil {
|
||||
return m.Key
|
||||
|
@ -5053,6 +5046,13 @@ func (m *RelationLink) GetKey() string {
|
|||
return ""
|
||||
}
|
||||
|
||||
func (m *RelationLink) GetFormat() RelationFormat {
|
||||
if m != nil {
|
||||
return m.Format
|
||||
}
|
||||
return RelationFormat_longtext
|
||||
}
|
||||
|
||||
type Relations struct {
|
||||
Relations []*Relation `protobuf:"bytes,1,rep,name=relations,proto3" json:"relations,omitempty"`
|
||||
}
|
||||
|
@ -5553,322 +5553,322 @@ func init() {
|
|||
}
|
||||
|
||||
var fileDescriptor_98a910b73321e591 = []byte{
|
||||
// 5031 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x3b, 0x4b, 0x8c, 0x24, 0x57,
|
||||
0x52, 0xf5, 0xff, 0x44, 0x75, 0xf7, 0xbc, 0x7e, 0xd3, 0x9e, 0x29, 0x72, 0xbc, 0xc3, 0x6c, 0xe2,
|
||||
0x9d, 0x9d, 0x1d, 0x7b, 0x7b, 0xc6, 0x33, 0x9e, 0xf5, 0x07, 0xec, 0x71, 0x7f, 0x66, 0xdc, 0xad,
|
||||
0xf9, 0x74, 0x3b, 0xab, 0xa7, 0xcd, 0x5a, 0x80, 0x9c, 0x55, 0xf9, 0xba, 0x2a, 0xdd, 0x59, 0xf9,
|
||||
0xca, 0x99, 0xaf, 0x7a, 0xba, 0x57, 0x42, 0x5a, 0x3e, 0x0b, 0x17, 0x24, 0xcc, 0x4a, 0x88, 0x13,
|
||||
0x62, 0xe1, 0xc2, 0x65, 0xaf, 0x88, 0x8f, 0x90, 0x40, 0x9c, 0x90, 0x90, 0x90, 0x11, 0x17, 0x04,
|
||||
0x07, 0x90, 0x7d, 0xe4, 0xc6, 0x99, 0x03, 0x8a, 0x78, 0x2f, 0xb3, 0xb2, 0x3e, 0xdd, 0x5d, 0x63,
|
||||
0xf6, 0x54, 0x19, 0x91, 0x11, 0x91, 0xf1, 0xde, 0x8b, 0x88, 0x17, 0x11, 0xef, 0x15, 0xbc, 0x32,
|
||||
0x38, 0xec, 0xde, 0x0a, 0xfc, 0xf6, 0xad, 0x41, 0xfb, 0x56, 0x5f, 0x7a, 0x22, 0xb8, 0x35, 0x88,
|
||||
// 5032 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x3b, 0x5b, 0x8c, 0x24, 0x47,
|
||||
0x52, 0xfd, 0x7e, 0x44, 0xcf, 0xcc, 0xe6, 0xe4, 0x8e, 0x77, 0x9b, 0xda, 0xbd, 0x65, 0xaf, 0xf0,
|
||||
0xed, 0xed, 0xad, 0x7d, 0xb3, 0xf6, 0xae, 0xf7, 0xfc, 0x00, 0x7b, 0x3d, 0x8f, 0x5d, 0xcf, 0x68,
|
||||
0x1f, 0x33, 0xae, 0x9e, 0x1d, 0x73, 0x16, 0x20, 0x57, 0x77, 0xe5, 0x74, 0x97, 0xa7, 0xba, 0xb2,
|
||||
0x5d, 0x95, 0x3d, 0x3b, 0x73, 0x12, 0xd2, 0xf1, 0x38, 0xf8, 0x41, 0xc2, 0x9c, 0x84, 0xf8, 0x42,
|
||||
0x1c, 0x5f, 0xfc, 0x1c, 0x9f, 0x88, 0x87, 0x90, 0x40, 0x7c, 0x21, 0x21, 0x21, 0x23, 0x7e, 0x10,
|
||||
0x7c, 0x80, 0xec, 0x4f, 0xfe, 0xf8, 0xe6, 0x03, 0x45, 0x64, 0x56, 0x75, 0xf5, 0x63, 0x66, 0x7a,
|
||||
0xcd, 0x7d, 0x75, 0x45, 0x64, 0x44, 0x64, 0x64, 0x66, 0x64, 0x64, 0x44, 0x64, 0x36, 0xbc, 0x3c,
|
||||
0x38, 0xec, 0xde, 0x0e, 0xfc, 0xf6, 0xed, 0x41, 0xfb, 0x76, 0x5f, 0x7a, 0x22, 0xb8, 0x3d, 0x88,
|
||||
0xa4, 0x92, 0xb1, 0x06, 0xe2, 0x55, 0x82, 0xf8, 0xa2, 0x1b, 0x9e, 0xa8, 0x93, 0x81, 0x58, 0x25,
|
||||
0xac, 0xf5, 0x72, 0x57, 0xca, 0x6e, 0x20, 0x34, 0x69, 0x7b, 0x78, 0x70, 0x2b, 0x56, 0xd1, 0xb0,
|
||||
0xa3, 0x34, 0xb1, 0xfd, 0xfb, 0x45, 0xb8, 0xd4, 0xea, 0xbb, 0x91, 0x5a, 0x0f, 0x64, 0xe7, 0xb0,
|
||||
0x15, 0xba, 0x83, 0xb8, 0x27, 0xd5, 0xba, 0x1b, 0x0b, 0xfe, 0x1a, 0x54, 0xda, 0x88, 0x8c, 0x9b,
|
||||
0xf9, 0x6b, 0xc5, 0x1b, 0x8d, 0x3b, 0x2b, 0xab, 0x63, 0x82, 0x57, 0x89, 0xc3, 0x31, 0x34, 0xfc,
|
||||
0x75, 0xa8, 0x7a, 0x42, 0xb9, 0x7e, 0x10, 0x37, 0x0b, 0xd7, 0xf2, 0x37, 0x1a, 0x77, 0x2e, 0xaf,
|
||||
0xea, 0x0f, 0xaf, 0x26, 0x1f, 0x5e, 0x6d, 0xd1, 0x87, 0x9d, 0x84, 0x8e, 0xdf, 0x85, 0xda, 0x81,
|
||||
0x1f, 0x88, 0x47, 0xe2, 0x24, 0x6e, 0x16, 0xcf, 0xe6, 0x49, 0x09, 0xf9, 0x7d, 0x58, 0x12, 0xc7,
|
||||
0x2a, 0x72, 0x1d, 0x11, 0xb8, 0xca, 0x97, 0x61, 0xdc, 0x2c, 0x91, 0x76, 0x97, 0x27, 0xb4, 0x4b,
|
||||
0xde, 0x3b, 0x13, 0xe4, 0xfc, 0x1a, 0x34, 0x64, 0xfb, 0x53, 0xd1, 0x51, 0x7b, 0x27, 0x03, 0x11,
|
||||
0x37, 0xcb, 0xd7, 0x8a, 0x37, 0xea, 0x4e, 0x16, 0xc5, 0xdf, 0x86, 0x46, 0x47, 0x06, 0x81, 0xe8,
|
||||
0x68, 0xf9, 0x95, 0xb3, 0x55, 0xcb, 0xd2, 0xf2, 0x35, 0x58, 0x8c, 0xcc, 0x97, 0x1e, 0xfb, 0xe1,
|
||||
0x61, 0xdc, 0xac, 0x92, 0x72, 0x57, 0x4e, 0x51, 0x0e, 0x69, 0x9c, 0x71, 0x0e, 0xfb, 0x4f, 0xde,
|
||||
0x83, 0x32, 0x4d, 0x2d, 0x5f, 0x82, 0x82, 0xef, 0x35, 0xf3, 0xd7, 0xf2, 0x37, 0xea, 0x4e, 0xc1,
|
||||
0xf7, 0xf8, 0x2d, 0xa8, 0x1c, 0xf8, 0x22, 0xf0, 0xce, 0x9d, 0x61, 0x43, 0xc6, 0x1f, 0xc0, 0x42,
|
||||
0x24, 0x62, 0x15, 0xf9, 0x66, 0x24, 0x7a, 0x92, 0xbf, 0x39, 0x6b, 0x1d, 0x57, 0x9d, 0x0c, 0xa1,
|
||||
0x33, 0xc6, 0x86, 0x33, 0xd6, 0xe9, 0xf9, 0x81, 0x17, 0x89, 0x70, 0xdb, 0xd3, 0xf3, 0x5d, 0x77,
|
||||
0xb2, 0x28, 0x7e, 0x03, 0x2e, 0xb4, 0xdd, 0xce, 0x61, 0x37, 0x92, 0xc3, 0xd0, 0xdb, 0x90, 0x81,
|
||||
0x8c, 0x9a, 0x65, 0x52, 0x7b, 0x12, 0xcd, 0x6f, 0x43, 0xd9, 0x0d, 0xfc, 0x6e, 0x48, 0xb3, 0xba,
|
||||
0x74, 0xc7, 0x9a, 0xa9, 0xcb, 0x1a, 0x52, 0x38, 0x9a, 0x90, 0x6f, 0xc1, 0xe2, 0x91, 0x88, 0x94,
|
||||
0xdf, 0x71, 0x03, 0xc2, 0x37, 0xab, 0xc4, 0x69, 0xcf, 0xe4, 0xdc, 0xcf, 0x52, 0x3a, 0xe3, 0x8c,
|
||||
0x7c, 0x1b, 0x20, 0x46, 0x53, 0x27, 0x8b, 0x6d, 0x36, 0x68, 0x32, 0xbe, 0x3d, 0x53, 0xcc, 0x86,
|
||||
0x0c, 0x95, 0x08, 0xd5, 0x6a, 0x2b, 0x25, 0xdf, 0xca, 0x39, 0x19, 0x66, 0xfe, 0x26, 0x94, 0x94,
|
||||
0x38, 0x56, 0xcd, 0xa5, 0x33, 0x66, 0x34, 0x11, 0xb2, 0x27, 0x8e, 0xd5, 0x56, 0xce, 0x21, 0x06,
|
||||
0x64, 0x44, 0x53, 0x6e, 0x5e, 0x98, 0x83, 0xf1, 0xa1, 0x1f, 0x08, 0x64, 0x44, 0x06, 0xfe, 0x2e,
|
||||
0x54, 0x02, 0xf7, 0x44, 0x0e, 0x55, 0x93, 0x11, 0xeb, 0x2f, 0x9c, 0xc9, 0xfa, 0x98, 0x48, 0xb7,
|
||||
0x72, 0x8e, 0x61, 0xe2, 0x6f, 0x40, 0xd1, 0xf3, 0x8f, 0x9a, 0xcb, 0xc4, 0x7b, 0xed, 0x4c, 0xde,
|
||||
0x4d, 0xff, 0x68, 0x2b, 0xe7, 0x20, 0x39, 0xdf, 0x80, 0x5a, 0x5b, 0xca, 0xc3, 0xbe, 0x1b, 0x1d,
|
||||
0x36, 0x39, 0xb1, 0x7e, 0xeb, 0x4c, 0xd6, 0x75, 0x43, 0xbc, 0x95, 0x73, 0x52, 0x46, 0x1c, 0xb2,
|
||||
0xdf, 0x91, 0x61, 0xf3, 0xe2, 0x1c, 0x43, 0xde, 0xee, 0xc8, 0x10, 0x87, 0x8c, 0x0c, 0xc8, 0x18,
|
||||
0xf8, 0xe1, 0x61, 0x73, 0x65, 0x0e, 0x46, 0xf4, 0x1d, 0x64, 0x44, 0x06, 0x54, 0xdb, 0x73, 0x95,
|
||||
0x7b, 0xe4, 0x8b, 0xe7, 0xcd, 0x97, 0xe6, 0x50, 0x7b, 0xd3, 0x10, 0xa3, 0xda, 0x09, 0x23, 0x0a,
|
||||
0x49, 0x1c, 0xb3, 0x79, 0x69, 0x0e, 0x21, 0x89, 0x4f, 0xa3, 0x90, 0x84, 0x91, 0xff, 0x1a, 0x2c,
|
||||
0x1f, 0x08, 0x57, 0x0d, 0x23, 0xe1, 0x8d, 0x02, 0xd6, 0x65, 0x92, 0xb6, 0x7a, 0xf6, 0xda, 0x4f,
|
||||
0x72, 0x6d, 0xe5, 0x9c, 0x69, 0x51, 0xfc, 0x1d, 0x28, 0x07, 0xae, 0x12, 0xc7, 0xcd, 0x26, 0xc9,
|
||||
0xb4, 0xcf, 0x31, 0x0a, 0x25, 0x8e, 0xb7, 0x72, 0x8e, 0x66, 0xe1, 0xbf, 0x0c, 0x17, 0x94, 0xdb,
|
||||
0x0e, 0xc4, 0xce, 0x81, 0x21, 0x88, 0x9b, 0x3f, 0x47, 0x52, 0x5e, 0x3b, 0xdb, 0x9c, 0xc7, 0x79,
|
||||
0xb6, 0x72, 0xce, 0xa4, 0x18, 0xd4, 0x8a, 0x50, 0x4d, 0x6b, 0x0e, 0xad, 0x48, 0x1e, 0x6a, 0x45,
|
||||
0x2c, 0xfc, 0x31, 0x34, 0xe8, 0x61, 0x43, 0x06, 0xc3, 0x7e, 0xd8, 0xbc, 0x42, 0x12, 0x6e, 0x9c,
|
||||
0x2f, 0x41, 0xd3, 0x6f, 0xe5, 0x9c, 0x2c, 0x3b, 0x2e, 0x22, 0x81, 0x8e, 0x7c, 0xde, 0x7c, 0x79,
|
||||
0x8e, 0x45, 0xdc, 0x33, 0xc4, 0xb8, 0x88, 0x09, 0xa3, 0xf5, 0x03, 0x58, 0xc8, 0x46, 0x47, 0xce,
|
||||
0xa1, 0x14, 0x09, 0x57, 0x47, 0xe6, 0x9a, 0x43, 0xcf, 0x88, 0x13, 0x9e, 0xaf, 0x28, 0x32, 0xd7,
|
||||
0x1c, 0x7a, 0xe6, 0x97, 0xa0, 0x12, 0x89, 0xbe, 0x3c, 0x12, 0x14, 0x78, 0x6b, 0x8e, 0x81, 0x90,
|
||||
0xd6, 0x8b, 0xdc, 0x6e, 0xb3, 0xa4, 0x69, 0xf1, 0x19, 0x69, 0xbd, 0x48, 0x0e, 0x76, 0x42, 0x0a,
|
||||
0x9c, 0x35, 0xc7, 0x40, 0xd6, 0xef, 0xdd, 0x86, 0xaa, 0x51, 0xce, 0xfa, 0xe3, 0x3c, 0x54, 0xb4,
|
||||
0x63, 0xf3, 0xfb, 0x50, 0x8e, 0xd5, 0x49, 0x20, 0x48, 0x87, 0xa5, 0x3b, 0xdf, 0x99, 0x23, 0x18,
|
||||
0xac, 0xb6, 0x90, 0xc1, 0xd1, 0x7c, 0xb6, 0x03, 0x65, 0x82, 0x79, 0x15, 0x8a, 0x8e, 0x7c, 0xce,
|
||||
0x72, 0x1c, 0xa0, 0xa2, 0x27, 0x8d, 0xe5, 0x11, 0xb9, 0xe9, 0x1f, 0xb1, 0x02, 0x22, 0xb7, 0x84,
|
||||
0xeb, 0x89, 0x88, 0x15, 0xf9, 0x22, 0xd4, 0x93, 0xe9, 0x89, 0x59, 0x89, 0x33, 0x58, 0xc8, 0x4c,
|
||||
0x7c, 0xcc, 0xca, 0xd6, 0xff, 0x94, 0xa0, 0x84, 0x7e, 0xc8, 0x5f, 0x81, 0x45, 0xe5, 0x46, 0x5d,
|
||||
0xa1, 0x93, 0x8a, 0xed, 0x64, 0x0f, 0x1b, 0x47, 0xf2, 0x77, 0x93, 0x31, 0x14, 0x68, 0x0c, 0xdf,
|
||||
0x3e, 0xd7, 0xbf, 0xc7, 0x46, 0x90, 0xd9, 0x0d, 0x8b, 0xf3, 0xed, 0x86, 0x0f, 0xa1, 0x86, 0x61,
|
||||
0xa5, 0xe5, 0xff, 0x40, 0xd0, 0xd4, 0x2f, 0xdd, 0xb9, 0x79, 0xfe, 0x27, 0xb7, 0x0d, 0x87, 0x93,
|
||||
0xf2, 0xf2, 0x6d, 0xa8, 0x77, 0xdc, 0xc8, 0x23, 0x65, 0x68, 0xb5, 0x96, 0xee, 0xbc, 0x7a, 0xbe,
|
||||
0xa0, 0x8d, 0x84, 0xc5, 0x19, 0x71, 0xf3, 0x1d, 0x68, 0x78, 0x22, 0xee, 0x44, 0xfe, 0x80, 0xc2,
|
||||
0x8c, 0xde, 0x13, 0xbf, 0x7b, 0xbe, 0xb0, 0xcd, 0x11, 0x93, 0x93, 0x95, 0xc0, 0x5f, 0x86, 0x7a,
|
||||
0x94, 0xc6, 0x99, 0x2a, 0x6d, 0xd4, 0x23, 0x84, 0xfd, 0x26, 0xd4, 0x92, 0xf1, 0xf0, 0x05, 0xa8,
|
||||
0xe1, 0xef, 0x53, 0x19, 0x0a, 0x96, 0xc3, 0xb5, 0x45, 0xa8, 0xd5, 0x77, 0x83, 0x80, 0xe5, 0xf9,
|
||||
0x12, 0x00, 0x82, 0x4f, 0x84, 0xe7, 0x0f, 0xfb, 0xac, 0x60, 0xff, 0x62, 0x62, 0x2d, 0x35, 0x28,
|
||||
0xed, 0xba, 0x5d, 0xe4, 0x58, 0x80, 0x5a, 0x12, 0x36, 0x59, 0x1e, 0xf9, 0x37, 0xdd, 0xb8, 0xd7,
|
||||
0x96, 0x6e, 0xe4, 0xb1, 0x02, 0x6f, 0x40, 0x75, 0x2d, 0xea, 0xf4, 0xfc, 0x23, 0xc1, 0x8a, 0xf6,
|
||||
0x2d, 0x68, 0x64, 0xf4, 0x45, 0x11, 0xe6, 0xa3, 0x75, 0x28, 0xaf, 0x79, 0x9e, 0xf0, 0x58, 0x1e,
|
||||
0x19, 0xcc, 0x00, 0x59, 0xc1, 0x7e, 0x15, 0xea, 0xe9, 0x6c, 0x21, 0x39, 0x6e, 0xa0, 0x2c, 0x87,
|
||||
0x4f, 0x88, 0x66, 0x79, 0xb4, 0xca, 0xed, 0x30, 0xf0, 0x43, 0xc1, 0x0a, 0xd6, 0x27, 0x64, 0xaa,
|
||||
0xfc, 0x97, 0xc6, 0x1d, 0xe2, 0xfa, 0x79, 0x3b, 0xdc, 0xb8, 0x37, 0x5c, 0xc9, 0x8c, 0xef, 0xb1,
|
||||
0x4f, 0xca, 0xd5, 0xa0, 0xb4, 0x29, 0x55, 0xcc, 0xf2, 0xd6, 0x7f, 0x17, 0xa0, 0x96, 0x6c, 0x6c,
|
||||
0x9c, 0x41, 0x71, 0x18, 0x05, 0xc6, 0xa0, 0xf1, 0x91, 0xaf, 0x40, 0x59, 0xf9, 0xca, 0x98, 0x71,
|
||||
0xdd, 0xd1, 0x00, 0xe6, 0x4c, 0xd9, 0x95, 0x2d, 0xd2, 0xbb, 0xc9, 0xa5, 0xf2, 0xfb, 0x6e, 0x57,
|
||||
0x6c, 0xb9, 0x71, 0x8f, 0xec, 0xb1, 0xee, 0x8c, 0x10, 0xc8, 0x7f, 0xe0, 0x1e, 0xa1, 0xcd, 0xd1,
|
||||
0x7b, 0x9d, 0x4d, 0x65, 0x51, 0xfc, 0x2e, 0x94, 0x70, 0x80, 0xc6, 0x68, 0x7e, 0x7e, 0x62, 0xc0,
|
||||
0x68, 0x26, 0xbb, 0x91, 0xc0, 0xe5, 0x59, 0xc5, 0xac, 0xd6, 0x21, 0x62, 0x7e, 0x1d, 0x96, 0xb4,
|
||||
0x13, 0xee, 0x50, 0xbe, 0xbb, 0xed, 0x51, 0x36, 0x55, 0x77, 0x26, 0xb0, 0x7c, 0x0d, 0xa7, 0xd3,
|
||||
0x55, 0xa2, 0x59, 0x9b, 0xc3, 0xbe, 0x93, 0xc9, 0x59, 0x6d, 0x21, 0x8b, 0xa3, 0x39, 0xed, 0x7b,
|
||||
0x38, 0xa7, 0xae, 0x12, 0xb8, 0xcc, 0x0f, 0xfa, 0x03, 0x75, 0xa2, 0x8d, 0xe6, 0xa1, 0x50, 0x9d,
|
||||
0x9e, 0x1f, 0x76, 0x59, 0x5e, 0x4f, 0x31, 0x2e, 0x22, 0x91, 0x44, 0x91, 0x8c, 0x58, 0xd1, 0xb2,
|
||||
0xa0, 0x84, 0x36, 0x8a, 0x41, 0x32, 0x74, 0xfb, 0xc2, 0xcc, 0x34, 0x3d, 0x5b, 0x17, 0x61, 0x79,
|
||||
0x6a, 0x5f, 0xb4, 0xfe, 0xba, 0xa2, 0x2d, 0x04, 0x39, 0x28, 0x27, 0x33, 0x1c, 0x94, 0x6e, 0xbd,
|
||||
0x50, 0x8c, 0x41, 0x29, 0xe3, 0x31, 0xe6, 0x5d, 0x28, 0xe3, 0xc0, 0x92, 0x10, 0x33, 0x07, 0xfb,
|
||||
0x13, 0x24, 0x77, 0x34, 0x17, 0x6f, 0x42, 0xb5, 0xd3, 0x13, 0x9d, 0x43, 0xe1, 0x99, 0x58, 0x9f,
|
||||
0x80, 0x68, 0x34, 0x9d, 0x4c, 0x9a, 0xac, 0x01, 0x32, 0x89, 0x8e, 0x0c, 0x1f, 0xf4, 0xe5, 0xa7,
|
||||
0x3e, 0xad, 0x2b, 0x9a, 0x44, 0x82, 0x48, 0xde, 0x6e, 0xa3, 0x8d, 0x98, 0x65, 0x1b, 0x21, 0xac,
|
||||
0x07, 0x50, 0xa6, 0x6f, 0xa3, 0x27, 0x68, 0x9d, 0x75, 0xd5, 0x76, 0x7d, 0x3e, 0x9d, 0x8d, 0xca,
|
||||
0xd6, 0x4f, 0x0b, 0x50, 0x42, 0x98, 0xdf, 0x84, 0x72, 0xe4, 0x86, 0x5d, 0xbd, 0x00, 0xd3, 0xc5,
|
||||
0x9f, 0x83, 0xef, 0x1c, 0x4d, 0xc2, 0xef, 0x1b, 0x53, 0x2c, 0xcc, 0x61, 0x2c, 0xe9, 0x17, 0xb3,
|
||||
0x66, 0xb9, 0x02, 0xe5, 0x81, 0x1b, 0xb9, 0x7d, 0xe3, 0x27, 0x1a, 0xb0, 0x7f, 0x92, 0x87, 0x12,
|
||||
0x12, 0xf1, 0x65, 0x58, 0x6c, 0xa9, 0xc8, 0x3f, 0x14, 0xaa, 0x17, 0xc9, 0x61, 0xb7, 0xa7, 0x2d,
|
||||
0xe9, 0x91, 0x38, 0xd1, 0xf1, 0x46, 0x07, 0x04, 0xe5, 0x06, 0x7e, 0x87, 0x15, 0xd0, 0xaa, 0xd6,
|
||||
0x65, 0xe0, 0xb1, 0x22, 0xbf, 0x00, 0x8d, 0x67, 0xa1, 0x27, 0xa2, 0xb8, 0x23, 0x23, 0xe1, 0xb1,
|
||||
0x92, 0xf1, 0xee, 0x43, 0x56, 0xa6, 0xbd, 0x4c, 0x1c, 0x2b, 0xaa, 0x49, 0x58, 0x85, 0x5f, 0x84,
|
||||
0x0b, 0xeb, 0xe3, 0x85, 0x0a, 0xab, 0x62, 0x4c, 0x7a, 0x22, 0x42, 0x34, 0x32, 0x56, 0xd3, 0x46,
|
||||
0x2c, 0x3f, 0xf5, 0x59, 0x1d, 0x3f, 0xa6, 0xfd, 0x84, 0x81, 0xfd, 0xb7, 0xf9, 0x24, 0x72, 0x2c,
|
||||
0x42, 0x7d, 0xd7, 0x8d, 0xdc, 0x6e, 0xe4, 0x0e, 0x50, 0xbf, 0x06, 0x54, 0xf5, 0xc6, 0xf9, 0xba,
|
||||
0x8e, 0x6e, 0x1a, 0xb8, 0xa3, 0x63, 0xa3, 0x06, 0xee, 0xb2, 0xe2, 0x08, 0x78, 0x83, 0x95, 0xf0,
|
||||
0x1b, 0x1f, 0x0e, 0xa5, 0x12, 0xac, 0x4c, 0xb1, 0x4e, 0x7a, 0x82, 0x55, 0x10, 0xb9, 0x87, 0x11,
|
||||
0x85, 0x55, 0x71, 0xcc, 0x1b, 0x68, 0x3f, 0x6d, 0x79, 0xcc, 0x6a, 0xa8, 0x06, 0x4e, 0xa3, 0xf0,
|
||||
0x58, 0x1d, 0xdf, 0x3c, 0x1d, 0xf6, 0xdb, 0x02, 0x87, 0x09, 0xf8, 0x66, 0x4f, 0x76, 0xbb, 0x81,
|
||||
0x60, 0x0d, 0x9c, 0x83, 0x4c, 0xf0, 0x65, 0x0b, 0x14, 0x69, 0xdd, 0x20, 0x90, 0x43, 0xc5, 0x16,
|
||||
0xad, 0x2f, 0x8a, 0x50, 0xc2, 0x2a, 0x03, 0x7d, 0xa7, 0x87, 0x71, 0xc6, 0xf8, 0x0e, 0x3e, 0xa7,
|
||||
0x1e, 0x58, 0x18, 0x79, 0x20, 0x7f, 0xc7, 0xac, 0x74, 0x71, 0x8e, 0x28, 0x8b, 0x82, 0xb3, 0x8b,
|
||||
0xcc, 0xa1, 0xd4, 0xf7, 0xfb, 0xc2, 0xc4, 0x3a, 0x7a, 0x46, 0x5c, 0x8c, 0xfb, 0x31, 0xba, 0x41,
|
||||
0xd1, 0xa1, 0x67, 0xf4, 0x1a, 0x17, 0xb7, 0x85, 0x35, 0x45, 0x3e, 0x50, 0x74, 0x12, 0x50, 0x7b,
|
||||
0x33, 0x46, 0xa5, 0xea, 0x1c, 0xde, 0x4c, 0x9f, 0xcf, 0x46, 0xa4, 0x51, 0x30, 0xa8, 0xcd, 0xcf,
|
||||
0x9e, 0xd9, 0x24, 0x36, 0x8d, 0x35, 0x8e, 0x36, 0xb0, 0x9a, 0x9e, 0x3d, 0x96, 0xc7, 0x55, 0x22,
|
||||
0x37, 0xd4, 0xb1, 0x6c, 0xdf, 0xf7, 0x84, 0x64, 0x45, 0xda, 0xe0, 0x86, 0x9e, 0x2f, 0x59, 0x09,
|
||||
0x33, 0xaa, 0xdd, 0xcd, 0x87, 0xac, 0x6c, 0x5f, 0xcf, 0x6c, 0x35, 0x6b, 0x43, 0x25, 0xb5, 0x18,
|
||||
0x32, 0xcb, 0xbc, 0xb6, 0xb2, 0xb6, 0xf0, 0x58, 0xc1, 0xfe, 0xde, 0x8c, 0xf0, 0xb9, 0x08, 0xf5,
|
||||
0x67, 0x83, 0x40, 0xba, 0xde, 0x19, 0xf1, 0x73, 0x01, 0x60, 0x54, 0xb5, 0x5a, 0x7f, 0x67, 0x8d,
|
||||
0xb6, 0x69, 0xcc, 0x31, 0x63, 0x39, 0x8c, 0x3a, 0x82, 0x42, 0x43, 0xdd, 0x31, 0x10, 0x7f, 0x1f,
|
||||
0xca, 0xf8, 0x3e, 0x6e, 0x16, 0x28, 0x62, 0xdc, 0x9c, 0xab, 0x56, 0x5a, 0xdd, 0xf7, 0xc5, 0x73,
|
||||
0x47, 0x33, 0xf2, 0x7b, 0xd9, 0xb4, 0xe3, 0x9c, 0x7e, 0xcc, 0x88, 0x92, 0x5f, 0x05, 0x70, 0x3b,
|
||||
0xca, 0x3f, 0x12, 0x28, 0xcb, 0xf8, 0x7e, 0x06, 0xc3, 0x1d, 0x68, 0xa0, 0x4b, 0x0e, 0x76, 0x22,
|
||||
0xf4, 0xe2, 0xe6, 0x02, 0x09, 0xbe, 0x3d, 0x9f, 0x7a, 0x1f, 0xa4, 0x8c, 0x4e, 0x56, 0x08, 0x7f,
|
||||
0x06, 0x0b, 0xba, 0xd7, 0x63, 0x84, 0x2e, 0x92, 0xd0, 0xd7, 0xe7, 0x13, 0xba, 0x33, 0xe2, 0x74,
|
||||
0xc6, 0xc4, 0x4c, 0x37, 0x7e, 0xca, 0x2f, 0xda, 0xf8, 0xb1, 0xfe, 0xa6, 0x0c, 0x25, 0x1a, 0xf6,
|
||||
0x64, 0xdf, 0x67, 0x63, 0x2c, 0xbc, 0xde, 0x9a, 0x7f, 0x79, 0x26, 0xbc, 0x8f, 0xbc, 0xb9, 0x98,
|
||||
0xf1, 0xe6, 0xf7, 0xa1, 0x1c, 0xcb, 0x48, 0x25, 0x4b, 0x36, 0xe7, 0xc2, 0xb7, 0x64, 0xa4, 0x1c,
|
||||
0xcd, 0xc8, 0x1f, 0x42, 0xf5, 0xc0, 0x0f, 0x14, 0x4e, 0xa4, 0x1e, 0xf0, 0x6b, 0xf3, 0xc9, 0x78,
|
||||
0x48, 0x4c, 0x4e, 0xc2, 0xcc, 0x1f, 0x67, 0x0d, 0xa8, 0x42, 0x92, 0x56, 0xe7, 0x93, 0x34, 0xcb,
|
||||
0xae, 0x6e, 0x02, 0xeb, 0xc8, 0x23, 0x11, 0x25, 0xef, 0x1e, 0x89, 0x13, 0xb3, 0x61, 0x4e, 0xe1,
|
||||
0xb9, 0x05, 0xb5, 0x9e, 0xef, 0x09, 0xcc, 0x39, 0x28, 0x2e, 0xd4, 0x9c, 0x14, 0xe6, 0x8f, 0xa0,
|
||||
0x46, 0xb9, 0x3a, 0x46, 0xa8, 0xfa, 0x0b, 0x4f, 0xbe, 0x2e, 0x1b, 0x12, 0x01, 0xf8, 0x21, 0xfa,
|
||||
0xf8, 0x43, 0x5f, 0x35, 0x41, 0x7f, 0x28, 0x81, 0x51, 0x61, 0xb2, 0xd1, 0xac, 0xc2, 0x0d, 0xad,
|
||||
0xf0, 0x24, 0x9e, 0xbf, 0x01, 0x2f, 0x11, 0x6e, 0x62, 0xc3, 0x42, 0xf7, 0x40, 0xa1, 0xb3, 0x5f,
|
||||
0xda, 0x6f, 0x98, 0xe0, 0x85, 0xdb, 0x09, 0x56, 0x6d, 0x49, 0xd8, 0x89, 0x95, 0xde, 0x9f, 0x3e,
|
||||
0x70, 0x83, 0x40, 0x44, 0x27, 0xba, 0xe4, 0x7b, 0xe4, 0x86, 0x6d, 0x37, 0x64, 0x45, 0xfb, 0x06,
|
||||
0x94, 0x48, 0xf7, 0x3a, 0x94, 0x75, 0x69, 0x40, 0x65, 0xa2, 0x29, 0x0b, 0x28, 0x5c, 0x3d, 0xc6,
|
||||
0xbc, 0x91, 0x15, 0xac, 0xbf, 0x2a, 0x42, 0x2d, 0xd1, 0x12, 0x93, 0xe4, 0x43, 0x71, 0x92, 0x24,
|
||||
0xc9, 0x87, 0xe2, 0x84, 0x72, 0x97, 0x78, 0xdf, 0x8f, 0xfd, 0xb6, 0xc9, 0xc5, 0x6a, 0xce, 0x08,
|
||||
0x81, 0xdb, 0xff, 0x73, 0xdf, 0x53, 0x3d, 0x32, 0xce, 0xb2, 0xa3, 0x01, 0x7e, 0x03, 0x2e, 0x78,
|
||||
0xae, 0x12, 0xdb, 0x61, 0x27, 0x18, 0x7a, 0x62, 0x0f, 0xb7, 0x0e, 0x5d, 0x1b, 0x4f, 0xa2, 0xf9,
|
||||
0xf7, 0x01, 0x94, 0xdf, 0x17, 0x0f, 0x65, 0xd4, 0x77, 0x95, 0x49, 0x88, 0xdf, 0x7e, 0x31, 0xf3,
|
||||
0x59, 0xdd, 0x4b, 0x05, 0x38, 0x19, 0x61, 0x28, 0x1a, 0xbf, 0x66, 0x44, 0x57, 0xbf, 0x96, 0xe8,
|
||||
0xcd, 0x54, 0x80, 0x93, 0x11, 0x66, 0xff, 0x0a, 0xc0, 0xe8, 0x0d, 0xbf, 0x04, 0xfc, 0x89, 0x0c,
|
||||
0x55, 0x6f, 0xad, 0xdd, 0x8e, 0xd6, 0xc5, 0x81, 0x8c, 0xc4, 0xa6, 0x8b, 0x31, 0xff, 0x25, 0x58,
|
||||
0x4e, 0xf1, 0x6b, 0x07, 0x4a, 0x44, 0x88, 0xa6, 0xa9, 0x6f, 0xf5, 0x64, 0xa4, 0x74, 0x42, 0x41,
|
||||
0x8f, 0xcf, 0x5a, 0xac, 0x88, 0xfb, 0xcc, 0x76, 0x6b, 0x87, 0x95, 0xec, 0x1b, 0x00, 0xa3, 0x21,
|
||||
0x51, 0xe2, 0x4d, 0x4f, 0xaf, 0xdf, 0x31, 0x69, 0x38, 0x41, 0x77, 0xde, 0x60, 0x79, 0xeb, 0x9f,
|
||||
0xf3, 0x50, 0x42, 0x9f, 0xc6, 0x9a, 0x23, 0x6b, 0x80, 0x7a, 0xf9, 0xb2, 0xa8, 0xaf, 0x17, 0x89,
|
||||
0x50, 0x76, 0x36, 0x12, 0xbd, 0x05, 0x8d, 0xce, 0x30, 0x56, 0xb2, 0x4f, 0xa1, 0xb3, 0x59, 0x24,
|
||||
0x6f, 0xbf, 0x34, 0x55, 0xbd, 0xef, 0xbb, 0xc1, 0x50, 0x38, 0x59, 0x52, 0xfb, 0x5b, 0xc6, 0x88,
|
||||
0xab, 0x50, 0x5c, 0x8b, 0x3b, 0xa6, 0x48, 0x13, 0x71, 0x47, 0x67, 0x80, 0x1b, 0x44, 0xc9, 0x0a,
|
||||
0xd6, 0xbf, 0x57, 0xa0, 0xa2, 0x03, 0x0c, 0xff, 0x10, 0x6a, 0x72, 0x20, 0x22, 0x57, 0xc9, 0xc8,
|
||||
0x54, 0x86, 0xf7, 0x5e, 0x24, 0x40, 0xad, 0xee, 0x18, 0x66, 0x27, 0x15, 0x33, 0x39, 0x4b, 0x85,
|
||||
0xe9, 0x59, 0xba, 0x09, 0x2c, 0x89, 0x45, 0xbb, 0x11, 0xf2, 0xa9, 0x13, 0x93, 0xe7, 0x4f, 0xe1,
|
||||
0xf9, 0x1e, 0xd4, 0x3b, 0x32, 0xf4, 0xfc, 0xb4, 0x4a, 0x5c, 0xba, 0xf3, 0xbd, 0x17, 0xd2, 0x70,
|
||||
0x23, 0xe1, 0x76, 0x46, 0x82, 0xf8, 0x6b, 0x50, 0x3e, 0xc2, 0xe9, 0xa3, 0x5c, 0xeb, 0xf4, 0xc9,
|
||||
0xd5, 0x44, 0xfc, 0x63, 0x68, 0x7c, 0x36, 0xf4, 0x3b, 0x87, 0x3b, 0xd9, 0x2e, 0xc4, 0x5b, 0x2f,
|
||||
0xa4, 0xc5, 0x87, 0x23, 0x7e, 0x27, 0x2b, 0xcc, 0xbe, 0x02, 0xb5, 0x64, 0x0e, 0x69, 0xd9, 0x42,
|
||||
0x8f, 0xe5, 0x78, 0x05, 0x0a, 0x3b, 0x11, 0xcb, 0xdb, 0x5f, 0xe5, 0xa1, 0x9e, 0xea, 0x3f, 0xde,
|
||||
0x18, 0x78, 0xf0, 0xd9, 0xd0, 0x0d, 0x58, 0x9e, 0x32, 0x5b, 0xa9, 0x34, 0x44, 0xa6, 0xfe, 0x41,
|
||||
0x24, 0x5c, 0x45, 0xfd, 0x28, 0x8c, 0x5f, 0x22, 0x8e, 0x59, 0x89, 0x73, 0x58, 0x32, 0xe8, 0x9d,
|
||||
0x48, 0x93, 0x96, 0x31, 0xf1, 0xc5, 0xb7, 0x09, 0xa2, 0xa2, 0xc3, 0xdd, 0xa1, 0xd0, 0x89, 0xfd,
|
||||
0x53, 0xa9, 0x08, 0xa8, 0xa1, 0x2e, 0xdb, 0x21, 0xab, 0xe3, 0x37, 0x9f, 0x4a, 0xb5, 0x1d, 0x32,
|
||||
0x18, 0x65, 0x5c, 0x8d, 0xe4, 0xf3, 0x04, 0x2d, 0x50, 0x3e, 0x17, 0x04, 0xdb, 0x21, 0x5b, 0x34,
|
||||
0x2f, 0x34, 0xb4, 0x84, 0x12, 0x1f, 0x1c, 0xbb, 0x1d, 0x64, 0xbf, 0xc0, 0x97, 0x00, 0x90, 0xc7,
|
||||
0xc0, 0xcc, 0xfe, 0xa7, 0x3c, 0x34, 0x32, 0xf3, 0x83, 0x59, 0x1c, 0xbd, 0x44, 0xe7, 0xd7, 0x49,
|
||||
0xdd, 0xf7, 0x45, 0xac, 0x44, 0xe4, 0x25, 0x8e, 0xbd, 0x27, 0xf1, 0xb1, 0x80, 0xdf, 0xd8, 0x93,
|
||||
0x7d, 0x19, 0x45, 0xf2, 0x39, 0x2b, 0x22, 0xf4, 0xd8, 0x8d, 0xd5, 0x47, 0x42, 0x1c, 0xb2, 0x12,
|
||||
0x0e, 0x6f, 0x63, 0x18, 0x45, 0x22, 0xd4, 0x88, 0x32, 0x29, 0x24, 0x8e, 0x35, 0x54, 0x41, 0xa1,
|
||||
0x48, 0x4c, 0x91, 0x83, 0x55, 0x39, 0x83, 0x05, 0x43, 0xad, 0x31, 0x35, 0x24, 0x40, 0x72, 0x0d,
|
||||
0xd6, 0xb1, 0x00, 0xd2, 0x05, 0xc4, 0xce, 0xc1, 0xa6, 0x7b, 0x12, 0xaf, 0x75, 0x25, 0x83, 0x49,
|
||||
0xe4, 0x53, 0xf9, 0x9c, 0x35, 0xac, 0x21, 0xc0, 0x28, 0xb5, 0xc2, 0x94, 0x12, 0xcd, 0x20, 0x6d,
|
||||
0xf1, 0x19, 0x88, 0xef, 0x00, 0xe0, 0x13, 0x51, 0x26, 0x79, 0xe5, 0x0b, 0xec, 0x9d, 0xc4, 0xe7,
|
||||
0x64, 0x44, 0x58, 0xbf, 0x0e, 0xf5, 0xf4, 0x05, 0x56, 0x08, 0xb4, 0xcb, 0xa5, 0x9f, 0x4d, 0x40,
|
||||
0xdc, 0x49, 0xfc, 0xd0, 0x13, 0xc7, 0xe4, 0x96, 0x65, 0x47, 0x03, 0xa8, 0x65, 0xcf, 0xf7, 0x3c,
|
||||
0x11, 0x26, 0x8d, 0x58, 0x0d, 0xcd, 0x3a, 0xb6, 0x2a, 0xcd, 0x3c, 0xb6, 0xb2, 0x7e, 0x15, 0x1a,
|
||||
0x99, 0xdc, 0xef, 0xd4, 0x61, 0x67, 0x14, 0x2b, 0x8c, 0x2b, 0xf6, 0x32, 0xd4, 0xa5, 0x69, 0xae,
|
||||
0xc4, 0x14, 0xf2, 0xea, 0xce, 0x08, 0x61, 0xfd, 0x65, 0x01, 0xca, 0x7a, 0x68, 0x93, 0xb9, 0xdf,
|
||||
0x43, 0xa8, 0x60, 0xf1, 0x32, 0x4c, 0xce, 0xfc, 0xe6, 0xcc, 0xaf, 0x5a, 0xc4, 0xb3, 0x95, 0x73,
|
||||
0x0c, 0x37, 0x7f, 0x17, 0x8a, 0xca, 0xed, 0x9a, 0x3e, 0xc6, 0x77, 0xe6, 0x13, 0xb2, 0xe7, 0x76,
|
||||
0xb7, 0x72, 0x0e, 0xf2, 0xf1, 0xc7, 0x50, 0xeb, 0x98, 0xd2, 0xd3, 0xc4, 0x94, 0x39, 0xd3, 0xb3,
|
||||
0xa4, 0x60, 0xdd, 0xca, 0x39, 0xa9, 0x04, 0xfe, 0x3e, 0x94, 0x70, 0x1f, 0xa4, 0xa0, 0x38, 0x77,
|
||||
0xda, 0x89, 0xee, 0xb2, 0x95, 0x73, 0x88, 0x73, 0xbd, 0x0a, 0x65, 0x0a, 0x61, 0x56, 0x13, 0x2a,
|
||||
0x7a, 0xac, 0x93, 0x33, 0x67, 0x5d, 0x86, 0xe2, 0x9e, 0xdb, 0xc5, 0x5c, 0xc4, 0xf7, 0x62, 0x53,
|
||||
0xf1, 0xe0, 0xa3, 0xf5, 0xca, 0xa8, 0x8c, 0xce, 0x76, 0x68, 0xf2, 0x63, 0x1d, 0x1a, 0xab, 0x02,
|
||||
0x25, 0xfc, 0xa2, 0xf5, 0xf2, 0x59, 0x79, 0x8d, 0x75, 0x05, 0x33, 0x20, 0x25, 0x8e, 0x67, 0x35,
|
||||
0x9f, 0xac, 0x65, 0xb8, 0x30, 0x71, 0x58, 0x62, 0x55, 0x4d, 0xfa, 0x65, 0x2d, 0x42, 0x23, 0xd3,
|
||||
0x3d, 0xb7, 0xae, 0x43, 0x2d, 0xe9, 0xad, 0x63, 0xa2, 0xe8, 0xc7, 0xba, 0x2b, 0x60, 0x94, 0x4a,
|
||||
0x61, 0xfb, 0x00, 0x6a, 0xbb, 0x32, 0x9e, 0x8c, 0x97, 0x55, 0x28, 0xee, 0xc9, 0x81, 0xde, 0x05,
|
||||
0xd7, 0xa5, 0xa2, 0x5d, 0x50, 0x87, 0xc7, 0x03, 0xa5, 0xcb, 0x50, 0xc7, 0xef, 0xf6, 0x94, 0x6e,
|
||||
0x31, 0x6c, 0x87, 0xa1, 0x88, 0x58, 0x19, 0x63, 0x96, 0x23, 0x06, 0x81, 0xdb, 0x11, 0xac, 0x82,
|
||||
0x31, 0x8b, 0xf0, 0x0f, 0xfd, 0x28, 0x56, 0xac, 0x6a, 0xbf, 0x89, 0x91, 0xce, 0xef, 0x52, 0xb0,
|
||||
0xa2, 0x07, 0x12, 0x95, 0xc3, 0xb0, 0x43, 0xe0, 0x86, 0x08, 0x31, 0x08, 0x53, 0xa7, 0x58, 0x9f,
|
||||
0xb5, 0xd2, 0x07, 0x0a, 0xf6, 0x47, 0xb0, 0x38, 0x76, 0x06, 0xcb, 0x57, 0x80, 0x8d, 0x21, 0x50,
|
||||
0xd1, 0x1c, 0xbf, 0x0c, 0x17, 0xc7, 0xb0, 0x4f, 0x7c, 0xcf, 0xa3, 0x42, 0x7a, 0xf2, 0x45, 0x32,
|
||||
0x9c, 0xf5, 0x3a, 0x54, 0x3b, 0x7a, 0x16, 0xed, 0x5d, 0x58, 0x24, 0x1b, 0x79, 0x22, 0x94, 0xbb,
|
||||
0x13, 0x06, 0x27, 0xff, 0xef, 0x83, 0x72, 0xfb, 0x55, 0x28, 0x53, 0x43, 0x0b, 0x97, 0xf1, 0x20,
|
||||
0x92, 0x7d, 0x92, 0x55, 0x76, 0xe8, 0x19, 0xa5, 0x2b, 0x69, 0x02, 0x4a, 0x41, 0x49, 0xfb, 0x5f,
|
||||
0xea, 0x50, 0x5d, 0xeb, 0x74, 0xe4, 0x30, 0x54, 0x53, 0x5f, 0x9e, 0xd5, 0x33, 0xb9, 0x07, 0x15,
|
||||
0xf7, 0xc8, 0x55, 0x6e, 0x64, 0xbc, 0xef, 0x1b, 0x13, 0xf6, 0x6e, 0x64, 0xad, 0xae, 0x11, 0x91,
|
||||
0x63, 0x88, 0x91, 0xad, 0x23, 0xc3, 0x03, 0xbf, 0x6b, 0x1c, 0xee, 0x34, 0xb6, 0x0d, 0x22, 0x72,
|
||||
0x0c, 0x31, 0xb2, 0x99, 0x80, 0x51, 0x3e, 0x93, 0x4d, 0x7b, 0x4d, 0x1a, 0x1f, 0x6e, 0x41, 0xc9,
|
||||
0x0f, 0x0f, 0xa4, 0xb9, 0xec, 0x70, 0xe5, 0x14, 0xa6, 0xed, 0xf0, 0x40, 0x3a, 0x44, 0x68, 0x09,
|
||||
0xa8, 0x68, 0x85, 0xf9, 0xdb, 0x50, 0xa6, 0xbe, 0xb5, 0xe9, 0x14, 0xce, 0x75, 0xa6, 0xad, 0x39,
|
||||
0xf8, 0xa5, 0xa4, 0x0d, 0x4a, 0xf3, 0x85, 0x78, 0x02, 0xd7, 0x6b, 0xc9, 0x94, 0x59, 0xff, 0x99,
|
||||
0x87, 0x8a, 0x1e, 0x21, 0xbf, 0x0e, 0x4b, 0x22, 0x44, 0x27, 0x49, 0x42, 0x82, 0xf1, 0x8e, 0x09,
|
||||
0x2c, 0x26, 0x68, 0x06, 0x23, 0xda, 0xc3, 0xae, 0xa9, 0x36, 0xb2, 0x28, 0xfe, 0x16, 0x5c, 0xd6,
|
||||
0xe0, 0x6e, 0x24, 0x22, 0x11, 0x08, 0x37, 0x16, 0x1b, 0x3d, 0x37, 0x0c, 0x45, 0x60, 0x36, 0x88,
|
||||
0xd3, 0x5e, 0x73, 0x1b, 0x16, 0xf4, 0xab, 0xd6, 0xc0, 0xed, 0x88, 0xd8, 0xb4, 0x75, 0xc7, 0x70,
|
||||
0xfc, 0xbb, 0x50, 0xa6, 0x2b, 0x27, 0x4d, 0xef, 0x6c, 0xe3, 0xd3, 0x54, 0x96, 0x4c, 0x23, 0xd8,
|
||||
0x1a, 0x80, 0x5e, 0x0d, 0x4c, 0x72, 0x4d, 0xba, 0xfa, 0xcd, 0x33, 0x97, 0x8f, 0xb2, 0xea, 0x0c,
|
||||
0x13, 0xea, 0xe7, 0x89, 0x40, 0x60, 0x7c, 0xc0, 0xe8, 0x45, 0x83, 0x2f, 0x3a, 0x63, 0x38, 0xeb,
|
||||
0xef, 0x8b, 0x50, 0xc2, 0x85, 0x44, 0xe2, 0x9e, 0xec, 0x8b, 0xf4, 0x28, 0x40, 0x1b, 0xed, 0x18,
|
||||
0x0e, 0xb7, 0x48, 0x57, 0x9f, 0xe4, 0xa4, 0x64, 0xba, 0x83, 0x30, 0x89, 0x46, 0xca, 0x41, 0x24,
|
||||
0x0f, 0xfc, 0x60, 0x44, 0x69, 0x36, 0xd3, 0x09, 0x34, 0x4e, 0x7f, 0xdf, 0x8d, 0x0e, 0x85, 0xa2,
|
||||
0xe8, 0x83, 0x7a, 0xa7, 0x1c, 0x3a, 0x4d, 0x3e, 0xed, 0x35, 0x7f, 0x1f, 0xae, 0x64, 0x5e, 0x25,
|
||||
0x71, 0x39, 0xe5, 0xd6, 0x2d, 0xf3, 0xb3, 0x48, 0x26, 0x24, 0xec, 0x89, 0xfe, 0x20, 0x70, 0x95,
|
||||
0x98, 0x38, 0x0d, 0x39, 0x8b, 0x04, 0xc3, 0xb3, 0x27, 0x8e, 0xfc, 0x8e, 0xd8, 0xf6, 0xa8, 0x61,
|
||||
0x50, 0x77, 0x52, 0x98, 0x5f, 0x05, 0xe8, 0xba, 0x4a, 0x3c, 0x77, 0x4f, 0x9e, 0x45, 0x41, 0x53,
|
||||
0xe8, 0x86, 0xd6, 0x08, 0x83, 0x95, 0x41, 0x20, 0x3b, 0x6e, 0xd0, 0x52, 0x32, 0x72, 0xbb, 0x62,
|
||||
0xd7, 0x55, 0xbd, 0x66, 0x57, 0x57, 0x06, 0x93, 0x78, 0xfc, 0x0e, 0xd6, 0xa1, 0x1f, 0xcb, 0x50,
|
||||
0x34, 0x7b, 0xfa, 0x3b, 0x09, 0x6c, 0xef, 0x00, 0x8c, 0x0c, 0x00, 0xa3, 0xfe, 0x1a, 0x35, 0xcd,
|
||||
0x58, 0x0e, 0x73, 0xb6, 0x5d, 0x11, 0x7a, 0x7e, 0xd8, 0xdd, 0x34, 0x6b, 0xce, 0xf2, 0x88, 0x6c,
|
||||
0x29, 0x37, 0x52, 0xc2, 0x4b, 0x91, 0x94, 0x4b, 0x13, 0x24, 0x3c, 0x56, 0xb4, 0xff, 0x37, 0x0f,
|
||||
0x8d, 0xcc, 0x91, 0xd1, 0xcf, 0xf0, 0x98, 0x0b, 0x77, 0x33, 0xf4, 0x75, 0x9c, 0x10, 0x6d, 0x0f,
|
||||
0x29, 0x8c, 0xd3, 0x65, 0x4e, 0xb4, 0xf0, 0xad, 0x5e, 0xfb, 0x0c, 0xe6, 0x6b, 0x1d, 0x71, 0xd9,
|
||||
0x77, 0x4c, 0x91, 0xd8, 0x80, 0xea, 0xb3, 0xf0, 0x30, 0x94, 0xcf, 0x43, 0x5d, 0x28, 0xd2, 0xb9,
|
||||
0xe5, 0x58, 0xa7, 0x36, 0x39, 0x5a, 0x2c, 0xda, 0x3f, 0x2e, 0x4d, 0x1c, 0xf1, 0x3f, 0x80, 0x8a,
|
||||
0xce, 0xce, 0x28, 0x71, 0x98, 0x3e, 0x93, 0xcd, 0x12, 0x9b, 0xae, 0x60, 0x06, 0xe5, 0x18, 0x66,
|
||||
0x4c, 0x9b, 0xd2, 0x8b, 0x28, 0x85, 0x99, 0xdd, 0xcb, 0x31, 0x41, 0x49, 0x08, 0x1b, 0xbb, 0x8b,
|
||||
0x95, 0x4a, 0xb0, 0x7e, 0x94, 0x87, 0x95, 0x59, 0x24, 0x98, 0xc5, 0xb4, 0xc7, 0x4e, 0xda, 0x13,
|
||||
0x90, 0xb7, 0x26, 0x6e, 0x80, 0x15, 0x68, 0x34, 0xb7, 0x5e, 0x50, 0x89, 0xf1, 0xfb, 0x60, 0xf6,
|
||||
0xe7, 0x79, 0x58, 0x9e, 0x1a, 0x73, 0x26, 0x1d, 0x01, 0xa8, 0x68, 0xcb, 0xd2, 0x07, 0xc3, 0xe9,
|
||||
0x51, 0x9d, 0x6e, 0x2e, 0xd1, 0x7e, 0x10, 0xeb, 0xb3, 0x8f, 0x4d, 0x7d, 0x13, 0x90, 0x95, 0x30,
|
||||
0x8f, 0xc0, 0x55, 0xc3, 0x38, 0xdb, 0x15, 0xac, 0x8c, 0x15, 0x8b, 0xbe, 0xb6, 0x60, 0x30, 0x15,
|
||||
0xaa, 0x86, 0x8c, 0x2f, 0xb2, 0x2a, 0x1d, 0x38, 0x0f, 0x07, 0x81, 0xdf, 0x41, 0xb0, 0x66, 0x3b,
|
||||
0x70, 0x71, 0x86, 0xde, 0xa4, 0xc9, 0xbe, 0xd1, 0x6a, 0x09, 0x60, 0x73, 0x3f, 0xd1, 0x85, 0xe5,
|
||||
0xb1, 0x68, 0xdc, 0xdc, 0xdf, 0xa0, 0xb2, 0xd1, 0x1c, 0xe7, 0x68, 0x9f, 0xd8, 0xc7, 0x3a, 0x23,
|
||||
0x66, 0x45, 0xfb, 0x3e, 0xbc, 0xb4, 0xd7, 0x8b, 0x84, 0xeb, 0x6d, 0x0a, 0x31, 0x08, 0xd0, 0xd8,
|
||||
0xdc, 0x93, 0x40, 0xba, 0xde, 0x8c, 0xf6, 0xd6, 0x0a, 0x94, 0x5d, 0xcf, 0x8b, 0xf4, 0xfc, 0xd6,
|
||||
0x1d, 0x0d, 0xd8, 0x9f, 0xc0, 0x25, 0x2d, 0x40, 0x7f, 0xe5, 0xc3, 0xa1, 0x18, 0x8a, 0x07, 0xa1,
|
||||
0x8a, 0x4e, 0x74, 0x83, 0x32, 0xb9, 0x35, 0xa8, 0x69, 0x8c, 0xb8, 0x29, 0x3c, 0xc5, 0x01, 0x7a,
|
||||
0x4a, 0x23, 0x74, 0x0a, 0xdb, 0xff, 0x50, 0x02, 0xd8, 0x49, 0x6f, 0x2e, 0xce, 0xf0, 0xda, 0xd9,
|
||||
0xf9, 0x48, 0xa6, 0xd7, 0x5a, 0x9c, 0xbb, 0x59, 0xff, 0x56, 0x7a, 0x01, 0x4d, 0x5f, 0x9e, 0x98,
|
||||
0xbc, 0x44, 0x36, 0xd2, 0xc3, 0x5c, 0x38, 0x49, 0xef, 0x9e, 0x8d, 0x1d, 0x6b, 0x96, 0x27, 0x8f,
|
||||
0x35, 0xaf, 0x4d, 0xdf, 0x81, 0x98, 0x08, 0x21, 0xa3, 0xf2, 0xad, 0x3a, 0x56, 0xbe, 0x59, 0x50,
|
||||
0xc3, 0x79, 0x90, 0x61, 0x70, 0x92, 0x74, 0x54, 0x13, 0x98, 0xdf, 0x85, 0xb2, 0xa2, 0xfb, 0x9d,
|
||||
0x35, 0xb2, 0xf8, 0xc9, 0x2c, 0x68, 0x74, 0xe5, 0x95, 0x22, 0x87, 0xa6, 0xc5, 0x78, 0xe4, 0xc7,
|
||||
0xe6, 0xe2, 0x82, 0x47, 0x1d, 0xdf, 0x9a, 0x93, 0xc1, 0xd8, 0xff, 0x3a, 0xba, 0x80, 0x53, 0x87,
|
||||
0x72, 0xdb, 0x8d, 0xfd, 0x8e, 0x3e, 0xea, 0x33, 0x3b, 0x9c, 0x3e, 0x93, 0x51, 0xd2, 0x93, 0xac,
|
||||
0x80, 0x49, 0x79, 0x2c, 0x30, 0xfd, 0x5e, 0x02, 0x18, 0xdd, 0x2e, 0x65, 0x25, 0x34, 0xe4, 0x64,
|
||||
0x56, 0xf5, 0x49, 0x1f, 0xb1, 0x52, 0xcd, 0xee, 0xa5, 0x77, 0x28, 0xaa, 0xf8, 0x05, 0x0a, 0x94,
|
||||
0xac, 0x86, 0x34, 0xa1, 0x54, 0x42, 0x77, 0x29, 0x62, 0xcc, 0x32, 0x18, 0xa0, 0x98, 0xe4, 0x8a,
|
||||
0x1d, 0x6b, 0x60, 0xde, 0x9c, 0x08, 0xd5, 0x6d, 0x86, 0x98, 0x7a, 0xbb, 0x0b, 0x68, 0xe6, 0xe3,
|
||||
0x2f, 0x74, 0xf3, 0x02, 0x83, 0x4a, 0xdb, 0x8d, 0x05, 0x5b, 0xb1, 0xff, 0x70, 0x34, 0xaa, 0xdb,
|
||||
0x69, 0x3a, 0x3b, 0xcf, 0xfa, 0x9e, 0x96, 0xf0, 0x3e, 0x80, 0xe5, 0x48, 0x7c, 0x36, 0xf4, 0xc7,
|
||||
0x2e, 0xbd, 0x9d, 0x63, 0x68, 0xd3, 0x1c, 0xf6, 0x11, 0x2c, 0x27, 0xc0, 0x47, 0xbe, 0xea, 0x51,
|
||||
0xbd, 0xc7, 0xef, 0x66, 0x6e, 0xe5, 0xe5, 0x4d, 0x7e, 0x75, 0x8a, 0xc8, 0xd1, 0x2d, 0xbc, 0xb4,
|
||||
0x1d, 0x56, 0x98, 0xa3, 0x1d, 0x66, 0xff, 0x79, 0x35, 0x53, 0xf2, 0xe9, 0x04, 0xdf, 0x4b, 0x13,
|
||||
0xfc, 0x69, 0xdf, 0xbf, 0x07, 0x95, 0x03, 0xdd, 0x1d, 0xd6, 0x5d, 0xd1, 0x6f, 0x9c, 0xa2, 0x8f,
|
||||
0xe9, 0x00, 0x1b, 0xe2, 0x99, 0xe7, 0x31, 0xef, 0x60, 0xf6, 0x76, 0xe0, 0x0e, 0x03, 0xb5, 0x3f,
|
||||
0x47, 0xf7, 0x6e, 0x8c, 0x96, 0xaf, 0x53, 0xa3, 0xda, 0x6d, 0xe9, 0x03, 0xbe, 0xf2, 0xcc, 0x3b,
|
||||
0xb2, 0xd9, 0x8e, 0xb4, 0xa1, 0x74, 0x32, 0x5c, 0x19, 0x47, 0xab, 0xcc, 0x72, 0x34, 0xac, 0xb5,
|
||||
0x8c, 0x0b, 0xa6, 0xb0, 0x6e, 0x76, 0xea, 0xe7, 0x44, 0x3c, 0x5d, 0x6e, 0xad, 0x39, 0x53, 0x78,
|
||||
0x0c, 0x93, 0xfd, 0x61, 0xa0, 0x7c, 0x73, 0xd0, 0xa2, 0x81, 0xc9, 0x0b, 0xd9, 0xf5, 0xe9, 0x0b,
|
||||
0xd9, 0xef, 0x01, 0xc4, 0x02, 0xa3, 0xe2, 0xa6, 0xdf, 0x51, 0xe6, 0x18, 0xf0, 0xea, 0x69, 0x63,
|
||||
0x33, 0x5d, 0xc8, 0x0c, 0x07, 0xea, 0xdf, 0x77, 0x8f, 0x37, 0x30, 0x71, 0x6e, 0x2e, 0x52, 0x1d,
|
||||
0x97, 0xc2, 0x93, 0xe1, 0x67, 0x69, 0x3a, 0xfc, 0xdc, 0x85, 0x72, 0xdc, 0x91, 0x03, 0x41, 0xf7,
|
||||
0x50, 0x4f, 0x5f, 0xdf, 0xd5, 0x16, 0x12, 0x39, 0x9a, 0x96, 0x1a, 0x0b, 0x18, 0xf5, 0x65, 0x44,
|
||||
0x37, 0x50, 0xeb, 0x4e, 0x02, 0x5a, 0x3f, 0xcd, 0x43, 0xc5, 0x74, 0x02, 0x67, 0x54, 0x8f, 0xd4,
|
||||
0x44, 0x28, 0x64, 0x6e, 0xb0, 0xa4, 0x37, 0x45, 0x8a, 0xd9, 0x9b, 0x22, 0xef, 0x24, 0x3a, 0xe9,
|
||||
0x58, 0xfc, 0xca, 0xd9, 0x93, 0x31, 0xa6, 0x9a, 0xfd, 0x1a, 0x94, 0x09, 0xc6, 0x60, 0x42, 0x59,
|
||||
0xa7, 0x3e, 0x11, 0x88, 0x46, 0x5b, 0x23, 0x24, 0x26, 0xcd, 0x0a, 0xf6, 0xc7, 0x09, 0x35, 0x24,
|
||||
0x29, 0x91, 0x4e, 0xa7, 0xf0, 0x6b, 0x2c, 0x8f, 0xe5, 0x7d, 0x2c, 0xd4, 0xce, 0xc1, 0x5e, 0x4f,
|
||||
0xb4, 0xdc, 0x3e, 0x65, 0xeb, 0xac, 0xc0, 0x9b, 0xb0, 0xa2, 0x69, 0xe3, 0xf1, 0x37, 0xb4, 0xe9,
|
||||
0x07, 0x7e, 0x3b, 0x72, 0xa3, 0x13, 0x56, 0xb2, 0xdf, 0xa3, 0x13, 0x90, 0xc4, 0xfa, 0x1a, 0xe9,
|
||||
0x3f, 0x08, 0x74, 0x50, 0xf5, 0x44, 0x84, 0x51, 0x57, 0x9f, 0x4f, 0xb9, 0xba, 0xee, 0xd1, 0x67,
|
||||
0xdd, 0x5a, 0xeb, 0xa2, 0x7d, 0x1b, 0xb3, 0xb6, 0xd1, 0x11, 0xea, 0xd4, 0x7c, 0x1a, 0x67, 0x2d,
|
||||
0xa4, 0xce, 0x6a, 0xaf, 0x67, 0xd2, 0x91, 0xf1, 0x8d, 0x30, 0x3f, 0xef, 0x46, 0x68, 0x3f, 0x82,
|
||||
0x0b, 0xce, 0x78, 0xa8, 0xe5, 0x6f, 0x41, 0x55, 0x0e, 0xb2, 0x72, 0xce, 0xb3, 0xce, 0x84, 0xdc,
|
||||
0xfe, 0xa3, 0x3c, 0x2c, 0x6c, 0x87, 0x4a, 0x44, 0xa1, 0x1b, 0x3c, 0x0c, 0xdc, 0x2e, 0x7f, 0x33,
|
||||
0x89, 0x55, 0xb3, 0xeb, 0xbf, 0x2c, 0xed, 0x78, 0xd8, 0x7a, 0x6a, 0x5a, 0x62, 0xfc, 0x25, 0x58,
|
||||
0x16, 0x9e, 0xaf, 0x64, 0xa4, 0x93, 0xb0, 0xe4, 0xf2, 0xc0, 0x0a, 0x30, 0x8d, 0x6e, 0x91, 0x63,
|
||||
0xec, 0xe9, 0xf5, 0x6b, 0xc2, 0xca, 0x18, 0x36, 0xc9, 0xb0, 0x0a, 0xf6, 0x7f, 0x94, 0x93, 0xdc,
|
||||
0x62, 0xdf, 0x5c, 0x1e, 0x88, 0xa4, 0x54, 0xa3, 0x96, 0xa7, 0x86, 0x32, 0xff, 0x12, 0x29, 0xcc,
|
||||
0xf1, 0x2f, 0x91, 0xf7, 0x46, 0xff, 0x12, 0xd1, 0x1b, 0xc2, 0x2b, 0x33, 0x77, 0x19, 0x3a, 0x3f,
|
||||
0x35, 0xc9, 0x61, 0x4b, 0x64, 0xfe, 0x32, 0xf2, 0xba, 0xa9, 0x08, 0x4a, 0x33, 0x5d, 0x71, 0x62,
|
||||
0x57, 0xd7, 0xc7, 0x4d, 0xf7, 0x26, 0xaf, 0x44, 0xce, 0x97, 0xee, 0x4c, 0x1d, 0xe8, 0xc3, 0x8b,
|
||||
0x1e, 0xe8, 0xf3, 0xfb, 0x13, 0xc9, 0x77, 0x6d, 0x66, 0x6f, 0xe5, 0x8c, 0x3f, 0x5e, 0xdc, 0x87,
|
||||
0x6a, 0xcf, 0x8f, 0x95, 0x8c, 0x4e, 0x28, 0x19, 0x99, 0xbe, 0xbc, 0x9c, 0x99, 0xad, 0x2d, 0x4d,
|
||||
0x48, 0x87, 0xce, 0x09, 0x97, 0xd5, 0x05, 0x18, 0xcd, 0xe2, 0x94, 0x7b, 0x7c, 0x8d, 0xbf, 0xec,
|
||||
0x5c, 0x82, 0x4a, 0x3c, 0x6c, 0x8f, 0x7a, 0xd8, 0x06, 0xb2, 0x8e, 0xc1, 0x9a, 0xda, 0xab, 0x77,
|
||||
0x45, 0xa4, 0xf5, 0xc3, 0xf8, 0x9b, 0xf4, 0xba, 0xcd, 0xe7, 0x53, 0x98, 0xbf, 0x97, 0x5d, 0x1e,
|
||||
0x6d, 0x42, 0xd7, 0x4e, 0x99, 0xe3, 0x54, 0x72, 0x66, 0x9d, 0xac, 0x7b, 0xd0, 0xc8, 0x0c, 0x1d,
|
||||
0x43, 0xe8, 0x30, 0xf4, 0x64, 0xd2, 0xc0, 0xc3, 0x67, 0x7d, 0x5f, 0xdb, 0x4b, 0x5a, 0x78, 0xf4,
|
||||
0x7c, 0xf3, 0xcf, 0x8a, 0xb0, 0x34, 0x6e, 0x2e, 0xd4, 0xca, 0xd4, 0x51, 0x66, 0x27, 0xf0, 0x74,
|
||||
0xaf, 0x73, 0x1d, 0xb7, 0xb0, 0x4e, 0x34, 0xec, 0xb7, 0x63, 0x9d, 0xdb, 0x51, 0x11, 0xc9, 0xf0,
|
||||
0xd5, 0xae, 0x4e, 0xf9, 0x08, 0xb1, 0x8c, 0xaf, 0xb6, 0x64, 0x5f, 0xb0, 0x6b, 0xd9, 0xab, 0xaf,
|
||||
0xb7, 0x93, 0x4b, 0xb2, 0x94, 0x68, 0xbd, 0x8f, 0x19, 0x61, 0x4b, 0x28, 0xb6, 0x86, 0xc5, 0x4d,
|
||||
0x6b, 0x6f, 0x94, 0x4f, 0xb1, 0x4f, 0x78, 0xdd, 0xdc, 0x24, 0xfa, 0x61, 0x81, 0x2f, 0x66, 0xea,
|
||||
0x9c, 0x9f, 0x14, 0xf8, 0x0a, 0x5c, 0x58, 0x1f, 0x86, 0x5e, 0x20, 0xbc, 0x14, 0xfb, 0xa7, 0x84,
|
||||
0x7d, 0x32, 0xde, 0x23, 0x61, 0x9f, 0x63, 0xd8, 0xbd, 0xf8, 0x64, 0xba, 0xf7, 0xc1, 0xfe, 0x60,
|
||||
0xf2, 0x4d, 0x2a, 0xe9, 0xc7, 0x59, 0xf9, 0x29, 0xfd, 0x0f, 0x4b, 0x88, 0xdd, 0x0e, 0x3d, 0x71,
|
||||
0x9c, 0xc1, 0xfe, 0x46, 0x89, 0x5f, 0x82, 0x65, 0x43, 0x9b, 0x51, 0xfe, 0x37, 0x4b, 0xfc, 0x22,
|
||||
0x2c, 0xad, 0xe9, 0x15, 0x33, 0xb3, 0xc2, 0x7e, 0xab, 0x84, 0x43, 0xa2, 0x13, 0xae, 0xdf, 0x2e,
|
||||
0xf1, 0x65, 0x58, 0xf8, 0x48, 0x46, 0x87, 0x94, 0xb9, 0xe2, 0xdc, 0xfe, 0x08, 0xeb, 0xbd, 0x7a,
|
||||
0x8a, 0x62, 0xbf, 0x43, 0x22, 0xc6, 0x83, 0x2a, 0xfb, 0xdd, 0xd2, 0xcd, 0xbf, 0xc8, 0x8f, 0xb0,
|
||||
0xa3, 0x83, 0xec, 0x40, 0x86, 0x5d, 0xa5, 0xaf, 0x04, 0x2f, 0x42, 0x3d, 0xee, 0xc9, 0x48, 0x11,
|
||||
0x48, 0xfb, 0x56, 0x48, 0x07, 0x56, 0xba, 0xd2, 0xd4, 0x7d, 0x31, 0x7d, 0x28, 0xae, 0xdc, 0x2e,
|
||||
0x6b, 0xe0, 0x32, 0x79, 0xa8, 0x53, 0x29, 0x4d, 0xbb, 0xe9, 0xe0, 0x2c, 0x39, 0x98, 0x60, 0x15,
|
||||
0x24, 0x1d, 0x46, 0x81, 0x4e, 0xbf, 0x45, 0xdf, 0xf5, 0x03, 0x7d, 0xf7, 0x6f, 0xd0, 0xc3, 0x22,
|
||||
0xb2, 0xae, 0xb1, 0xf2, 0x53, 0x5f, 0xdf, 0xb2, 0x33, 0xfb, 0xa1, 0x87, 0x7a, 0xa4, 0x16, 0xc9,
|
||||
0xc4, 0xfa, 0xcd, 0x7f, 0xfc, 0xf2, 0x6a, 0xfe, 0x8b, 0x2f, 0xaf, 0xe6, 0xff, 0xeb, 0xcb, 0xab,
|
||||
0xf9, 0xcf, 0xbf, 0xba, 0x9a, 0xfb, 0xe2, 0xab, 0xab, 0xb9, 0x7f, 0xfb, 0xea, 0x6a, 0xee, 0x63,
|
||||
0x36, 0xf9, 0x0f, 0xbe, 0x76, 0x85, 0x7c, 0xed, 0xee, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x32,
|
||||
0x7d, 0xca, 0x82, 0xdc, 0x37, 0x00, 0x00,
|
||||
0xac, 0x75, 0xb5, 0x2b, 0x65, 0x37, 0x10, 0x9a, 0xb4, 0x3d, 0x3c, 0xb8, 0x1d, 0xab, 0x68, 0xd8,
|
||||
0x51, 0x9a, 0xd8, 0xfe, 0xfd, 0x22, 0x5c, 0x6a, 0xf5, 0xdd, 0x48, 0xad, 0x07, 0xb2, 0x73, 0xd8,
|
||||
0x0a, 0xdd, 0x41, 0xdc, 0x93, 0x6a, 0xdd, 0x8d, 0x05, 0x7f, 0x15, 0x2a, 0x6d, 0x44, 0xc6, 0xcd,
|
||||
0xfc, 0xf5, 0xe2, 0xcd, 0xc6, 0x9d, 0x95, 0xd5, 0x31, 0xc1, 0xab, 0xc4, 0xe1, 0x18, 0x1a, 0xfe,
|
||||
0x3a, 0x54, 0x3d, 0xa1, 0x5c, 0x3f, 0x88, 0x9b, 0x85, 0xeb, 0xf9, 0x9b, 0x8d, 0x3b, 0x97, 0x57,
|
||||
0x75, 0xc7, 0xab, 0x49, 0xc7, 0xab, 0x2d, 0xea, 0xd8, 0x49, 0xe8, 0xf8, 0x5d, 0xa8, 0x1d, 0xf8,
|
||||
0x81, 0x78, 0x24, 0x4e, 0xe2, 0x66, 0xf1, 0x6c, 0x9e, 0x94, 0x90, 0xdf, 0x87, 0x25, 0x71, 0xac,
|
||||
0x22, 0xd7, 0x11, 0x81, 0xab, 0x7c, 0x19, 0xc6, 0xcd, 0x12, 0x69, 0x77, 0x79, 0x42, 0xbb, 0xa4,
|
||||
0xdd, 0x99, 0x20, 0xe7, 0xd7, 0xa1, 0x21, 0xdb, 0x9f, 0x8a, 0x8e, 0xda, 0x3b, 0x19, 0x88, 0xb8,
|
||||
0x59, 0xbe, 0x5e, 0xbc, 0x59, 0x77, 0xb2, 0x28, 0xfe, 0x36, 0x34, 0x3a, 0x32, 0x08, 0x44, 0x47,
|
||||
0xcb, 0xaf, 0x9c, 0xad, 0x5a, 0x96, 0x96, 0xaf, 0xc1, 0x62, 0x64, 0x7a, 0x7a, 0xec, 0x87, 0x87,
|
||||
0x71, 0xb3, 0x4a, 0xca, 0x5d, 0x39, 0x45, 0x39, 0xa4, 0x71, 0xc6, 0x39, 0xec, 0x3f, 0x79, 0x0f,
|
||||
0xca, 0x34, 0xb5, 0x7c, 0x09, 0x0a, 0xbe, 0xd7, 0xcc, 0x5f, 0xcf, 0xdf, 0xac, 0x3b, 0x05, 0xdf,
|
||||
0xe3, 0xb7, 0xa1, 0x72, 0xe0, 0x8b, 0xc0, 0x3b, 0x77, 0x86, 0x0d, 0x19, 0x7f, 0x00, 0x0b, 0x91,
|
||||
0x88, 0x55, 0xe4, 0x9b, 0x91, 0xe8, 0x49, 0xfe, 0xe6, 0xac, 0x75, 0x5c, 0x75, 0x32, 0x84, 0xce,
|
||||
0x18, 0x1b, 0xce, 0x58, 0xa7, 0xe7, 0x07, 0x5e, 0x24, 0xc2, 0x6d, 0x4f, 0xcf, 0x77, 0xdd, 0xc9,
|
||||
0xa2, 0xf8, 0x4d, 0xb8, 0xd0, 0x76, 0x3b, 0x87, 0xdd, 0x48, 0x0e, 0x43, 0x6f, 0x43, 0x06, 0x32,
|
||||
0x6a, 0x96, 0x49, 0xed, 0x49, 0x34, 0x7f, 0x0d, 0xca, 0x6e, 0xe0, 0x77, 0x43, 0x9a, 0xd5, 0xa5,
|
||||
0x3b, 0xd6, 0x4c, 0x5d, 0xd6, 0x90, 0xc2, 0xd1, 0x84, 0x7c, 0x0b, 0x16, 0x8f, 0x44, 0xa4, 0xfc,
|
||||
0x8e, 0x1b, 0x10, 0xbe, 0x59, 0x25, 0x4e, 0x7b, 0x26, 0xe7, 0x7e, 0x96, 0xd2, 0x19, 0x67, 0xe4,
|
||||
0xdb, 0x00, 0x31, 0x9a, 0x3a, 0x59, 0x6c, 0xb3, 0x41, 0x93, 0xf1, 0xed, 0x99, 0x62, 0x36, 0x64,
|
||||
0xa8, 0x44, 0xa8, 0x56, 0x5b, 0x29, 0xf9, 0x56, 0xce, 0xc9, 0x30, 0xf3, 0x37, 0xa1, 0xa4, 0xc4,
|
||||
0xb1, 0x6a, 0x2e, 0x9d, 0x31, 0xa3, 0x89, 0x90, 0x3d, 0x71, 0xac, 0xb6, 0x72, 0x0e, 0x31, 0x20,
|
||||
0x23, 0x9a, 0x72, 0xf3, 0xc2, 0x1c, 0x8c, 0x0f, 0xfd, 0x40, 0x20, 0x23, 0x32, 0xf0, 0x77, 0xa1,
|
||||
0x12, 0xb8, 0x27, 0x72, 0xa8, 0x9a, 0x8c, 0x58, 0x7f, 0xe1, 0x4c, 0xd6, 0xc7, 0x44, 0xba, 0x95,
|
||||
0x73, 0x0c, 0x13, 0x7f, 0x03, 0x8a, 0x9e, 0x7f, 0xd4, 0x5c, 0x26, 0xde, 0xeb, 0x67, 0xf2, 0x6e,
|
||||
0xfa, 0x47, 0x5b, 0x39, 0x07, 0xc9, 0xf9, 0x06, 0xd4, 0xda, 0x52, 0x1e, 0xf6, 0xdd, 0xe8, 0xb0,
|
||||
0xc9, 0x89, 0xf5, 0x5b, 0x67, 0xb2, 0xae, 0x1b, 0xe2, 0xad, 0x9c, 0x93, 0x32, 0xe2, 0x90, 0xfd,
|
||||
0x8e, 0x0c, 0x9b, 0x17, 0xe7, 0x18, 0xf2, 0x76, 0x47, 0x86, 0x38, 0x64, 0x64, 0x40, 0xc6, 0xc0,
|
||||
0x0f, 0x0f, 0x9b, 0x2b, 0x73, 0x30, 0xe2, 0xde, 0x41, 0x46, 0x64, 0x40, 0xb5, 0x3d, 0x57, 0xb9,
|
||||
0x47, 0xbe, 0x78, 0xde, 0x7c, 0x69, 0x0e, 0xb5, 0x37, 0x0d, 0x31, 0xaa, 0x9d, 0x30, 0xa2, 0x90,
|
||||
0x64, 0x63, 0x36, 0x2f, 0xcd, 0x21, 0x24, 0xd9, 0xd3, 0x28, 0x24, 0x61, 0xe4, 0xbf, 0x06, 0xcb,
|
||||
0x07, 0xc2, 0x55, 0xc3, 0x48, 0x78, 0x23, 0x87, 0x75, 0x99, 0xa4, 0xad, 0x9e, 0xbd, 0xf6, 0x93,
|
||||
0x5c, 0x5b, 0x39, 0x67, 0x5a, 0x14, 0x7f, 0x07, 0xca, 0x81, 0xab, 0xc4, 0x71, 0xb3, 0x49, 0x32,
|
||||
0xed, 0x73, 0x8c, 0x42, 0x89, 0xe3, 0xad, 0x9c, 0xa3, 0x59, 0xf8, 0x2f, 0xc3, 0x05, 0xe5, 0xb6,
|
||||
0x03, 0xb1, 0x73, 0x60, 0x08, 0xe2, 0xe6, 0xcf, 0x91, 0x94, 0x57, 0xcf, 0x36, 0xe7, 0x71, 0x9e,
|
||||
0xad, 0x9c, 0x33, 0x29, 0x06, 0xb5, 0x22, 0x54, 0xd3, 0x9a, 0x43, 0x2b, 0x92, 0x87, 0x5a, 0x11,
|
||||
0x0b, 0x7f, 0x0c, 0x0d, 0xfa, 0xd8, 0x90, 0xc1, 0xb0, 0x1f, 0x36, 0xaf, 0x90, 0x84, 0x9b, 0xe7,
|
||||
0x4b, 0xd0, 0xf4, 0x5b, 0x39, 0x27, 0xcb, 0x8e, 0x8b, 0x48, 0xa0, 0x23, 0x9f, 0x37, 0xaf, 0xce,
|
||||
0xb1, 0x88, 0x7b, 0x86, 0x18, 0x17, 0x31, 0x61, 0xb4, 0x7e, 0x00, 0x0b, 0x59, 0xef, 0xc8, 0x39,
|
||||
0x94, 0x22, 0xe1, 0x6a, 0xcf, 0x5c, 0x73, 0xe8, 0x1b, 0x71, 0xc2, 0xf3, 0x15, 0x79, 0xe6, 0x9a,
|
||||
0x43, 0xdf, 0xfc, 0x12, 0x54, 0x22, 0xd1, 0x97, 0x47, 0x82, 0x1c, 0x6f, 0xcd, 0x31, 0x10, 0xd2,
|
||||
0x7a, 0x91, 0xdb, 0x6d, 0x96, 0x34, 0x2d, 0x7e, 0x23, 0xad, 0x17, 0xc9, 0xc1, 0x4e, 0x48, 0x8e,
|
||||
0xb3, 0xe6, 0x18, 0xc8, 0xfa, 0xbd, 0xd7, 0xa0, 0x6a, 0x94, 0xb3, 0xfe, 0x38, 0x0f, 0x15, 0xbd,
|
||||
0xb1, 0xf9, 0x7d, 0x28, 0xc7, 0xea, 0x24, 0x10, 0xa4, 0xc3, 0xd2, 0x9d, 0xef, 0xcc, 0xe1, 0x0c,
|
||||
0x56, 0x5b, 0xc8, 0xe0, 0x68, 0x3e, 0xdb, 0x81, 0x32, 0xc1, 0xbc, 0x0a, 0x45, 0x47, 0x3e, 0x67,
|
||||
0x39, 0x0e, 0x50, 0xd1, 0x93, 0xc6, 0xf2, 0x88, 0xdc, 0xf4, 0x8f, 0x58, 0x01, 0x91, 0x5b, 0xc2,
|
||||
0xf5, 0x44, 0xc4, 0x8a, 0x7c, 0x11, 0xea, 0xc9, 0xf4, 0xc4, 0xac, 0xc4, 0x19, 0x2c, 0x64, 0x26,
|
||||
0x3e, 0x66, 0x65, 0xeb, 0x7f, 0x4a, 0x50, 0xc2, 0x7d, 0xc8, 0x5f, 0x86, 0x45, 0xe5, 0x46, 0x5d,
|
||||
0xa1, 0x83, 0x8a, 0xed, 0xe4, 0x0c, 0x1b, 0x47, 0xf2, 0x77, 0x93, 0x31, 0x14, 0x68, 0x0c, 0xdf,
|
||||
0x3e, 0x77, 0x7f, 0x8f, 0x8d, 0x20, 0x73, 0x1a, 0x16, 0xe7, 0x3b, 0x0d, 0x1f, 0x42, 0x0d, 0xdd,
|
||||
0x4a, 0xcb, 0xff, 0x81, 0xa0, 0xa9, 0x5f, 0xba, 0x73, 0xeb, 0xfc, 0x2e, 0xb7, 0x0d, 0x87, 0x93,
|
||||
0xf2, 0xf2, 0x6d, 0xa8, 0x77, 0xdc, 0xc8, 0x23, 0x65, 0x68, 0xb5, 0x96, 0xee, 0xbc, 0x72, 0xbe,
|
||||
0xa0, 0x8d, 0x84, 0xc5, 0x19, 0x71, 0xf3, 0x1d, 0x68, 0x78, 0x22, 0xee, 0x44, 0xfe, 0x80, 0xdc,
|
||||
0x8c, 0x3e, 0x13, 0xbf, 0x7b, 0xbe, 0xb0, 0xcd, 0x11, 0x93, 0x93, 0x95, 0xc0, 0xaf, 0x42, 0x3d,
|
||||
0x4a, 0xfd, 0x4c, 0x95, 0x0e, 0xea, 0x11, 0xc2, 0x7e, 0x13, 0x6a, 0xc9, 0x78, 0xf8, 0x02, 0xd4,
|
||||
0xf0, 0xf7, 0xa9, 0x0c, 0x05, 0xcb, 0xe1, 0xda, 0x22, 0xd4, 0xea, 0xbb, 0x41, 0xc0, 0xf2, 0x7c,
|
||||
0x09, 0x00, 0xc1, 0x27, 0xc2, 0xf3, 0x87, 0x7d, 0x56, 0xb0, 0x7f, 0x31, 0xb1, 0x96, 0x1a, 0x94,
|
||||
0x76, 0xdd, 0x2e, 0x72, 0x2c, 0x40, 0x2d, 0x71, 0x9b, 0x2c, 0x8f, 0xfc, 0x9b, 0x6e, 0xdc, 0x6b,
|
||||
0x4b, 0x37, 0xf2, 0x58, 0x81, 0x37, 0xa0, 0xba, 0x16, 0x75, 0x7a, 0xfe, 0x91, 0x60, 0x45, 0xfb,
|
||||
0x36, 0x34, 0x32, 0xfa, 0xa2, 0x08, 0xd3, 0x69, 0x1d, 0xca, 0x6b, 0x9e, 0x27, 0x3c, 0x96, 0x47,
|
||||
0x06, 0x33, 0x40, 0x56, 0xb0, 0x5f, 0x81, 0x7a, 0x3a, 0x5b, 0x48, 0x8e, 0x07, 0x28, 0xcb, 0xe1,
|
||||
0x17, 0xa2, 0x59, 0x1e, 0xad, 0x72, 0x3b, 0x0c, 0xfc, 0x50, 0xb0, 0x82, 0xf5, 0x09, 0x99, 0x2a,
|
||||
0xff, 0xa5, 0xf1, 0x0d, 0x71, 0xe3, 0xbc, 0x13, 0x6e, 0x7c, 0x37, 0x5c, 0xc9, 0x8c, 0xef, 0xb1,
|
||||
0x4f, 0xca, 0xd5, 0xa0, 0xb4, 0x29, 0x55, 0xcc, 0xf2, 0xd6, 0x7f, 0x17, 0xa0, 0x96, 0x1c, 0x6c,
|
||||
0x9c, 0x41, 0x71, 0x18, 0x05, 0xc6, 0xa0, 0xf1, 0x93, 0xaf, 0x40, 0x59, 0xf9, 0xca, 0x98, 0x71,
|
||||
0xdd, 0xd1, 0x00, 0xc6, 0x4c, 0xd9, 0x95, 0x2d, 0x52, 0xdb, 0xe4, 0x52, 0xf9, 0x7d, 0xb7, 0x2b,
|
||||
0xb6, 0xdc, 0xb8, 0x47, 0xf6, 0x58, 0x77, 0x46, 0x08, 0xe4, 0x3f, 0x70, 0x8f, 0xd0, 0xe6, 0xa8,
|
||||
0x5d, 0x47, 0x53, 0x59, 0x14, 0xbf, 0x0b, 0x25, 0x1c, 0xa0, 0x31, 0x9a, 0x9f, 0x9f, 0x18, 0x30,
|
||||
0x9a, 0xc9, 0x6e, 0x24, 0x70, 0x79, 0x56, 0x31, 0xaa, 0x75, 0x88, 0x98, 0xdf, 0x80, 0x25, 0xbd,
|
||||
0x09, 0x77, 0x28, 0xde, 0xdd, 0xf6, 0x28, 0x9a, 0xaa, 0x3b, 0x13, 0x58, 0xbe, 0x86, 0xd3, 0xe9,
|
||||
0x2a, 0xd1, 0xac, 0xcd, 0x61, 0xdf, 0xc9, 0xe4, 0xac, 0xb6, 0x90, 0xc5, 0xd1, 0x9c, 0xf6, 0x3d,
|
||||
0x9c, 0x53, 0x57, 0x09, 0x5c, 0xe6, 0x07, 0xfd, 0x81, 0x3a, 0xd1, 0x46, 0xf3, 0x50, 0xa8, 0x4e,
|
||||
0xcf, 0x0f, 0xbb, 0x2c, 0xaf, 0xa7, 0x18, 0x17, 0x91, 0x48, 0xa2, 0x48, 0x46, 0xac, 0x68, 0x59,
|
||||
0x50, 0x42, 0x1b, 0x45, 0x27, 0x19, 0xba, 0x7d, 0x61, 0x66, 0x9a, 0xbe, 0xad, 0x8b, 0xb0, 0x3c,
|
||||
0x75, 0x2e, 0x5a, 0x7f, 0x5d, 0xd1, 0x16, 0x82, 0x1c, 0x14, 0x93, 0x19, 0x0e, 0x0a, 0xb7, 0x5e,
|
||||
0xc8, 0xc7, 0xa0, 0x94, 0x71, 0x1f, 0xf3, 0x2e, 0x94, 0x71, 0x60, 0x89, 0x8b, 0x99, 0x83, 0xfd,
|
||||
0x09, 0x92, 0x3b, 0x9a, 0x8b, 0x37, 0xa1, 0xda, 0xe9, 0x89, 0xce, 0xa1, 0xf0, 0x8c, 0xaf, 0x4f,
|
||||
0x40, 0x34, 0x9a, 0x4e, 0x26, 0x4c, 0xd6, 0x00, 0x99, 0x44, 0x47, 0x86, 0x0f, 0xfa, 0xf2, 0x53,
|
||||
0x9f, 0xd6, 0x15, 0x4d, 0x22, 0x41, 0x24, 0xad, 0xdb, 0x68, 0x23, 0x66, 0xd9, 0x46, 0x08, 0xeb,
|
||||
0x01, 0x94, 0xa9, 0x6f, 0xdc, 0x09, 0x5a, 0x67, 0x9d, 0xb5, 0xdd, 0x98, 0x4f, 0x67, 0xa3, 0xb2,
|
||||
0xf5, 0xd3, 0x02, 0x94, 0x10, 0xe6, 0xb7, 0xa0, 0x1c, 0xb9, 0x61, 0x57, 0x2f, 0xc0, 0x74, 0xf2,
|
||||
0xe7, 0x60, 0x9b, 0xa3, 0x49, 0xf8, 0x7d, 0x63, 0x8a, 0x85, 0x39, 0x8c, 0x25, 0xed, 0x31, 0x6b,
|
||||
0x96, 0x2b, 0x50, 0x1e, 0xb8, 0x91, 0xdb, 0x37, 0xfb, 0x44, 0x03, 0xf6, 0x4f, 0xf2, 0x50, 0x42,
|
||||
0x22, 0xbe, 0x0c, 0x8b, 0x2d, 0x15, 0xf9, 0x87, 0x42, 0xf5, 0x22, 0x39, 0xec, 0xf6, 0xb4, 0x25,
|
||||
0x3d, 0x12, 0x27, 0xda, 0xdf, 0x68, 0x87, 0xa0, 0xdc, 0xc0, 0xef, 0xb0, 0x02, 0x5a, 0xd5, 0xba,
|
||||
0x0c, 0x3c, 0x56, 0xe4, 0x17, 0xa0, 0xf1, 0x2c, 0xf4, 0x44, 0x14, 0x77, 0x64, 0x24, 0x3c, 0x56,
|
||||
0x32, 0xbb, 0xfb, 0x90, 0x95, 0xe9, 0x2c, 0x13, 0xc7, 0x8a, 0x72, 0x12, 0x56, 0xe1, 0x17, 0xe1,
|
||||
0xc2, 0xfa, 0x78, 0xa2, 0xc2, 0xaa, 0xe8, 0x93, 0x9e, 0x88, 0x10, 0x8d, 0x8c, 0xd5, 0xb4, 0x11,
|
||||
0xcb, 0x4f, 0x7d, 0x56, 0xc7, 0xce, 0xf4, 0x3e, 0x61, 0x60, 0xff, 0x6d, 0x3e, 0xf1, 0x1c, 0x8b,
|
||||
0x50, 0xdf, 0x75, 0x23, 0xb7, 0x1b, 0xb9, 0x03, 0xd4, 0xaf, 0x01, 0x55, 0x7d, 0x70, 0xbe, 0xae,
|
||||
0xbd, 0x9b, 0x06, 0xee, 0x68, 0xdf, 0xa8, 0x81, 0xbb, 0xac, 0x38, 0x02, 0xde, 0x60, 0x25, 0xec,
|
||||
0xe3, 0xc3, 0xa1, 0x54, 0x82, 0x95, 0xc9, 0xd7, 0x49, 0x4f, 0xb0, 0x0a, 0x22, 0xf7, 0xd0, 0xa3,
|
||||
0xb0, 0x2a, 0x8e, 0x79, 0x03, 0xed, 0xa7, 0x2d, 0x8f, 0x59, 0x0d, 0xd5, 0xc0, 0x69, 0x14, 0x1e,
|
||||
0xab, 0x63, 0xcb, 0xd3, 0x61, 0xbf, 0x2d, 0x70, 0x98, 0x80, 0x2d, 0x7b, 0xb2, 0xdb, 0x0d, 0x04,
|
||||
0x6b, 0xe0, 0x1c, 0x64, 0x9c, 0x2f, 0x5b, 0x20, 0x4f, 0xeb, 0x06, 0x81, 0x1c, 0x2a, 0xb6, 0x68,
|
||||
0x7d, 0x51, 0x84, 0x12, 0x66, 0x19, 0xb8, 0x77, 0x7a, 0xe8, 0x67, 0xcc, 0xde, 0xc1, 0xef, 0x74,
|
||||
0x07, 0x16, 0x46, 0x3b, 0x90, 0xbf, 0x63, 0x56, 0xba, 0x38, 0x87, 0x97, 0x45, 0xc1, 0xd9, 0x45,
|
||||
0xe6, 0x50, 0xea, 0xfb, 0x7d, 0x61, 0x7c, 0x1d, 0x7d, 0x23, 0x2e, 0xc6, 0xf3, 0x18, 0xb7, 0x41,
|
||||
0xd1, 0xa1, 0x6f, 0xdc, 0x35, 0x2e, 0x1e, 0x0b, 0x6b, 0x8a, 0xf6, 0x40, 0xd1, 0x49, 0x40, 0xbd,
|
||||
0x9b, 0xd1, 0x2b, 0x55, 0xe7, 0xd8, 0xcd, 0xd4, 0x7d, 0xd6, 0x23, 0x8d, 0x9c, 0x41, 0x6d, 0x7e,
|
||||
0xf6, 0xcc, 0x21, 0xb1, 0x69, 0xac, 0x71, 0x74, 0x80, 0xd5, 0xf4, 0xec, 0xb1, 0x3c, 0xae, 0x12,
|
||||
0x6d, 0x43, 0xed, 0xcb, 0xf6, 0x7d, 0x4f, 0x48, 0x56, 0xa4, 0x03, 0x6e, 0xe8, 0xf9, 0x92, 0x95,
|
||||
0x30, 0xa2, 0xda, 0xdd, 0x7c, 0xc8, 0xca, 0xf6, 0x8d, 0xcc, 0x51, 0xb3, 0x36, 0x54, 0x52, 0x8b,
|
||||
0x21, 0xb3, 0xcc, 0x6b, 0x2b, 0x6b, 0x0b, 0x8f, 0x15, 0xec, 0xef, 0xcd, 0x70, 0x9f, 0x8b, 0x50,
|
||||
0x7f, 0x36, 0x08, 0xa4, 0xeb, 0x9d, 0xe1, 0x3f, 0x17, 0x00, 0x46, 0x59, 0xab, 0xf5, 0x77, 0xd6,
|
||||
0xe8, 0x98, 0xc6, 0x18, 0x33, 0x96, 0xc3, 0xa8, 0x23, 0xc8, 0x35, 0xd4, 0x1d, 0x03, 0xf1, 0xf7,
|
||||
0xa1, 0x8c, 0xed, 0x71, 0xb3, 0x40, 0x1e, 0xe3, 0xd6, 0x5c, 0xb9, 0xd2, 0xea, 0xbe, 0x2f, 0x9e,
|
||||
0x3b, 0x9a, 0x91, 0xdf, 0xcb, 0x86, 0x1d, 0xe7, 0xd4, 0x63, 0x46, 0x94, 0xfc, 0x1a, 0x80, 0xdb,
|
||||
0x51, 0xfe, 0x91, 0x40, 0x59, 0x66, 0xef, 0x67, 0x30, 0xdc, 0x81, 0x06, 0x6e, 0xc9, 0xc1, 0x4e,
|
||||
0x84, 0xbb, 0xb8, 0xb9, 0x40, 0x82, 0x5f, 0x9b, 0x4f, 0xbd, 0x0f, 0x52, 0x46, 0x27, 0x2b, 0x84,
|
||||
0x3f, 0x83, 0x05, 0x5d, 0xeb, 0x31, 0x42, 0x17, 0x49, 0xe8, 0xeb, 0xf3, 0x09, 0xdd, 0x19, 0x71,
|
||||
0x3a, 0x63, 0x62, 0xa6, 0x0b, 0x3f, 0xe5, 0x17, 0x2d, 0xfc, 0x58, 0x7f, 0x53, 0x86, 0x12, 0x0d,
|
||||
0x7b, 0xb2, 0xee, 0xb3, 0x31, 0xe6, 0x5e, 0x6f, 0xcf, 0xbf, 0x3c, 0x13, 0xbb, 0x8f, 0x76, 0x73,
|
||||
0x31, 0xb3, 0x9b, 0xdf, 0x87, 0x72, 0x2c, 0x23, 0x95, 0x2c, 0xd9, 0x9c, 0x0b, 0xdf, 0x92, 0x91,
|
||||
0x72, 0x34, 0x23, 0x7f, 0x08, 0xd5, 0x03, 0x3f, 0x50, 0x38, 0x91, 0x7a, 0xc0, 0xaf, 0xce, 0x27,
|
||||
0xe3, 0x21, 0x31, 0x39, 0x09, 0x33, 0x7f, 0x9c, 0x35, 0xa0, 0x0a, 0x49, 0x5a, 0x9d, 0x4f, 0xd2,
|
||||
0x2c, 0xbb, 0xba, 0x05, 0xac, 0x23, 0x8f, 0x44, 0x94, 0xb4, 0x3d, 0x12, 0x27, 0xe6, 0xc0, 0x9c,
|
||||
0xc2, 0x73, 0x0b, 0x6a, 0x3d, 0xdf, 0x13, 0x18, 0x73, 0x90, 0x5f, 0xa8, 0x39, 0x29, 0xcc, 0x1f,
|
||||
0x41, 0x8d, 0x62, 0x75, 0xf4, 0x50, 0xf5, 0x17, 0x9e, 0x7c, 0x9d, 0x36, 0x24, 0x02, 0xb0, 0x23,
|
||||
0xea, 0xfc, 0xa1, 0xaf, 0x9a, 0xa0, 0x3b, 0x4a, 0x60, 0x54, 0x98, 0x6c, 0x34, 0xab, 0x70, 0x43,
|
||||
0x2b, 0x3c, 0x89, 0xe7, 0x6f, 0xc0, 0x4b, 0x84, 0x9b, 0x38, 0xb0, 0x70, 0x7b, 0xa0, 0xd0, 0xd9,
|
||||
0x8d, 0xf6, 0x1b, 0xc6, 0x79, 0xe1, 0x71, 0x82, 0x59, 0x5b, 0xe2, 0x76, 0x62, 0xa5, 0xcf, 0xa7,
|
||||
0x0f, 0xdc, 0x20, 0x10, 0xd1, 0x89, 0x4e, 0xf9, 0x1e, 0xb9, 0x61, 0xdb, 0x0d, 0x59, 0xd1, 0xbe,
|
||||
0x09, 0x25, 0xd2, 0xbd, 0x0e, 0x65, 0x9d, 0x1a, 0x50, 0x9a, 0x68, 0xd2, 0x02, 0x72, 0x57, 0x8f,
|
||||
0x31, 0x6e, 0x64, 0x05, 0xeb, 0xaf, 0x8a, 0x50, 0x4b, 0xb4, 0xc4, 0x20, 0xf9, 0x50, 0x9c, 0x24,
|
||||
0x41, 0xf2, 0xa1, 0x38, 0xa1, 0xd8, 0x25, 0xde, 0xf7, 0x63, 0xbf, 0x6d, 0x62, 0xb1, 0x9a, 0x33,
|
||||
0x42, 0xe0, 0xf1, 0xff, 0xdc, 0xf7, 0x54, 0x8f, 0x8c, 0xb3, 0xec, 0x68, 0x80, 0xdf, 0x84, 0x0b,
|
||||
0x9e, 0xab, 0xc4, 0x76, 0xd8, 0x09, 0x86, 0x9e, 0xd8, 0xc3, 0xa3, 0x43, 0xe7, 0xc6, 0x93, 0x68,
|
||||
0xfe, 0x7d, 0x00, 0xe5, 0xf7, 0xc5, 0x43, 0x19, 0xf5, 0x5d, 0x65, 0x02, 0xe2, 0xb7, 0x5f, 0xcc,
|
||||
0x7c, 0x56, 0xf7, 0x52, 0x01, 0x4e, 0x46, 0x18, 0x8a, 0xc6, 0xde, 0x8c, 0xe8, 0xea, 0xd7, 0x12,
|
||||
0xbd, 0x99, 0x0a, 0x70, 0x32, 0xc2, 0xec, 0x5f, 0x01, 0x18, 0xb5, 0xf0, 0x4b, 0xc0, 0x9f, 0xc8,
|
||||
0x50, 0xf5, 0xd6, 0xda, 0xed, 0x68, 0x5d, 0x1c, 0xc8, 0x48, 0x6c, 0xba, 0xe8, 0xf3, 0x5f, 0x82,
|
||||
0xe5, 0x14, 0xbf, 0x76, 0xa0, 0x44, 0x84, 0x68, 0x9a, 0xfa, 0x56, 0x4f, 0x46, 0x4a, 0x07, 0x14,
|
||||
0xf4, 0xf9, 0xac, 0xc5, 0x8a, 0x78, 0xce, 0x6c, 0xb7, 0x76, 0x58, 0xc9, 0xbe, 0x09, 0x30, 0x1a,
|
||||
0x12, 0x05, 0xde, 0xf4, 0xf5, 0xfa, 0x1d, 0x13, 0x86, 0x13, 0x74, 0xe7, 0x0d, 0x96, 0xb7, 0xfe,
|
||||
0x39, 0x0f, 0x25, 0xdc, 0xd3, 0x98, 0x73, 0x64, 0x0d, 0x50, 0x2f, 0x5f, 0x16, 0xf5, 0xf5, 0x3c,
|
||||
0x11, 0xca, 0xce, 0x7a, 0xa2, 0xb7, 0xa0, 0xd1, 0x19, 0xc6, 0x4a, 0xf6, 0xc9, 0x75, 0x36, 0x8b,
|
||||
0xb4, 0xdb, 0x2f, 0x4d, 0x65, 0xef, 0xfb, 0x6e, 0x30, 0x14, 0x4e, 0x96, 0xd4, 0xfe, 0x96, 0x31,
|
||||
0xe2, 0x2a, 0x14, 0xd7, 0xe2, 0x8e, 0x49, 0xd2, 0x44, 0xdc, 0xd1, 0x11, 0xe0, 0x06, 0x51, 0xb2,
|
||||
0x82, 0xf5, 0xef, 0x15, 0xa8, 0x68, 0x07, 0xc3, 0x3f, 0x84, 0x9a, 0x1c, 0x88, 0xc8, 0x55, 0x32,
|
||||
0x32, 0x99, 0xe1, 0xbd, 0x17, 0x71, 0x50, 0xab, 0x3b, 0x86, 0xd9, 0x49, 0xc5, 0x4c, 0xce, 0x52,
|
||||
0x61, 0x7a, 0x96, 0x6e, 0x01, 0x4b, 0x7c, 0xd1, 0x6e, 0x84, 0x7c, 0xea, 0xc4, 0xc4, 0xf9, 0x53,
|
||||
0x78, 0xbe, 0x07, 0xf5, 0x8e, 0x0c, 0x3d, 0x3f, 0xcd, 0x12, 0x97, 0xee, 0x7c, 0xef, 0x85, 0x34,
|
||||
0xdc, 0x48, 0xb8, 0x9d, 0x91, 0x20, 0xfe, 0x2a, 0x94, 0x8f, 0x70, 0xfa, 0x28, 0xd6, 0x3a, 0x7d,
|
||||
0x72, 0x35, 0x11, 0xff, 0x18, 0x1a, 0x9f, 0x0d, 0xfd, 0xce, 0xe1, 0x4e, 0xb6, 0x0a, 0xf1, 0xd6,
|
||||
0x0b, 0x69, 0xf1, 0xe1, 0x88, 0xdf, 0xc9, 0x0a, 0xb3, 0xaf, 0x40, 0x2d, 0x99, 0x43, 0x5a, 0xb6,
|
||||
0xd0, 0x63, 0x39, 0x5e, 0x81, 0xc2, 0x4e, 0xc4, 0xf2, 0xf6, 0x57, 0x79, 0xa8, 0xa7, 0xfa, 0x8f,
|
||||
0x17, 0x06, 0x1e, 0x7c, 0x36, 0x74, 0x03, 0x96, 0xa7, 0xc8, 0x56, 0x2a, 0x0d, 0x91, 0xa9, 0x7f,
|
||||
0x10, 0x09, 0x57, 0x51, 0x3d, 0x0a, 0xfd, 0x97, 0x88, 0x63, 0x56, 0xe2, 0x1c, 0x96, 0x0c, 0x7a,
|
||||
0x27, 0xd2, 0xa4, 0x65, 0x0c, 0x7c, 0xb1, 0x35, 0x41, 0x54, 0xb4, 0xbb, 0x3b, 0x14, 0x3a, 0xb0,
|
||||
0x7f, 0x2a, 0x15, 0x01, 0x35, 0xd4, 0x65, 0x3b, 0x64, 0x75, 0xec, 0xf3, 0xa9, 0x54, 0xdb, 0x21,
|
||||
0x83, 0x51, 0xc4, 0xd5, 0x48, 0xba, 0x27, 0x68, 0x81, 0xe2, 0xb9, 0x20, 0xd8, 0x0e, 0xd9, 0xa2,
|
||||
0x69, 0xd0, 0xd0, 0x12, 0x4a, 0x7c, 0x70, 0xec, 0x76, 0x90, 0xfd, 0x02, 0x5f, 0x02, 0x40, 0x1e,
|
||||
0x03, 0x33, 0xfb, 0x9f, 0xf2, 0xd0, 0xc8, 0xcc, 0x0f, 0x46, 0x71, 0xd4, 0x88, 0x9b, 0x5f, 0x07,
|
||||
0x75, 0xdf, 0x17, 0xb1, 0x12, 0x91, 0x97, 0x6c, 0xec, 0x3d, 0x89, 0x9f, 0x05, 0xec, 0x63, 0x4f,
|
||||
0xf6, 0x65, 0x14, 0xc9, 0xe7, 0xac, 0x88, 0xd0, 0x63, 0x37, 0x56, 0x1f, 0x09, 0x71, 0xc8, 0x4a,
|
||||
0x38, 0xbc, 0x8d, 0x61, 0x14, 0x89, 0x50, 0x23, 0xca, 0xa4, 0x90, 0x38, 0xd6, 0x50, 0x05, 0x85,
|
||||
0x22, 0x31, 0x79, 0x0e, 0x56, 0xe5, 0x0c, 0x16, 0x0c, 0xb5, 0xc6, 0xd4, 0x90, 0x00, 0xc9, 0x35,
|
||||
0x58, 0xc7, 0x04, 0x48, 0x27, 0x10, 0x3b, 0x07, 0x9b, 0xee, 0x49, 0xbc, 0xd6, 0x95, 0x0c, 0x26,
|
||||
0x91, 0x4f, 0xe5, 0x73, 0xd6, 0xb0, 0x86, 0x00, 0xa3, 0xd0, 0x0a, 0x43, 0x4a, 0x34, 0x83, 0xb4,
|
||||
0xc4, 0x67, 0x20, 0xbe, 0x03, 0x80, 0x5f, 0x44, 0x99, 0xc4, 0x95, 0x2f, 0x70, 0x76, 0x12, 0x9f,
|
||||
0x93, 0x11, 0x61, 0xfd, 0x3a, 0xd4, 0xd3, 0x06, 0xcc, 0x10, 0xe8, 0x94, 0x4b, 0xbb, 0x4d, 0x40,
|
||||
0x3c, 0x49, 0xfc, 0xd0, 0x13, 0xc7, 0xb4, 0x2d, 0xcb, 0x8e, 0x06, 0x50, 0xcb, 0x9e, 0xef, 0x79,
|
||||
0x22, 0x4c, 0x0a, 0xb1, 0x1a, 0x9a, 0x75, 0x6d, 0x55, 0x9a, 0x79, 0x6d, 0x65, 0xfd, 0x2a, 0x34,
|
||||
0x32, 0xb1, 0xdf, 0xa9, 0xc3, 0xce, 0x28, 0x56, 0x18, 0x57, 0xec, 0x2a, 0xd4, 0xa5, 0x29, 0xae,
|
||||
0xc4, 0xe4, 0xf2, 0xea, 0xce, 0x08, 0x61, 0xfd, 0x65, 0x01, 0xca, 0x7a, 0x68, 0x93, 0xb1, 0xdf,
|
||||
0x43, 0xa8, 0x60, 0xf2, 0x32, 0x4c, 0xee, 0xfc, 0xe6, 0x8c, 0xaf, 0x5a, 0xc4, 0xb3, 0x95, 0x73,
|
||||
0x0c, 0x37, 0x7f, 0x17, 0x8a, 0xca, 0xed, 0x9a, 0x3a, 0xc6, 0x77, 0xe6, 0x13, 0xb2, 0xe7, 0x76,
|
||||
0xb7, 0x72, 0x0e, 0xf2, 0xf1, 0xc7, 0x50, 0xeb, 0x98, 0xd4, 0xd3, 0xf8, 0x94, 0x39, 0xc3, 0xb3,
|
||||
0x24, 0x61, 0xdd, 0xca, 0x39, 0xa9, 0x04, 0xfe, 0x3e, 0x94, 0xf0, 0x1c, 0x24, 0xa7, 0x38, 0x77,
|
||||
0xd8, 0x89, 0xdb, 0x65, 0x2b, 0xe7, 0x10, 0xe7, 0x7a, 0x15, 0xca, 0xe4, 0xc2, 0xac, 0x26, 0x54,
|
||||
0xf4, 0x58, 0x27, 0x67, 0xce, 0xba, 0x0c, 0xc5, 0x3d, 0xb7, 0x8b, 0xb1, 0x88, 0xef, 0xc5, 0x26,
|
||||
0xe3, 0xc1, 0x4f, 0xeb, 0xe5, 0x51, 0x1a, 0x9d, 0xad, 0xd0, 0xe4, 0xc7, 0x2a, 0x34, 0x56, 0x05,
|
||||
0x4a, 0xd8, 0xa3, 0x75, 0xf5, 0xac, 0xb8, 0xc6, 0xba, 0x82, 0x11, 0x90, 0x12, 0xc7, 0xb3, 0x8a,
|
||||
0x4f, 0xd6, 0x32, 0x5c, 0x98, 0xb8, 0x2c, 0xb1, 0xaa, 0x26, 0xfc, 0xb2, 0x16, 0xa1, 0x91, 0xa9,
|
||||
0x9e, 0x5b, 0x37, 0xa0, 0x96, 0xd4, 0xd6, 0x31, 0x50, 0xf4, 0x63, 0x5d, 0x15, 0x30, 0x4a, 0xa5,
|
||||
0xb0, 0x7d, 0x00, 0xb5, 0x5d, 0x19, 0x4f, 0xfa, 0xcb, 0x2a, 0x14, 0xf7, 0xe4, 0x40, 0x9f, 0x82,
|
||||
0xeb, 0x52, 0xd1, 0x29, 0xa8, 0xdd, 0xe3, 0x81, 0xd2, 0x69, 0xa8, 0xe3, 0x77, 0x7b, 0x4a, 0x97,
|
||||
0x18, 0xb6, 0xc3, 0x50, 0x44, 0xac, 0x8c, 0x3e, 0xcb, 0x11, 0x83, 0xc0, 0xed, 0x08, 0x56, 0x41,
|
||||
0x9f, 0x45, 0xf8, 0x87, 0x7e, 0x14, 0x2b, 0x56, 0xb5, 0xdf, 0x44, 0x4f, 0xe7, 0x77, 0xc9, 0x59,
|
||||
0xd1, 0x07, 0x89, 0xca, 0xa1, 0xdb, 0x21, 0x70, 0x43, 0x84, 0xe8, 0x84, 0xa9, 0x52, 0xac, 0xef,
|
||||
0x5a, 0xa9, 0x83, 0x82, 0xfd, 0x11, 0x2c, 0x8e, 0xdd, 0xc1, 0xf2, 0x15, 0x60, 0x63, 0x08, 0x54,
|
||||
0x34, 0xc7, 0x2f, 0xc3, 0xc5, 0x31, 0xec, 0x13, 0xdf, 0xf3, 0x28, 0x91, 0x9e, 0x6c, 0x48, 0x86,
|
||||
0xb3, 0x5e, 0x87, 0x6a, 0x47, 0xcf, 0xa2, 0xbd, 0x0b, 0x8b, 0x64, 0x23, 0x4f, 0x84, 0x72, 0x77,
|
||||
0xc2, 0xe0, 0xe4, 0xff, 0x7d, 0x51, 0x6e, 0xbf, 0x02, 0x65, 0x2a, 0x68, 0xe1, 0x32, 0x1e, 0x44,
|
||||
0xb2, 0x4f, 0xb2, 0xca, 0x0e, 0x7d, 0xa3, 0x74, 0x25, 0x8d, 0x43, 0x29, 0x28, 0x69, 0xff, 0x4b,
|
||||
0x1d, 0xaa, 0x6b, 0x9d, 0x8e, 0x1c, 0x86, 0x6a, 0xaa, 0xe7, 0x59, 0x35, 0x93, 0x7b, 0x50, 0x71,
|
||||
0x8f, 0x5c, 0xe5, 0x46, 0x66, 0xf7, 0x7d, 0x63, 0xc2, 0xde, 0x8d, 0xac, 0xd5, 0x35, 0x22, 0x72,
|
||||
0x0c, 0x31, 0xb2, 0x75, 0x64, 0x78, 0xe0, 0x77, 0xcd, 0x86, 0x3b, 0x8d, 0x6d, 0x83, 0x88, 0x1c,
|
||||
0x43, 0x8c, 0x6c, 0xc6, 0x61, 0x94, 0xcf, 0x64, 0xd3, 0xbb, 0x26, 0xf5, 0x0f, 0xb7, 0xa1, 0xe4,
|
||||
0x87, 0x07, 0xd2, 0x3c, 0x76, 0xb8, 0x72, 0x0a, 0xd3, 0x76, 0x78, 0x20, 0x1d, 0x22, 0xb4, 0x04,
|
||||
0x54, 0xb4, 0xc2, 0xfc, 0x6d, 0x28, 0x53, 0xdd, 0xda, 0x54, 0x0a, 0xe7, 0xba, 0xd3, 0xd6, 0x1c,
|
||||
0xfc, 0x52, 0x52, 0x06, 0xa5, 0xf9, 0x42, 0x3c, 0x81, 0xeb, 0xb5, 0x64, 0xca, 0xac, 0xff, 0xcc,
|
||||
0x43, 0x45, 0x8f, 0x90, 0xdf, 0x80, 0x25, 0x11, 0xe2, 0x26, 0x49, 0x5c, 0x82, 0xd9, 0x1d, 0x13,
|
||||
0x58, 0x0c, 0xd0, 0x0c, 0x46, 0xb4, 0x87, 0x5d, 0x93, 0x6d, 0x64, 0x51, 0xfc, 0x2d, 0xb8, 0xac,
|
||||
0xc1, 0xdd, 0x48, 0x44, 0x22, 0x10, 0x6e, 0x2c, 0x36, 0x7a, 0x6e, 0x18, 0x8a, 0xc0, 0x1c, 0x10,
|
||||
0xa7, 0x35, 0x73, 0x1b, 0x16, 0x74, 0x53, 0x6b, 0xe0, 0x76, 0x44, 0x6c, 0xca, 0xba, 0x63, 0x38,
|
||||
0xfe, 0x5d, 0x28, 0xd3, 0x93, 0x93, 0xa6, 0x77, 0xb6, 0xf1, 0x69, 0x2a, 0x4b, 0xa6, 0x1e, 0x6c,
|
||||
0x0d, 0x40, 0xaf, 0x06, 0x06, 0xb9, 0x26, 0x5c, 0xfd, 0xe6, 0x99, 0xcb, 0x47, 0x51, 0x75, 0x86,
|
||||
0x09, 0xf5, 0xf3, 0x44, 0x20, 0xd0, 0x3f, 0xa0, 0xf7, 0xa2, 0xc1, 0x17, 0x9d, 0x31, 0x9c, 0xf5,
|
||||
0xf7, 0x45, 0x28, 0xe1, 0x42, 0x22, 0x71, 0x4f, 0xf6, 0x45, 0x7a, 0x15, 0xa0, 0x8d, 0x76, 0x0c,
|
||||
0x87, 0x47, 0xa4, 0xab, 0x6f, 0x72, 0x52, 0x32, 0x5d, 0x41, 0x98, 0x44, 0x23, 0xe5, 0x20, 0x92,
|
||||
0x07, 0x7e, 0x30, 0xa2, 0x34, 0x87, 0xe9, 0x04, 0x1a, 0xa7, 0xbf, 0xef, 0x46, 0x87, 0x42, 0x91,
|
||||
0xf7, 0x41, 0xbd, 0x53, 0x0e, 0x1d, 0x26, 0x9f, 0xd6, 0xcc, 0xdf, 0x87, 0x2b, 0x99, 0xa6, 0xc4,
|
||||
0x2f, 0xa7, 0xdc, 0xba, 0x64, 0x7e, 0x16, 0xc9, 0x84, 0x84, 0x3d, 0xd1, 0x1f, 0x04, 0xae, 0x12,
|
||||
0x13, 0xb7, 0x21, 0x67, 0x91, 0xa0, 0x7b, 0xf6, 0xc4, 0x91, 0xdf, 0x11, 0xdb, 0x1e, 0x15, 0x0c,
|
||||
0xea, 0x4e, 0x0a, 0xf3, 0x6b, 0x00, 0x5d, 0x57, 0x89, 0xe7, 0xee, 0xc9, 0xb3, 0x28, 0x68, 0x0a,
|
||||
0x5d, 0xd0, 0x1a, 0x61, 0x30, 0x33, 0x08, 0x64, 0xc7, 0x0d, 0x5a, 0x4a, 0x46, 0x6e, 0x57, 0xec,
|
||||
0xba, 0xaa, 0xd7, 0xec, 0xea, 0xcc, 0x60, 0x12, 0x8f, 0xfd, 0x60, 0x1e, 0xfa, 0xb1, 0x0c, 0x45,
|
||||
0xb3, 0xa7, 0xfb, 0x49, 0x60, 0x7b, 0x07, 0x60, 0x64, 0x00, 0xe8, 0xf5, 0xd7, 0xa8, 0x68, 0xc6,
|
||||
0x72, 0x18, 0xb3, 0xed, 0x8a, 0xd0, 0xf3, 0xc3, 0xee, 0xa6, 0x59, 0x73, 0x96, 0x47, 0x64, 0x4b,
|
||||
0xb9, 0x91, 0x12, 0x5e, 0x8a, 0xa4, 0x58, 0x9a, 0x20, 0xe1, 0xb1, 0xa2, 0xfd, 0xbf, 0x79, 0x68,
|
||||
0x64, 0xae, 0x8c, 0x7e, 0x86, 0xd7, 0x5c, 0x78, 0x9a, 0xe1, 0x5e, 0xc7, 0x09, 0xd1, 0xf6, 0x90,
|
||||
0xc2, 0x38, 0x5d, 0xe6, 0x46, 0x0b, 0x5b, 0xf5, 0xda, 0x67, 0x30, 0x5f, 0xeb, 0x8a, 0xcb, 0xbe,
|
||||
0x63, 0x92, 0xc4, 0x06, 0x54, 0x9f, 0x85, 0x87, 0xa1, 0x7c, 0x1e, 0xea, 0x44, 0x91, 0xee, 0x2d,
|
||||
0xc7, 0x2a, 0xb5, 0xc9, 0xd5, 0x62, 0xd1, 0xfe, 0x71, 0x69, 0xe2, 0x8a, 0xff, 0x01, 0x54, 0x74,
|
||||
0x74, 0x46, 0x81, 0xc3, 0xf4, 0x9d, 0x6c, 0x96, 0xd8, 0x54, 0x05, 0x33, 0x28, 0xc7, 0x30, 0x63,
|
||||
0xd8, 0x94, 0x3e, 0x44, 0x29, 0xcc, 0xac, 0x5e, 0x8e, 0x09, 0x4a, 0x5c, 0xd8, 0xd8, 0x5b, 0xac,
|
||||
0x54, 0x82, 0xf5, 0xa3, 0x3c, 0xac, 0xcc, 0x22, 0xc1, 0x28, 0xa6, 0x3d, 0x76, 0xd3, 0x9e, 0x80,
|
||||
0xbc, 0x35, 0xf1, 0x02, 0xac, 0x40, 0xa3, 0xb9, 0xfd, 0x82, 0x4a, 0x8c, 0xbf, 0x07, 0xb3, 0x3f,
|
||||
0xcf, 0xc3, 0xf2, 0xd4, 0x98, 0x33, 0xe1, 0x08, 0x40, 0x45, 0x5b, 0x96, 0xbe, 0x18, 0x4e, 0xaf,
|
||||
0xea, 0x74, 0x71, 0x89, 0xce, 0x83, 0x58, 0xdf, 0x7d, 0x6c, 0xea, 0x97, 0x80, 0xac, 0x84, 0x71,
|
||||
0x04, 0xae, 0x1a, 0xfa, 0xd9, 0xae, 0x60, 0x65, 0xcc, 0x58, 0xf4, 0xb3, 0x05, 0x83, 0xa9, 0x50,
|
||||
0x36, 0x64, 0xf6, 0x22, 0xab, 0xd2, 0x85, 0xf3, 0x70, 0x10, 0xf8, 0x1d, 0x04, 0x6b, 0xb6, 0x03,
|
||||
0x17, 0x67, 0xe8, 0x4d, 0x9a, 0xec, 0x1b, 0xad, 0x96, 0x00, 0x36, 0xf7, 0x13, 0x5d, 0x58, 0x1e,
|
||||
0x93, 0xc6, 0xcd, 0xfd, 0x0d, 0x4a, 0x1b, 0xcd, 0x75, 0x8e, 0xde, 0x13, 0xfb, 0x98, 0x67, 0xc4,
|
||||
0xac, 0x68, 0xdf, 0x87, 0x97, 0xf6, 0x7a, 0x91, 0x70, 0xbd, 0x4d, 0x21, 0x06, 0x01, 0x1a, 0x9b,
|
||||
0x7b, 0x12, 0x48, 0xd7, 0x9b, 0x51, 0xde, 0x5a, 0x81, 0xb2, 0xeb, 0x79, 0x91, 0x9e, 0xdf, 0xba,
|
||||
0xa3, 0x01, 0xfb, 0x13, 0xb8, 0xa4, 0x05, 0xe8, 0x5e, 0x3e, 0x1c, 0x8a, 0xa1, 0x78, 0x10, 0xaa,
|
||||
0xe8, 0x44, 0x17, 0x28, 0x93, 0x57, 0x83, 0x9a, 0xc6, 0x88, 0x9b, 0xc2, 0x93, 0x1f, 0xa0, 0xaf,
|
||||
0xd4, 0x43, 0xa7, 0xb0, 0xfd, 0x0f, 0x25, 0x80, 0x9d, 0xf4, 0xe5, 0xe2, 0x8c, 0x5d, 0x3b, 0x3b,
|
||||
0x1e, 0xc9, 0xd4, 0x5a, 0x8b, 0x73, 0x17, 0xeb, 0xdf, 0x4a, 0x1f, 0xa0, 0xe9, 0xc7, 0x13, 0x93,
|
||||
0x8f, 0xc8, 0x46, 0x7a, 0x98, 0x07, 0x27, 0xe9, 0xdb, 0xb3, 0xb1, 0x6b, 0xcd, 0xf2, 0xe4, 0xb5,
|
||||
0xe6, 0xf5, 0xe9, 0x37, 0x10, 0x13, 0x2e, 0x64, 0x94, 0xbe, 0x55, 0xc7, 0xd2, 0x37, 0x0b, 0x6a,
|
||||
0x38, 0x0f, 0x32, 0x0c, 0x4e, 0x92, 0x8a, 0x6a, 0x02, 0xf3, 0xbb, 0x50, 0x56, 0xf4, 0xbe, 0xb3,
|
||||
0x46, 0x16, 0x3f, 0x19, 0x05, 0x8d, 0x9e, 0xbc, 0x92, 0xe7, 0xd0, 0xb4, 0xe8, 0x8f, 0xfc, 0xd8,
|
||||
0x3c, 0x5c, 0xf0, 0xa8, 0xe2, 0x5b, 0x73, 0x32, 0x18, 0xfb, 0x5f, 0x47, 0x0f, 0x70, 0xea, 0x50,
|
||||
0x6e, 0xbb, 0xb1, 0xdf, 0xd1, 0x57, 0x7d, 0xe6, 0x84, 0xd3, 0x77, 0x32, 0x4a, 0x7a, 0x92, 0x15,
|
||||
0x30, 0x28, 0x8f, 0x05, 0x86, 0xdf, 0x4b, 0x00, 0xa3, 0xd7, 0xa5, 0xac, 0x84, 0x86, 0x9c, 0xcc,
|
||||
0xaa, 0xbe, 0xe9, 0x23, 0x56, 0xca, 0xd9, 0xbd, 0xf4, 0x0d, 0x45, 0x15, 0x7b, 0x20, 0x47, 0xc9,
|
||||
0x6a, 0x48, 0x13, 0x4a, 0x25, 0x74, 0x95, 0x22, 0xc6, 0x28, 0x83, 0x01, 0x8a, 0x49, 0x9e, 0xd8,
|
||||
0xb1, 0x06, 0xc6, 0xcd, 0x89, 0x50, 0x5d, 0x66, 0x88, 0xa9, 0xb6, 0xbb, 0x80, 0x66, 0x3e, 0xde,
|
||||
0xa0, 0x8b, 0x17, 0xe8, 0x54, 0xda, 0x6e, 0x2c, 0xd8, 0x8a, 0xfd, 0x87, 0xa3, 0x51, 0xbd, 0x96,
|
||||
0x86, 0xb3, 0xf3, 0xac, 0xef, 0x69, 0x01, 0xef, 0x03, 0x58, 0x8e, 0xc4, 0x67, 0x43, 0x7f, 0xec,
|
||||
0xd1, 0xdb, 0x39, 0x86, 0x36, 0xcd, 0x61, 0x1f, 0xc1, 0x72, 0x02, 0x7c, 0xe4, 0xab, 0x1e, 0xe5,
|
||||
0x7b, 0xfc, 0x6e, 0xe6, 0x55, 0x5e, 0xde, 0xc4, 0x57, 0xa7, 0x88, 0x1c, 0xbd, 0xc2, 0x4b, 0xcb,
|
||||
0x61, 0x85, 0x39, 0xca, 0x61, 0xf6, 0x9f, 0x55, 0x33, 0x29, 0x9f, 0x0e, 0xf0, 0xbd, 0x34, 0xc0,
|
||||
0x9f, 0xde, 0xfb, 0xf7, 0xa0, 0x72, 0xa0, 0xab, 0xc3, 0xba, 0x2a, 0xfa, 0x8d, 0x53, 0xf4, 0x31,
|
||||
0x15, 0x60, 0x43, 0x3c, 0xf3, 0x3e, 0xe6, 0x1d, 0x8c, 0xde, 0x0e, 0xdc, 0x61, 0xa0, 0xf6, 0xe7,
|
||||
0xa8, 0xde, 0x8d, 0xd1, 0xf2, 0x75, 0x2a, 0x54, 0xbb, 0x2d, 0x7d, 0xc1, 0x57, 0x9e, 0xf9, 0x46,
|
||||
0x36, 0x5b, 0x91, 0x36, 0x94, 0x4e, 0x86, 0x2b, 0xb3, 0xd1, 0x2a, 0xb3, 0x36, 0x1a, 0xe6, 0x5a,
|
||||
0x66, 0x0b, 0xa6, 0xb0, 0x2e, 0x76, 0xea, 0xef, 0x44, 0x3c, 0x3d, 0x6e, 0xad, 0x39, 0x53, 0x78,
|
||||
0x74, 0x93, 0xfd, 0x61, 0xa0, 0x7c, 0x73, 0xd1, 0xa2, 0x81, 0xc9, 0x07, 0xd9, 0xf5, 0xe9, 0x07,
|
||||
0xd9, 0xef, 0x01, 0xc4, 0x02, 0xbd, 0xe2, 0xa6, 0xdf, 0x51, 0xe6, 0x1a, 0xf0, 0xda, 0x69, 0x63,
|
||||
0x33, 0x55, 0xc8, 0x0c, 0x07, 0xea, 0xdf, 0x77, 0x8f, 0x37, 0x30, 0x70, 0x6e, 0x2e, 0x52, 0x1e,
|
||||
0x97, 0xc2, 0x93, 0xee, 0x67, 0x69, 0xda, 0xfd, 0xdc, 0x85, 0x72, 0xdc, 0x91, 0x03, 0x41, 0xef,
|
||||
0x50, 0x4f, 0x5f, 0xdf, 0xd5, 0x16, 0x12, 0x39, 0x9a, 0x96, 0x0a, 0x0b, 0xe8, 0xf5, 0x65, 0x44,
|
||||
0x2f, 0x50, 0xeb, 0x4e, 0x02, 0x5a, 0x3f, 0xcd, 0x43, 0xc5, 0x54, 0x02, 0x67, 0x64, 0x8f, 0x54,
|
||||
0x44, 0x28, 0x64, 0x5e, 0xb0, 0xa4, 0x2f, 0x45, 0x8a, 0xd9, 0x97, 0x22, 0xef, 0x24, 0x3a, 0x69,
|
||||
0x5f, 0xfc, 0xf2, 0xd9, 0x93, 0x31, 0xa6, 0x9a, 0xfd, 0x2a, 0x94, 0x09, 0x46, 0x67, 0x42, 0x51,
|
||||
0xa7, 0xbe, 0x11, 0x88, 0x46, 0x47, 0x23, 0x24, 0x26, 0xcd, 0x0a, 0xf6, 0xc7, 0x09, 0x35, 0x24,
|
||||
0x21, 0x91, 0x0e, 0xa7, 0xb0, 0x37, 0x96, 0xc7, 0xf4, 0x3e, 0x16, 0x6a, 0xe7, 0x60, 0xaf, 0x27,
|
||||
0x5a, 0x6e, 0x9f, 0xa2, 0x75, 0x56, 0xe0, 0x4d, 0x58, 0xd1, 0xb4, 0xf1, 0x78, 0x0b, 0x1d, 0xfa,
|
||||
0x81, 0xdf, 0x8e, 0xdc, 0xe8, 0x84, 0x95, 0xec, 0xf7, 0xe8, 0x06, 0x24, 0xb1, 0xbe, 0x46, 0xfa,
|
||||
0x0f, 0x02, 0xed, 0x54, 0x3d, 0x11, 0xa1, 0xd7, 0xd5, 0xf7, 0x53, 0xae, 0xce, 0x7b, 0xf4, 0x5d,
|
||||
0xb7, 0xd6, 0xba, 0x68, 0x7f, 0x84, 0x51, 0xdb, 0xe8, 0x0a, 0xf5, 0x67, 0xb6, 0x39, 0xed, 0xf5,
|
||||
0x4c, 0xd4, 0x32, 0x7e, 0x5e, 0xe6, 0xe7, 0x3d, 0x2f, 0xed, 0x47, 0x70, 0xc1, 0x19, 0xf7, 0xc8,
|
||||
0xfc, 0x2d, 0xa8, 0xca, 0x41, 0x56, 0xce, 0x79, 0x46, 0x9c, 0x90, 0xdb, 0x7f, 0x94, 0x87, 0x85,
|
||||
0xed, 0x50, 0x89, 0x28, 0x74, 0x83, 0x87, 0x81, 0xdb, 0xe5, 0x6f, 0x26, 0x2e, 0x6d, 0x76, 0x9a,
|
||||
0x98, 0xa5, 0x1d, 0xf7, 0x6e, 0x4f, 0x4d, 0xe5, 0x8c, 0xbf, 0x04, 0xcb, 0xc2, 0xf3, 0x95, 0x8c,
|
||||
0x74, 0xac, 0x96, 0xbc, 0x31, 0x58, 0x01, 0xa6, 0xd1, 0x2d, 0xda, 0x3f, 0x7b, 0x7a, 0x99, 0x9b,
|
||||
0xb0, 0x32, 0x86, 0x4d, 0x02, 0xb1, 0x82, 0xfd, 0x1f, 0xe5, 0x24, 0x04, 0xd9, 0x37, 0x6f, 0x0c,
|
||||
0x22, 0x29, 0xd5, 0xa8, 0x32, 0xaa, 0xa1, 0xcc, 0x9f, 0x49, 0x0a, 0x73, 0xfc, 0x99, 0xe4, 0xbd,
|
||||
0xd1, 0x9f, 0x49, 0xf4, 0xb9, 0xf1, 0xf2, 0xcc, 0xc3, 0x88, 0xae, 0x59, 0x4d, 0x0c, 0xd9, 0x12,
|
||||
0x99, 0x7f, 0x96, 0xbc, 0x6e, 0x12, 0x87, 0xd2, 0xcc, 0x45, 0x9f, 0x38, 0xfc, 0xf5, 0xad, 0xd4,
|
||||
0xbd, 0xc9, 0x97, 0x93, 0xf3, 0x45, 0x45, 0x53, 0xf7, 0xfe, 0xf0, 0xa2, 0xf7, 0xfe, 0xfc, 0xfe,
|
||||
0x44, 0x8c, 0x5e, 0x9b, 0x59, 0x82, 0x39, 0xe3, 0xff, 0x19, 0xf7, 0xa1, 0xda, 0xf3, 0x63, 0x25,
|
||||
0xa3, 0x13, 0x8a, 0x59, 0xa6, 0xdf, 0x38, 0x67, 0x66, 0x6b, 0x4b, 0x13, 0xd2, 0xdd, 0x74, 0xc2,
|
||||
0x65, 0x75, 0x01, 0x46, 0xb3, 0x38, 0xe5, 0x95, 0xbe, 0xc6, 0x3f, 0x7b, 0x2e, 0x41, 0x25, 0x1e,
|
||||
0xb6, 0x47, 0xa5, 0x6e, 0x03, 0x59, 0xc7, 0x60, 0x4d, 0x1d, 0xe9, 0xbb, 0x22, 0xd2, 0xfa, 0xa1,
|
||||
0x9b, 0x4e, 0x4a, 0xe2, 0xa6, 0xfb, 0x14, 0xe6, 0xef, 0x65, 0x97, 0x47, 0x9b, 0xd0, 0xf5, 0x53,
|
||||
0xe6, 0x38, 0x95, 0x9c, 0x59, 0x27, 0xeb, 0x1e, 0x34, 0x32, 0x43, 0x47, 0x4f, 0x3b, 0x0c, 0x3d,
|
||||
0x99, 0xd4, 0xf9, 0xf0, 0x5b, 0x3f, 0xeb, 0xf6, 0x92, 0x4a, 0x1f, 0x7d, 0xdf, 0xfa, 0xf3, 0x22,
|
||||
0x2c, 0x8d, 0x9b, 0x0b, 0x55, 0x3c, 0xb5, 0x33, 0xda, 0x09, 0x3c, 0x5d, 0x12, 0x5d, 0xc7, 0x93,
|
||||
0xae, 0x13, 0x0d, 0xfb, 0xed, 0x58, 0x87, 0x80, 0x94, 0x6b, 0x32, 0x6c, 0xda, 0xd5, 0x91, 0x21,
|
||||
0x21, 0x96, 0xb1, 0x69, 0x4b, 0xf6, 0x05, 0xbb, 0x9e, 0x7d, 0x21, 0xfb, 0x5a, 0xf2, 0x96, 0x96,
|
||||
0xe2, 0xb1, 0xf7, 0x31, 0x70, 0x6c, 0x09, 0xc5, 0xd6, 0x30, 0x07, 0x6a, 0xed, 0x8d, 0xc2, 0x2e,
|
||||
0xf6, 0x09, 0xaf, 0x9b, 0x07, 0x47, 0x3f, 0x2c, 0xf0, 0xc5, 0x4c, 0x3a, 0xf4, 0x93, 0x02, 0x5f,
|
||||
0x81, 0x0b, 0xeb, 0xc3, 0xd0, 0x0b, 0x84, 0x97, 0x62, 0xff, 0x94, 0xb0, 0x4f, 0xc6, 0x4b, 0x29,
|
||||
0xec, 0x73, 0xf4, 0xce, 0x17, 0x9f, 0x4c, 0x97, 0x48, 0xd8, 0x1f, 0x4c, 0xb6, 0xa4, 0x92, 0x7e,
|
||||
0x9c, 0x95, 0x9f, 0xd2, 0xff, 0xb0, 0xc4, 0x2f, 0xc1, 0x72, 0x6b, 0xd8, 0x4e, 0x72, 0x41, 0x83,
|
||||
0xff, 0x0d, 0xc2, 0x1b, 0xea, 0x8c, 0xfa, 0xbf, 0x59, 0xe2, 0x17, 0x61, 0x69, 0x4d, 0xaf, 0x99,
|
||||
0x99, 0x17, 0xf6, 0x5b, 0x25, 0x1c, 0x14, 0x5d, 0x85, 0xfd, 0x76, 0x89, 0x2f, 0xc3, 0xc2, 0x47,
|
||||
0x32, 0x3a, 0xa4, 0x10, 0x17, 0x67, 0xf7, 0x47, 0x98, 0x18, 0xd6, 0x53, 0x14, 0xfb, 0x9d, 0x12,
|
||||
0xbf, 0x0a, 0x97, 0xa7, 0xba, 0x34, 0x81, 0xed, 0xef, 0x96, 0x6e, 0xfd, 0x45, 0x1e, 0x96, 0xc6,
|
||||
0x7d, 0x3a, 0x4e, 0x6e, 0x20, 0xc3, 0xae, 0xd2, 0x8f, 0x88, 0x17, 0xa1, 0x1e, 0xf7, 0x64, 0xa4,
|
||||
0x08, 0xa4, 0x93, 0x2e, 0xa4, 0x2b, 0x2e, 0x9d, 0x9b, 0xea, 0x4a, 0x9a, 0xbe, 0x46, 0x57, 0x6e,
|
||||
0x97, 0x35, 0x70, 0xc5, 0x3c, 0x54, 0xae, 0x94, 0x06, 0xea, 0x74, 0xd5, 0x96, 0x5c, 0x65, 0xb0,
|
||||
0x0a, 0x92, 0x0e, 0xa3, 0x40, 0x07, 0xec, 0xa2, 0xef, 0xfa, 0x81, 0x7e, 0x2d, 0x38, 0xe8, 0x61,
|
||||
0xda, 0x59, 0xd7, 0x58, 0xf9, 0xa9, 0xaf, 0xdf, 0xe5, 0x99, 0x13, 0xd4, 0x43, 0x3d, 0x52, 0xe3,
|
||||
0x64, 0x62, 0xfd, 0xd6, 0x3f, 0x7e, 0x79, 0x2d, 0xff, 0xc5, 0x97, 0xd7, 0xf2, 0xff, 0xf5, 0xe5,
|
||||
0xb5, 0xfc, 0xe7, 0x5f, 0x5d, 0xcb, 0x7d, 0xf1, 0xd5, 0xb5, 0xdc, 0xbf, 0x7d, 0x75, 0x2d, 0xf7,
|
||||
0x31, 0x9b, 0xfc, 0xcf, 0x5f, 0xbb, 0x42, 0xdb, 0xee, 0xee, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff,
|
||||
0x18, 0x4b, 0x6f, 0xdd, 0x0e, 0x38, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *SmartBlockSnapshotBase) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -9122,18 +9122,16 @@ func (m *RelationLink) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
if m.Format != 0 {
|
||||
i = encodeVarintModels(dAtA, i, uint64(m.Format))
|
||||
i--
|
||||
dAtA[i] = 0x10
|
||||
}
|
||||
if len(m.Key) > 0 {
|
||||
i -= len(m.Key)
|
||||
copy(dAtA[i:], m.Key)
|
||||
i = encodeVarintModels(dAtA, i, uint64(len(m.Key)))
|
||||
i--
|
||||
dAtA[i] = 0x12
|
||||
}
|
||||
if len(m.Id) > 0 {
|
||||
i -= len(m.Id)
|
||||
copy(dAtA[i:], m.Id)
|
||||
i = encodeVarintModels(dAtA, i, uint64(len(m.Id)))
|
||||
i--
|
||||
dAtA[i] = 0xa
|
||||
}
|
||||
return len(dAtA) - i, nil
|
||||
|
@ -10956,14 +10954,13 @@ func (m *RelationLink) Size() (n int) {
|
|||
}
|
||||
var l int
|
||||
_ = l
|
||||
l = len(m.Id)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovModels(uint64(l))
|
||||
}
|
||||
l = len(m.Key)
|
||||
if l > 0 {
|
||||
n += 1 + l + sovModels(uint64(l))
|
||||
}
|
||||
if m.Format != 0 {
|
||||
n += 1 + sovModels(uint64(m.Format))
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
|
@ -19703,38 +19700,6 @@ func (m *RelationLink) Unmarshal(dAtA []byte) error {
|
|||
}
|
||||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
|
||||
}
|
||||
var stringLen uint64
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowModels
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
stringLen |= uint64(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
intStringLen := int(stringLen)
|
||||
if intStringLen < 0 {
|
||||
return ErrInvalidLengthModels
|
||||
}
|
||||
postIndex := iNdEx + intStringLen
|
||||
if postIndex < 0 {
|
||||
return ErrInvalidLengthModels
|
||||
}
|
||||
if postIndex > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
m.Id = string(dAtA[iNdEx:postIndex])
|
||||
iNdEx = postIndex
|
||||
case 2:
|
||||
if wireType != 2 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
|
||||
}
|
||||
|
@ -19766,6 +19731,25 @@ func (m *RelationLink) Unmarshal(dAtA []byte) error {
|
|||
}
|
||||
m.Key = string(dAtA[iNdEx:postIndex])
|
||||
iNdEx = postIndex
|
||||
case 2:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Format", wireType)
|
||||
}
|
||||
m.Format = 0
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowModels
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
m.Format |= RelationFormat(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipModels(dAtA[iNdEx:])
|
||||
|
|
|
@ -36,14 +36,14 @@ enum SmartBlockType {
|
|||
MarketplaceRelation = 0x111;
|
||||
MarketplaceTemplate = 0x112;
|
||||
|
||||
BundledRelation = 0x200;
|
||||
IndexedRelation = 0x201;
|
||||
BundledRelation = 0x200; // DEPRECATED
|
||||
SubObjectRelation = 0x201;
|
||||
BundledObjectType = 0x202;
|
||||
AnytypeProfile = 0x203;
|
||||
Date = 0x204;
|
||||
WorkspaceOld = 0x205; // deprecated thread-based workspace
|
||||
Workspace = 0x206;
|
||||
RelationOption = 0x207;
|
||||
SubObjectRelationOption = 0x207;
|
||||
}
|
||||
|
||||
message Block {
|
||||
|
@ -749,8 +749,8 @@ enum RelationFormat {
|
|||
}
|
||||
|
||||
message RelationLink {
|
||||
string id = 1;
|
||||
string key = 2;
|
||||
string key = 1;
|
||||
RelationFormat format = 2;
|
||||
}
|
||||
|
||||
message Relations {
|
||||
|
|
|
@ -12,6 +12,7 @@ import (
|
|||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/link"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/block/simple/text"
|
||||
relation2 "github.com/anytypeio/go-anytype-middleware/core/relation"
|
||||
"github.com/anytypeio/go-anytype-middleware/core/relation/relationutils"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/textileio/go-threads/core/thread"
|
||||
"io"
|
||||
|
@ -159,10 +160,7 @@ func (b *builtinObjects) createObject(ctx context.Context, rd io.ReadCloser) (er
|
|||
f["analyticsOriginalId"] = pbtypes.String(oldId)
|
||||
|
||||
st.Set(simple.New(m))
|
||||
rels, err := b.relService.MigrateRelations(st.OldExtraRelations())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
rels := relationutils.MigrateRelationsModels(st.OldExtraRelations())
|
||||
st.AddRelationLinks(rels...)
|
||||
|
||||
st.RemoveDetail(bundle.RelationKeyCreator.String(), bundle.RelationKeyLastModifiedBy.String())
|
||||
|
|
|
@ -4,9 +4,9 @@ import "github.com/anytypeio/go-anytype-middleware/pkg/lib/pb/model"
|
|||
|
||||
type RelationLinks []*model.RelationLink
|
||||
|
||||
func (rl RelationLinks) Has(id string) bool {
|
||||
func (rl RelationLinks) Has(key string) bool {
|
||||
for _, l := range rl {
|
||||
if l.Id == id {
|
||||
if l.Key == key {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ func (rl RelationLinks) Has(id string) bool {
|
|||
|
||||
func (rl RelationLinks) Key(id string) (key string, ok bool) {
|
||||
for _, l := range rl {
|
||||
if l.Id == id {
|
||||
if l.Key == id {
|
||||
return l.Key, true
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ func (rl RelationLinks) Append(l *model.RelationLink) RelationLinks {
|
|||
func (rl RelationLinks) Remove(id string) RelationLinks {
|
||||
var n int
|
||||
for _, x := range rl {
|
||||
if x.Id != id {
|
||||
if x.Key != id {
|
||||
rl[n] = x
|
||||
n++
|
||||
}
|
||||
|
@ -41,8 +41,8 @@ func (rl RelationLinks) Copy() RelationLinks {
|
|||
res := make(RelationLinks, 0, len(rl))
|
||||
for _, l := range rl {
|
||||
res = append(res, &model.RelationLink{
|
||||
Id: l.Id,
|
||||
Key: l.Key,
|
||||
Format: l.Format,
|
||||
Key: l.Key,
|
||||
})
|
||||
}
|
||||
return res
|
||||
|
@ -51,15 +51,15 @@ func (rl RelationLinks) Copy() RelationLinks {
|
|||
func (rl RelationLinks) Diff(prev RelationLinks) (added []*model.RelationLink, removed []string) {
|
||||
var common = make(map[string]struct{})
|
||||
for _, l := range rl {
|
||||
if !prev.Has(l.Id) {
|
||||
if !prev.Has(l.Key) {
|
||||
added = append(added, l)
|
||||
} else {
|
||||
common[l.Id] = struct{}{}
|
||||
common[l.Key] = struct{}{}
|
||||
}
|
||||
}
|
||||
for _, l := range prev {
|
||||
if _, ok := common[l.Id]; !ok {
|
||||
removed = append(removed, l.Id)
|
||||
if _, ok := common[l.Key]; !ok {
|
||||
removed = append(removed, l.Key)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue