From eb57a16b1c1e2b14f847ba4072e16867e3c04073 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Fri, 3 Jul 2026 16:03:25 +0200 Subject: [PATCH 01/10] Add variant model, CRDT changes and API surface One Variant link = one LexEntryRef (RefType=Variant) with per-link Types, HideMinorEntry and Comment (LCM Summary), per VARIANTS.md. Co-Authored-By: Claude Fable 5 --- .../Api/FwDataMiniLcmApi.cs | 285 ++++- .../Api/UpdateProxy/UpdateVariantProxy.cs | 61 ++ .../Api/UpdateProxy/UpdateVariantTypeProxy.cs | 33 + .../FwLiteProjectSync/DryRunMiniLcmApi.cs | 80 +- .../Services/MiniLcmApiNotifyWrapper.cs | 32 + ...lizationRegressionData.latest.verified.txt | 205 ++++ .../LcmCrdt.Tests/Changes/UseChangesTests.cs | 19 + .../LcmCrdt/Changes/CreateVariantType.cs | 21 + .../Changes/Entries/AddVariantChange.cs | 115 +++ .../Changes/Entries/AddVariantTypeChange.cs | 18 + .../Entries/RemoveVariantTypeChange.cs | 15 + backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs | 139 +++ .../FwLite/LcmCrdt/Data/EntryQueryHelpers.cs | 3 + .../FwLite/LcmCrdt/Data/MiniLcmRepository.cs | 24 +- backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs | 2 + backend/FwLite/LcmCrdt/LcmCrdtKernel.cs | 53 + .../20260703134525_AddVariants.Designer.cs | 972 ++++++++++++++++++ .../Migrations/20260703134525_AddVariants.cs | 126 +++ .../LcmCrdtDbContextModelSnapshot.cs | 120 +++ backend/FwLite/LcmCrdt/QueryHelpers.cs | 27 +- backend/FwLite/MiniLcm/CreateEntryOptions.cs | 3 +- backend/FwLite/MiniLcm/IMiniLcmReadApi.cs | 2 + backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs | 21 + backend/FwLite/MiniLcm/Models/Entry.cs | 32 +- .../FwLite/MiniLcm/Models/IObjectWithId.cs | 2 + backend/FwLite/MiniLcm/Models/Variant.cs | 104 ++ backend/FwLite/MiniLcm/Models/VariantType.cs | 23 + .../MiniLcmApiWriteNormalizationWrapper.cs | 78 +- .../FwLite/MiniLcm/SyncHelpers/EntrySync.cs | 38 + .../FwLite/MiniLcm/SyncHelpers/VariantSync.cs | 57 + .../MiniLcm/SyncHelpers/VariantTypeSync.cs | 56 + .../MiniLcm/Validators/EntryValidator.cs | 34 + .../Validators/MiniLcmApiValidationWrapper.cs | 24 + .../MiniLcm/Validators/MiniLcmValidators.cs | 14 + .../Validators/VariantTypeValidator.cs | 13 + .../MiniLcm/Validators/VariantValidator.cs | 19 + backend/FwLite/VARIANTS.md | 278 +++++ backend/LfClassicData/LfClassicMiniLcmApi.cs | 10 + .../generated-types/MiniLcm/Models/IEntry.ts | 3 + .../MiniLcm/Models/IVariant.ts | 22 + .../MiniLcm/Models/IVariantType.ts | 15 + 41 files changed, 3149 insertions(+), 49 deletions(-) create mode 100644 backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantProxy.cs create mode 100644 backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantTypeProxy.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/CreateVariantType.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/Entries/AddVariantTypeChange.cs create mode 100644 backend/FwLite/LcmCrdt/Changes/Entries/RemoveVariantTypeChange.cs create mode 100644 backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.Designer.cs create mode 100644 backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.cs create mode 100644 backend/FwLite/MiniLcm/Models/Variant.cs create mode 100644 backend/FwLite/MiniLcm/Models/VariantType.cs create mode 100644 backend/FwLite/MiniLcm/SyncHelpers/VariantSync.cs create mode 100644 backend/FwLite/MiniLcm/SyncHelpers/VariantTypeSync.cs create mode 100644 backend/FwLite/MiniLcm/Validators/VariantTypeValidator.cs create mode 100644 backend/FwLite/MiniLcm/Validators/VariantValidator.cs create mode 100644 backend/FwLite/VARIANTS.md create mode 100644 frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariant.ts create mode 100644 frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariantType.ts diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs index 4d390f93f5..6bd396bf82 100644 --- a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs @@ -68,6 +68,7 @@ public LcmCache Cache internal IEnumerable ComplexFormTypesFlattened => ComplexFormTypes.PossibilitiesOS.Cast().Flatten(); private ICmPossibilityList VariantTypes => Cache.LangProject.LexDbOA.VariantEntryTypesOA; + internal IEnumerable VariantTypesFlattened => VariantTypes.PossibilitiesOS.Cast().Flatten(); private ICmPossibilityList Publications => Cache.LangProject.LexDbOA.PublicationTypesOA; public void Dispose() @@ -568,6 +569,76 @@ await Cache.DoUsingNewOrCurrentUOW("Delete Complex Form Type", }); } + // flattened (unlike complex-form types' public read) because the Irregularly Inflected Form + // subtypes (Plural, Past) are children in the possibility list and must be assignable + public IAsyncEnumerable GetVariantTypes() + { + return VariantTypesFlattened.Select(ToVariantType).ToAsyncEnumerable(); + } + + public Task GetVariantType(Guid id) + { + var lexEntryType = VariantTypesFlattened.SingleOrDefault(t => t.Guid == id); + if (lexEntryType is null) return Task.FromResult(null); + return Task.FromResult(ToVariantType(lexEntryType)); + } + + private VariantType ToVariantType(ILexEntryType t) + { + return new VariantType() { Id = t.Guid, Name = FromLcmMultiString(t.Name) }; + } + + public Task CreateVariantType(VariantType variantType) + { + if (variantType.Id == default) variantType.Id = Guid.NewGuid(); + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Create variant type", + "Remove variant type", + Cache.ActionHandlerAccessor, + () => + { + var lexVariantType = Cache.ServiceLocator + .GetInstance() + .Create(variantType.Id); + VariantTypes.PossibilitiesOS.Add(lexVariantType); + UpdateLcmMultiString(lexVariantType.Name, variantType.Name); + }); + return Task.FromResult(ToVariantType(VariantTypesFlattened.Single(t => t.Guid == variantType.Id))); + } + + public Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + var type = VariantTypesFlattened.SingleOrDefault(t => t.Guid == id); + if (type is null) throw new NullReferenceException($"unable to find variant type with id {id}"); + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Update Variant Type", + "Revert Variant Type", + Cache.ServiceLocator.ActionHandler, + () => + { + var updateProxy = new UpdateVariantTypeProxy(type, this); + update.Apply(updateProxy); + }); + return Task.FromResult(ToVariantType(type)); + } + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + await VariantTypeSync.Sync(before, after, api ?? this); + return ToVariantType(VariantTypesFlattened.Single(t => t.Guid == after.Id)); + } + + public async Task DeleteVariantType(Guid id) + { + var type = VariantTypesFlattened.SingleOrDefault(t => t.Guid == id); + if (type is null) return; + await Cache.DoUsingNewOrCurrentUOW("Delete Variant Type", + "Revert delete", + () => + { + type.Delete(); + return ValueTask.CompletedTask; + }); + } + public IAsyncEnumerable GetMorphTypes() { return @@ -634,12 +705,6 @@ public async Task UpdateMorphType(MorphType before, MorphType after, return await GetMorphType(after.Id) ?? throw new NullReferenceException("unable to find morph type with id " + after.Id); } - public IAsyncEnumerable GetVariantTypes() - { - return VariantTypes.PossibilitiesOS - .Select(t => new VariantType() { Id = t.Guid, Name = FromLcmMultiString(t.Name) }) - .ToAsyncEnumerable(); - } public IAsyncEnumerable GetPublications() { return Publications.PossibilitiesOS @@ -688,6 +753,8 @@ private Entry FromLexEntry(ILexEntry entry) ..entry.ComplexFormEntries.Select(complexEntry => ToEntryReference(entry, complexEntry)), ..entry.AllSenses.SelectMany(sense => sense.ComplexFormEntries.Select(complexEntry => ToSenseReference(sense, complexEntry))) ], + VariantOf = [.. ToVariantOf(entry)], + Variants = [.. ToVariants(entry)], // ILexEntry.PublishIn is a virtual property that inverts DoNotPublishInRC against all publications PublishIn = entry.PublishIn.Select(FromLcmPossibility).ToList(), }; @@ -718,27 +785,40 @@ private IEnumerable ToComplexFormComponents(ILexEntry entr }).DistinctBy(c => (c.ComponentEntryId, c.ComplexFormEntryId, c.ComponentSenseId)); } - private Variants? ToVariants(ILexEntry entry) + private IEnumerable ToVariantOf(ILexEntry entry) { - var variantEntryRef = entry.VariantEntryRefs.SingleOrDefault(); - if (variantEntryRef is null) return null; - return new Variants - { - Id = variantEntryRef.Guid, - VariantsOf = - [ - ..variantEntryRef.ComponentLexemesRS.Select(o => o switch + return entry.VariantEntryRefs.SelectMany(r => r.ComponentLexemesRS, + (r, o) => o switch { - ILexEntry component => ToEntryReference(component, entry), - ILexSense s => ToSenseReference(s, entry), + ILexEntry mainEntry => ToVariant(entry, r, mainEntry, null), + ILexSense mainSense => ToVariant(entry, r, mainSense.Entry, mainSense), _ => throw new NotSupportedException($"object type {o.ClassName} not supported") }) - ], - Types = - [ - ..variantEntryRef.VariantEntryTypesRS.Select(t => - new VariantType() { Id = t.Guid, Name = FromLcmMultiString(t.Name), }) - ] + .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)); + } + + private IEnumerable ToVariants(ILexEntry entry) + { + return + [ + ..entry.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, null)), + ..entry.AllSenses.SelectMany(sense => + sense.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, sense))) + ]; + } + + private Variant ToVariant(ILexEntry variantEntry, ILexEntryRef variantRef, ILexEntry mainEntry, ILexSense? mainSense) + { + return new Variant + { + VariantEntryId = variantEntry.Guid, + VariantHeadword = variantEntry.LexEntryHeadwordOrUnknown(), + MainEntryId = mainEntry.Guid, + MainSenseId = mainSense?.Guid, + MainHeadword = mainEntry.LexEntryHeadwordOrUnknown(), + Types = [..variantRef.VariantEntryTypesRS.Select(ToVariantType)], + HideMinorEntry = variantRef.HideMinorEntry != 0, + Comment = FromLcmMultiString(variantRef.Summary), }; } @@ -1078,6 +1158,19 @@ public async Task CreateEntry(Entry entry, CreateEntryOptions? options = var complexLexEntry = EntriesRepository.GetObject(complexForm.ComplexFormEntryId); AddComplexFormComponent(complexLexEntry, complexForm); } + + foreach (var variantOf in entry.VariantOf) + { + if (variantOf.VariantEntryId == default) variantOf.VariantEntryId = entry.Id; + AddVariant(lexEntry, variantOf); + } + + foreach (var variant in entry.Variants) + { + if (variant.MainEntryId == default) variant.MainEntryId = entry.Id; + var lexVariantEntry = EntriesRepository.GetObject(variant.VariantEntryId); + AddVariant(lexVariantEntry, variant); + } } // Remove publications not in entry.PublishIn from lexEntry.PublishIn foreach (var lcmPub in Publications.PossibilitiesOS.Where(p => entry.PublishIn.All(ep => ep.Id != p.Guid))) @@ -1285,6 +1378,152 @@ internal void RemoveComplexFormType(ILexEntry lexEntry, Guid complexFormTypeId) } } + public Task CreateVariant(Variant variant) + { + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Create Variant", + "Remove Variant", + Cache.ServiceLocator.ActionHandler, + () => + { + var lexVariantEntry = EntriesRepository.GetObject(variant.VariantEntryId); + AddVariant(lexVariantEntry, variant); + }); + return Task.FromResult(ToVariantOf(EntriesRepository.GetObject(variant.VariantEntryId)) + .Single(v => v.MainEntryId == variant.MainEntryId && v.MainSenseId == variant.MainSenseId)); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + await VariantSync.Sync(before, after, api ?? this); + return ToVariantOf(EntriesRepository.GetObject(after.VariantEntryId)) + .Single(v => v.MainEntryId == after.MainEntryId && v.MainSenseId == after.MainSenseId); + } + + public Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + var lexVariantEntry = EntriesRepository.GetObject(variant.VariantEntryId); + var entryRef = FindVariantRef(lexVariantEntry, variant) + ?? throw NotFoundException.ForType(variant.VariantEntryId); + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Update Variant", + "Revert Variant", + Cache.ServiceLocator.ActionHandler, + () => + { + var updateProxy = new UpdateVariantProxy(entryRef, this); + update.Apply(updateProxy); + }); + return Task.CompletedTask; + } + + public Task DeleteVariant(Variant variant) + { + //variant entry has been deleted, so this link is gone already + if (!EntriesRepository.TryGetObject(variant.VariantEntryId, out var lexVariantEntry)) + return Task.CompletedTask; + + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Delete Variant", + "Add Variant", + Cache.ServiceLocator.ActionHandler, + () => + { + RemoveVariant(lexVariantEntry, variant); + }); + return Task.CompletedTask; + } + + public Task AddVariantType(Variant variant, Guid variantTypeId) + { + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Add Variant Type", + "Remove Variant Type", + Cache.ServiceLocator.ActionHandler, + () => + { + //link (or its entry) deleted already — match CRDT tolerance + if (!EntriesRepository.TryGetObject(variant.VariantEntryId, out var lexVariantEntry)) return; + var entryRef = FindVariantRef(lexVariantEntry, variant); + if (entryRef is null) return; + var lexEntryType = VariantTypesFlattened.Single(t => t.Guid == variantTypeId); + if (entryRef.VariantEntryTypesRS.Contains(lexEntryType)) return; + entryRef.VariantEntryTypesRS.Add(lexEntryType); + }); + return Task.CompletedTask; + } + + public Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + UndoableUnitOfWorkHelper.DoUsingNewOrCurrentUOW("Remove Variant Type", + "Add Variant Type", + Cache.ServiceLocator.ActionHandler, + () => + { + if (!EntriesRepository.TryGetObject(variant.VariantEntryId, out var lexVariantEntry)) return; + var entryRef = FindVariantRef(lexVariantEntry, variant); + if (entryRef is null) return; + var lexEntryType = entryRef.VariantEntryTypesRS.SingleOrDefault(t => t.Guid == variantTypeId); + if (lexEntryType is null) return; + entryRef.VariantEntryTypesRS.Remove(lexEntryType); + }); + return Task.CompletedTask; + } + + /// + /// must be called as part of an lcm action + /// + internal void AddVariant(ILexEntry lexVariantEntry, Variant variant) + { + if (FindVariantRef(lexVariantEntry, variant) is not null) return; //idempotent, like the CRDT side + var target = variant.MainSenseId is not null + ? (ICmObject)SenseRepository.GetObject(variant.MainSenseId.Value) + : EntriesRepository.GetObject(variant.MainEntryId); + //one LexEntryRef per link — multiple variant refs on an entry are how FLEx represents + //being a variant of multiple things with different types + var entryRef = Cache.ServiceLocator.GetInstance().Create(); + lexVariantEntry.EntryRefsOS.Add(entryRef); + entryRef.RefType = LexEntryRefTags.krtVariant; + entryRef.HideMinorEntry = variant.HideMinorEntry ? 1 : 0; + UpdateLcmMultiString(entryRef.Summary, variant.Comment); + foreach (var type in variant.Types) + { + entryRef.VariantEntryTypesRS.Add(VariantTypesFlattened.Single(t => t.Guid == type.Id)); + } + entryRef.ComponentLexemesRS.Add(target); + } + + internal void RemoveVariant(ILexEntry lexVariantEntry, Variant variant) + { + ICmObject target; + if (variant.MainSenseId is not null) + { + //sense has been deleted, so this link is gone already + if (!SenseRepository.TryGetObject(variant.MainSenseId.Value, out var sense)) return; + target = sense; + } + else + { + //entry has been deleted, so this link is gone already + if (!EntriesRepository.TryGetObject(variant.MainEntryId, out var mainEntry)) return; + target = mainEntry; + } + + foreach (var entryRef in lexVariantEntry.VariantEntryRefs.ToArray()) + { + entryRef.ComponentLexemesRS.Remove(target); + if (entryRef.ComponentLexemesRS.Count == 0) + { + //an empty variant ref is meaningless; liblcm deletes them in its own cleanup paths too + lexVariantEntry.EntryRefsOS.Remove(entryRef); + } + } + //not throwing to match CRDT behavior + } + + internal ILexEntryRef? FindVariantRef(ILexEntry lexVariantEntry, Variant variant) + { + var targetGuid = variant.MainSenseId ?? variant.MainEntryId; + return lexVariantEntry.VariantEntryRefs + .FirstOrDefault(r => r.ComponentLexemesRS.Any(o => o.Guid == targetGuid)); + } + private IList MultiStringToTsStrings(MultiString? multiString) { if (multiString is null) return []; diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantProxy.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantProxy.cs new file mode 100644 index 0000000000..e19e327cdd --- /dev/null +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantProxy.cs @@ -0,0 +1,61 @@ +using System.Diagnostics.CodeAnalysis; +using MiniLcm.Models; +using SIL.LCModel; + +namespace FwDataMiniLcmBridge.Api.UpdateProxy; + +/// +/// Applies patches of a variant link's own fields (HideMinorEntry, Comment) to the +/// LexEntryRef. Endpoints and Types are not patchable — links are recreated for endpoint +/// changes and types go through Add/RemoveVariantType. +/// +public record UpdateVariantProxy : Variant +{ + private readonly ILexEntryRef _lexEntryRef; + private readonly FwDataMiniLcmApi _lexboxLcmApi; + + [SetsRequiredMembers] + public UpdateVariantProxy(ILexEntryRef lexEntryRef, FwDataMiniLcmApi lexboxLcmApi) + { + _lexEntryRef = lexEntryRef; + _lexboxLcmApi = lexboxLcmApi; + } + + public override required Guid VariantEntryId + { + get => _lexEntryRef.Owner.Guid; + set => throw new NotImplementedException(); + } + + public override required Guid MainEntryId + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public override Guid? MainSenseId + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public override List Types + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public override bool HideMinorEntry + { + get => _lexEntryRef.HideMinorEntry != 0; + set => _lexEntryRef.HideMinorEntry = value ? 1 : 0; + } + + public override RichMultiString Comment + { + get => new UpdateRichMultiStringProxy(_lexEntryRef.Summary, _lexboxLcmApi); + set + { + } + } +} diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantTypeProxy.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantTypeProxy.cs new file mode 100644 index 0000000000..3c2a8b15ca --- /dev/null +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateVariantTypeProxy.cs @@ -0,0 +1,33 @@ +using System.Diagnostics.CodeAnalysis; +using MiniLcm.Models; +using SIL.LCModel; + +namespace FwDataMiniLcmBridge.Api.UpdateProxy; + +public record UpdateVariantTypeProxy : VariantType +{ + private readonly ILexEntryType _lexEntryType; + private readonly FwDataMiniLcmApi _lexboxLcmApi; + + [SetsRequiredMembers] + public UpdateVariantTypeProxy(ILexEntryType lexEntryType, FwDataMiniLcmApi lexboxLcmApi) + { + _lexEntryType = lexEntryType; + _lexboxLcmApi = lexboxLcmApi; + Name = base.Name = new(); + } + + public override Guid Id + { + get => _lexEntryType.Guid; + set => throw new NotImplementedException(); + } + + public override required MultiString Name + { + get => new UpdateMultiStringProxy(_lexEntryType.Name, _lexboxLcmApi); + set + { + } + } +} diff --git a/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs b/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs index 61ea258c89..057855673e 100644 --- a/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs +++ b/backend/FwLite/FwLiteProjectSync/DryRunMiniLcmApi.cs @@ -126,6 +126,31 @@ public Task DeleteComplexFormType(Guid id) return Task.CompletedTask; } + public Task CreateVariantType(VariantType variantType) + { + DryRunRecords.Add(new DryRunRecord(nameof(CreateVariantType), + $"Create variant type {variantType.Name}")); + return Task.FromResult(variantType); + } + + public async Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + DryRunRecords.Add(new DryRunRecord(nameof(UpdateVariantType), $"Update variant type {id}")); + return await _api.GetVariantType(id) ?? throw new NullReferenceException($"unable to find variant type with id {id}"); + } + + public Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api) + { + DryRunRecords.Add(new DryRunRecord(nameof(UpdateVariantType), $"Update variant type {after.Id}")); + return Task.FromResult(after); + } + + public Task DeleteVariantType(Guid id) + { + DryRunRecords.Add(new DryRunRecord(nameof(DeleteVariantType), $"Delete variant type {id}")); + return Task.CompletedTask; + } + public Task CreateMorphType(MorphType morphType) { DryRunRecords.Add(new DryRunRecord(nameof(CreateMorphType), $"Create morph type {morphType.Kind} ({morphType.Id})")); @@ -152,7 +177,7 @@ public Task CreateEntry(Entry entry, CreateEntryOptions? options) if (options.IncludeComplexFormsAndComponents) return Task.FromResult(entry); else - return Task.FromResult(entry with { Components = [], ComplexForms = [] }); + return Task.FromResult(entry with { Components = [], ComplexForms = [], VariantOf = [], Variants = [] }); } public Task UpdateEntry(Guid id, UpdateObjectInput update) @@ -364,6 +389,41 @@ public async Task AddComplexFormType(Guid entryId, Guid complexFormTypeId) await Task.CompletedTask; } + public Task CreateVariant(Variant variant) + { + DryRunRecords.Add(new DryRunRecord(nameof(CreateVariant), $"Create variant link {VariantName(variant)}")); + return Task.FromResult(variant); + } + + public Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + DryRunRecords.Add(new DryRunRecord(nameof(UpdateVariant), $"Update variant link {VariantName(after)}")); + return Task.FromResult(after); + } + + public Task DeleteVariant(Variant variant) + { + DryRunRecords.Add(new DryRunRecord(nameof(DeleteVariant), $"Delete variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task AddVariantType(Variant variant, Guid variantTypeId) + { + DryRunRecords.Add(new DryRunRecord(nameof(AddVariantType), $"Add variant type {variantTypeId} to variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + DryRunRecords.Add(new DryRunRecord(nameof(RemoveVariantType), $"Remove variant type {variantTypeId} from variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + private static string VariantName(Variant variant) + { + return $"{variant.VariantHeadword ?? variant.VariantEntryId.ToString()} -> {variant.MainHeadword ?? variant.MainEntryId.ToString()}{(variant.MainSenseId is null ? "" : $" (sense {variant.MainSenseId})")}"; + } + public async Task CreatePublication(Publication pub) { DryRunRecords.Add(new DryRunRecord(nameof(CreatePublication), $"Create publication {pub.Id}")); @@ -440,6 +500,24 @@ public Task SubmitCreateComplexFormComponent(ComplexFormComponent complexFormCom return Task.CompletedTask; } + public Task SubmitCreateVariant(Variant variant) + { + DryRunRecords.Add(new DryRunRecord(nameof(SubmitCreateVariant), $"Create variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + DryRunRecords.Add(new DryRunRecord(nameof(SubmitUpdateVariant), $"Update variant link {VariantName(variant)}")); + return Task.CompletedTask; + } + + public Task SubmitUpdateVariantType(Guid id, UpdateObjectInput update) + { + DryRunRecords.Add(new DryRunRecord(nameof(SubmitUpdateVariantType), $"Update variant type {id}")); + return Task.CompletedTask; + } + public Task SubmitUpdatePartOfSpeech(Guid id, UpdateObjectInput update) { DryRunRecords.Add(new DryRunRecord(nameof(SubmitUpdatePartOfSpeech), $"Update part of speech {id}")); diff --git a/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs b/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs index ebf9048bd3..d8642e6de5 100644 --- a/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs +++ b/backend/FwLite/FwLiteShared/Services/MiniLcmApiNotifyWrapper.cs @@ -136,6 +136,38 @@ async Task IMiniLcmWriteApi.DeleteComplexFormComponent(ComplexFormComponent comp NotifyEntriesChanged(complexFormComponent.ComplexFormEntryId, complexFormComponent.ComponentEntryId); } + async Task IMiniLcmWriteApi.CreateVariant(Variant variant) + { + var result = await _api.CreateVariant(variant); + NotifyEntriesChanged(result.VariantEntryId, result.MainEntryId); + return result; + } + + async Task IMiniLcmWriteApi.UpdateVariant(Variant before, Variant after, IMiniLcmApi? api) + { + var result = await _api.UpdateVariant(before, after, api ?? this); + NotifyEntriesChanged(result.VariantEntryId, result.MainEntryId); + return result; + } + + async Task IMiniLcmWriteApi.DeleteVariant(Variant variant) + { + await _api.DeleteVariant(variant); + NotifyEntriesChanged(variant.VariantEntryId, variant.MainEntryId); + } + + async Task IMiniLcmWriteApi.AddVariantType(Variant variant, Guid variantTypeId) + { + await _api.AddVariantType(variant, variantTypeId); + NotifyEntriesChanged(variant.VariantEntryId, variant.MainEntryId); + } + + async Task IMiniLcmWriteApi.RemoveVariantType(Variant variant, Guid variantTypeId) + { + await _api.RemoveVariantType(variant, variantTypeId); + NotifyEntriesChanged(variant.VariantEntryId, variant.MainEntryId); + } + async Task IMiniLcmWriteApi.DeleteEntry(Guid id) { await _api.DeleteEntry(id); diff --git a/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt b/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt index b28168b1ba..ced3095eae 100644 --- a/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Changes/ChangeDeserializationRegressionData.latest.verified.txt @@ -1293,5 +1293,210 @@ { "$type": "SetMainPublicationChange", "EntityId": "c775e310-fc5c-6d01-5a02-146d579a88e5" + }, + { + "$type": "jsonPatch:VariantType", + "PatchDocument": [], + "EntityId": "7f36b194-09c4-1938-164e-820359470a8d" + }, + { + "$type": "jsonPatch:Variant", + "PatchDocument": [], + "EntityId": "2c441083-20d5-f98e-bd30-453dee57152e" + }, + { + "$type": "delete:VariantType", + "EntityId": "c76a3a53-8fa6-d2c3-df38-a742996e450e" + }, + { + "$type": "delete:Variant", + "EntityId": "a33e0d22-ca25-baaa-b103-61595e8d8443" + }, + { + "$type": "AddVariantChange", + "VariantEntryId": "6d309276-3cdc-3d59-7564-174855c2a66d", + "MainEntryId": "4ee3936e-f7bb-7bff-43ba-57a83f6e9090", + "MainSenseId": "51be3bfc-8d80-10f3-04a0-2f1b6b02a54a", + "Types": [ + { + "Id": "d0d4caf3-7fcf-3cca-9044-fd1c8874a40e", + "Name": { + "bge": "Tactics", + "lla": "teal" + }, + "DeletedAt": null + }, + { + "Id": "eccfe67c-656e-b7a1-61f8-16fd6115f982", + "Name": { + "mrs": "ability" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "dzl": { + "Spans": [ + { + "Text": "Home Loan Account", + "Ws": "tdd", + "Bold": "Invert", + "FontSize": -635375918, + "ForeColor": "#FF0000", + "Tags": [ + "284e5f58-55ce-28ae-b48a-2c683cfb7cd9" + ] + }, + { + "Text": "calculate", + "Ws": "dzl", + "Tags": [ + "f58baf48-036d-457f-a52f-359d4b662ee4" + ] + }, + { + "Text": "XML", + "Ws": "dzl", + "Tags": [ + "6f8f8ed2-6ada-498e-8bbf-1516e1a38946" + ] + } + ] + }, + "poh": { + "Spans": [ + { + "Text": "navigating", + "Ws": "plv", + "Bold": "Invert", + "FontSize": -1766572977, + "ForeColor": "#FF0000", + "Tags": [ + "9a7525d3-a3a0-f5b6-75b8-dcc31842bd4b" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "poh", + "Tags": [ + "9733340e-a780-4915-9c6e-6a0a773bb624" + ] + }, + { + "Text": "Reactive", + "Ws": "khw", + "Bold": "On", + "FontSize": 217067649, + "ForeColor": "#FF0000", + "Tags": [ + "6590d40b-9c9e-6bf4-022e-cbef362e2539" + ] + }, + { + "Text": "bypassing", + "Ws": "bao", + "Bold": "On", + "FontSize": -1139203638, + "ForeColor": "#00FFFF", + "Tags": [ + "a158092c-95c6-ece7-40f0-245eef31b440" + ] + } + ] + }, + "mto": { + "Spans": [ + { + "Text": "Small Wooden Mouse", + "Ws": "mto", + "Tags": [ + "82ce54e3-899e-49f9-b68e-a32aac910447" + ] + }, + { + "Text": "invoice", + "Ws": "ggo", + "Bold": "Off", + "FontSize": 156095798, + "ForeColor": "#FF0000", + "Tags": [ + "8c03dece-11db-82ec-d8db-7f5b322993eb" + ] + }, + { + "Text": "Square", + "Ws": "mto", + "Tags": [ + "bb75edd3-cfcf-49f2-ac3a-a675fc34068d" + ] + }, + { + "Text": "Borders", + "Ws": "mof", + "Bold": "Off", + "FontSize": 1551749924, + "ForeColor": "#A52A2A", + "Tags": [ + "83245146-9102-463d-6702-9805ecddf9ed" + ] + } + ] + }, + "boj": { + "Spans": [ + { + "Text": "Customer", + "Ws": "boj", + "Tags": [ + "ab794f7a-1958-4c2f-82d8-dd80b331317f" + ] + }, + { + "Text": "Response", + "Ws": "aso", + "Bold": "On", + "FontSize": 745397328, + "ForeColor": "#ADFF2F", + "Tags": [ + "45286390-397e-4f46-c918-fc743707fe27" + ] + }, + { + "Text": "visionary", + "Ws": "boj", + "Tags": [ + "7f95818c-4e9f-4d43-85e4-91e2b1b7d7f6" + ] + } + ] + } + }, + "EntityId": "696c660f-bc0e-75b2-3dc8-cd549fb77bc0" + }, + { + "$type": "AddVariantTypeChange", + "VariantType": { + "Id": "c1d3f294-1a67-25b2-5110-864e2debb6bc", + "Name": { + "ggt": "Viaduct" + }, + "DeletedAt": null + }, + "EntityId": "0da6b6a5-5e7a-6f91-9610-a62c595dbdfb" + }, + { + "$type": "RemoveVariantTypeChange", + "VariantTypeId": "33b6d5be-8799-580d-5587-8879e04c8cc9", + "EntityId": "8181bc40-4b7a-5402-4442-7eed4904cff1" + }, + { + "$type": "CreateVariantType", + "Name": { + "csj": "calculating", + "ljp": "open system", + "nab": "Overpass" + }, + "EntityId": "6a8e727c-2e47-90af-a1ec-42d94fc3e38e" } ] \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs b/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs index 7b81d89da0..7107c7b541 100644 --- a/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/Changes/UseChangesTests.cs @@ -238,6 +238,25 @@ private static IEnumerable GetAllChanges() var setComplexFormComponentChange = SetComplexFormComponentChange.NewComponent(complexFormComponent.Id, componentEntry.Id); yield return new ChangeWithDependencies(setComplexFormComponentChange, [createcomponentEntryChange, createComplexFormComponentChange]); + var variantTypeName = new MultiString { { "en", "test vt" } }; + var variantType = new VariantType { Id = Guid.NewGuid(), Name = variantTypeName }; + var createVariantType = new CreateVariantType(variantType.Id, variantTypeName); + yield return new ChangeWithDependencies(createVariantType); + + var variantEntry = new Entry { Id = Guid.NewGuid(), LexemeForm = { { "en", "test variant" } } }; + var createVariantEntryChange = new CreateEntryChange(variantEntry); + yield return new ChangeWithDependencies(createVariantEntryChange); + + var variant = Variant.FromEntries(variantEntry, entry, sense.Id); + var addVariantChange = new AddVariantChange(variant); + yield return new ChangeWithDependencies(addVariantChange, [createVariantEntryChange, createEntryChange, createSenseChange]); + + var addVariantTypeChange = new AddVariantTypeChange(variant.Id, variantType); + yield return new ChangeWithDependencies(addVariantTypeChange, [createVariantType, addVariantChange]); + + var removeVariantTypeChange = new RemoveVariantTypeChange(variant.Id, variantType.Id); + yield return new ChangeWithDependencies(removeVariantTypeChange, [addVariantTypeChange]); + var setSenseOrderChange = new LcmCrdt.Changes.SetOrderChange(sense.Id, 10); yield return new ChangeWithDependencies(setSenseOrderChange, [createSenseChange]); diff --git a/backend/FwLite/LcmCrdt/Changes/CreateVariantType.cs b/backend/FwLite/LcmCrdt/Changes/CreateVariantType.cs new file mode 100644 index 0000000000..cf39fc9d86 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/CreateVariantType.cs @@ -0,0 +1,21 @@ +using LcmCrdt.Objects; +using MiniLcm.Models; +using SIL.Harmony; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes; + +public class CreateVariantType(Guid entityId, MultiString name) : CreateChange(entityId), ISelfNamedType +{ + public MultiString Name { get; } = name; + public override ValueTask NewEntity(Commit commit, IChangeContext context) + { + return ValueTask.FromResult(new VariantType + { + Id = EntityId, + Name = Name + }); + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs new file mode 100644 index 0000000000..4e232f4e2b --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs @@ -0,0 +1,115 @@ +using System.Text.Json.Serialization; +using SIL.Harmony; +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Entries; + +public class AddVariantChange : CreateChange, ISelfNamedType +{ + public Guid VariantEntryId { get; } + public Guid MainEntryId { get; } + public Guid? MainSenseId { get; } + public List Types { get; } + public bool HideMinorEntry { get; } + public RichMultiString Comment { get; } + + [JsonConstructor] + public AddVariantChange(Guid entityId, + Guid variantEntryId, + Guid mainEntryId, + Guid? mainSenseId = null, + List? types = null, + bool hideMinorEntry = false, + RichMultiString? comment = null) : base(entityId) + { + VariantEntryId = variantEntryId; + MainEntryId = mainEntryId; + MainSenseId = mainSenseId; + Types = types ?? []; + HideMinorEntry = hideMinorEntry; + Comment = comment ?? new(); + } + + public AddVariantChange(Variant variant) : this(variant.MaybeId ?? Guid.NewGuid(), + variant.VariantEntryId, + variant.MainEntryId, + variant.MainSenseId, + [..variant.Types.Select(t => t.Copy())], + variant.HideMinorEntry, + variant.Comment.Copy()) + { + } + + public override async ValueTask NewEntity(Commit commit, IChangeContext context) + { + var variantEntry = await context.GetCurrent(VariantEntryId); + var mainEntry = await context.GetCurrent(MainEntryId); + Sense? mainSense = null; + if (MainSenseId is not null) + mainSense = await context.GetCurrent(MainSenseId.Value); + var shouldBeDeleted = (variantEntry is null or {DeletedAt: not null } || + mainEntry is null or { DeletedAt: not null } || + (MainSenseId.HasValue && mainSense?.DeletedAt is not null)); + var types = new List(Types.Count); + foreach (var type in Types) + { + if (await context.IsObjectDeleted(type.Id)) continue; + types.Add(type); + } + var variant = new Variant + { + Id = EntityId, + VariantEntryId = VariantEntryId, + VariantHeadword = variantEntry?.Headword(), + MainEntryId = MainEntryId, + MainHeadword = mainEntry?.Headword(), + MainSenseId = MainSenseId, + Types = types, + HideMinorEntry = HideMinorEntry, + Comment = Comment.Copy(), + DeletedAt = shouldBeDeleted + ? commit.DateTime + : (DateTime?)null, + }; + if (variant.DeletedAt is null && await CreatesReferenceCycleOrDuplicate(variant, context)) + { + variant.DeletedAt = commit.DateTime; + } + + return variant; + } + + private static async ValueTask CreatesReferenceCycleOrDuplicate(Variant parent, IChangeContext context) + { + if (parent.VariantEntryId == parent.MainEntryId) return true; + //used to avoid checking the same Variant multiple times + HashSet visited = [parent.Id]; + Queue queue = new Queue(); + queue.Enqueue(parent); + while (queue.Count > 0) + { + var current = queue.Dequeue(); + if (current.VariantEntryId == parent.MainEntryId) return true; + await foreach (var o in context.GetObjectsReferencing(current.VariantEntryId)) + { + if (o is not Variant v) continue; + if (v.DeletedAt is not null) continue; + if (visited.Contains(v.Id)) continue; + if (current == parent) + { + var duplicate = v.VariantEntryId == parent.VariantEntryId && + v.MainEntryId == parent.MainEntryId && + v.MainSenseId == parent.MainSenseId; + if (duplicate) return true; + } + + if (v.VariantEntryId == parent.MainEntryId) return true; + queue.Enqueue(v); + visited.Add(v.Id); + } + } + return false; + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantTypeChange.cs b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantTypeChange.cs new file mode 100644 index 0000000000..d6ea54bacb --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantTypeChange.cs @@ -0,0 +1,18 @@ +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Entries; + +public class AddVariantTypeChange(Guid entityId, VariantType variantType) + : EditChange(entityId), ISelfNamedType +{ + public VariantType VariantType { get; } = variantType; + + public override async ValueTask ApplyChange(Variant entity, IChangeContext context) + { + if (entity.Types.Any(t => t.Id == VariantType.Id)) return; + if (await context.IsObjectDeleted(VariantType.Id)) return; + entity.Types.Add(VariantType); + } +} diff --git a/backend/FwLite/LcmCrdt/Changes/Entries/RemoveVariantTypeChange.cs b/backend/FwLite/LcmCrdt/Changes/Entries/RemoveVariantTypeChange.cs new file mode 100644 index 0000000000..27e3be012a --- /dev/null +++ b/backend/FwLite/LcmCrdt/Changes/Entries/RemoveVariantTypeChange.cs @@ -0,0 +1,15 @@ +using SIL.Harmony.Changes; +using SIL.Harmony.Core; +using SIL.Harmony.Entities; + +namespace LcmCrdt.Changes.Entries; + +public class RemoveVariantTypeChange(Guid entityId, Guid variantTypeId) : EditChange(entityId), ISelfNamedType +{ + public Guid VariantTypeId { get; } = variantTypeId; + public override ValueTask ApplyChange(Variant entity, IChangeContext context) + { + entity.Types.RemoveAll(t => t.Id == VariantTypeId); + return ValueTask.CompletedTask; + } +} diff --git a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs index 1aa48ada4a..1a0c27f75b 100644 --- a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs +++ b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs @@ -404,6 +404,124 @@ public async Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId) await AddChange(new RemoveComplexFormTypeChange(entryId, complexFormTypeId)); } + public async IAsyncEnumerable GetVariantTypes() + { + await using var repo = await repoFactory.CreateRepoAsync(); + await foreach (var variantType in repo.VariantTypes.AsAsyncEnumerable()) + { + yield return variantType; + } + } + + public async Task GetVariantType(Guid id) + { + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.VariantTypes.SingleOrDefaultAsync(v => v.Id == id); + } + + public async Task CreateVariantType(VariantType variantType) + { + await using var repo = await repoFactory.CreateRepoAsync(); + if (variantType.Id == default) variantType.Id = Guid.NewGuid(); + await AddChange(new CreateVariantType(variantType.Id, variantType.Name)); + return await repo.VariantTypes.SingleAsync(v => v.Id == variantType.Id); + } + + public async Task SubmitUpdateVariantType(Guid id, UpdateObjectInput update) + { + await AddChange(new JsonPatchChange(id, update.Patch)); + } + + public async Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + await SubmitUpdateVariantType(id, update); + return await GetVariantType(id) ?? throw NotFoundException.ForType(id); + } + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + await VariantTypeSync.Sync(before, after, api ?? this); + return await GetVariantType(after.Id) ?? throw NotFoundException.ForType(after.Id); + } + + public async Task DeleteVariantType(Guid id) + { + await AddChange(new DeleteChange(id)); + } + + public async Task SubmitCreateVariant(Variant variant) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is not null) return; + // Always generate a new entity ID — the caller's ID is never used. + // This aligns with FwData (which ignores the ID entirely) and prevents + // Harmony duplicate-ID pitfalls during sync. + variant.Id = Guid.NewGuid(); + await AddChange(await CreateVariantChange(repo, variant)); + } + + private static async Task CreateVariantChange(MiniLcmRepository repo, Variant variant) + { + var typeIds = variant.Types.Select(t => t.Id).ToArray(); + var resolvedTypes = await repo.VariantTypes.Where(t => typeIds.Contains(t.Id)).ToArrayAsync(); + var missing = typeIds.Except(resolvedTypes.Select(t => t.Id)).ToArray(); + if (missing.Length > 0) + throw new InvalidOperationException($"Variant {variant} references variant types which do not exist: {string.Join(", ", missing)}"); + // use the repo's canonical type objects so embedded copies match CRDT state + return new AddVariantChange(variant with + { + Types = [..typeIds.Select(id => resolvedTypes.Single(t => t.Id == id))] + }); + } + + public async Task CreateVariant(Variant variant) + { + await SubmitCreateVariant(variant); + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.FindVariant(variant) ?? throw NotFoundException.ForType(variant.VariantEntryId); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + await VariantSync.Sync(before, after, api ?? this); + await using var repo = await repoFactory.CreateRepoAsync(); + return await repo.FindVariant(after) ?? throw NotFoundException.ForType(after.VariantEntryId); + } + + public async Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + await using var repo = await repoFactory.CreateRepoAsync(); + // resolved by composite key; a link deleted on the other side stays deleted (delete wins) + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new JsonPatchChange(existing.Id, update.Patch)); + } + + public async Task DeleteVariant(Variant variant) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new DeleteChange(existing.Id)); + } + + public async Task AddVariantType(Variant variant, Guid variantTypeId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new AddVariantTypeChange(existing.Id, await repo.VariantTypes.SingleAsync(vt => vt.Id == variantTypeId))); + } + + public async Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + await using var repo = await repoFactory.CreateRepoAsync(); + var existing = await repo.FindVariant(variant); + if (existing is null) return; + await AddChange(new RemoveVariantTypeChange(existing.Id, variantTypeId)); + } + public async IAsyncEnumerable GetMorphTypes() { await using var repo = await repoFactory.CreateRepoAsync(); @@ -602,6 +720,12 @@ await ToComplexFormComponents(entry.Components).ToArrayAsync() : ..options.IncludeComplexFormsAndComponents ? await ToComplexFormComponents(entry.ComplexForms).ToArrayAsync() : Enumerable.Empty(), + ..options.IncludeComplexFormsAndComponents ? + await ToVariants(entry.VariantOf).ToArrayAsync() : + Enumerable.Empty(), + ..options.IncludeComplexFormsAndComponents ? + await ToVariants(entry.Variants).ToArrayAsync() : + Enumerable.Empty(), ..await ToComplexFormTypes(entry.ComplexFormTypes).ToArrayAsync() ]); return await repo.GetEntry(entry.Id) ?? throw NotFoundException.ForType(entry.Id); @@ -649,6 +773,21 @@ async IAsyncEnumerable ToComplexFormComponents(IList ToVariants(IList variants) + { + foreach (var variant in variants) + { + if (variant.VariantEntryId == default) variant.VariantEntryId = entry.Id; + if (variant.MainEntryId == default) variant.MainEntryId = entry.Id; + if (variant.VariantEntryId == variant.MainEntryId) + { + throw new InvalidOperationException($"Variant {variant} has the same variant entry id as its main entry"); + } + if (variant.MaybeId is null) variant.Id = Guid.NewGuid(); + yield return await CreateVariantChange(repo, variant); + } + } + async IAsyncEnumerable ToComplexFormTypes(IList complexFormTypes) { foreach (var complexFormType in complexFormTypes) diff --git a/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs b/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs index b2af7868fa..f6d816f351 100644 --- a/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs +++ b/backend/FwLite/LcmCrdt/Data/EntryQueryHelpers.cs @@ -42,6 +42,9 @@ public static string Headword(this Entry e, WritingSystemId ws) public static Entry? QueryComponentEntry(ComplexFormComponent c) => throw new NotSupportedException(); public static Sense? QueryComponentSense(ComplexFormComponent c) => throw new NotSupportedException(); public static Entry? QueryComplexFormEntry(ComplexFormComponent c) => throw new NotSupportedException(); + public static Entry? QueryVariantEntry(Variant v) => throw new NotSupportedException(); + public static Entry? QueryMainEntry(Variant v) => throw new NotSupportedException(); + public static Sense? QueryMainSense(Variant v) => throw new NotSupportedException(); [Sql.Expression(""" (select WsId diff --git a/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs b/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs index 4ed9fb5a2d..a426ee397e 100644 --- a/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs +++ b/backend/FwLite/LcmCrdt/Data/MiniLcmRepository.cs @@ -66,6 +66,8 @@ public void Dispose() public IQueryable Entries => dbContext.Entries.ToLinqToDB(); public IQueryable ComplexFormComponents => dbContext.ComplexFormComponents; public IQueryable ComplexFormTypes => dbContext.ComplexFormTypes; + public IQueryable Variants => dbContext.Variants; + public IQueryable VariantTypes => dbContext.VariantTypes; public IQueryable MorphTypes => dbContext.MorphTypes; public IQueryable Senses => dbContext.Senses; public IQueryable ExampleSentences => dbContext.ExampleSentences; @@ -121,6 +123,15 @@ public async Task FindComplexFormComponent(Guid objectId) throw NotFoundException.ForType(objectId); } + public async Task FindVariant(Variant variant) + { + return await AsyncExtensions.SingleOrDefaultAsync(Variants, + v => + v.VariantEntryId == variant.VariantEntryId + && v.MainEntryId == variant.MainEntryId + && v.MainSenseId == variant.MainSenseId); + } + public async Task CountEntries(string? query = null, FilterQueryOptions? options = null) { options ??= FilterQueryOptions.Default; @@ -141,16 +152,17 @@ public async IAsyncEnumerable GetEntries( .LoadWith(e => e.Senses).ThenLoad(s => s.PartOfSpeech) .LoadWith(e => e.ComplexForms) .LoadWith(e => e.Components) + .LoadWith(e => e.VariantOf) + .LoadWith(e => e.Variants) .AsQueryable(); queryable = options.ApplyPaging(queryable); - var complexFormComparer = cultureProvider.GetCompareInfo(await GetWritingSystem(default, WritingSystemType.Vernacular)) - .AsComplexFormComparer(); + var compareInfo = cultureProvider.GetCompareInfo(await GetWritingSystem(default, WritingSystemType.Vernacular)); var entries = AsyncExtensions.AsAsyncEnumerable(queryable); await EnsureConnectionOpen();//sometimes there can be a race condition where the collations arent setup await foreach (var entry in EfExtensions.SafeIterate(entries)) { - entry.Finalize(complexFormComparer); + entry.Finalize(compareInfo); yield return entry; } } @@ -248,13 +260,13 @@ private ValueTask> ApplySorting(IQueryable queryable, Q .LoadWith(e => e.Senses).ThenLoad(s => s.PartOfSpeech) .LoadWith(e => e.ComplexForms) .LoadWith(e => e.Components) + .LoadWith(e => e.VariantOf) + .LoadWith(e => e.Variants) .AsQueryable(), e => e.Id == id); if (entry is not null) { var sortWs = await GetWritingSystem(WritingSystemId.Default, WritingSystemType.Vernacular); - var complexFormComparer = cultureProvider.GetCompareInfo(sortWs) - .AsComplexFormComparer(); - entry.Finalize(complexFormComparer); + entry.Finalize(cultureProvider.GetCompareInfo(sortWs)); } return entry; diff --git a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs index af8cd93174..e65d39cee9 100644 --- a/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs +++ b/backend/FwLite/LcmCrdt/LcmCrdtDbContext.cs @@ -21,6 +21,8 @@ IOptions options public IQueryable Entries => Set().AsNoTracking(); public IQueryable ComplexFormComponents => Set().AsNoTracking(); public IQueryable ComplexFormTypes => Set().AsNoTracking(); + public IQueryable Variants => Set().AsNoTracking(); + public IQueryable VariantTypes => Set().AsNoTracking(); public IQueryable MorphTypes => Set().AsNoTracking(); public IQueryable Senses => Set().AsNoTracking(); public IQueryable ExampleSentences => Set().AsNoTracking(); diff --git a/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs b/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs index d6282371ed..569b52bbc6 100644 --- a/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs +++ b/backend/FwLite/LcmCrdt/LcmCrdtKernel.cs @@ -144,6 +144,11 @@ public static void ConfigureDbOptions(IServiceProvider provider, DbContextOption .Entity().Association(c => EntryQueryHelpers.QueryComplexFormEntry(c), c => c.ComplexFormEntryId, e => e!.Id) .Entity().Property(c => c.ComponentHeadword).IsExpression(c => EntryQueryHelpers.QueryComponentEntry(c)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "componentHeadword") .Entity().Property(c => c.ComplexFormHeadword).IsExpression(c => EntryQueryHelpers.QueryComplexFormEntry(c)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "complexFormHeadword") + .Entity().Association(v => EntryQueryHelpers.QueryVariantEntry(v), v => v.VariantEntryId, e => e!.Id) + .Entity().Association(v => EntryQueryHelpers.QueryMainEntry(v), v => v.MainEntryId, e => e!.Id) + .Entity().Association(v => EntryQueryHelpers.QueryMainSense(v), v => v.MainSenseId, s => s!.Id) + .Entity().Property(v => v.VariantHeadword).IsExpression(v => EntryQueryHelpers.QueryVariantEntry(v)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "variantHeadword") + .Entity().Property(v => v.MainHeadword).IsExpression(v => EntryQueryHelpers.QueryMainEntry(v)!.QueryHeadwordWithTokens(EntryQueryHelpers.DefaultWritingSystem(WritingSystemType.Vernacular)), isColumn: true, alias: "mainHeadword") .Entity().Member(r => r.GetPlainText()).IsExpression(r => Json.GetPlainText(r)) .Entity().Member(g => g.ToString()).IsExpression(g => Json.ToString(g)) .Build(); @@ -199,6 +204,16 @@ public static void ConfigureCrdt(CrdtConfig config) .HasPrincipalKey(entry => entry.Id) .HasForeignKey(c => c.ComponentEntryId) .OnDelete(DeleteBehavior.Cascade); + builder.HasMany(e => e.VariantOf) + .WithOne() + .HasPrincipalKey(entry => entry.Id) + .HasForeignKey(v => v.VariantEntryId) + .OnDelete(DeleteBehavior.Cascade); + builder.HasMany(e => e.Variants) + .WithOne() + .HasPrincipalKey(entry => entry.Id) + .HasForeignKey(v => v.MainEntryId) + .OnDelete(DeleteBehavior.Cascade); builder .Property(e => e.ComplexFormTypes) .HasColumnType("jsonb") @@ -218,6 +233,10 @@ public static void ConfigureCrdt(CrdtConfig config) .WithOne() .HasForeignKey(c => c.ComponentSenseId) .OnDelete(DeleteBehavior.Cascade); + builder.HasMany() + .WithOne() + .HasForeignKey(v => v.MainSenseId) + .OnDelete(DeleteBehavior.Cascade); builder.HasOne() .WithMany(e => e.Senses) .HasForeignKey(sense => sense.EntryId); @@ -306,6 +325,32 @@ public static void ConfigureCrdt(CrdtConfig config) component.ComplexFormEntryId, component.ComponentEntryId }).IsUnique().HasFilter($"{componentSenseId} IS NULL"); + }) + .Add() + .Add(builder => + { + const string mainSenseId = "MainSenseId"; + builder.ToTable("Variants"); + builder.Property(v => v.MainSenseId).HasColumnName(mainSenseId); + builder + .Property(v => v.Types) + .HasColumnType("jsonb") + .HasConversion(list => JsonSerializer.Serialize(list, (JsonSerializerOptions?)null), + json => JsonSerializer.Deserialize>(json, + (JsonSerializerOptions?)null) ?? new()); + //these indexes are used to ensure that we don't create duplicate variant links + //we need the filter otherwise 2 links which are the same and have a null sense id can be created because 2 rows with the same null are not considered duplicates + builder.HasIndex(variant => new + { + variant.VariantEntryId, + variant.MainEntryId, + variant.MainSenseId + }).IsUnique().HasFilter($"{mainSenseId} IS NOT NULL"); + builder.HasIndex(variant => new + { + variant.VariantEntryId, + variant.MainEntryId + }).IsUnique().HasFilter($"{mainSenseId} IS NULL"); }); config.AddRemoteResourceEntity(); @@ -316,6 +361,8 @@ public static void ConfigureCrdt(CrdtConfig config) .Add>() .Add>() .Add>() + .Add>() + .Add>() .Add>() .Add>() .Add>() @@ -325,6 +372,8 @@ public static void ConfigureCrdt(CrdtConfig config) .Add>() .Add>() .Add>() + .Add>() + .Add>() .Add>() .Add() .Add() @@ -361,6 +410,10 @@ public static void ConfigureCrdt(CrdtConfig config) .Add() .Add() .Add() + .Add() + .Add() + .Add() + .Add() .Add() .Add() .Add>() diff --git a/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.Designer.cs b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.Designer.cs new file mode 100644 index 0000000000..81306c0d27 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.Designer.cs @@ -0,0 +1,972 @@ +// +using System; +using System.Collections.Generic; +using LcmCrdt; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace LcmCrdt.Migrations +{ + [DbContext(typeof(LcmCrdtDbContext))] + [Migration("20260703134525_AddVariants")] + partial class AddVariants + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "10.0.8"); + + modelBuilder.Entity("LcmCrdt.FullTextSearch.EntrySearchRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CitationForm") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Gloss") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Headword") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LexemeForm") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("EntrySearchRecord", null, t => + { + t.ExcludeFromMigrations(); + }); + }); + + modelBuilder.Entity("LcmCrdt.ProjectData", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ClientId") + .HasColumnType("TEXT"); + + b.Property("Code") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FwProjectId") + .HasColumnType("TEXT"); + + b.Property("LastUserId") + .HasColumnType("TEXT"); + + b.Property("LastUserName") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("OriginDomain") + .HasColumnType("TEXT"); + + b.Property("Role") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasDefaultValue("Editor"); + + b.HasKey("Id"); + + b.ToTable("ProjectData"); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ComplexFormEntryId") + .HasColumnType("TEXT"); + + b.Property("ComplexFormHeadword") + .HasColumnType("TEXT"); + + b.Property("ComponentEntryId") + .HasColumnType("TEXT"); + + b.Property("ComponentHeadword") + .HasColumnType("TEXT"); + + b.Property("ComponentSenseId") + .HasColumnType("TEXT") + .HasColumnName("ComponentSenseId"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("ComponentEntryId"); + + b.HasIndex("ComponentSenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("ComplexFormEntryId", "ComponentEntryId") + .IsUnique() + .HasFilter("ComponentSenseId IS NULL"); + + b.HasIndex("ComplexFormEntryId", "ComponentEntryId", "ComponentSenseId") + .IsUnique() + .HasFilter("ComponentSenseId IS NOT NULL"); + + b.ToTable("ComplexFormComponents", (string)null); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("ComplexFormType"); + }); + + modelBuilder.Entity("MiniLcm.Models.CustomView", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Analysis") + .HasColumnType("jsonb"); + + b.Property("Base") + .HasColumnType("INTEGER"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("EntryFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ExampleFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SenseFields") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Vernacular") + .HasColumnType("jsonb"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("CustomView"); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CitationForm") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ComplexFormTypes") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("HomographNumber") + .HasColumnType("INTEGER"); + + b.Property("LexemeForm") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("LiteralMeaning") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("MorphType") + .HasColumnType("INTEGER"); + + b.Property("Note") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("PublishIn") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Entry"); + }); + + modelBuilder.Entity("MiniLcm.Models.ExampleSentence", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("Reference") + .HasColumnType("jsonb"); + + b.Property("SenseId") + .HasColumnType("TEXT"); + + b.Property("Sentence") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Translations") + .IsRequired() + .HasColumnType("jsonb"); + + b.HasKey("Id"); + + b.HasIndex("SenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("ExampleSentence"); + }); + + modelBuilder.Entity("MiniLcm.Models.MorphType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Abbreviation") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Description") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Kind") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Postfix") + .HasColumnType("TEXT"); + + b.Property("Prefix") + .HasColumnType("TEXT"); + + b.Property("SecondaryOrder") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("Kind") + .IsUnique(); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("MorphType"); + }); + + modelBuilder.Entity("MiniLcm.Models.PartOfSpeech", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Predefined") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("PartOfSpeech"); + }); + + modelBuilder.Entity("MiniLcm.Models.Publication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("IsMain") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Publication"); + }); + + modelBuilder.Entity("MiniLcm.Models.SemanticDomain", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Code") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Predefined") + .HasColumnType("INTEGER"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("SemanticDomain"); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("EntryId") + .HasColumnType("TEXT"); + + b.Property("Gloss") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("PartOfSpeechId") + .HasColumnType("TEXT"); + + b.Property("Pictures") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("jsonb") + .HasDefaultValueSql("'[]'"); + + b.Property("SemanticDomains") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("EntryId"); + + b.HasIndex("PartOfSpeechId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("Sense"); + }); + + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("HideMinorEntry") + .HasColumnType("INTEGER"); + + b.Property("MainEntryId") + .HasColumnType("TEXT"); + + b.Property("MainHeadword") + .HasColumnType("TEXT"); + + b.Property("MainSenseId") + .HasColumnType("TEXT") + .HasColumnName("MainSenseId"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Types") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("VariantEntryId") + .HasColumnType("TEXT"); + + b.Property("VariantHeadword") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("MainEntryId"); + + b.HasIndex("MainSenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("VariantEntryId", "MainEntryId") + .IsUnique() + .HasFilter("MainSenseId IS NULL"); + + b.HasIndex("VariantEntryId", "MainEntryId", "MainSenseId") + .IsUnique() + .HasFilter("MainSenseId IS NOT NULL"); + + b.ToTable("Variants", (string)null); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("VariantType"); + }); + + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Abbreviation") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Exemplars") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Font") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Order") + .HasColumnType("REAL"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.Property("WsId") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("WsId", "Type") + .IsUnique(); + + b.ToTable("WritingSystem"); + }); + + modelBuilder.Entity("SIL.Harmony.Commit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ClientId") + .HasColumnType("TEXT"); + + b.Property("Hash") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Metadata") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ParentHash") + .IsRequired() + .HasColumnType("TEXT"); + + b.ComplexProperty(typeof(Dictionary), "HybridDateTime", "SIL.Harmony.Commit.HybridDateTime#HybridDateTime", b1 => + { + b1.IsRequired(); + + b1.Property("Counter") + .HasColumnType("INTEGER") + .HasColumnName("Counter"); + + b1.Property("DateTime") + .HasColumnType("TEXT") + .HasColumnName("DateTime"); + }); + + b.HasKey("Id"); + + b.ToTable("Commits", (string)null); + + b.HasAnnotation("CustomIndex:CompositeIndexes", "[{\"paths\":[\"HybridDateTime.DateTime\",\"HybridDateTime.Counter\",\"Id\"],\"unique\":false,\"name\":\"IX_Commits_DateTime_Counter_Id\"}]"); + }); + + modelBuilder.Entity("SIL.Harmony.Core.ChangeEntity", b => + { + b.Property("CommitId") + .HasColumnType("TEXT"); + + b.Property("Index") + .HasColumnType("INTEGER"); + + b.Property("Change") + .HasColumnType("jsonb"); + + b.Property("EntityId") + .HasColumnType("TEXT"); + + b.HasKey("CommitId", "Index"); + + b.ToTable("ChangeEntities", (string)null); + }); + + modelBuilder.Entity("SIL.Harmony.Db.ObjectSnapshot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CommitId") + .HasColumnType("TEXT"); + + b.Property("Entity") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("EntityId") + .HasColumnType("TEXT"); + + b.Property("EntityIsDeleted") + .HasColumnType("INTEGER"); + + b.Property("IsRoot") + .HasColumnType("INTEGER"); + + b.PrimitiveCollection("References") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("TypeName") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("EntityId"); + + b.HasIndex("CommitId", "EntityId") + .IsUnique(); + + b.ToTable("Snapshots", (string)null); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.LocalResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("LocalPath") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("LocalResource"); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.RemoteResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("RemoteId") + .HasColumnType("TEXT"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("RemoteResource"); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormComponent", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Components") + .HasForeignKey("ComplexFormEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("ComplexForms") + .HasForeignKey("ComponentEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany() + .HasForeignKey("ComponentSenseId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ComplexFormComponent", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.ComplexFormType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ComplexFormType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.CustomView", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.CustomView", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Entry", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.ExampleSentence", b => + { + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany("ExampleSentences") + .HasForeignKey("SenseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.ExampleSentence", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.MorphType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.MorphType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.PartOfSpeech", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.PartOfSpeech", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Publication", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Publication", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.SemanticDomain", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.SemanticDomain", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Senses") + .HasForeignKey("EntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.PartOfSpeech", "PartOfSpeech") + .WithMany() + .HasForeignKey("PartOfSpeechId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Sense", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + + b.Navigation("PartOfSpeech"); + }); + + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Variants") + .HasForeignKey("MainEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany() + .HasForeignKey("MainSenseId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Variant", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("VariantOf") + .HasForeignKey("VariantEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.VariantType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.WritingSystem", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("SIL.Harmony.Core.ChangeEntity", b => + { + b.HasOne("SIL.Harmony.Commit", null) + .WithMany("ChangeEntities") + .HasForeignKey("CommitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("SIL.Harmony.Db.ObjectSnapshot", b => + { + b.HasOne("SIL.Harmony.Commit", "Commit") + .WithMany("Snapshots") + .HasForeignKey("CommitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Commit"); + }); + + modelBuilder.Entity("SIL.Harmony.Resource.RemoteResource", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("SIL.Harmony.Resource.RemoteResource", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + + modelBuilder.Entity("MiniLcm.Models.Entry", b => + { + b.Navigation("ComplexForms"); + + b.Navigation("Components"); + + b.Navigation("Senses"); + + b.Navigation("VariantOf"); + + b.Navigation("Variants"); + }); + + modelBuilder.Entity("MiniLcm.Models.Sense", b => + { + b.Navigation("ExampleSentences"); + }); + + modelBuilder.Entity("SIL.Harmony.Commit", b => + { + b.Navigation("ChangeEntities"); + + b.Navigation("Snapshots"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.cs b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.cs new file mode 100644 index 0000000000..2e0dc6ac85 --- /dev/null +++ b/backend/FwLite/LcmCrdt/Migrations/20260703134525_AddVariants.cs @@ -0,0 +1,126 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace LcmCrdt.Migrations +{ + /// + public partial class AddVariants : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Variants", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + DeletedAt = table.Column(type: "TEXT", nullable: true), + VariantEntryId = table.Column(type: "TEXT", nullable: false), + VariantHeadword = table.Column(type: "TEXT", nullable: true), + MainEntryId = table.Column(type: "TEXT", nullable: false), + MainSenseId = table.Column(type: "TEXT", nullable: true), + MainHeadword = table.Column(type: "TEXT", nullable: true), + Types = table.Column(type: "jsonb", nullable: false), + HideMinorEntry = table.Column(type: "INTEGER", nullable: false), + Comment = table.Column(type: "jsonb", nullable: false), + SnapshotId = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Variants", x => x.Id); + table.ForeignKey( + name: "FK_Variants_Entry_MainEntryId", + column: x => x.MainEntryId, + principalTable: "Entry", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Variants_Entry_VariantEntryId", + column: x => x.VariantEntryId, + principalTable: "Entry", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Variants_Sense_MainSenseId", + column: x => x.MainSenseId, + principalTable: "Sense", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Variants_Snapshots_SnapshotId", + column: x => x.SnapshotId, + principalTable: "Snapshots", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateTable( + name: "VariantType", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + Name = table.Column(type: "jsonb", nullable: false), + DeletedAt = table.Column(type: "TEXT", nullable: true), + SnapshotId = table.Column(type: "TEXT", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_VariantType", x => x.Id); + table.ForeignKey( + name: "FK_VariantType_Snapshots_SnapshotId", + column: x => x.SnapshotId, + principalTable: "Snapshots", + principalColumn: "Id", + onDelete: ReferentialAction.SetNull); + }); + + migrationBuilder.CreateIndex( + name: "IX_Variants_MainEntryId", + table: "Variants", + column: "MainEntryId"); + + migrationBuilder.CreateIndex( + name: "IX_Variants_MainSenseId", + table: "Variants", + column: "MainSenseId"); + + migrationBuilder.CreateIndex( + name: "IX_Variants_SnapshotId", + table: "Variants", + column: "SnapshotId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Variants_VariantEntryId_MainEntryId", + table: "Variants", + columns: new[] { "VariantEntryId", "MainEntryId" }, + unique: true, + filter: "MainSenseId IS NULL"); + + migrationBuilder.CreateIndex( + name: "IX_Variants_VariantEntryId_MainEntryId_MainSenseId", + table: "Variants", + columns: new[] { "VariantEntryId", "MainEntryId", "MainSenseId" }, + unique: true, + filter: "MainSenseId IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_VariantType_SnapshotId", + table: "VariantType", + column: "SnapshotId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Variants"); + + migrationBuilder.DropTable( + name: "VariantType"); + } + } +} diff --git a/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs b/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs index 650a5b9420..5818a033ab 100644 --- a/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs +++ b/backend/FwLite/LcmCrdt/Migrations/LcmCrdtDbContextModelSnapshot.cs @@ -484,6 +484,89 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Sense"); }); + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("HideMinorEntry") + .HasColumnType("INTEGER"); + + b.Property("MainEntryId") + .HasColumnType("TEXT"); + + b.Property("MainHeadword") + .HasColumnType("TEXT"); + + b.Property("MainSenseId") + .HasColumnType("TEXT") + .HasColumnName("MainSenseId"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.Property("Types") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("VariantEntryId") + .HasColumnType("TEXT"); + + b.Property("VariantHeadword") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("MainEntryId"); + + b.HasIndex("MainSenseId"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.HasIndex("VariantEntryId", "MainEntryId") + .IsUnique() + .HasFilter("MainSenseId IS NULL"); + + b.HasIndex("VariantEntryId", "MainEntryId", "MainSenseId") + .IsUnique() + .HasFilter("MainSenseId IS NOT NULL"); + + b.ToTable("Variants", (string)null); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeletedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("SnapshotId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SnapshotId") + .IsUnique(); + + b.ToTable("VariantType"); + }); + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => { b.Property("Id") @@ -787,6 +870,39 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("PartOfSpeech"); }); + modelBuilder.Entity("MiniLcm.Models.Variant", b => + { + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("Variants") + .HasForeignKey("MainEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("MiniLcm.Models.Sense", null) + .WithMany() + .HasForeignKey("MainSenseId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.Variant", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + + b.HasOne("MiniLcm.Models.Entry", null) + .WithMany("VariantOf") + .HasForeignKey("VariantEntryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("MiniLcm.Models.VariantType", b => + { + b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) + .WithOne() + .HasForeignKey("MiniLcm.Models.VariantType", "SnapshotId") + .OnDelete(DeleteBehavior.SetNull); + }); + modelBuilder.Entity("MiniLcm.Models.WritingSystem", b => { b.HasOne("SIL.Harmony.Db.ObjectSnapshot", null) @@ -830,6 +946,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Navigation("Components"); b.Navigation("Senses"); + + b.Navigation("VariantOf"); + + b.Navigation("Variants"); }); modelBuilder.Entity("MiniLcm.Models.Sense", b => diff --git a/backend/FwLite/LcmCrdt/QueryHelpers.cs b/backend/FwLite/LcmCrdt/QueryHelpers.cs index 37e151c271..a20e94a758 100644 --- a/backend/FwLite/LcmCrdt/QueryHelpers.cs +++ b/backend/FwLite/LcmCrdt/QueryHelpers.cs @@ -4,12 +4,13 @@ namespace LcmCrdt; public static class QueryHelpers { - public static void Finalize(this Entry entry, - IComparer complexFormComparer) + public static void Finalize(this Entry entry, CompareInfo compareInfo) { entry.Senses.ApplySortOrder(); entry.Components.ApplySortOrder(); - entry.ComplexForms.Sort(complexFormComparer); + entry.ComplexForms.Sort(compareInfo.AsComplexFormComparer()); + entry.VariantOf.Sort(compareInfo.AsVariantOfComparer()); + entry.Variants.Sort(compareInfo.AsVariantsComparer()); foreach (var sense in entry.Senses) { sense.Finalize(); @@ -55,4 +56,24 @@ public static IComparer AsComplexFormComparer(this Compare return a.ComplexFormEntryId.CompareTo(b.ComplexFormEntryId); }); } + + public static IComparer AsVariantOfComparer(this CompareInfo compareInfo) + { + return Comparer.Create((a, b) => + { + var result = compareInfo.Compare(a.MainHeadword, b.MainHeadword, CompareOptions.IgnoreCase); + if (result != 0) return result; + return a.MainEntryId.CompareTo(b.MainEntryId); + }); + } + + public static IComparer AsVariantsComparer(this CompareInfo compareInfo) + { + return Comparer.Create((a, b) => + { + var result = compareInfo.Compare(a.VariantHeadword, b.VariantHeadword, CompareOptions.IgnoreCase); + if (result != 0) return result; + return a.VariantEntryId.CompareTo(b.VariantEntryId); + }); + } } diff --git a/backend/FwLite/MiniLcm/CreateEntryOptions.cs b/backend/FwLite/MiniLcm/CreateEntryOptions.cs index 4816296074..5a2a81e446 100644 --- a/backend/FwLite/MiniLcm/CreateEntryOptions.cs +++ b/backend/FwLite/MiniLcm/CreateEntryOptions.cs @@ -2,7 +2,8 @@ namespace MiniLcm; public record CreateEntryOptions( /// - /// Can be excluded for the purpose of deferring referencing entities that might not exist yet. + /// Also gates variant links. Can be excluded for the purpose of deferring + /// referencing entities that might not exist yet. /// bool IncludeComplexFormsAndComponents = true, bool AutoAddMainPublication = false diff --git a/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs b/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs index 36523faf83..aadff068c1 100644 --- a/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs +++ b/backend/FwLite/MiniLcm/IMiniLcmReadApi.cs @@ -15,8 +15,10 @@ public interface IMiniLcmReadApi IAsyncEnumerable GetPublications(); IAsyncEnumerable GetSemanticDomains(); IAsyncEnumerable GetComplexFormTypes(); + IAsyncEnumerable GetVariantTypes(); IAsyncEnumerable GetMorphTypes(); Task GetComplexFormType(Guid id); + Task GetVariantType(Guid id); Task GetMorphType(Guid id); Task GetMorphType(MorphTypeKind kind); Task CountEntries(string? query = null, FilterQueryOptions? options = null); diff --git a/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs b/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs index 310095dd30..8cecfdcca5 100644 --- a/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs +++ b/backend/FwLite/MiniLcm/IMiniLcmWriteApi.cs @@ -44,6 +44,13 @@ Task UpdateWritingSystem(WritingSystemId id, Task DeleteComplexFormType(Guid id); #endregion + #region VariantType + Task CreateVariantType(VariantType variantType); + Task UpdateVariantType(Guid id, UpdateObjectInput update); + Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null); + Task DeleteVariantType(Guid id); + #endregion + #region MorphType Task CreateMorphType(MorphType morphType); Task UpdateMorphType(Guid id, UpdateObjectInput update); @@ -65,6 +72,13 @@ Task UpdateWritingSystem(WritingSystemId id, Task DeleteComplexFormComponent(ComplexFormComponent complexFormComponent); Task AddComplexFormType(Guid entryId, Guid complexFormTypeId); Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId); + // Variant links are unordered (no position/move) and resolved by their composite key + // (VariantEntryId, MainEntryId, MainSenseId) — see VARIANTS.md + Task CreateVariant(Variant variant); + Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null); + Task DeleteVariant(Variant variant); + Task AddVariantType(Variant variant, Guid variantTypeId); + Task RemoveVariantType(Variant variant, Guid variantTypeId); Task AddPublication(Guid entryId, Guid publicationId); Task RemovePublication(Guid entryId, Guid publicationId); #endregion @@ -146,6 +160,12 @@ Task UpdatePicture(Guid entryId, Task SubmitUpdateEntry(Guid id, UpdateObjectInput update) => UpdateEntry(id, update); Task SubmitCreateComplexFormComponent(ComplexFormComponent complexFormComponent, BetweenPosition? position = null) => CreateComplexFormComponent(complexFormComponent, position); Task SubmitMoveComplexFormComponent(ComplexFormComponent complexFormComponent, BetweenPosition between) => MoveComplexFormComponent(complexFormComponent, between); + Task SubmitCreateVariant(Variant variant) => CreateVariant(variant); + /// + /// Patches a variant link's own fields (HideMinorEntry, Comment) — the link is located by + /// its composite key, not its Id, since FwData links have no stable Id. + /// + Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update); Task SubmitCreateSense(Guid entryId, Sense sense, BetweenPosition? position = null) => CreateSense(entryId, sense, position); Task SubmitUpdateSense(Guid entryId, Guid senseId, UpdateObjectInput update) => UpdateSense(entryId, senseId, update); Task SubmitCreateExampleSentence(Guid entryId, Guid senseId, ExampleSentence exampleSentence, BetweenPosition? position = null) => CreateExampleSentence(entryId, senseId, exampleSentence, position); @@ -157,6 +177,7 @@ Task UpdatePicture(Guid entryId, Task SubmitUpdatePublication(Guid id, UpdateObjectInput update) => UpdatePublication(id, update); Task SubmitUpdateSemanticDomain(Guid id, UpdateObjectInput update) => UpdateSemanticDomain(id, update); Task SubmitUpdateComplexFormType(Guid id, UpdateObjectInput update) => UpdateComplexFormType(id, update); + Task SubmitUpdateVariantType(Guid id, UpdateObjectInput update) => UpdateVariantType(id, update); #endregion #region CustomView diff --git a/backend/FwLite/MiniLcm/Models/Entry.cs b/backend/FwLite/MiniLcm/Models/Entry.cs index f4ce83daa6..a7654f6487 100644 --- a/backend/FwLite/MiniLcm/Models/Entry.cs +++ b/backend/FwLite/MiniLcm/Models/Entry.cs @@ -33,6 +33,16 @@ public record Entry : IObjectWithId public virtual List ComplexFormTypes { get; set; } = []; + /// + /// This entry is a variant of these entries/senses + /// + public virtual List VariantOf { get; set; } = []; + + /// + /// Entries which are variants of this entry (or one of its senses) + /// + public virtual List Variants { get; set; } = []; + public virtual List PublishIn { get; set; } = []; //Server-side query rewrite target — LcmCrdt rewrites this to Json.Query(PublishIn) so @@ -78,6 +88,14 @@ public Entry Copy() [ ..ComplexFormTypes.Select(cft => cft.Copy()) ], + VariantOf = + [ + ..VariantOf.Select(v => v.Copy()) + ], + Variants = + [ + ..Variants.Select(v => v.Copy()) + ], PublishIn = [ ..PublishIn.Select(p => p.Copy())] }; } @@ -91,17 +109,3 @@ public void RemoveReference(Guid id, DateTimeOffset time) { } } - -public class Variants -{ - public Guid Id { get; set; } - public IList VariantsOf { get; set; } = []; - public IList Types { get; set; } = []; -} - - -public class VariantType -{ - public required Guid Id { get; set; } - public required MultiString Name { get; set; } -} diff --git a/backend/FwLite/MiniLcm/Models/IObjectWithId.cs b/backend/FwLite/MiniLcm/Models/IObjectWithId.cs index 606dca4192..f5ccc63290 100644 --- a/backend/FwLite/MiniLcm/Models/IObjectWithId.cs +++ b/backend/FwLite/MiniLcm/Models/IObjectWithId.cs @@ -12,6 +12,8 @@ namespace MiniLcm.Models; [JsonDerivedType(typeof(SemanticDomain), nameof(SemanticDomain))] [JsonDerivedType(typeof(ComplexFormType), nameof(ComplexFormType))] [JsonDerivedType(typeof(ComplexFormComponent), nameof(ComplexFormComponent))] +[JsonDerivedType(typeof(VariantType), nameof(VariantType))] +[JsonDerivedType(typeof(Variant), nameof(Variant))] [JsonDerivedType(typeof(CustomView), nameof(CustomView))] [JsonDerivedType(typeof(MorphType), nameof(MorphType))] public interface IObjectWithId diff --git a/backend/FwLite/MiniLcm/Models/Variant.cs b/backend/FwLite/MiniLcm/Models/Variant.cs new file mode 100644 index 0000000000..7ba8d25996 --- /dev/null +++ b/backend/FwLite/MiniLcm/Models/Variant.cs @@ -0,0 +1,104 @@ +using System.Diagnostics; +using MiniLcm.Attributes; + +namespace MiniLcm.Models; + +/// +/// One variant relationship: a variant (minor) entry pointing at the main entry (or sense) +/// it is a variant of. Maps 1:1 to a FieldWorks LexEntryRef with RefType = Variant, so the +/// per-relationship fields (Types, HideMinorEntry, Comment) live here rather than on the +/// entry. Unlike there is no Order — variant lists have +/// no user-meaningful order in FieldWorks. +/// +public record Variant : IObjectWithId +{ + public static Variant FromEntries(Entry variantEntry, + Entry mainEntry, + Guid? mainSenseId = null) + { + if (mainEntry.Id == default) throw new ArgumentException("mainEntry.Id is empty"); + if (variantEntry.Id == default) throw new ArgumentException("variantEntry.Id is empty"); + return new Variant + { + Id = Guid.NewGuid(), + VariantEntryId = variantEntry.Id, + VariantHeadword = variantEntry.Headword(), + MainEntryId = mainEntry.Id, + MainHeadword = mainEntry.Headword(), + MainSenseId = mainSenseId, + }; + } + + private Guid _id; + [MiniLcmInternal] + public Guid Id + { + get + { + Debug.Assert(_id != Guid.Empty, "Id is not set and should not be used"); + return _id; + } + set + { + _id = value; + } + } + + [MiniLcmInternal] + public Guid? MaybeId => _id == Guid.Empty ? null : _id; + + public DateTimeOffset? DeletedAt { get; set; } + public virtual required Guid VariantEntryId { get; set; } + public string? VariantHeadword { get; set; } + public virtual required Guid MainEntryId { get; set; } + public virtual Guid? MainSenseId { get; set; } = null; + public string? MainHeadword { get; set; } + public virtual List Types { get; set; } = []; + public virtual bool HideMinorEntry { get; set; } + public virtual RichMultiString Comment { get; set; } = new(); + + public Guid[] GetReferences() + { + Span senseId = (MainSenseId.HasValue ? [MainSenseId.Value] : []); + return + [ + VariantEntryId, + MainEntryId, + ..senseId, + ..Types.Select(t => t.Id) + ]; + } + + public void RemoveReference(Guid id, DateTimeOffset time) + { + if (MainEntryId == id || VariantEntryId == id || MainSenseId == id) + { + DeletedAt = time; + return; + } + Types.RemoveAll(t => t.Id == id); + } + + public Variant Copy() + { + return new Variant + { + Id = _id, + VariantEntryId = VariantEntryId, + VariantHeadword = VariantHeadword, + MainEntryId = MainEntryId, + MainHeadword = MainHeadword, + MainSenseId = MainSenseId, + Types = [..Types.Select(t => t.Copy())], + HideMinorEntry = HideMinorEntry, + Comment = Comment.Copy(), + DeletedAt = DeletedAt, + }; + } + + public override string ToString() + { + return + $"{nameof(DeletedAt)}: {DeletedAt}, {nameof(VariantEntryId)}: {VariantEntryId}, {nameof(VariantHeadword)}: {VariantHeadword}, {nameof(MainEntryId)}: {MainEntryId}, {nameof(MainSenseId)}: {MainSenseId}, {nameof(MainHeadword)}: {MainHeadword}, Types: [{string.Join(", ", Types.Select(t => t.Id))}]"; + } +} diff --git a/backend/FwLite/MiniLcm/Models/VariantType.cs b/backend/FwLite/MiniLcm/Models/VariantType.cs new file mode 100644 index 0000000000..6531b0b6e9 --- /dev/null +++ b/backend/FwLite/MiniLcm/Models/VariantType.cs @@ -0,0 +1,23 @@ +namespace MiniLcm.Models; + +public record VariantType : IObjectWithId +{ + public virtual Guid Id { get; set; } + public virtual required MultiString Name { get; set; } + + public DateTimeOffset? DeletedAt { get; set; } + + public Guid[] GetReferences() + { + return []; + } + + public void RemoveReference(Guid id, DateTimeOffset time) + { + } + + public VariantType Copy() + { + return new VariantType { Id = Id, Name = Name.Copy(), DeletedAt = DeletedAt }; + } +} diff --git a/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs b/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs index dfb231e83d..0749e03776 100644 --- a/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs +++ b/backend/FwLite/MiniLcm/Normalization/MiniLcmApiWriteNormalizationWrapper.cs @@ -207,6 +207,39 @@ private static ComplexFormType NormalizeComplexFormType(ComplexFormType cft) #endregion + #region VariantType + + public async Task CreateVariantType(VariantType variantType) + { + return await _api.CreateVariantType(NormalizeVariantType(variantType)); + } + + public Task UpdateVariantType(Guid id, UpdateObjectInput update) + { + return _api.UpdateVariantType(id, NormalizePatch(update)); + } + + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + return await _api.UpdateVariantType(NormalizeVariantType(before), NormalizeVariantType(after), api); + } + + public Task DeleteVariantType(Guid id) + { + return _api.DeleteVariantType(id); + } + + private static VariantType NormalizeVariantType(VariantType vt) + { + return vt with + { + Name = StringNormalizer.Normalize(vt.Name) + }; + } + + #endregion + #region MorphType public async Task CreateMorphType(MorphType morphType) @@ -286,6 +319,36 @@ public Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId) return _api.RemoveComplexFormType(entryId, complexFormTypeId); } + public async Task CreateVariant(Variant variant) + { + return await _api.CreateVariant(NormalizeVariant(variant)); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + return await _api.UpdateVariant(NormalizeVariant(before), NormalizeVariant(after), api); + } + + public Task SubmitUpdateVariant(Variant variant, UpdateObjectInput update) + { + return _api.SubmitUpdateVariant(variant, NormalizePatch(update)); + } + + public Task DeleteVariant(Variant variant) + { + return _api.DeleteVariant(variant); + } + + public Task AddVariantType(Variant variant, Guid variantTypeId) + { + return _api.AddVariantType(variant, variantTypeId); + } + + public Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + return _api.RemoveVariantType(variant, variantTypeId); + } + public Task AddPublication(Guid entryId, Guid publicationId) { return _api.AddPublication(entryId, publicationId); @@ -306,7 +369,9 @@ private static Entry NormalizeEntry(Entry entry) Note = StringNormalizer.Normalize(entry.Note), Senses = [.. entry.Senses.Select(NormalizeSense)], Components = [.. entry.Components.Select(NormalizeComplexFormComponent)], - ComplexForms = [.. entry.ComplexForms.Select(NormalizeComplexFormComponent)] + ComplexForms = [.. entry.ComplexForms.Select(NormalizeComplexFormComponent)], + VariantOf = [.. entry.VariantOf.Select(NormalizeVariant)], + Variants = [.. entry.Variants.Select(NormalizeVariant)] }; } @@ -319,6 +384,17 @@ private static ComplexFormComponent NormalizeComplexFormComponent(ComplexFormCom }; } + private static Variant NormalizeVariant(Variant variant) + { + return variant with + { + VariantHeadword = StringNormalizer.Normalize(variant.VariantHeadword), + MainHeadword = StringNormalizer.Normalize(variant.MainHeadword), + Comment = StringNormalizer.Normalize(variant.Comment), + Types = [.. variant.Types.Select(NormalizeVariantType)] + }; + } + #endregion #region Sense diff --git a/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs b/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs index 353b905113..bb19a2e751 100644 --- a/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs +++ b/backend/FwLite/MiniLcm/SyncHelpers/EntrySync.cs @@ -70,6 +70,8 @@ public static async Task SyncComplexFormsAndComponents(Entry beforeEntry, E var changes = 0; changes += await SyncComplexFormComponents(beforeEntry.Components, afterEntry.Components, api); changes += await SyncComplexForms(beforeEntry.ComplexForms, afterEntry.ComplexForms, api); + changes += await SyncVariants(beforeEntry.VariantOf, afterEntry.VariantOf, api); + changes += await SyncVariants(beforeEntry.Variants, afterEntry.Variants, api); return changes; } catch (Exception e) @@ -118,6 +120,15 @@ private static async Task SyncComplexForms(IList befo ); } + private static async Task SyncVariants(IList beforeVariants, IList afterVariants, IMiniLcmApi api) + { + return await DiffCollection.Diff( + beforeVariants, + afterVariants, + new VariantsDiffApi(api) + ); + } + private static async Task SensesSync(Guid entryId, IList beforeSenses, IList afterSenses, @@ -286,6 +297,33 @@ public Task Replace(ComplexFormComponent beforeComponent, ComplexFormCompon } } + private class VariantsDiffApi(IMiniLcmApi api) : CollectionDiffApi + { + public override (Guid, Guid, Guid?) GetId(Variant variant) + { + //we can't use the ID as there's none defined by Fw so it won't work as a sync key + return (variant.VariantEntryId, variant.MainEntryId, variant.MainSenseId); + } + + public override async Task Add(Variant after) + { + await api.SubmitCreateVariant(after); + return 1; + } + + public override async Task Remove(Variant before) + { + await api.DeleteVariant(before); + return 1; + } + + public override Task Replace(Variant beforeVariant, Variant afterVariant) + { + //endpoints match (same composite key) — sync the link's own data (types, HideMinorEntry, Comment) + return VariantSync.Sync(beforeVariant, afterVariant, api); + } + } + private class SensesDiffApi(IMiniLcmApi api, Guid entryId, Dictionary? allBeforeSenses, Dictionary? allAfterSenses) : IOrderableCollectionDiffApi { public Guid GetId(Sense sense) diff --git a/backend/FwLite/MiniLcm/SyncHelpers/VariantSync.cs b/backend/FwLite/MiniLcm/SyncHelpers/VariantSync.cs new file mode 100644 index 0000000000..0b17ec7782 --- /dev/null +++ b/backend/FwLite/MiniLcm/SyncHelpers/VariantSync.cs @@ -0,0 +1,57 @@ +using MiniLcm.Models; +using SystemTextJsonPatch; +using SystemTextJsonPatch.Operations; + +namespace MiniLcm.SyncHelpers; + +public static class VariantSync +{ + /// + /// Syncs one variant link's own data (types, HideMinorEntry, Comment). The link is + /// located by its composite key; changing endpoints is delete-and-recreate, handled by + /// the collection diff in . + /// + public static async Task Sync(Variant before, Variant after, IMiniLcmApi api) + { + var changes = 0; + var updateObjectInput = VariantDiffToUpdate(before, after); + if (updateObjectInput is not null) + { + await api.SubmitUpdateVariant(after, updateObjectInput); + changes++; + } + changes += await DiffCollection.Diff(before.Types, after.Types, new VariantTypesDiffApi(api, after)); + return changes; + } + + public static UpdateObjectInput? VariantDiffToUpdate(Variant before, Variant after) + { + JsonPatchDocument patchDocument = new(); + if (before.HideMinorEntry != after.HideMinorEntry) + patchDocument.Operations.Add(new Operation("replace", $"/{nameof(Variant.HideMinorEntry)}", null, after.HideMinorEntry)); + patchDocument.Operations.AddRange(MultiStringDiff.GetMultiStringDiff(nameof(Variant.Comment), before.Comment, after.Comment)); + if (patchDocument.Operations.Count == 0) return null; + return new UpdateObjectInput(patchDocument); + } + + private class VariantTypesDiffApi(IMiniLcmApi api, Variant variant) : ObjectWithIdCollectionDiffApi + { + public override async Task Add(VariantType afterVariantType) + { + await api.AddVariantType(variant, afterVariantType.Id); + return 1; + } + + public override async Task Remove(VariantType beforeVariantType) + { + await api.RemoveVariantType(variant, beforeVariantType.Id); + return 1; + } + + public override Task Replace(VariantType before, VariantType after) + { + // type renames sync via VariantTypeSync (top-level list), not through the link + return Task.FromResult(0); + } + } +} diff --git a/backend/FwLite/MiniLcm/SyncHelpers/VariantTypeSync.cs b/backend/FwLite/MiniLcm/SyncHelpers/VariantTypeSync.cs new file mode 100644 index 0000000000..3ac8d7771e --- /dev/null +++ b/backend/FwLite/MiniLcm/SyncHelpers/VariantTypeSync.cs @@ -0,0 +1,56 @@ +using MiniLcm.Models; +using SystemTextJsonPatch; + +namespace MiniLcm.SyncHelpers; + +public static class VariantTypeSync +{ + public static async Task Sync(VariantType[] beforeVariantTypes, + VariantType[] afterVariantTypes, + IMiniLcmApi api) + { + return await DiffCollection.Diff( + beforeVariantTypes, + afterVariantTypes, + new VariantTypesDiffApi(api)); + } + + public static async Task Sync(VariantType before, + VariantType after, + IMiniLcmApi api) + { + var updateObjectInput = VariantTypeDiffToUpdate(before, after); + if (updateObjectInput is not null) await api.SubmitUpdateVariantType(after.Id, updateObjectInput); + return updateObjectInput is null ? 0 : 1; + } + + public static UpdateObjectInput? VariantTypeDiffToUpdate(VariantType before, VariantType after) + { + JsonPatchDocument patchDocument = new(); + patchDocument.Operations.AddRange(MultiStringDiff.GetMultiStringDiff(nameof(VariantType.Name), + before.Name, + after.Name)); + if (patchDocument.Operations.Count == 0) return null; + return new UpdateObjectInput(patchDocument); + } + + private class VariantTypesDiffApi(IMiniLcmApi api) : ObjectWithIdCollectionDiffApi + { + public override async Task Add(VariantType afterVariantType) + { + await api.CreateVariantType(afterVariantType); + return 1; + } + + public override async Task Remove(VariantType beforeVariantType) + { + await api.DeleteVariantType(beforeVariantType.Id); + return 1; + } + + public override Task Replace(VariantType beforeVariantType, VariantType afterVariantType) + { + return Sync(beforeVariantType, afterVariantType, api); + } + } +} diff --git a/backend/FwLite/MiniLcm/Validators/EntryValidator.cs b/backend/FwLite/MiniLcm/Validators/EntryValidator.cs index 3874801821..e07d1de399 100644 --- a/backend/FwLite/MiniLcm/Validators/EntryValidator.cs +++ b/backend/FwLite/MiniLcm/Validators/EntryValidator.cs @@ -22,6 +22,13 @@ public EntryValidator() // RuleForEach(e => e.ComplexForms).SetValidator(entry => new ComplexFormComponentValidator(entry)); // TODO: Not implemented yet // TODO: ComplexFormComponentValidator(entry) might need to know the "direction" of the entry it's validating, i.e. one class for "I'm a component" and another for "I'm the complex entry" RuleForEach(e => e.ComplexFormTypes).SetValidator(new ComplexFormTypeValidator()); + RuleForEach(e => e.VariantOf).Must(NotBeEmptyMainEntryReference).WithMessage("Variant main-entry reference must not be empty."); + RuleForEach(e => e.VariantOf).Must(NotBeVariantOfSelfReference).WithMessage("Variant main-entry reference must not be the same as the entry."); + RuleForEach(e => e.VariantOf).Must(HaveCorrectVariantEntryReference).WithMessage("Variant entry reference must be correct."); + RuleForEach(e => e.Variants).Must(NotBeVariantSelfReference).WithMessage("Variant entry reference must not be the same as the entry."); + RuleForEach(e => e.Variants).Must(HaveCorrectMainEntryReference).WithMessage("Variant main-entry reference must be correct."); + RuleForEach(e => e.VariantOf).SetValidator(new VariantValidator()); + RuleForEach(e => e.Variants).SetValidator(new VariantValidator()); } private bool NotBeEmptyComponentReference(Entry entry, ComplexFormComponent component) @@ -51,6 +58,33 @@ private bool HaveCorrectComponentEntryReference(Entry entry, ComplexFormComponen return component.ComponentEntryId == entry.Id || component.ComponentEntryId == Guid.Empty; } + private bool NotBeEmptyMainEntryReference(Entry entry, Variant variant) + { + return variant.MainEntryId != Guid.Empty; + } + + private bool NotBeVariantOfSelfReference(Entry entry, Variant variant) + { + return variant.MainEntryId != entry.Id; + } + + private bool HaveCorrectVariantEntryReference(Entry entry, Variant variant) + { + // Empty GUID is okay here because it can be guessed from the parent object + return variant.VariantEntryId == entry.Id || variant.VariantEntryId == Guid.Empty; + } + + private bool NotBeVariantSelfReference(Entry entry, Variant variant) + { + return variant.VariantEntryId != entry.Id || variant.VariantEntryId == Guid.Empty; + } + + private bool HaveCorrectMainEntryReference(Entry entry, Variant variant) + { + // Empty GUID is okay here because it can be guessed from the parent object + return variant.MainEntryId == entry.Id || variant.MainEntryId == Guid.Empty; + } + private string GetEntryIdentifier(Entry entry) { return $"{entry.Headword()} - {entry.Id}"; diff --git a/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs b/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs index db2019ae15..3a696e1629 100644 --- a/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs +++ b/backend/FwLite/MiniLcm/Validators/MiniLcmApiValidationWrapper.cs @@ -129,6 +129,30 @@ public async Task UpdateComplexFormType(ComplexFormType before, return await _api.UpdateComplexFormType(before, after, api ?? this); } + public async Task CreateVariantType(VariantType variantType) + { + await validators.ValidateAndThrow(variantType); + return await _api.CreateVariantType(variantType); + } + + public async Task UpdateVariantType(VariantType before, VariantType after, IMiniLcmApi? api = null) + { + await validators.ValidateAndThrow(after); + return await _api.UpdateVariantType(before, after, api ?? this); + } + + public async Task CreateVariant(Variant variant) + { + await validators.ValidateAndThrow(variant); + return await _api.CreateVariant(variant); + } + + public async Task UpdateVariant(Variant before, Variant after, IMiniLcmApi? api = null) + { + await validators.ValidateAndThrow(after); + return await _api.UpdateVariant(before, after, api ?? this); + } + public async Task UpdateMorphType(Guid id, UpdateObjectInput update) { await validators.ValidateAndThrow(update); diff --git a/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs b/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs index 4d516f6583..566d87f043 100644 --- a/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs +++ b/backend/FwLite/MiniLcm/Validators/MiniLcmValidators.cs @@ -8,6 +8,8 @@ namespace MiniLcm.Validators; public record MiniLcmValidators( IValidator ComplexFormTypeValidator, + IValidator VariantTypeValidator, + IValidator VariantValidator, IValidator MorphTypeValidator, IValidator EntryValidator, IValidator SenseValidator, @@ -25,6 +27,16 @@ public async Task ValidateAndThrow(ComplexFormType value) await ComplexFormTypeValidator.ValidateAndThrowAsync(value); } + public async Task ValidateAndThrow(VariantType value) + { + await VariantTypeValidator.ValidateAndThrowAsync(value); + } + + public async Task ValidateAndThrow(Variant value) + { + await VariantValidator.ValidateAndThrowAsync(value); + } + public async Task ValidateAndThrow(MorphType value) { await MorphTypeValidator.ValidateAndThrowAsync(value); @@ -88,6 +100,8 @@ public static IServiceCollection AddMiniLcmValidators(this IServiceCollection se services.AddTransient(); services.AddTransient(); services.AddTransient, ComplexFormTypeValidator>(); + services.AddTransient, VariantTypeValidator>(); + services.AddTransient, VariantValidator>(); services.AddTransient, MorphTypeValidator>(); services.AddTransient, EntryValidator>(); services.AddTransient, SenseValidator>(); diff --git a/backend/FwLite/MiniLcm/Validators/VariantTypeValidator.cs b/backend/FwLite/MiniLcm/Validators/VariantTypeValidator.cs new file mode 100644 index 0000000000..0692ef36fc --- /dev/null +++ b/backend/FwLite/MiniLcm/Validators/VariantTypeValidator.cs @@ -0,0 +1,13 @@ +using FluentValidation; +using MiniLcm.Models; + +namespace MiniLcm.Validators; + +internal class VariantTypeValidator : AbstractValidator +{ + public VariantTypeValidator() + { + RuleFor(c => c.DeletedAt).Null(); + RuleFor(c => c.Name).Required(c => c.Id.ToString("D")); + } +} diff --git a/backend/FwLite/MiniLcm/Validators/VariantValidator.cs b/backend/FwLite/MiniLcm/Validators/VariantValidator.cs new file mode 100644 index 0000000000..43fe4d7eb2 --- /dev/null +++ b/backend/FwLite/MiniLcm/Validators/VariantValidator.cs @@ -0,0 +1,19 @@ +using FluentValidation; +using MiniLcm.Models; + +namespace MiniLcm.Validators; + +internal class VariantValidator : AbstractValidator +{ + public VariantValidator() + { + RuleFor(v => v.DeletedAt).Null(); + RuleFor(v => v.Comment).NoEmptyValues(GetIdentifier).NoDefaultWritingSystems(GetIdentifier); + RuleForEach(v => v.Types).SetValidator(new VariantTypeValidator()); + } + + private string GetIdentifier(Variant variant) + { + return $"{variant.VariantHeadword} -> {variant.MainHeadword} ({variant.VariantEntryId} -> {variant.MainEntryId})"; + } +} diff --git a/backend/FwLite/VARIANTS.md b/backend/FwLite/VARIANTS.md new file mode 100644 index 0000000000..5a5883d9f2 --- /dev/null +++ b/backend/FwLite/VARIANTS.md @@ -0,0 +1,278 @@ +# Variants in FieldWorks Lite — design & work log + +Working document for adding variant support to FwLite (model → sync → UI). Written so any +dev/agent can pick up the work mid-stream. Update the **Status** section as steps land. + +## Status + +- [x] Exploration (complex-forms blueprint, liblcm variant model, viewer UI) +- [x] Design review with Tim (2026-07-03): per-link model confirmed, naming settled +- [ ] Step 1 — MiniLcm model, CRDT change types, both API implementations, conformance tests +- [ ] Step 2 — FwData↔CRDT project sync (orchestration, snapshot, round-trip tests) +- [ ] Step 3 — Viewer UI (fields, picker, i18n, Playwright) + +Branches are stacked: `feat/variants-model` ← `feat/variants-sync` ← `feat/variants-ui`. + +## The LCM model (authority: liblcm) + +A variant relationship is a `LexEntryRef` **owned by the variant (minor) entry** +(`LexEntry.EntryRefsOS`), with: + +| LexEntryRef field | Variant usage | FLEx UI label | +|---|---|---| +| `RefType` | `LexEntryRefTags.krtVariant` (= 0; complex form = 1) | — | +| `ComponentLexemesRS` | The main entry **or sense** this is a variant of. Sequence — multiple targets allowed by the model; FLEx UI uses one per ref. | "Variant of" | +| `VariantEntryTypesRS` | Types from `LexDb.VariantEntryTypesOA` (per ref!) | "Variant Type" | +| `HideMinorEntry` | 0 = show as minor entry (default on create) | "Show Minor Entry" (inverted) | +| `Summary` | Per-ref note | "Comment" | +| `PrimaryLexemesRS` | **Unused** for variants (complex-forms only) | — | + +Key liblcm business rules (`SIL.LCModel/DomainImpl/OverridesLing_Lex.cs`): + +- `LexEntry.MakeVariantOf` creates the ref with `HideMinorEntry = 0` and defaults the type + to *Unspecified Variant* when none is given. +- A `LexEntryRef` is deleted when its `ComponentLexemesRS` becomes empty (merge/cleanup paths). +- An entry can own **multiple** variant refs (e.g. variant of two entries with different + types); back-refs (`VariantFormEntryBackRefs`, also on senses) are computed. +- Variant entries **may have senses** (no model restriction). An entry created *as* a variant + has none; an entry converted to a variant keeps its senses (FLEx course A7: *pagaye* vs + *placoter*). + +The variant-types list is **hierarchical**: *Irregularly Inflected Form* (a `LexEntryInflType`) +has child types *Plural* and *Past*. `LexEntryInflType` extends `LexEntryType` with +`GlossPrepend/GlossAppend/InflFeatsOA/SlotsRC` (not modeled in v1). Well-known GUIDs: +Unspecified `3942addb…`, Dialectal `024b62c9…`, Free `4343b1ef…`, Spelling `0c4663b3…`, +Irregularly Inflected Form `01d4fbc1…`, Plural `a32f1d1c…`, Past `837ebe72…`. + +## Design: one link = one LexEntryRef (per-link types) + +**FLEx compatibility is the top priority** (Tim, design review): we don't have to model every +field, but what we model must round-trip losslessly. Variant Type / Show Minor Entry / +Comment are **per relationship** in FLEx (they live on the `LexEntryRef`), so the MiniLcm +link carries them — unlike complex forms, which flatten types to entry level. + +```csharp +public record Variant : IObjectWithId +{ + Guid Id; // synthetic in CRDT; unset when read from FwData (sync keys on the composite below) + Guid VariantEntryId; // the variant (minor) entry — owns the LexEntryRef in FW + string? VariantHeadword; // derived cache, like ComplexFormComponent headwords + Guid MainEntryId; // the entry this is a variant of (LCM: ComponentLexemes) + Guid? MainSenseId; // …or a specific sense of it + string? MainHeadword; // derived cache + List Types; // LexEntryRef.VariantEntryTypesRS + bool HideMinorEntry; // LexEntryRef.HideMinorEntry != 0 (LCM polarity kept; UI shows "Show minor entry" inverted) + RichMultiString? Comment; // LexEntryRef.Summary (FLEx UI labels it "Comment") — check actual MultiString kind at impl time + DateTimeOffset? DeletedAt; +} +``` + +- **`Entry.Variants: List`** — links where this entry (or one of its senses) is the + main. Matches the FLEx "Variants" section on a main entry. +- **`Entry.VariantOf: List`** — links where this entry is the variant. Matches the + FLEx "Variant of" field on a minor entry. +- **`VariantType`**: `Id`, `Name`, `DeletedAt` — same shape as `ComplexFormType`, a + first-class CRDT object with its own sync. +- Sync key: **composite `(VariantEntryId, MainEntryId, MainSenseId)`**, never `Id` + (FW-side links are keyed by the ref they live in; ids don't line up across sides — + same rule as `ComplexFormComponent`). + +### Decisions (and the reasoning) + +1. **Per-link model, not complex-form parity flattening** (Tim confirmed). One `Variant` = + one `LexEntryRef` with exactly one target. Reading a multi-target ref (model-legal, rare, + not creatable in FLEx UI) yields one link per target sharing the ref's types/fields; + writing back would split into per-link refs. Two refs to the *same* target collapse to + one link (composite-key dedupe, first ref wins) — documented edge, mirrors complex forms. +2. **Naming leans FLEx-user-facing, not LCM-internal** (Tim: "Component = the main entry" is + unintuitive, even though liblcm's `ComponentLexemesRS` is exactly that). Hence + `MainEntryId`/`MainSenseId`, record name `Variant`, entry fields `Variants`/`VariantOf`. + `Comment` (FLEx label) maps to LCM `Summary`; precedent: MiniLcm `Entry.Note` ↔ LCM + `LexEntry.Comment`. `HideMinorEntry` keeps LCM's name *and polarity* so bridge code never + flips signs; the UI can present "Show minor entry". +3. **`HideMinorEntry` + `Comment` are modeled and synced in v1, UI deferred** (Tim). Cheap on + the link entity, avoids a second migration + sync fanout later, and deleting/recreating a + link in FWL can never silently drop FLEx data. +4. **Variant types are read *flattened*** (`GetVariantTypes` must be changed — it exists today + reading only top-level `PossibilitiesOS`): the IIF subtypes (*Plural*, *Past*) are children + in the list and are what IIF-heavy projects assign. Creating a type missing on the other + side creates a **plain top-level `LexEntryType`** — standard types exist everywhere + (well-known GUIDs), so this is rare; hierarchy and `LexEntryInflType` payloads don't + round-trip in v1. +5. **Link edits are allowed** (unlike complex forms' "delete and recreate"): type add/remove + are dedicated CRDT changes on the link (`AddVariantTypeChange`/`RemoveVariantTypeChange`, + `EditChange`); `HideMinorEntry`/`Comment` sync via `JsonPatchChange`. + This is what makes concurrent type edits merge instead of last-writer-wins. +6. **No ordering.** Variant lists have no user-meaningful order in FLEx; both directions diff + as sets. No `IOrderable`, no `SetOrderChange`, no Move API. +7. **Cycle/duplicate guard mirrors `AddEntryComponentChange`** — lives in the *change class* + (soft-deletes instead of throwing, because sync must tolerate incoming duplicates); + validator only rejects self-reference cheaply. Don't duplicate the BFS in validators. +8. **Deleted `VariantType` cleanup**: `Variant.GetReferences()` includes its `Types` ids, and + `RemoveReference` removes the type from the list (only endpoint ids soft-delete the link). + Better than the complex-forms quirk where deleted types linger in `Entry.ComplexFormTypes`. +9. **Variant entries with no senses are first-class** and must be covered by tests both ways + (headline behavioral difference; FLEx "Insert Variant" creates sense-less entries). +10. **A variant can target a sense** (`MainSenseId`); on the main side such links still + surface under the owning entry's `Variants`. +11. **Minor-entry visibility in FWL UI** (step 3): users must be able to see at a glance that + an entry is a variant, not a first-class entry (badge / "Variant of X" in the editor; + list styling is a follow-up). + +### FwData bridge mapping + +Read (`FwDataMiniLcmApi.FromLexEntry`): +- `VariantOf` ← each `entry.VariantEntryRefs` ref × each `ComponentLexemesRS` target + (`ILexEntry`/`ILexSense`), `DistinctBy` composite key; per-link `Types`/`HideMinorEntry`/ + `Comment` from the ref. +- `Variants` ← back-refs: `entry.VariantFormEntryBackRefs` + per-sense back-refs (verify + exact liblcm property names at impl time), mapped the same way. +- `GetVariantTypes()` ← `LexDb.VariantEntryTypesOA` **flattened** (decision 4). + +Write: +- `CreateVariant` → **new** `LexEntryRef` on the variant entry (`RefType = krtVariant`), + `HideMinorEntry`/`Summary`/types from the link, add the single target. Idempotent when the + composite already exists. +- `DeleteVariant` → find the ref holding the target; remove the target; delete the ref when + its components empty (liblcm's own cleanup semantics). +- `AddVariantType`/`RemoveVariantType` (link-locator + type id) → that ref's + `VariantEntryTypesRS`. +- `SubmitUpdateVariant` (scalars) → proxy over the ref (`UpdateComplexFormTypeProxy` pattern). +- Type CRUD → possibility list (create = plain top-level `LexEntryType`). + +### CRDT side + +- `Variant` table (`Variants`): FK cascades — Entry×2 (`VariantEntryId`, `MainEntryId`), + Sense (`MainSenseId`); filtered unique indexes on the composite (sense null / not null), + mirroring `ComplexFormComponents`; `Types` jsonb; `Comment` jsonb. +- `VariantType` snapshot table (mirror `ComplexFormType`). +- linq2db headword expressions for `VariantHeadword`/`MainHeadword` (mirror the + `ComplexFormComponent` `IsExpression` mappings in `ConfigureDbOptions`), plus `Finalize` + sorting for deterministic list order. +- EF migration `AddVariants`. +- Changes (register in `LcmCrdtKernel.ConfigureCrdt` **and** add instances to + `UseChangesTests.GetAllChanges()` — kernel comment mandates it): + `AddVariantChange` (create; carries types+scalars; dedupe/cycle/deleted-ref handling + mirroring `AddEntryComponentChange`), `SetVariantChange` (mirror + `SetComplexFormComponentChange`; needs a hand-written generator branch in + `ChangeSerializationTests.GeneratedChangesForType` — protected ctor), + `AddVariantTypeChange`/`RemoveVariantTypeChange` (`EditChange`), + `CreateVariantType`, `JsonPatchChange`, `JsonPatchChange`, + `DeleteChange`, `DeleteChange`. + Check `ConfigRegistrationTests.AllChangesAreRegistered` exclusion list (it force-crosses + generic changes with all object types). + +### API surface (both implementations + wrappers) + +Read: `GetVariantTypes()`, `GetVariantType(Guid)`. +Write: `CreateVariantType`, `UpdateVariantType` ×2, `DeleteVariantType`, +`CreateVariant(variant)`, `DeleteVariant(variant)`, `UpdateVariant(before, after)`, +`AddVariantType(variant, typeId)`, `RemoveVariantType(variant, typeId)` — link-locator +arguments resolve by composite key on both sides. +Submit (sync, result-less): `SubmitCreateVariant`, `SubmitUpdateVariant(variant, patch)`, +`SubmitUpdateVariantType`. + +Fanout sites that must stay in lockstep: +- `CrdtMiniLcmApi`, `FwDataMiniLcmApi` (manual implementations) +- `DryRunMiniLcmApi` (manual write methods; reads auto-forward) +- `MiniLcmApiWriteNormalizationWrapper` (manual write methods) +- `MiniLcmApiValidationWrapper` — **explicit** additions or the new writes silently skip + validation (BeaKona auto-forwards; the CreateEntry gap #2362 is the cautionary tale) +- `ResumableImportApi` — cache `CreateVariantType` like `CreateComplexFormType` (step 2) +- `MiniLcmApiNotifyWrapper` (FwLiteShared) — notify on variant writes for UI refresh +- `MiniLcmJsInvokable`, `InMemoryDemoApi`, generated TS types (step 3) + +### Sync design (step 2) + +- `VariantTypeSync` (mirror `ComplexFormTypeSync`); runs in `SyncInternal` next to + `ComplexFormTypeSync`, before entries. +- `VariantSync` (per-link): types diff via `Add/RemoveVariantType`; `HideMinorEntry`/`Comment` + via `SubmitUpdateVariant` patch. Used by EntrySync diff Replace and `UpdateVariant`. +- `VariantOf`/`Variants` link diffs join **phase 2** (`SyncComplexFormsAndComponents`, both + directions — a one-direction wiring won't reconcile deletes). Phase/option names stay + as-is in these PRs (`…ComplexFormsAndComponents` now covers variants too; renaming is a + separate no-behavior PR — reviewer advice, keeps the critical diff small). +- `CreateEntryOptions.IncludeComplexFormsAndComponents` also gates variant links (doc + comment updated; entry-to-entry refs need both endpoints to exist). +- `ProjectSnapshot` gains `VariantTypes` — update **`TakeProjectSnapshot()`** + (`MiniLcmApiExtensions`) and `ProjectSnapshot.Empty`, or it compiles-but-snapshots-empty + (landmine #1912-class). +- `ProjectImporter`/`MiniLcmImport`: explicit `VariantType` creation loop (same slot as + complex-form types, before entries) — import is a separate code path from sync. +- `ResumableImportApi`: cache `CreateVariantType`. +- Legacy snapshots need **no** MorphTypes-style patch: CRDT genuinely has no variants yet, so + the first sync after upgrade imports FwData variants into the CRDT (dedicated upgrade test: + snapshot without variants + FwData with variants → added to CRDT, nothing deleted from + FwData). +- **Verified files must be regenerated regardless of Sena3 content**: entry shape changes + break `ProjectSnapshotSerializationTests.LatestSena3SnapshotRoundTrips` (+ the dated + `Snapshots/` files) and possibly `LiveSena3Sync`'s `sena-3-live.verified.sqlite` / + `CrdtChanges == 0` assertion (Sena 3 contains variants → first sync after upgrade + produces changes). Regenerate + eyeball, don't hand-edit. +- `EntryFakerHelper`/AutoFaker: `CanSyncRandomEntries` will start generating variant links — + extend `PrepareToCreateEntry` to create referenced variant entries/types (mirror the + `createComponents` flag) and extend `SyncTests.SyncExclusions` for the derived + `VariantHeadword`/`MainHeadword` caches. + +### Rollout / compatibility notes + +- Same story as every previous model addition (MorphTypes, Publications): the lexbox server + stores change JSON opaquely, but **old FwLite clients cannot deserialize a new change + type** — they break only when someone actually uses variants in a synced project, and + auto-update closes the window. No extra gating exists or is added (precedent). +- FwHeadless consumes the same sync libraries; it must be deployed with/before a client + release that writes variant changes. + +### Test plan + +Mirror the *named* complex-forms cases (test-auditor sweep), not just categories: + +- `MiniLcm.Tests/VariantTestsBase` (subclassed by LcmCrdt.Tests + FwDataMiniLcmBridge.Tests): + create/delete; headwords update when referenced entries change; replaying returned object + is idempotent; same-link-again does nothing (null and non-null sense); changing a property + and creating again creates both; multi-layer cycle guards (1/2/3 levels) + works when a + would-be-cycle member was deleted; **variant entry without senses; variant-of-a-sense; + entry that is both a variant and a component; per-link types round-trip; type add/remove; + HideMinorEntry/Comment round-trip**. +- `LcmCrdt.Tests/Changes/VariantTests` (mirror `ComplexFormTests`: add/remove type, add + link, delete link, duplicate links are soft-deleted) + `UseChangesTests.GetAllChanges()` + entries + `ChangeSerializationTests` generator branch + regression-data regen. +- Validator tests (self-reference, empty refs, wrong-direction ids, nested type validation). +- `FwLiteProjectSync.Tests`: EntrySync diff tests; round-trip create/edit/delete both + directions (two named delete-cascade tests: delete main entry vs delete variant entry); + link-target deleted between syncs (delete-vs-edit race); sense-targeted link when the + sense moves entries; new link referencing a new sense; sense-less variant round-trip; + legacy-snapshot upgrade; flattened-type read + create-missing-type-lands-top-level + (FwData bridge); Sena3 + verified files regen. +- Playwright (step 3): add/remove a variant link + type via the demo project. + +## Stacked PR plan + +1. **`feat/variants-model`** — models, validators, API surface, CRDT entities + changes + + migration, FwData bridge read/write, SyncHelpers (`VariantTypeSync`, `VariantSync`, + EntrySync diffs — they also power `UpdateEntry(before, after)`), conformance tests. + Green standalone; project-sync orchestration doesn't move variants yet. +2. **`feat/variants-sync`** — `CrdtFwdataProjectSyncService` + `ProjectSnapshot.VariantTypes` + + `TakeProjectSnapshot`, `ProjectImporter`/`MiniLcmImport`/`ResumableImportApi`, + round-trip + upgrade tests, verified-file regens (incl. Sena3). +3. **`feat/variants-ui`** — `MiniLcmJsInvokable` + `MiniLcmApiNotifyWrapper` hooks, + regenerated dotnet-types, entity-config + view-data fields (`variantOf`, `variants` — + decide `show` defaults: mirror complexForms=true; variant-type picker inside the link + rows), `VariantOf.svelte`/`Variants.svelte` (reuse `EntryOrSensePicker` + + `EntryOrSenseItemList`, **both non-orderable**, `pt()` dual labels for FW-Classic view, + disable self/duplicates but allow cross-type overlap with components), variant badge for + minor entries (decision 11), demo data seeded with a variant pair + real (not stub) + `InMemoryDemoApi` support for the paths the UI uses, i18n extraction **with context + comments**, Playwright test. + +## Open questions / follow-ups (not blockers) + +- Dictionary preview (`DictionaryEntry.svelte`) shows neither complex forms nor variants; + "variant of X" there is a follow-up. +- `LexEntryInflType` extras (GlossPrepend/Append, InflFeats, Slots), type hierarchy + round-trip — future work. +- Entry-list styling of minor entries (beyond the editor badge) — follow-up. +- FLEx "Insert Variant" convenience (create variant entry + link in one step) in the + new-entry dialog — follow-up UX; v1 links existing entries. +- `HideMinorEntry` is modeled as bool; LCM docs hint the int may become per-publication bit + flags someday — revisit if FLEx ever uses values other than 0/1. diff --git a/backend/LfClassicData/LfClassicMiniLcmApi.cs b/backend/LfClassicData/LfClassicMiniLcmApi.cs index a9352a0e0d..284846fd09 100644 --- a/backend/LfClassicData/LfClassicMiniLcmApi.cs +++ b/backend/LfClassicData/LfClassicMiniLcmApi.cs @@ -26,6 +26,16 @@ public IAsyncEnumerable GetComplexFormTypes() return Task.FromResult(null); } + public IAsyncEnumerable GetVariantTypes() + { + return AsyncEnumerable.Empty(); + } + + public Task GetVariantType(Guid id) + { + return Task.FromResult(null); + } + public IAsyncEnumerable GetMorphTypes() { return AsyncEnumerable.Empty(); diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts index eaf8d5ecb1..fa1724839d 100644 --- a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IEntry.ts @@ -10,6 +10,7 @@ import type {MorphTypeKind} from './MorphTypeKind'; import type {ISense} from './ISense'; import type {IComplexFormComponent} from './IComplexFormComponent'; import type {IComplexFormType} from './IComplexFormType'; +import type {IVariant} from './IVariant'; import type {IPublication} from './IPublication'; export interface IEntry extends IObjectWithId @@ -26,6 +27,8 @@ export interface IEntry extends IObjectWithId components: IComplexFormComponent[]; complexForms: IComplexFormComponent[]; complexFormTypes: IComplexFormType[]; + variantOf: IVariant[]; + variants: IVariant[]; publishIn: IPublication[]; } /* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariant.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariant.ts new file mode 100644 index 0000000000..ddbd970889 --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariant.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +import type {IObjectWithId} from './IObjectWithId'; +import type {IVariantType} from './IVariantType'; +import type {IRichMultiString} from '$lib/dotnet-types/i-multi-string'; + +export interface IVariant extends IObjectWithId +{ + deletedAt?: string; + variantEntryId: string; + variantHeadword?: string; + mainEntryId: string; + mainSenseId?: string; + mainHeadword?: string; + types: IVariantType[]; + hideMinorEntry: boolean; + comment: IRichMultiString; +} +/* eslint-enable */ diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariantType.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariantType.ts new file mode 100644 index 0000000000..9eafe80d30 --- /dev/null +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/MiniLcm/Models/IVariantType.ts @@ -0,0 +1,15 @@ +/* eslint-disable */ +// This code was generated by a Reinforced.Typings tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. + +import type {IObjectWithId} from './IObjectWithId'; +import type {IMultiString} from '$lib/dotnet-types/i-multi-string'; + +export interface IVariantType extends IObjectWithId +{ + id: string; + name: IMultiString; + deletedAt?: string; +} +/* eslint-enable */ From 6b8ed362795d4b07abbdcc623271914b67859c90 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 13:56:42 +0200 Subject: [PATCH 02/10] Wire variants into sync orchestration, import and tests Conformance suites for both IMiniLcmApi implementations, change/usage/serialization tests, verified-file regens, AutoFaker support. LCM enforces acyclicity over the combined complex-form + variant graph, so AddVariantChange mirrors that check. Co-Authored-By: Claude Fable 5 --- .../MiniLcmTests/VariantTests.cs | 122 + .../Api/FwDataMiniLcmApi.cs | 14 +- .../FwLiteProjectSync.Tests/SyncTests.cs | 7 +- .../CrdtFwdataProjectSyncService.cs | 6 + .../Import/ResumableImportApi.cs | 4 + .../Changes/VariantChangeTests.cs | 193 ++ .../LcmCrdt.Tests/Data/MigrationTests.cs | 3 + ...ScriptedDb.v1.ProjectSnapshot.verified.txt | 3 + ...s_FromScriptedDb.v1.Snapshots.verified.txt | 2 + ...ScriptedDb.v2.ProjectSnapshot.verified.txt | 9 + ...s_FromScriptedDb.v2.Snapshots.verified.txt | 18 + ...lizationRegressionData.latest.verified.txt | 2800 ++++++++++++++++- ...lizationRegressionData.legacy.verified.txt | 848 +++++ ...erMigrationFromScriptedDb.v1.verified.json | 2 + ...erMigrationFromScriptedDb.v2.verified.json | 8 + ...pshotTests.VerifyChangeModels.verified.txt | 32 + ...elSnapshotTests.VerifyDbModel.verified.txt | 66 + ...sts.VerifyIObjectWithIdModels.verified.txt | 8 + .../MiniLcmTests/VariantTests.cs | 55 + .../SnapshotAtCommitServiceTests.cs | 1 + .../Changes/Entries/AddVariantChange.cs | 48 +- .../AutoFakerHelpers/EntryFakerHelper.cs | 64 +- .../Validators/VariantTypeValidationTests.cs | 44 + .../Validators/VariantValidationTests.cs | 64 + .../FwLite/MiniLcm.Tests/VariantTestsBase.cs | 381 +++ .../FwLite/MiniLcm/Import/ProjectImporter.cs | 13 +- .../FwLite/MiniLcm/MiniLcmApiExtensions.cs | 1 + backend/FwLite/MiniLcm/ProjectSnapshot.cs | 6 +- .../MiniLcm/Validators/VariantValidator.cs | 5 + backend/FwLite/VARIANTS.md | 22 +- 30 files changed, 4647 insertions(+), 202 deletions(-) create mode 100644 backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs create mode 100644 backend/FwLite/LcmCrdt.Tests/Changes/VariantChangeTests.cs create mode 100644 backend/FwLite/LcmCrdt.Tests/MiniLcmTests/VariantTests.cs create mode 100644 backend/FwLite/MiniLcm.Tests/Validators/VariantTypeValidationTests.cs create mode 100644 backend/FwLite/MiniLcm.Tests/Validators/VariantValidationTests.cs create mode 100644 backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs diff --git a/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs b/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs new file mode 100644 index 0000000000..302805aeb6 --- /dev/null +++ b/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs @@ -0,0 +1,122 @@ +using FwDataMiniLcmBridge.Api; +using FwDataMiniLcmBridge.LcmUtils; +using FwDataMiniLcmBridge.Tests.Fixtures; +using MiniLcm.Models; +using SIL.LCModel; + +namespace FwDataMiniLcmBridge.Tests.MiniLcmTests; + +[Collection(ProjectLoaderFixture.Name)] +public class VariantTests(ProjectLoaderFixture fixture) : VariantTestsBase +{ + protected override Task NewApi() + { + return Task.FromResult(fixture.NewProjectApi("variant-test", "en", "en")); + } + + [Fact] + public async Task GetVariantTypes_IncludesIrregularlyInflectedFormSubtypes() + { + // Plural and Past are children of Irregularly Inflected Form in the possibility + // list; the flattened read must surface them (they're the headline use case) + var types = await Api.GetVariantTypes().ToArrayAsync(); + types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypPluralVar); + types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypPastVar); + types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypSpellingVar); + } +} + +/// +/// tests the per-link fidelity when FwData has multiple variant LexEntryRefs on one entry +/// +[Collection(ProjectLoaderFixture.Name)] +public class VariantTestsMultipleRefs(ProjectLoaderFixture fixture) : VariantTestsBase +{ + protected override Task NewApi() + { + return Task.FromResult(fixture.NewProjectApi("variant-test-multipleRefs", "en", "en")); + } + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + var fwDataApi = (FwDataMiniLcmApi)BaseApi; + var variantEntry = fwDataApi.EntriesRepository.GetObject(_variantEntryId); + await fwDataApi.Cache.DoUsingNewOrCurrentUOW("Add dangling variant LexEntryRefs", + "Remove dangling variant LexEntryRefs", + () => + { + //FLEx data can contain variant refs with no components; they must not confuse reads or writes + foreach (var _ in Enumerable.Range(0, 2)) + { + var entryRef = fwDataApi.Cache.ServiceLocator.GetInstance().Create(); + variantEntry.EntryRefsOS.Add(entryRef); + entryRef.RefType = LexEntryRefTags.krtVariant; + } + return ValueTask.CompletedTask; + }); + } + + [Fact] + public async Task VariantRefsWithDifferentTypes_ReadAsSeparateLinksWithOwnTypes() + { + var otherMainEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "other main" } } + }); + var typeA = await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "type a" } } }); + var typeB = await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "type b" } } }); + + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [typeA] }); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, otherMainEntry) with { Types = [typeB] }); + + var entry = await Api.GetEntry(_variantEntryId); + entry!.VariantOf.Should().HaveCount(2); + entry.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId) + .Which.Types.Should().ContainSingle(t => t.Id == typeA.Id); + entry.VariantOf.Should().ContainSingle(v => v.MainEntryId == otherMainEntry.Id) + .Which.Types.Should().ContainSingle(t => t.Id == typeB.Id); + } + + [Fact] + public async Task DuplicateVariantRefs_AreNotDuplicated() + { + await AddDuplicateVariantRef(); + + var entry = await Api.GetEntry(_variantEntryId); + entry.Should().NotBeNull(); + entry!.VariantOf.Should().HaveCount(1); + var mainEntry = await Api.GetEntry(_mainEntryId); + mainEntry.Should().NotBeNull(); + mainEntry!.Variants.Should().HaveCount(1); + } + + [Fact] + public async Task DuplicateVariantRefs_BothAreRemoved() + { + await AddDuplicateVariantRef(); + + var entry = await Api.GetEntry(_variantEntryId); + await Api.DeleteVariant(entry!.VariantOf.Single()); + + entry = await Api.GetEntry(_variantEntryId); + entry.Should().NotBeNull(); + entry!.VariantOf.Should().BeEmpty(); + } + + private async Task AddDuplicateVariantRef() + { + var fwDataApi = (FwDataMiniLcmApi)BaseApi; + var variantEntry = fwDataApi.EntriesRepository.GetObject(_variantEntryId); + var mainEntry = fwDataApi.EntriesRepository.GetObject(_mainEntryId); + await fwDataApi.Cache.DoUsingNewOrCurrentUOW("Add variant LexEntryRefs", + "Remove variant LexEntryRefs", + () => + { + variantEntry.MakeVariantOf(mainEntry, fwDataApi.VariantTypesFlattened.First()); + variantEntry.MakeVariantOf(mainEntry, fwDataApi.VariantTypesFlattened.Last()); + return ValueTask.CompletedTask; + }); + } +} diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs index 6bd396bf82..577190511c 100644 --- a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs @@ -799,12 +799,14 @@ private IEnumerable ToVariantOf(ILexEntry entry) private IEnumerable ToVariants(ILexEntry entry) { - return - [ - ..entry.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, null)), - ..entry.AllSenses.SelectMany(sense => - sense.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, sense))) - ]; + return new[] + { + entry.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, null)), + entry.AllSenses.SelectMany(sense => + sense.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, sense))) + } + .SelectMany(v => v) + .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)); } private Variant ToVariant(ILexEntry variantEntry, ILexEntryRef variantRef, ILexEntry mainEntry, ILexSense? mainSense) diff --git a/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs index 3f313a5b0f..1abc4ba73c 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/SyncTests.cs @@ -92,14 +92,16 @@ internal static EquivalencyOptions SyncExclusions(EquivalencyOptions e.Components).Exclude(c => c.Id) .For(e => e.Components).Exclude(c => c.Order) .For(e => e.ComplexForms).Exclude(c => c.Id) - .For(e => e.ComplexForms).Exclude(c => c.Order); + .For(e => e.ComplexForms).Exclude(c => c.Order) + .For(e => e.VariantOf).Exclude(v => v.Id) + .For(e => e.Variants).Exclude(v => v.Id); return options; } internal static void AssertSnapshotsAreEquivalent(ProjectSnapshot expected, ProjectSnapshot actual) { var excludeOrderTypes = new[] { typeof(Sense), typeof(ExampleSentence), typeof(Picture), typeof(ComplexFormComponent), typeof(WritingSystem) }; - var excludeIds = new[] { typeof(ComplexFormComponent), typeof(WritingSystem) }; + var excludeIds = new[] { typeof(ComplexFormComponent), typeof(Variant), typeof(WritingSystem) }; actual.Should().BeEquivalentTo(expected, options => options @@ -109,6 +111,7 @@ internal static void AssertSnapshotsAreEquivalent(ProjectSnapshot expected, Proj .WithoutStrictOrderingFor(x => x.SemanticDomains) .WithoutStrictOrderingFor(x => x.ComplexFormTypes) .WithoutStrictOrderingFor(x => x.MorphTypes) + .WithoutStrictOrderingFor(x => x.VariantTypes) //when excluding properties consider https://github.com/sillsdev/languageforge-lexbox/issues/1912 .Using(Exclude) .When(info => info.RuntimeType == typeof(double) && info.Path.EndsWith(".Order") && excludeOrderTypes.Contains(info.ParentType)) diff --git a/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs b/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs index 588803caba..63fea51dde 100644 --- a/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs +++ b/backend/FwLite/FwLiteProjectSync/CrdtFwdataProjectSyncService.cs @@ -134,6 +134,12 @@ private async Task SyncInternal(IMiniLcmApi crdtApi, IMiniLcmApi fwd crdtChanges += await ComplexFormTypeSync.Sync(projectSnapshot.ComplexFormTypes, currentFwDataComplexFormTypes, crdtApi); fwdataChanges += await ComplexFormTypeSync.Sync(currentFwDataComplexFormTypes, await crdtApi.GetComplexFormTypes().ToArrayAsync(), fwdataApi); + var currentFwDataVariantTypes = await fwdataApi.GetVariantTypes().ToArrayAsync(); + // Legacy snapshots predate variant support and deserialize with an empty list; the CRDT + // genuinely has no variant types yet, so that baseline correctly imports FwData's list. + crdtChanges += await VariantTypeSync.Sync(projectSnapshot.VariantTypes, currentFwDataVariantTypes, crdtApi); + fwdataChanges += await VariantTypeSync.Sync(currentFwDataVariantTypes, await crdtApi.GetVariantTypes().ToArrayAsync(), fwdataApi); + var currentFwDataMorphTypes = await fwdataApi.GetMorphTypes().ToArrayAsync(); crdtChanges += await MorphTypeSync.Sync(projectSnapshot.MorphTypes, currentFwDataMorphTypes, crdtApi); fwdataChanges += await MorphTypeSync.Sync(currentFwDataMorphTypes, await crdtApi.GetMorphTypes().ToArrayAsync(), fwdataApi); diff --git a/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs b/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs index 942b81f900..159c6de0dd 100644 --- a/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs +++ b/backend/FwLite/FwLiteProjectSync/Import/ResumableImportApi.cs @@ -58,6 +58,10 @@ async Task IMiniLcmWriteApi.CreateComplexFormType(ComplexFormTy { return await HasCreated(complexFormType, _api.GetComplexFormTypes(), () => _api.CreateComplexFormType(complexFormType)); } + async Task IMiniLcmWriteApi.CreateVariantType(VariantType variantType) + { + return await HasCreated(variantType, _api.GetVariantTypes(), () => _api.CreateVariantType(variantType)); + } async Task IMiniLcmWriteApi.CreateSemanticDomain(SemanticDomain semanticDomain) { return await HasCreated(semanticDomain, _api.GetSemanticDomains(), () => _api.CreateSemanticDomain(semanticDomain)); diff --git a/backend/FwLite/LcmCrdt.Tests/Changes/VariantChangeTests.cs b/backend/FwLite/LcmCrdt.Tests/Changes/VariantChangeTests.cs new file mode 100644 index 0000000000..1f34c53ad2 --- /dev/null +++ b/backend/FwLite/LcmCrdt.Tests/Changes/VariantChangeTests.cs @@ -0,0 +1,193 @@ +using LcmCrdt.Changes.Entries; +using MiniLcm.Models; +using SIL.Harmony.Changes; + +namespace LcmCrdt.Tests.Changes; + +public class VariantChangeTests(MiniLcmApiFixture fixture) : IClassFixture +{ + private async Task<(Entry variantEntry, Entry mainEntry)> CreateEntryPair() + { + var variantEntry = await fixture.Api.CreateEntry(new() { LexemeForm = { { "en", "colour" } }, }); + var mainEntry = await fixture.Api.CreateEntry(new() { LexemeForm = { { "en", "color" } }, }); + return (variantEntry, mainEntry); + } + + [Fact] + public async Task AddVariant() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + var updatedVariantEntry = await fixture.Api.GetEntry(variantEntry.Id); + updatedVariantEntry.Should().NotBeNull(); + updatedVariantEntry!.VariantOf.Should().ContainSingle(v => v.MainEntryId == mainEntry.Id); + + var updatedMainEntry = await fixture.Api.GetEntry(mainEntry.Id); + updatedMainEntry.Should().NotBeNull(); + updatedMainEntry!.Variants.Should().ContainSingle(v => v.VariantEntryId == variantEntry.Id); + } + + [Fact] + public async Task AddVariant_CarriesTypesAndScalars() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "spelling" } } }); + + var variant = Variant.FromEntries(variantEntry, mainEntry) with + { + Types = [variantType], + HideMinorEntry = true, + Comment = new() { { "en", new RichString("british spelling") } }, + }; + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(variant)); + + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == variantType.Id); + link.HideMinorEntry.Should().BeTrue(); + link.Comment["en"].GetPlainText().Should().Be("british spelling"); + } + + [Fact] + public async Task AddVariant_SkipsDeletedTypes() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "doomed" } } }); + await fixture.Api.DeleteVariantType(variantType.Id); + + var variant = Variant.FromEntries(variantEntry, mainEntry) with { Types = [variantType] }; + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(variant)); + + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task DeleteVariant() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(link.Id)); + (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().BeEmpty(); + (await fixture.Api.GetEntry(mainEntry.Id))!.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task DuplicateVariantsAreDeleted() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + + var updatedVariantEntry = await fixture.Api.GetEntry(variantEntry.Id); + updatedVariantEntry.Should().NotBeNull(); + updatedVariantEntry!.VariantOf.Should().ContainSingle(v => v.MainEntryId == mainEntry.Id); + + var updatedMainEntry = await fixture.Api.GetEntry(mainEntry.Id); + updatedMainEntry.Should().NotBeNull(); + updatedMainEntry!.Variants.Should().ContainSingle(v => v.VariantEntryId == variantEntry.Id); + } + + [Fact] + public async Task SelfReferenceVariantIsDeleted() + { + var (variantEntry, _) = await CreateEntryPair(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), + new AddVariantChange(new Variant { Id = Guid.NewGuid(), VariantEntryId = variantEntry.Id, MainEntryId = variantEntry.Id })); + + var updated = await fixture.Api.GetEntry(variantEntry.Id); + updated.Should().NotBeNull(); + updated!.VariantOf.Should().BeEmpty(); + updated.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task AddVariantType() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + + var change = new AddVariantTypeChange(link.Id, variantType); + await fixture.DataModel.AddChange(Guid.NewGuid(), change); + + link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + link.Types.Should().ContainSingle().Which.Id.Should().Be(variantType.Id); + } + + [Fact] + public async Task RemoveVariantType() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry) with { Types = [variantType] })); + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + link.Types.Should().ContainSingle(); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new RemoveVariantTypeChange(link.Id, variantType.Id)); + + link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Single(); + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingVariantTypeRemovesItFromLinks() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var variantType = await fixture.Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry) with { Types = [variantType] })); + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(variantType.Id)); + + var link = (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().ContainSingle().Subject; + link.DeletedAt.Should().BeNull("deleting a type must not delete the link"); + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingMainEntryDeletesTheLink() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(mainEntry.Id)); + + var updatedVariantEntry = await fixture.Api.GetEntry(variantEntry.Id); + updatedVariantEntry.Should().NotBeNull("only the link dies, not the variant entry"); + updatedVariantEntry!.VariantOf.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingVariantEntryDeletesTheLink() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry))); + + await fixture.DataModel.AddChange(Guid.NewGuid(), new DeleteChange(variantEntry.Id)); + + var updatedMainEntry = await fixture.Api.GetEntry(mainEntry.Id); + updatedMainEntry.Should().NotBeNull("only the link dies, not the main entry"); + updatedMainEntry!.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task DeletingTargetSenseDeletesTheLink() + { + var (variantEntry, mainEntry) = await CreateEntryPair(); + var sense = await fixture.Api.CreateSense(mainEntry.Id, new Sense { Id = Guid.NewGuid(), Gloss = { { "en", "target" } } }); + await fixture.DataModel.AddChange(Guid.NewGuid(), new AddVariantChange(Variant.FromEntries(variantEntry, mainEntry, sense.Id))); + + await fixture.Api.DeleteSense(mainEntry.Id, sense.Id); + + (await fixture.Api.GetEntry(variantEntry.Id))!.VariantOf.Should().BeEmpty(); + (await fixture.Api.GetEntry(mainEntry.Id))!.Variants.Should().BeEmpty(); + } +} diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs index b8c985e6c4..24e979e04f 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests.cs @@ -164,6 +164,9 @@ await api.GetComplexFormTypes() await api.GetMorphTypes() .OrderBy(m => m.Id) .ToArrayAsync(), + await api.GetVariantTypes() + .OrderBy(v => v.Id) + .ToArrayAsync(), await api.GetWritingSystems()); } diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt index 51798c24e9..64a5a30f0b 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt @@ -70,6 +70,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] } ], @@ -166,6 +168,7 @@ } ], "MorphTypes": [], + "VariantTypes": [], "WritingSystems": { "Analysis": [ { diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt index 54ae3b7d2e..90d6a2b57c 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.Snapshots.verified.txt @@ -77,6 +77,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "b802e01f-fac1-42b8-b605-a5bbb7efcdc1", diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt index c25af14c52..493e75ff38 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt @@ -164,6 +164,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, { @@ -248,6 +250,8 @@ ], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, { @@ -320,6 +324,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, { @@ -392,6 +398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] } ], @@ -488,6 +496,7 @@ } ], "MorphTypes": [], + "VariantTypes": [], "WritingSystems": { "Analysis": [ { diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt index fea2fb4e3e..7a8a7c489d 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.Snapshots.verified.txt @@ -107,6 +107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -152,6 +154,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -198,6 +202,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -252,6 +258,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -314,6 +322,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -385,6 +395,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "00edefeb-173e-45cd-836c-eea2ba514429", @@ -429,6 +441,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "75050583-70d7-4605-a6e6-872b8f36c482", @@ -473,6 +487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "9e84db09-1885-4bbb-9482-4891a46f6f49", @@ -517,6 +533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "d9f70cf9-a479-4141-92e5-44155d063da2", diff --git a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt index b7e45c5eb4..a5a070732d 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.latest.verified.txt @@ -88,11 +88,346 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", "DeletedAt": null }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "2e6a7e6c-7abf-cd99-94b0-80c04d315d98", + "DeletedAt": null, + "LexemeForm": { + "xbn": "Direct", + "hla": "Soft" + }, + "CitationForm": { + "mxb": "Money Market Account", + "lkb": "payment" + }, + "LiteralMeaning": { + "ong": { + "Spans": [ + { + "Text": "reciprocal", + "Ws": "ong", + "Tags": [ + "ea0639e3-938a-40fa-b8dd-da4672d64210" + ] + } + ] + }, + "kxu": { + "Spans": [ + { + "Text": "invoice", + "Ws": "kxu", + "Tags": [ + "42b03468-0642-407f-a3d8-eea36bfc95a0" + ] + }, + { + "Text": "Outdoors \u0026 Shoes", + "Ws": "kxu", + "Tags": [ + "3ad34dad-b720-427c-9dd0-6090c5d6a5c6" + ] + }, + { + "Text": "feed", + "Ws": "kxu", + "Tags": [ + "b912d284-481e-48de-a9b4-870a5e285a08" + ] + }, + { + "Text": "SMTP", + "Ws": "kxu", + "Tags": [ + "0d3c4aa2-a3b3-4871-bf66-8406e5e8ec3c" + ] + } + ] + }, + "ihi": { + "Spans": [ + { + "Text": "generate", + "Ws": "wwb", + "Bold": "Off", + "FontSize": 1075171932, + "ForeColor": "#ADFF2F", + "Tags": [ + "422d0492-d48e-0c65-b609-1690caad3603" + ] + }, + { + "Text": "synergistic", + "Ws": "ihi", + "Tags": [ + "dacf7482-f6ec-4ac3-9a30-9c105833df66" + ] + }, + { + "Text": "Computers", + "Ws": "ihi", + "Tags": [ + "41ca560f-1ae7-41d1-a37d-c4faf18b0b58" + ] + } + ] + } + }, + "MorphType": "Simulfix", + "HomographNumber": -1674377933, + "Senses": [], + "Note": { + "xuo": { + "Spans": [ + { + "Text": "Security", + "Ws": "gin", + "Bold": "Off", + "FontSize": 1340465988, + "ForeColor": "#ADFF2F", + "Tags": [ + "5879c653-6e26-d703-ce85-9ca519ef0bcb" + ] + }, + { + "Text": "calculating", + "Ws": "xuo", + "Tags": [ + "072c66e5-b950-45f4-b7e7-b70e4e279ecf" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "3aca6492-07a4-3de2-e2c6-aba408f397bb", + "Name": { + "vmd": "reboot", + "duk": "invoice", + "ium": "Practical Plastic Towels", + "kxr": "withdrawal" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "4c619f87-442f-23b4-2983-41412a7ffe95", + "MaybeId": "4c619f87-442f-23b4-2983-41412a7ffe95", + "DeletedAt": null, + "VariantEntryId": "81176034-5b4d-85c1-2a47-04f8176759bd", + "VariantHeadword": "Wall", + "MainEntryId": "d93de12e-07f9-4f2f-8954-190e2abe06e9", + "MainSenseId": "96e31a4a-bbee-996b-759c-5187b29cfa7f", + "MainHeadword": "Tasty Soft Salad", + "Types": [ + { + "Id": "99ab5593-63d1-ca4f-b979-d5e1af87d1ea", + "Name": { + "mok": "El Salvador", + "trx": "Coordinator", + "duc": "lime", + "xua": "cross-platform" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "gew": { + "Spans": [ + { + "Text": "program", + "Ws": "gew", + "Tags": [ + "cc0c91a9-eea7-4948-8990-cc07a570056d" + ] + }, + { + "Text": "Denmark", + "Ws": "gew", + "Tags": [ + "dc29b510-b94d-4eb6-af91-0903deea2fc6" + ] + }, + { + "Text": "invoice", + "Ws": "gew", + "Tags": [ + "29a99076-1ccb-4b95-9beb-338ad843962f" + ] + } + ] + }, + "nik": { + "Spans": [ + { + "Text": "synthesize", + "Ws": "nik", + "Tags": [ + "6f54f2fd-e638-403d-9735-16257878b92a" + ] + }, + { + "Text": "Multi-lateral", + "Ws": "nik", + "Tags": [ + "4d67e4b7-1604-4262-afd4-af42580aa1b5" + ] + } + ] + }, + "aeq": { + "Spans": [ + { + "Text": "Rustic", + "Ws": "ojp", + "Bold": "Off", + "FontSize": -1057944399, + "ForeColor": "#A52A2A", + "Tags": [ + "e454379a-dbba-1d27-58b0-45d4b40b6742" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "86a01a92-d1aa-d020-4806-f4f7472b56d3", + "MaybeId": "86a01a92-d1aa-d020-4806-f4f7472b56d3", + "DeletedAt": null, + "VariantEntryId": "0a076330-b823-c5f3-092f-7df61125a364", + "VariantHeadword": "Dynamic", + "MainEntryId": "5cc279a5-baa9-1049-c88c-f2bde24e2531", + "MainSenseId": "587131ac-caff-2f98-9279-8fb32b29fed6", + "MainHeadword": "Communications", + "Types": [ + { + "Id": "66c9952f-5b85-39fd-e4f9-cdcc1c69273c", + "Name": { + "nlk": "copy" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "mdp": { + "Spans": [ + { + "Text": "Jewelery", + "Ws": "eri", + "Bold": "On", + "FontSize": -1242542580, + "ForeColor": "#ADFF2F", + "Tags": [ + "89d044a5-c286-2b2b-1682-64d47fc7d4bf" + ] + }, + { + "Text": "methodologies", + "Ws": "aba", + "Bold": "On", + "FontSize": 110774510, + "ForeColor": "#A52A2A", + "Tags": [ + "d744100f-a080-0581-82db-f7d2344df273" + ] + } + ] + }, + "xkg": { + "Spans": [ + { + "Text": "Intelligent Rubber Pizza", + "Ws": "xkg", + "Tags": [ + "c648d2fd-77c1-4a80-90f7-67e4da636439" + ] + } + ] + }, + "cpg": { + "Spans": [ + { + "Text": "calculating", + "Ws": "cpg", + "Tags": [ + "31ebc98f-9179-4edc-9e89-7c4711220151" + ] + } + ] + }, + "ify": { + "Spans": [ + { + "Text": "olive", + "Ws": "ify", + "Tags": [ + "6b281f29-55b9-4f4c-bf31-945fc1f12407" + ] + }, + { + "Text": "Granite", + "Ws": "agz", + "Bold": "On", + "FontSize": -1607886368, + "ForeColor": "#A52A2A", + "Tags": [ + "674f1746-1295-ea46-3a8a-24375fc1dca7" + ] + }, + { + "Text": "Sleek Rubber Hat", + "Ws": "ify", + "Tags": [ + "2b5777aa-eb2a-4291-aef7-bd714ca05900" + ] + }, + { + "Text": "reboot", + "Ws": "nsw", + "Bold": "Invert", + "FontSize": -1160287576, + "ForeColor": "#00FFFF", + "Tags": [ + "e3ad9b6e-8b58-187e-d876-e40a78e36968" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "ee0b6860-87ac-709a-aa8c-0f20b06efa0b", + "DeletedAt": null, + "IsMain": false, + "Name": { + "amf": "Refined" + } + } + ] + }, + "Id": "2e6a7e6c-7abf-cd99-94b0-80c04d315d98", + "DeletedAt": null + }, { "$type": "MiniLcmCrdtAdapter", "Obj": { @@ -187,6 +522,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "ec21b4b7-3861-38d4-bc7b-fe77bd2321c2", @@ -205,184 +542,2061 @@ "$type": "MiniLcmCrdtAdapter", "Obj": { "$type": "Entry", - "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", - "DeletedAt": null, - "LexemeForm": { - "en": "\uD83C\uDF4C", - "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" - }, - "CitationForm": {}, - "LiteralMeaning": { - "en": { - "Spans": [ - { - "Text": "yellow fruit that comes in bunches.", - "Ws": "en" - } - ] - } - }, - "MorphType": "Stem", - "HomographNumber": 0, - "Senses": [], - "Note": { - "en": { - "Spans": [ - { - "Text": "often used in cartoon gags for slipping", - "Ws": "en" - } - ] - } - }, - "Components": [], - "ComplexForms": [], - "ComplexFormTypes": [], - "PublishIn": [] - }, - "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", - "DeletedAt": null - }, - { - "$type": "MiniLcmCrdtAdapter", - "Obj": { - "$type": "Entry", - "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "Id": "a9cd7853-c982-5959-3186-ec248d8d41de", "DeletedAt": null, "LexemeForm": { - "mqs": "maximized" + "cnl": "hard drive", + "all": "Taiwan" }, "CitationForm": { - "nrz": "Portugal" + "pam": "District" }, "LiteralMeaning": { - "juy": { + "ama": { "Spans": [ { - "Text": "Kyat", - "Ws": "juy", + "Text": "Sleek", + "Ws": "bbd", + "Bold": "Invert", + "FontSize": -85638709, + "ForeColor": "#ADFF2F", "Tags": [ - "bc47798c-6e35-430e-a94a-2d1aa82d9119" + "52197334-e928-b0cc-8914-ee3cca6d000e" ] }, { - "Text": "synthesize", - "Ws": "juy", + "Text": "Personal Loan Account", + "Ws": "ama", "Tags": [ - "75fc659a-ae47-45ec-87a8-2475d5667496" + "c6badbfd-0430-4245-b1f3-6dbfc3cf5ced" ] - } - ] - }, - "rer": { + }, + { + "Text": "Wooden", + "Ws": "fgr", + "Bold": "Invert", + "FontSize": -1658278656, + "ForeColor": "#A52A2A", + "Tags": [ + "99c5aa5c-271c-d860-b815-a713850e4403" + ] + } + ] + }, + "jaj": { "Spans": [ { - "Text": "Licensed", - "Ws": "rer", + "Text": "connect", + "Ws": "noi", + "Bold": "Off", + "FontSize": -1470543244, + "ForeColor": "#FF0000", "Tags": [ - "adf734b1-3abb-4644-a5b7-e712c29a59e6" + "87c38be9-027c-83c7-cb99-59210e09f3d8" ] }, { - "Text": "architectures", - "Ws": "dos", + "Text": "streamline", + "Ws": "jaj", + "Tags": [ + "c49682bf-c285-4acf-9a3e-f6cb391b184b" + ] + }, + { + "Text": "Bedfordshire", + "Ws": "xcw", + "Bold": "Invert", + "FontSize": 1053195674, + "ForeColor": "#FF0000", + "Tags": [ + "f0ab79c7-ddff-63a0-1746-2825fd24206e" + ] + } + ] + } + }, + "MorphType": "Suffix", + "HomographNumber": 996368112, + "Senses": [], + "Note": { + "nrb": { + "Spans": [ + { + "Text": "blockchains", + "Ws": "nrb", + "Tags": [ + "b62b9429-69ad-4f80-a66b-b3678383663b" + ] + }, + { + "Text": "Ergonomic Soft Shoes", + "Ws": "jac", "Bold": "On", - "FontSize": -1392951304, + "FontSize": -1052383363, + "ForeColor": "#A52A2A", + "Tags": [ + "a9a9dec9-08cc-2c34-a5ca-cf78d1107839" + ] + }, + { + "Text": "Tasty", + "Ws": "nrb", + "Tags": [ + "462f2665-8c79-4f7f-be99-86a100958929" + ] + }, + { + "Text": "Shoes", + "Ws": "khr", + "Bold": "Invert", + "FontSize": 492536191, "ForeColor": "#ADFF2F", "Tags": [ - "b316a4f4-208a-e75f-13f0-09a91a2b3506" + "27770394-7f08-6701-ac8a-e78f75048a9b" ] } ] }, - "zpa": { + "cky": { "Spans": [ { - "Text": "Concrete", - "Ws": "zpa", + "Text": "Auto Loan Account", + "Ws": "cky", "Tags": [ - "10cb16c2-6f15-4101-8689-7c77e6576f52" + "d864c261-66c8-4887-94ec-32d891358f72" ] }, { - "Text": "Shoals", - "Ws": "cjy", + "Text": "Montana", + "Ws": "cky", + "Tags": [ + "4562dc77-f99d-4de1-b832-cd8473543713" + ] + }, + { + "Text": "optimal", + "Ws": "avt", "Bold": "Invert", - "FontSize": -437265941, + "FontSize": 212594793, + "ForeColor": "#00FFFF", + "Tags": [ + "8bbd2e0e-13a5-b378-3193-a1a9498f4a1d" + ] + } + ] + }, + "aqp": { + "Spans": [ + { + "Text": "cross-platform", + "Ws": "wbq", + "Bold": "On", + "FontSize": -1898908819, "ForeColor": "#ADFF2F", "Tags": [ - "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + "1a98d7cc-742b-9e51-64e8-4849f6811d32" ] } ] } }, - "MorphType": "BoundStem", + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "bfea70b0-ebd5-86d8-ecfc-9ad4facfd9ca", + "Name": { + "aoe": "bypass" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "54c228d3-10b3-20c2-d7e6-38cbb280740c", + "MaybeId": "54c228d3-10b3-20c2-d7e6-38cbb280740c", + "DeletedAt": null, + "VariantEntryId": "d141258e-c100-a4fb-c1cd-63b059ddfb62", + "VariantHeadword": "Corporate", + "MainEntryId": "fc6512ab-e796-7a71-da3d-5c3edb7b3b10", + "MainSenseId": "43bf7d1b-292e-ba0c-9e10-56d4229036af", + "MainHeadword": "Chief", + "Types": [ + { + "Id": "766ce347-e58e-c772-7e7c-ec5332c5b48b", + "Name": { + "bhh": "Avon" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "iry": { + "Spans": [ + { + "Text": "Practical Cotton Pants", + "Ws": "iry", + "Tags": [ + "49a57a3f-8891-49be-8487-9bbd4f399f84" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "5b9c87d1-f228-81fd-e6fc-463b4ed48bb6", + "MaybeId": "5b9c87d1-f228-81fd-e6fc-463b4ed48bb6", + "DeletedAt": null, + "VariantEntryId": "a50a0851-684a-795c-5f22-8275682b0caa", + "VariantHeadword": "Lead", + "MainEntryId": "b26c4da8-08fe-9bf7-5ceb-6538be2ad689", + "MainSenseId": "710bd056-4f07-0627-407d-e744ffb759c3", + "MainHeadword": "Fantastic Fresh Shirt", + "Types": [ + { + "Id": "d5886872-d109-8e7c-21f0-aaac0e8efe15", + "Name": { + "ett": "Berkshire", + "gbn": "Rubber", + "suw": "payment", + "xtu": "paradigm" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "mls": { + "Spans": [ + { + "Text": "architect", + "Ws": "chl", + "Bold": "Off", + "FontSize": 1325800089, + "ForeColor": "#A52A2A", + "Tags": [ + "3ca232e9-ef03-a7c3-d5b1-75f06befc75c" + ] + }, + { + "Text": "Executive", + "Ws": "mls", + "Tags": [ + "b0c2ea57-6dac-4d6e-8146-c5d383587416" + ] + }, + { + "Text": "Unbranded", + "Ws": "mls", + "Tags": [ + "442f2eb4-936b-415b-807b-f0556f2f7ec5" + ] + } + ] + }, + "ibm": { + "Spans": [ + { + "Text": "override", + "Ws": "ibm", + "Tags": [ + "f9d5659d-2e1e-48cf-bee6-0f1453705837" + ] + }, + { + "Text": "Virginia", + "Ws": "ibm", + "Tags": [ + "ef5e05cf-c1ed-4497-a243-ad1e3365c5d1" + ] + } + ] + }, + "wac": { + "Spans": [ + { + "Text": "Avon", + "Ws": "gwa", + "Bold": "Invert", + "FontSize": 279365784, + "ForeColor": "#A52A2A", + "Tags": [ + "770c6ac7-0a37-293a-fcdb-cbd7d402f71b" + ] + }, + { + "Text": "initiatives", + "Ws": "wac", + "Tags": [ + "a99c4e9b-95a0-490d-89c0-13200670d310" + ] + } + ] + }, + "tl": { + "Spans": [ + { + "Text": "back up", + "Ws": "tl", + "Tags": [ + "cad367a0-ba3c-412d-b5aa-19db5f5d7037" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "dc1d47e6-1a02-204d-923f-c8cb761a7e36", + "DeletedAt": null, + "IsMain": false, + "Name": { + "gra": "Tennessee" + } + } + ] + }, + "Id": "a9cd7853-c982-5959-3186-ec248d8d41de", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null, + "LexemeForm": { + "en": "\uD83C\uDF4C", + "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" + }, + "CitationForm": {}, + "LiteralMeaning": { + "en": { + "Spans": [ + { + "Text": "yellow fruit that comes in bunches.", + "Ws": "en" + } + ] + } + }, + "MorphType": "Stem", "HomographNumber": 0, "Senses": [], "Note": { - "rkw": { + "en": { "Spans": [ { - "Text": "XML", - "Ws": "vot", - "Bold": "On", - "FontSize": -1698959192, + "Text": "often used in cartoon gags for slipping", + "Ws": "en" + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "3cdafca5-46e6-60ed-0b8a-e302d40f7ab8", + "DeletedAt": null, + "LexemeForm": { + "pkt": "reboot" + }, + "CitationForm": { + "bqw": "Auto Loan Account", + "myq": "1080p", + "ula": "Director", + "xwg": "Toys \u0026 Kids" + }, + "LiteralMeaning": { + "hav": { + "Spans": [ + { + "Text": "system", + "Ws": "hav", + "Tags": [ + "1d22ad30-96dc-47c3-a7f8-761b3d830b25" + ] + }, + { + "Text": "front-end", + "Ws": "mnw", + "Bold": "Off", + "FontSize": 1230763621, + "ForeColor": "#00000000", + "Tags": [ + "fd1b73bd-ad1b-a20d-c981-905c8823e12c" + ] + }, + { + "Text": "Stream", + "Ws": "bve", + "Bold": "Off", + "FontSize": 621343644, "ForeColor": "#ADFF2F", "Tags": [ - "9218c79b-f453-0ef3-de05-ea5eeba26367" + "aaeeb616-fd0d-f67d-7738-b0d39c4c9512" ] }, { - "Text": "invoice", - "Ws": "rkw", + "Text": "Electronics", + "Ws": "aiy", + "Bold": "Invert", + "FontSize": 39794053, + "ForeColor": "#A52A2A", "Tags": [ - "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + "7e50c044-9786-1e39-a9ac-92d54342ac3e" + ] + } + ] + }, + "dyr": { + "Spans": [ + { + "Text": "extend", + "Ws": "kve", + "Bold": "Invert", + "FontSize": -422062800, + "ForeColor": "#00FFFF", + "Tags": [ + "b6172c2b-3580-8f98-81c5-4789bb11e455" ] }, { - "Text": "bypass", - "Ws": "rkw", + "Text": "synthesizing", + "Ws": "aja", + "Bold": "Invert", + "FontSize": 1174438189, + "ForeColor": "#00000000", "Tags": [ - "e615bb12-61d9-452e-bac5-06deb6942851" + "41548c3d-3532-3798-84aa-9d40adf93824" ] } ] }, - "kee": { + "pea": { "Spans": [ { - "Text": "Money Market Account", - "Ws": "ekp", - "Bold": "On", - "FontSize": -315220510, - "ForeColor": "#A52A2A", + "Text": "back-end", + "Ws": "pea", + "Tags": [ + "3cb309a7-8115-4482-bfdc-ac8f257eb4ad" + ] + } + ] + } + }, + "MorphType": "Particle", + "HomographNumber": -762509614, + "Senses": [], + "Note": { + "mda": { + "Spans": [ + { + "Text": "frictionless", + "Ws": "mda", + "Tags": [ + "2c0851ea-e5be-41d5-b49e-cf8fec10c89c" + ] + }, + { + "Text": "collaborative", + "Ws": "prb", + "Bold": "Off", + "FontSize": -1566428427, + "ForeColor": "#00FFFF", + "Tags": [ + "c1c64703-55b8-e014-a74d-a979ac3d8e02" + ] + }, + { + "Text": "Congo", + "Ws": "mda", + "Tags": [ + "e48be2ae-71b7-45d7-a57f-358267cfff47" + ] + } + ] + }, + "kyx": { + "Spans": [ + { + "Text": "web-enabled", + "Ws": "sgh", + "Bold": "Off", + "FontSize": 1542390070, + "ForeColor": "#00FFFF", + "Tags": [ + "b23f7a6a-1857-cb51-3aa5-6694483629fe" + ] + }, + { + "Text": "back-end", + "Ws": "npl", + "Bold": "On", + "FontSize": -1671856556, + "ForeColor": "#0000FF", + "Tags": [ + "4304b005-673b-15e7-1b73-a16c7e107d62" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "ccfdf2a2-ac60-433a-41ea-22b4ffff2d4b", + "Name": { + "gno": "Massachusetts" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "9db32aab-3ce1-a8e8-3ed9-cf3b240f6968", + "MaybeId": "9db32aab-3ce1-a8e8-3ed9-cf3b240f6968", + "DeletedAt": null, + "VariantEntryId": "6d4179be-9789-faa0-a60d-0124b5e6aedc", + "VariantHeadword": "purple", + "MainEntryId": "36b6909e-b5e9-397d-05d4-1dbae22ec50a", + "MainSenseId": "266fba93-8a74-c0b3-ca71-65164b008f52", + "MainHeadword": "convergence", + "Types": [ + { + "Id": "54162871-9d18-ad79-b155-ce2f98f97265", + "Name": { + "bwh": "back up", + "xba": "reinvent", + "aza": "Mews" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "niz": { + "Spans": [ + { + "Text": "alarm", + "Ws": "niz", + "Tags": [ + "8cf34d1a-b942-4794-a42d-568e56fb1249" + ] + }, + { + "Text": "Manager", + "Ws": "niz", + "Tags": [ + "749f132e-5b62-42b7-86ff-059a2a4fcd5e" + ] + }, + { + "Text": "Madagascar", + "Ws": "ktw", + "Bold": "Off", + "FontSize": -1245901176, + "ForeColor": "#00FFFF", + "Tags": [ + "f002ec10-2a72-7416-f135-278e82c48b14" + ] + }, + { + "Text": "Fresh", + "Ws": "niz", + "Tags": [ + "4257831c-6cf6-445c-bdfc-d2e10c6546fc" + ] + } + ] + }, + "pmz": { + "Spans": [ + { + "Text": "Realigned", + "Ws": "mzi", + "Bold": "Invert", + "FontSize": -208583590, + "ForeColor": "#00FFFF", + "Tags": [ + "946afd05-dfdd-48cf-6615-a55dbc30ce72" + ] + }, + { + "Text": "Optimized", + "Ws": "pmz", + "Tags": [ + "c14fd0d8-9f8f-4d81-b40e-0dc89703b261" + ] + } + ] + }, + "khr": { + "Spans": [ + { + "Text": "knowledge user", + "Ws": "mlc", + "Bold": "Off", + "FontSize": 81689857, + "ForeColor": "#ADFF2F", + "Tags": [ + "8a91586b-d2a7-c062-8089-300cf9e5b686" + ] + }, + { + "Text": "Trail", + "Ws": "khr", + "Tags": [ + "e75ec01a-e52c-4e30-b929-ad09a709fd7f" + ] + }, + { + "Text": "Metrics", + "Ws": "khr", + "Tags": [ + "f1c8ab11-3d04-484b-83aa-b473de8ce350" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "9a6a68d5-58a6-81c0-ab95-e365558ee35a", + "MaybeId": "9a6a68d5-58a6-81c0-ab95-e365558ee35a", + "DeletedAt": null, + "VariantEntryId": "7618d904-0761-ab81-ba1c-853b9401d1d5", + "VariantHeadword": "interfaces", + "MainEntryId": "ccc647fd-fca5-9c93-d296-43f13c223506", + "MainSenseId": "90f4721d-d38c-497f-955b-955acb2499f4", + "MainHeadword": "Fresh", + "Types": [ + { + "Id": "aa41d766-846e-2d53-cebd-50ca612bd6de", + "Name": { + "pxm": "magenta", + "lmi": "database" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "gcl": { + "Spans": [ + { + "Text": "Refined Rubber Sausages", + "Ws": "cmt", + "Bold": "Off", + "FontSize": -430354912, + "ForeColor": "#00FFFF", + "Tags": [ + "19fbeff0-b9b2-dbc0-83c0-18af65ac176d" + ] + }, + { + "Text": "Bedfordshire", + "Ws": "ald", + "Bold": "On", + "FontSize": -605772228, + "ForeColor": "#0000FF", + "Tags": [ + "ea667bb7-8cd0-872e-aff4-6534377ff096" + ] + }, + { + "Text": "Director", + "Ws": "gcl", + "Tags": [ + "45b61b57-989d-41f8-9ffd-ff957f611934" + ] + }, + { + "Text": "Generic Rubber Chicken", + "Ws": "omp", + "Bold": "On", + "FontSize": 1234054480, + "ForeColor": "#ADFF2F", + "Tags": [ + "93241b11-508c-6711-2e9f-99d55ed4c489" + ] + } + ] + }, + "sdu": { + "Spans": [ + { + "Text": "e-services", + "Ws": "sdu", + "Tags": [ + "69d83464-b127-45a3-8e80-1f12c6414995" + ] + }, + { + "Text": "rich", + "Ws": "psy", + "Bold": "Invert", + "FontSize": 425981535, + "ForeColor": "#A52A2A", + "Tags": [ + "cb4eafe1-71dc-53cf-e8d1-87fee8792d65" + ] + }, + { + "Text": "Cote d\u0027Ivoire", + "Ws": "gyi", + "Bold": "Off", + "FontSize": -802216504, + "ForeColor": "#ADFF2F", + "Tags": [ + "3be90aaa-fb8b-21c8-f217-daa170c8d4f6" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "d2892b2c-fc81-8c2f-5586-baa81b6d1530", + "DeletedAt": null, + "IsMain": false, + "Name": { + "mnj": "Plastic" + } + } + ] + }, + "Id": "3cdafca5-46e6-60ed-0b8a-e302d40f7ab8", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null, + "LexemeForm": { + "mqs": "maximized" + }, + "CitationForm": { + "nrz": "Portugal" + }, + "LiteralMeaning": { + "juy": { + "Spans": [ + { + "Text": "Kyat", + "Ws": "juy", + "Tags": [ + "bc47798c-6e35-430e-a94a-2d1aa82d9119" + ] + }, + { + "Text": "synthesize", + "Ws": "juy", + "Tags": [ + "75fc659a-ae47-45ec-87a8-2475d5667496" + ] + } + ] + }, + "rer": { + "Spans": [ + { + "Text": "Licensed", + "Ws": "rer", + "Tags": [ + "adf734b1-3abb-4644-a5b7-e712c29a59e6" + ] + }, + { + "Text": "architectures", + "Ws": "dos", + "Bold": "On", + "FontSize": -1392951304, + "ForeColor": "#ADFF2F", + "Tags": [ + "b316a4f4-208a-e75f-13f0-09a91a2b3506" + ] + } + ] + }, + "zpa": { + "Spans": [ + { + "Text": "Concrete", + "Ws": "zpa", + "Tags": [ + "10cb16c2-6f15-4101-8689-7c77e6576f52" + ] + }, + { + "Text": "Shoals", + "Ws": "cjy", + "Bold": "Invert", + "FontSize": -437265941, + "ForeColor": "#ADFF2F", + "Tags": [ + "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + ] + } + ] + } + }, + "MorphType": "BoundStem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "rkw": { + "Spans": [ + { + "Text": "XML", + "Ws": "vot", + "Bold": "On", + "FontSize": -1698959192, + "ForeColor": "#ADFF2F", + "Tags": [ + "9218c79b-f453-0ef3-de05-ea5eeba26367" + ] + }, + { + "Text": "invoice", + "Ws": "rkw", + "Tags": [ + "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + ] + }, + { + "Text": "bypass", + "Ws": "rkw", + "Tags": [ + "e615bb12-61d9-452e-bac5-06deb6942851" + ] + } + ] + }, + "kee": { + "Spans": [ + { + "Text": "Money Market Account", + "Ws": "ekp", + "Bold": "On", + "FontSize": -315220510, + "ForeColor": "#A52A2A", + "Tags": [ + "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + ] + }, + { + "Text": "Glens", + "Ws": "kee", + "Tags": [ + "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "kee", + "Tags": [ + "13a974bf-8b90-4f36-99c6-9f0771f53db0" + ] + }, + { + "Text": "SMTP", + "Ws": "cly", + "Bold": "Invert", + "FontSize": 872689318, + "ForeColor": "#0000FF", + "Tags": [ + "498aea00-217b-9a3e-7fd0-2748edadf3b3" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Name": { + "hup": "THX", + "rsk": "Reduced", + "zmq": "hard drive", + "nnx": "cyan" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "DeletedAt": null, + "IsMain": false, + "Name": { + "zrg": "cross-platform", + "bno": "heuristic" + } + } + ] + }, + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "21b941a4-fbb7-f706-0aab-529c84b402b5", + "DeletedAt": null, + "LexemeForm": { + "nar": "Tasty Rubber Chair", + "luh": "Brunei Dollar", + "mok": "navigate" + }, + "CitationForm": { + "mih": "hub", + "tiq": "New Zealand Dollar" + }, + "LiteralMeaning": { + "mtu": { + "Spans": [ + { + "Text": "Unbranded Rubber Sausages", + "Ws": "qvo", + "Bold": "Off", + "FontSize": 1178067194, + "ForeColor": "#A52A2A", + "Tags": [ + "d321668f-b5fb-4eea-8064-de2784319aa4" + ] + }, + { + "Text": "Soft", + "Ws": "jio", + "Bold": "On", + "FontSize": 897718303, + "ForeColor": "#A52A2A", + "Tags": [ + "9a5e7604-a21f-546d-3b49-d730a05bacb7" + ] + }, + { + "Text": "haptic", + "Ws": "mtu", + "Tags": [ + "ba19fe02-0e18-4e92-9fb4-73f7b4ff7e29" + ] + } + ] + }, + "tnc": { + "Spans": [ + { + "Text": "Practical", + "Ws": "wof", + "Bold": "Off", + "FontSize": -1535748655, + "ForeColor": "#00FFFF", + "Tags": [ + "bfb0c24e-3275-7312-a6af-171f2e77adea" + ] + }, + { + "Text": "quantifying", + "Ws": "awy", + "Bold": "Off", + "FontSize": -281573942, + "ForeColor": "#ADFF2F", + "Tags": [ + "e9bdeced-7404-3248-6b7d-3d73579133b4" + ] + }, + { + "Text": "Lebanese Pound", + "Ws": "tnc", + "Tags": [ + "d9b188e4-9a17-4636-a39b-ca4268035281" + ] + }, + { + "Text": "Officer", + "Ws": "kwy", + "Bold": "Off", + "FontSize": -907207124, + "ForeColor": "#ADFF2F", + "Tags": [ + "6f598667-4c76-a59f-6639-d85fa5caaee3" + ] + } + ] + }, + "met": { + "Spans": [ + { + "Text": "incremental", + "Ws": "kpl", + "Bold": "On", + "FontSize": 309135679, + "ForeColor": "#A52A2A", + "Tags": [ + "b76f0bac-9fe3-afb3-cc64-c01aa7c650cc" + ] + }, + { + "Text": "Awesome Steel Shirt", + "Ws": "met", + "Tags": [ + "421ee914-5d3a-4ccb-b71e-114b560efe88" + ] + }, + { + "Text": "XSS", + "Ws": "met", + "Tags": [ + "9cf1278d-37a5-4ba7-968d-0817a1280b1d" + ] + }, + { + "Text": "Wyoming", + "Ws": "lkh", + "Bold": "Off", + "FontSize": 2029647080, + "ForeColor": "#00FFFF", + "Tags": [ + "ccf7b25b-931a-7f85-62e9-5fe9b49d7aa0" + ] + } + ] + }, + "bmk": { + "Spans": [ + { + "Text": "incubate", + "Ws": "bmk", + "Tags": [ + "27ff80df-e700-49db-8a7b-517933050d07" + ] + }, + { + "Text": "Rubber", + "Ws": "ddi", + "Bold": "Off", + "FontSize": 1247133799, + "ForeColor": "#A52A2A", + "Tags": [ + "520317dc-2190-3cf0-bbba-bcd6ff830999" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "bmk", + "Tags": [ + "35e9e4c6-24fe-46aa-b3ea-788e4729a500" + ] + } + ] + } + }, + "MorphType": "Enclitic", + "HomographNumber": 288646034, + "Senses": [], + "Note": { + "obl": { + "Spans": [ + { + "Text": "Maryland", + "Ws": "yhd", + "Bold": "Off", + "FontSize": -49334912, + "ForeColor": "#00000000", + "Tags": [ + "2d8fec7c-5396-ea81-55e2-28e9ca2fb19a" + ] + } + ] + }, + "urn": { + "Spans": [ + { + "Text": "PCI", + "Ws": "apz", + "Bold": "Invert", + "FontSize": -101349684, + "ForeColor": "#ADFF2F", + "Tags": [ + "3f4fcdb6-49ae-0047-84a9-dd8c5387e0c6" + ] + } + ] + }, + "vmd": { + "Spans": [ + { + "Text": "whiteboard", + "Ws": "vmd", + "Tags": [ + "ac082b83-c17e-4dde-88e4-f5496c06da55" + ] + }, + { + "Text": "cutting-edge", + "Ws": "vmd", + "Tags": [ + "ebc22ab4-9861-469b-8eb3-24bd8ee77271" + ] + } + ] + }, + "lo": { + "Spans": [ + { + "Text": "Graphical User Interface", + "Ws": "sjc", + "Bold": "Invert", + "FontSize": 1010008301, + "ForeColor": "#FF0000", + "Tags": [ + "738f95ee-777f-bd8e-9c25-fdf853919571" + ] + }, + { + "Text": "Trace", + "Ws": "lo", + "Tags": [ + "cec5d529-8bef-40d1-9007-8284f9b62813" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "e011543b-218d-8dc9-cb5b-ef51b039e01b", + "Name": { + "hih": "transition" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "81e7a0f3-07ae-9501-c9fc-012c9f4d72f8", + "MaybeId": "81e7a0f3-07ae-9501-c9fc-012c9f4d72f8", + "DeletedAt": null, + "VariantEntryId": "0d7ecb9e-640e-0136-3177-5f3725e3ff9c", + "VariantHeadword": "copying", + "MainEntryId": "c28531d2-4de4-3de3-36c3-c4eda08de343", + "MainSenseId": "917b785c-8a5c-d651-e6bf-8ee95b975268", + "MainHeadword": "matrix", + "Types": [ + { + "Id": "47b33565-0be3-32c4-e0ad-348f191b6763", + "Name": { + "tto": "Function-based", + "mln": "Toys \u0026 Health" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "kdu": { + "Spans": [ + { + "Text": "Soft", + "Ws": "lbb", + "Bold": "Off", + "FontSize": 1504894779, + "ForeColor": "#ADFF2F", + "Tags": [ + "23000220-e88c-70d5-9add-4df3ce8fe113" + ] + }, + { + "Text": "Azerbaijanian Manat", + "Ws": "kdu", + "Tags": [ + "84781e74-2daf-4343-9163-07146adbf10d" + ] + }, + { + "Text": "Fantastic", + "Ws": "kdu", + "Tags": [ + "bf26f933-43e6-4836-8110-83a70c57ed9c" + ] + } + ] + }, + "kgu": { + "Spans": [ + { + "Text": "Savings Account", + "Ws": "hmi", + "Bold": "Invert", + "FontSize": -1415115979, + "ForeColor": "#A52A2A", + "Tags": [ + "eae2f706-1777-c843-9406-53c52fa6c245" + ] + }, + { + "Text": "index", + "Ws": "kgu", + "Tags": [ + "7a3a569c-2ed4-4fa2-8c32-79435d943ba6" + ] + } + ] + }, + "dlg": { + "Spans": [ + { + "Text": "Wooden", + "Ws": "dlg", + "Tags": [ + "fd4f43a8-1fa6-4269-aab0-4e6d4d4bcd92" + ] + }, + { + "Text": "website", + "Ws": "dlg", + "Tags": [ + "03d3f612-c192-428d-97f4-419ca77bed8e" + ] + }, + { + "Text": "Manager", + "Ws": "gvs", + "Bold": "On", + "FontSize": -1069962004, + "ForeColor": "#00FFFF", + "Tags": [ + "8dc4a280-da41-d085-2e52-9787f7db26ea" + ] + } + ] + }, + "mtf": { + "Spans": [ + { + "Text": "Licensed Plastic Sausages", + "Ws": "nra", + "Bold": "On", + "FontSize": -883851573, + "ForeColor": "#0000FF", + "Tags": [ + "4f6ea9d5-5680-42bb-93b4-ceb1d18b90a3" + ] + }, + { + "Text": "Progressive", + "Ws": "mtf", + "Tags": [ + "3a8e2fe9-679c-4a3d-a980-d82240464ed2" + ] + }, + { + "Text": "Borders", + "Ws": "mtf", + "Tags": [ + "0af175a1-59ef-42e2-886c-73b6a11ad0e1" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "9bfecd7f-6382-5236-4f2f-0a762a72fb90", + "MaybeId": "9bfecd7f-6382-5236-4f2f-0a762a72fb90", + "DeletedAt": null, + "VariantEntryId": "43f0a46f-364f-eee0-a013-1812448b50e1", + "VariantHeadword": "olive", + "MainEntryId": "9441127f-18dd-b52f-d49e-629ca50611ac", + "MainSenseId": "519758f1-a6c0-7833-468e-8f326607cf0c", + "MainHeadword": "Orchestrator", + "Types": [ + { + "Id": "0bc3123f-673b-215f-1f24-5fae892969ee", + "Name": { + "blb": "calculating", + "rga": "Awesome Metal Chicken" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "sfe": { + "Spans": [ + { + "Text": "synthesize", + "Ws": "wmc", + "Bold": "On", + "FontSize": -410677030, + "ForeColor": "#00FFFF", + "Tags": [ + "793b16c8-e48a-7890-bb1a-7381255585b4" + ] + }, + { + "Text": "Planner", + "Ws": "smc", + "Bold": "On", + "FontSize": 190202871, + "ForeColor": "#A52A2A", + "Tags": [ + "6109cb4e-9d80-7172-070f-aaab5148e02b" + ] + } + ] + }, + "mkp": { + "Spans": [ + { + "Text": "Port", + "Ws": "yxu", + "Bold": "Invert", + "FontSize": 1607188846, + "ForeColor": "#00FFFF", + "Tags": [ + "58bc979b-7c64-d947-165b-c7f2ebe2f63b" + ] + } + ] + }, + "ckz": { + "Spans": [ + { + "Text": "Product", + "Ws": "ywn", + "Bold": "Invert", + "FontSize": -23641957, + "ForeColor": "#A52A2A", + "Tags": [ + "b0594316-051c-beca-3f4a-fd5a3500a18d" + ] + }, + { + "Text": "approach", + "Ws": "pbm", + "Bold": "Off", + "FontSize": 1715313845, + "ForeColor": "#A52A2A", + "Tags": [ + "0eb2ca90-dde1-95d6-9801-54c992c804b3" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "cb689065-ea18-98a0-74a6-5cb471da3fbc", + "DeletedAt": null, + "IsMain": false, + "Name": { + "lnu": "Applications" + } + } + ] + }, + "Id": "21b941a4-fbb7-f706-0aab-529c84b402b5", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null, + "LexemeForm": { + "dkk": "Product" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Infix", + "HomographNumber": 1102525176, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "DeletedAt": null, + "IsMain": true, + "Name": { + "mps": "Small Granite Salad" + } + } + ] + }, + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "7ccb582e-442b-9cde-6f59-7d2658224810", + "DeletedAt": null, + "LexemeForm": { + "alt": "redefine", + "mtg": "feed", + "cie": "haptic" + }, + "CitationForm": { + "nqo": "Investment Account", + "dkg": "Optimization" + }, + "LiteralMeaning": { + "gnr": { + "Spans": [ + { + "Text": "Springs", + "Ws": "gnr", + "Tags": [ + "18fbfdb3-2e2a-4291-8b21-00702f47a4c6" + ] + }, + { + "Text": "human-resource", + "Ws": "gnr", + "Tags": [ + "90ec01f7-a258-41c9-b9dd-b4eccd570f9c" + ] + } + ] + }, + "stt": { + "Spans": [ + { + "Text": "withdrawal", + "Ws": "tpi", + "Bold": "On", + "FontSize": -1350488265, + "ForeColor": "#FF0000", + "Tags": [ + "39acebc8-f34a-93c9-4c84-f7cc84c5985d" + ] + }, + { + "Text": "Intelligent Concrete Table", + "Ws": "guq", + "Bold": "On", + "FontSize": -25655285, + "ForeColor": "#ADFF2F", + "Tags": [ + "b72087c2-32d8-29af-97ca-53158f52e13b" + ] + }, + { + "Text": "Research", + "Ws": "ani", + "Bold": "Invert", + "FontSize": 611743561, + "ForeColor": "#00FFFF", + "Tags": [ + "7debebd6-974d-0fd4-c077-c55407f924ea" + ] + } + ] + }, + "czh": { + "Spans": [ + { + "Text": "Future", + "Ws": "ypo", + "Bold": "Off", + "FontSize": 1307816951, + "ForeColor": "#FF0000", + "Tags": [ + "86cf0663-8ac2-0d8e-b85b-007c44ee27d2" + ] + }, + { + "Text": "Square", + "Ws": "czh", + "Tags": [ + "ca6c94cc-2237-4dad-af21-1e4f048b7ab4" + ] + } + ] + } + }, + "MorphType": "Circumfix", + "HomographNumber": -1416309114, + "Senses": [], + "Note": { + "xsy": { + "Spans": [ + { + "Text": "backing up", + "Ws": "nsh", + "Bold": "Off", + "FontSize": -559106786, + "ForeColor": "#FF0000", + "Tags": [ + "9c63fff5-5626-197d-9952-cca19e542578" + ] + } + ] + }, + "rgn": { + "Spans": [ + { + "Text": "Streamlined", + "Ws": "rgn", + "Tags": [ + "9edca3e0-5249-4f77-bfbb-c900353ae5c1" + ] + }, + { + "Text": "Micronesia", + "Ws": "env", + "Bold": "Invert", + "FontSize": 87635850, + "ForeColor": "#00FFFF", + "Tags": [ + "041fd30c-a5e7-f92a-e0b3-a59400a752af" + ] + }, + { + "Text": "transform", + "Ws": "cnc", + "Bold": "On", + "FontSize": -1985104153, + "ForeColor": "#FF0000", + "Tags": [ + "5c74852f-f7e5-249f-31f5-6b1d45ed8630" + ] + }, + { + "Text": "Identity", + "Ws": "byf", + "Bold": "Off", + "FontSize": -1853399160, + "ForeColor": "#0000FF", + "Tags": [ + "b6a400e8-2427-45a3-5ab1-758a2e28a6d1" + ] + } + ] + }, + "zkt": { + "Spans": [ + { + "Text": "COM", + "Ws": "yle", + "Bold": "Off", + "FontSize": 229320307, + "ForeColor": "#A52A2A", + "Tags": [ + "38575d9b-1ae7-0daa-3572-b22dcde78f5d" + ] + } + ] + }, + "sav": { + "Spans": [ + { + "Text": "Generic Steel Shirt", + "Ws": "cho", + "Bold": "Invert", + "FontSize": 1060021924, + "ForeColor": "#A52A2A", + "Tags": [ + "754ec847-76fb-1ccb-a494-dd703a87a162" + ] + }, + { + "Text": "Rustic Fresh Sausages", + "Ws": "mmv", + "Bold": "Off", + "FontSize": 1033279533, + "ForeColor": "#00000000", + "Tags": [ + "e2a95409-ebd0-322b-c20d-a2f3b3c98397" + ] + }, + { + "Text": "Tasty Plastic Table", + "Ws": "sav", + "Tags": [ + "0ac2af44-1be6-4bd7-9899-117faf3089ec" + ] + }, + { + "Text": "New Zealand", + "Ws": "sav", + "Tags": [ + "46d65c88-2ff5-4966-8463-cb5feade8426" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "e4009891-0d12-f226-b1c8-aa5558128394", + "Name": { + "ril": "Human" + }, + "DeletedAt": null + } + ], + "VariantOf": [ + { + "Id": "d1ceb8e2-7b90-c398-3589-7509df51c011", + "MaybeId": "d1ceb8e2-7b90-c398-3589-7509df51c011", + "DeletedAt": null, + "VariantEntryId": "9970c40e-d0c0-d21a-b1b9-1da8bc1e03de", + "VariantHeadword": "Sleek Soft Bacon", + "MainEntryId": "6638f491-2bb0-d597-aac2-c7a3f7401ac1", + "MainSenseId": "f145e4a2-c26e-6e1a-b638-cfa8e7c76b22", + "MainHeadword": "Coordinator", + "Types": [ + { + "Id": "9b171c50-74e6-0153-0532-9e150820fd84", + "Name": { + "daa": "next-generation", + "tzh": "Credit Card Account", + "soo": "Orchestrator" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "put": { + "Spans": [ + { + "Text": "overriding", + "Ws": "put", + "Tags": [ + "73d43eb7-259e-46b6-b97e-e862bf483e93" + ] + }, + { + "Text": "Central", + "Ws": "jao", + "Bold": "On", + "FontSize": 583944008, + "ForeColor": "#00000000", + "Tags": [ + "67f97cd8-36bb-87d6-48c8-8032e5bc70f0" + ] + }, + { + "Text": "generate", + "Ws": "gbv", + "Bold": "On", + "FontSize": -1131714599, + "ForeColor": "#A52A2A", + "Tags": [ + "576874ce-c7a4-ca02-57f2-96707015cf7e" + ] + }, + { + "Text": "Baby \u0026 Grocery", + "Ws": "hur", + "Bold": "Off", + "FontSize": 105023831, + "ForeColor": "#0000FF", + "Tags": [ + "8ee1c6c3-4571-550f-aab0-c74250e744ae" + ] + } + ] + }, + "kdp": { + "Spans": [ + { + "Text": "EXE", + "Ws": "kdp", + "Tags": [ + "d81a9037-f01a-442e-945e-2da83fc59b72" + ] + }, + { + "Text": "Street", + "Ws": "bxb", + "Bold": "Off", + "FontSize": -1107158038, + "ForeColor": "#FF0000", + "Tags": [ + "86a630b1-0d04-0ce0-4e33-b4328f318e4f" + ] + }, + { + "Text": "Cross-group", + "Ws": "kdp", + "Tags": [ + "028304f1-6068-456c-9dd6-daf2e6318035" + ] + } + ] + }, + "slc": { + "Spans": [ + { + "Text": "fresh-thinking", + "Ws": "rn", + "Bold": "On", + "FontSize": -1290428814, + "ForeColor": "#00000000", + "Tags": [ + "c8622d2c-cfdd-f92c-85f3-0c594aee98e1" + ] + }, + { + "Text": "Executive", + "Ws": "slc", + "Tags": [ + "1024acaa-5a55-48f6-a801-6d033e58f225" + ] + }, + { + "Text": "Egyptian Pound", + "Ws": "slc", + "Tags": [ + "234f074f-8d0d-4629-884f-2441eea1ddfa" + ] + }, + { + "Text": "moderator", + "Ws": "slc", + "Tags": [ + "81b664ca-2179-43ec-a71c-025af7fe288d" + ] + } + ] + } + } + } + ], + "Variants": [ + { + "Id": "3f49ac95-a997-74af-e061-6159fc340fd2", + "MaybeId": "3f49ac95-a997-74af-e061-6159fc340fd2", + "DeletedAt": null, + "VariantEntryId": "36c20f18-c9ae-c828-7cea-7bf5f4ddee03", + "VariantHeadword": "Borders", + "MainEntryId": "cc77233c-a886-c6ee-703a-4e5a4443c087", + "MainSenseId": "18a2340e-56f8-94de-bf35-bef23f6a3d76", + "MainHeadword": "Concrete", + "Types": [ + { + "Id": "39b5de5d-fc3e-6516-2ac5-fbdde15e8d90", + "Name": { + "ygi": "Granite", + "ihp": "Small Granite Salad", + "bzx": "Avon" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "pna": { + "Spans": [ + { + "Text": "Guinea", + "Ws": "twq", + "Bold": "Off", + "FontSize": 548037479, + "ForeColor": "#00FFFF", + "Tags": [ + "b31e5ede-63ce-0ec0-f672-6801296e0617" + ] + }, + { + "Text": "Minnesota", + "Ws": "zor", + "Bold": "On", + "FontSize": -1619185103, + "ForeColor": "#00000000", + "Tags": [ + "6db14049-c1d8-4610-67b6-f080a67d198c" + ] + } + ] + }, + "nii": { + "Spans": [ + { + "Text": "Florida", + "Ws": "kqj", + "Bold": "On", + "FontSize": 1839918198, + "ForeColor": "#00FFFF", + "Tags": [ + "54a11218-ede8-4a66-e796-8fb5954a2866" + ] + } + ] + }, + "goh": { + "Spans": [ + { + "Text": "Re-engineered", + "Ws": "ppu", + "Bold": "On", + "FontSize": 121777806, + "ForeColor": "#FF0000", + "Tags": [ + "d7394e85-12ef-0453-59a4-f789ec8cd6b6" + ] + } + ] + }, + "mss": { + "Spans": [ + { + "Text": "Rustic", + "Ws": "sok", + "Bold": "On", + "FontSize": -232538291, + "ForeColor": "#FF0000", + "Tags": [ + "672e67c4-f22f-4f38-e5ef-fa8230ae0642" + ] + }, + { + "Text": "Fantastic", + "Ws": "mss", + "Tags": [ + "4b2371f2-69a7-4056-a1c5-f0b4151e85b8" + ] + }, + { + "Text": "Gibraltar Pound", + "Ws": "mss", + "Tags": [ + "0ef5a73e-8c43-42b3-8637-1bb90d0b2b62" + ] + } + ] + } + } + } + ], + "PublishIn": [ + { + "Id": "a27a7789-bcba-ee7a-57d3-fa256d3356c1", + "DeletedAt": null, + "IsMain": false, + "Name": { + "kkk": "Analyst", + "dkk": "Investment Account" + } + } + ] + }, + "Id": "7ccb582e-442b-9cde-6f59-7d2658224810", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null, + "LexemeForm": { + "kvj": "Florida" + }, + "CitationForm": null, + "LiteralMeaning": null, + "MorphType": "Prefix", + "HomographNumber": 4, + "Senses": [], + "Note": null, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "c3c7439d-8508-897d-ec90-dfb8c6233f52", + "DeletedAt": null, + "LexemeForm": { + "sbf": "Triple-buffered", + "nuo": "clear-thinking", + "ewo": "modular" + }, + "CitationForm": { + "mzp": "Rial Omani" + }, + "LiteralMeaning": { + "mku": { + "Spans": [ + { + "Text": "holistic", + "Ws": "mku", + "Tags": [ + "9350e875-0918-4188-8b80-e94b87a852bf" + ] + }, + { + "Text": "Oklahoma", + "Ws": "bnx", + "Bold": "On", + "FontSize": 1103510228, + "ForeColor": "#FF0000", + "Tags": [ + "ed09f714-b175-6596-9983-16cdf0cf34d8" + ] + }, + { + "Text": "Handcrafted", + "Ws": "mku", + "Tags": [ + "182d16db-157e-4fbc-9d8d-fb3df1acc534" + ] + } + ] + }, + "kdr": { + "Spans": [ + { + "Text": "Liaison", + "Ws": "kdr", + "Tags": [ + "f526be31-e1dc-4710-b90d-0c747d57434f" + ] + } + ] + } + }, + "MorphType": "Prefix", + "HomographNumber": -1630247524, + "Senses": [], + "Note": { + "crv": { + "Spans": [ + { + "Text": "Isle of Man", + "Ws": "crv", + "Tags": [ + "7bde6377-d4cb-49ae-9803-86cd678d56d7" + ] + }, + { + "Text": "projection", + "Ws": "crv", + "Tags": [ + "764ca726-5a42-499a-8965-0da244a52a6a" + ] + }, + { + "Text": "transmitting", + "Ws": "hnn", + "Bold": "Off", + "FontSize": -1687247291, + "ForeColor": "#ADFF2F", + "Tags": [ + "54262fd2-0ed1-d0ec-59b2-c2ade27b2a03" + ] + } + ] + }, + "gnw": { + "Spans": [ + { + "Text": "Neck", + "Ws": "bvo", + "Bold": "Off", + "FontSize": -990208762, + "ForeColor": "#00FFFF", "Tags": [ - "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + "99ed537a-80b3-8de1-7650-6365d2e6083f" ] }, { - "Text": "Glens", - "Ws": "kee", + "Text": "Data", + "Ws": "gnw", "Tags": [ - "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + "d241a639-233a-45c7-8935-7b9f3f06157a" ] }, { - "Text": "Buckinghamshire", - "Ws": "kee", + "Text": "withdrawal", + "Ws": "pmf", + "Bold": "Off", + "FontSize": -1959771791, + "ForeColor": "#0000FF", "Tags": [ - "13a974bf-8b90-4f36-99c6-9f0771f53db0" + "8fd780f0-42f6-34ec-0f95-356321691992" ] - }, + } + ] + }, + "ekm": { + "Spans": [ { - "Text": "SMTP", - "Ws": "cly", + "Text": "Developer", + "Ws": "hag", "Bold": "Invert", - "FontSize": 872689318, + "FontSize": -858017395, "ForeColor": "#0000FF", "Tags": [ - "498aea00-217b-9a3e-7fd0-2748edadf3b3" + "846f0198-2a38-de9c-5c83-d597ce88fecd" + ] + }, + { + "Text": "Handcrafted", + "Ws": "mix", + "Bold": "On", + "FontSize": -1819622732, + "ForeColor": "#FF0000", + "Tags": [ + "bce2d057-9660-de23-ad57-3783b9014de8" ] } ] @@ -392,84 +2606,204 @@ "ComplexForms": [], "ComplexFormTypes": [ { - "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Id": "68f76f7d-5ec4-2006-ed56-236b8c0acdb3", "Name": { - "hup": "THX", - "rsk": "Reduced", - "zmq": "hard drive", - "nnx": "cyan" + "mtn": "Libyan Dinar", + "kot": "white", + "sax": "Accounts", + "tlu": "invoice" }, "DeletedAt": null } ], - "PublishIn": [ + "VariantOf": [ { - "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "Id": "30687039-cd15-839f-0f15-88239cea4ee7", + "MaybeId": "30687039-cd15-839f-0f15-88239cea4ee7", "DeletedAt": null, - "IsMain": false, - "Name": { - "zrg": "cross-platform", - "bno": "heuristic" + "VariantEntryId": "a7cea784-faa5-08b1-5a30-ea546c3e84a6", + "VariantHeadword": "methodologies", + "MainEntryId": "d38e046a-5051-8542-0ee0-a8816c4a38fc", + "MainSenseId": "20ae5516-4681-5b6f-9a37-441f37d30636", + "MainHeadword": "National", + "Types": [ + { + "Id": "4efbf4f2-7182-25a1-8279-18849ca5d1dc", + "Name": { + "xpu": "Intelligent Soft Shirt" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": { + "ug": { + "Spans": [ + { + "Text": "input", + "Ws": "ug", + "Tags": [ + "009c5014-9b97-498d-94d7-b49c2f60f7ce" + ] + }, + { + "Text": "high-level", + "Ws": "pub", + "Bold": "On", + "FontSize": 1878116492, + "ForeColor": "#0000FF", + "Tags": [ + "5a727ee0-4a4d-6d0f-5ff0-7225db4443b9" + ] + }, + { + "Text": "Liberian Dollar", + "Ws": "ug", + "Tags": [ + "9def2648-5fc8-473b-91a0-e4b870483323" + ] + }, + { + "Text": "teal", + "Ws": "dux", + "Bold": "On", + "FontSize": -447656843, + "ForeColor": "#00FFFF", + "Tags": [ + "3f01efa1-0307-9615-9c0a-abd13268297f" + ] + } + ] + }, + "tkx": { + "Spans": [ + { + "Text": "Handcrafted Plastic Gloves", + "Ws": "ktm", + "Bold": "Off", + "FontSize": 980860579, + "ForeColor": "#0000FF", + "Tags": [ + "3aa66e0d-0c3b-f1fe-000b-f2b073e8bbcf" + ] + }, + { + "Text": "teal", + "Ws": "tkx", + "Tags": [ + "ffc128c8-dd58-490e-bbb6-ff9c9dae2c21" + ] + } + ] + }, + "mvg": { + "Spans": [ + { + "Text": "Synchronised", + "Ws": "lof", + "Bold": "Off", + "FontSize": -448515709, + "ForeColor": "#A52A2A", + "Tags": [ + "cccf656b-6627-2403-6651-e9778e6784b3" + ] + }, + { + "Text": "pink", + "Ws": "mvg", + "Tags": [ + "227cf26e-397c-4d4c-9799-5bb7c880ffcd" + ] + }, + { + "Text": "Tasty Rubber Tuna", + "Ws": "jcs", + "Bold": "Invert", + "FontSize": -1218964834, + "ForeColor": "#FF0000", + "Tags": [ + "8d1b02a7-1a2b-3cad-ee5b-5d9d44e54785" + ] + }, + { + "Text": "Rue", + "Ws": "mvg", + "Tags": [ + "98ac4a79-c23c-47d3-af3b-6352a3905df4" + ] + } + ] + } } } - ] - }, - "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", - "DeletedAt": null - }, - { - "$type": "MiniLcmCrdtAdapter", - "Obj": { - "$type": "Entry", - "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", - "DeletedAt": null, - "LexemeForm": { - "dkk": "Product" - }, - "CitationForm": {}, - "LiteralMeaning": {}, - "MorphType": "Infix", - "HomographNumber": 1102525176, - "Senses": [], - "Note": {}, - "Components": [], - "ComplexForms": [], - "ComplexFormTypes": [], + ], + "Variants": [ + { + "Id": "eb7771bf-50ec-05c5-f943-2f36625e25db", + "MaybeId": "eb7771bf-50ec-05c5-f943-2f36625e25db", + "DeletedAt": null, + "VariantEntryId": "dd84ea90-cfe1-a254-021d-efca8b022ddf", + "VariantHeadword": "Configuration", + "MainEntryId": "2bae2145-2f23-b490-102b-cf1d03c8f5bf", + "MainSenseId": "bb0e0056-9948-fd94-0c89-e89fd4ba8cce", + "MainHeadword": "withdrawal", + "Types": [ + { + "Id": "e2b0fab5-16ff-63da-ab2c-3137e2d8fcea", + "Name": { + "nli": "Architect", + "dcc": "Decentralized", + "dgd": "leverage", + "pne": "Intelligent Steel Cheese" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "afs": { + "Spans": [ + { + "Text": "Investment Account", + "Ws": "afs", + "Tags": [ + "222a259a-328a-41e6-8d2e-ad2e0a06cf21" + ] + }, + { + "Text": "Morocco", + "Ws": "afs", + "Tags": [ + "184ab8d1-b318-407d-8eaf-d60d2615e680" + ] + }, + { + "Text": "Kids \u0026 Kids", + "Ws": "afs", + "Tags": [ + "805122d3-96f3-4129-a887-edb34bd994c5" + ] + } + ] + } + } + } + ], "PublishIn": [ { - "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "Id": "5421adab-b84b-1d1c-5da9-ff96c4e76d6f", "DeletedAt": null, - "IsMain": true, + "IsMain": false, "Name": { - "mps": "Small Granite Salad" + "arn": "Money Market Account", + "myt": "withdrawal", + "bni": "Libyan Arab Jamahiriya", + "peh": "web-readiness" } } ] }, - "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", - "DeletedAt": null - }, - { - "$type": "MiniLcmCrdtAdapter", - "Obj": { - "$type": "Entry", - "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", - "DeletedAt": null, - "LexemeForm": { - "kvj": "Florida" - }, - "CitationForm": null, - "LiteralMeaning": null, - "MorphType": "Prefix", - "HomographNumber": 4, - "Senses": [], - "Note": null, - "Components": [], - "ComplexForms": [], - "ComplexFormTypes": [], - "PublishIn": [] - }, - "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "Id": "c3c7439d-8508-897d-ec90-dfb8c6233f52", "DeletedAt": null }, { @@ -3935,5 +6269,145 @@ }, "Id": "edd0c7a1-e37c-c67b-7522-eed5ec86fde8", "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "VariantType", + "Id": "ab0ff154-d4bb-e26d-4136-805ff65fe3f7", + "Name": { + "kvv": "Idaho" + }, + "DeletedAt": null + }, + "Id": "ab0ff154-d4bb-e26d-4136-805ff65fe3f7", + "DeletedAt": null + }, + { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Variant", + "Id": "f3c8bd18-ddae-319c-7af9-aec8a1f24db9", + "MaybeId": "f3c8bd18-ddae-319c-7af9-aec8a1f24db9", + "DeletedAt": null, + "VariantEntryId": "8844401a-9b59-2dbb-d0a6-b8072698fdbe", + "VariantHeadword": "compressing", + "MainEntryId": "4c6734dd-5df2-ef98-f925-4bedccafffd6", + "MainSenseId": "5299433f-bed8-0440-f6b7-be7185a94c91", + "MainHeadword": "Future-proofed", + "Types": [ + { + "Id": "bd29dadc-ed05-75a2-2dd2-1f4e7a8ed28c", + "Name": { + "qvs": "transition", + "bnj": "input", + "prx": "1080p", + "stw": "Cotton" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": true, + "Comment": { + "mkv": { + "Spans": [ + { + "Text": "FTP", + "Ws": "afg", + "Bold": "Off", + "FontSize": 786310720, + "ForeColor": "#FF0000", + "Tags": [ + "080df177-19fa-0182-fd6d-8bfe3c6899b8" + ] + } + ] + }, + "jup": { + "Spans": [ + { + "Text": "Configuration", + "Ws": "jkr", + "Bold": "Invert", + "FontSize": 901303494, + "ForeColor": "#00000000", + "Tags": [ + "4764d0bd-8463-ac55-13e6-5c97bf5e1eeb" + ] + }, + { + "Text": "Extended", + "Ws": "jup", + "Tags": [ + "cc3de0c0-de63-4f90-b243-ed8cffce4b43" + ] + }, + { + "Text": "Berkshire", + "Ws": "duq", + "Bold": "Invert", + "FontSize": -820321295, + "ForeColor": "#FF0000", + "Tags": [ + "89b096e2-d417-54cc-90ce-6b3d0d6beea9" + ] + }, + { + "Text": "Handmade", + "Ws": "jup", + "Tags": [ + "8b3d963a-e282-4efa-b1b3-72bd5cc0b97a" + ] + } + ] + }, + "knq": { + "Spans": [ + { + "Text": "back-end", + "Ws": "rga", + "Bold": "On", + "FontSize": -1164842275, + "ForeColor": "#0000FF", + "Tags": [ + "e16af6f0-6073-064a-be78-5476ae80129b" + ] + }, + { + "Text": "Fresh", + "Ws": "hrt", + "Bold": "Off", + "FontSize": -1676676744, + "ForeColor": "#00FFFF", + "Tags": [ + "04081eef-8df9-8078-2aff-8a1fc6f565d6" + ] + }, + { + "Text": "Bedfordshire", + "Ws": "xag", + "Bold": "Off", + "FontSize": 588490506, + "ForeColor": "#ADFF2F", + "Tags": [ + "d5d24888-6538-6447-e34b-90436626e505" + ] + }, + { + "Text": "neural", + "Ws": "kpw", + "Bold": "Off", + "FontSize": 1635502143, + "ForeColor": "#FF0000", + "Tags": [ + "3ff5314e-8007-7517-f840-e3a86ec6f913" + ] + } + ] + } + } + }, + "Id": "f3c8bd18-ddae-319c-7af9-aec8a1f24db9", + "DeletedAt": null } ] \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt index a3fe21d28d..1dd30608e8 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/SnapshotDeserializationRegressionData.legacy.verified.txt @@ -158,6 +158,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", @@ -246,6 +248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", @@ -3900,5 +3904,849 @@ "Id": "853b91e6-d738-7d5d-cc98-e62904160c35", "DeletedAt": null } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null, + "LexemeForm": { + "en": "Pineapple" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "1f6ae209-141a-40db-983c-bee93af0ca3c", + "Name": { + "en": "Compound" + }, + "DeletedAt": null + } + ], + "PublishIn": [] + }, + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null, + "LexemeForm": { + "en": "Pineapple" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "1f6ae209-141a-40db-983c-bee93af0ca3c", + "Name": { + "en": "Compound" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "8f403ae3-9859-4a74-a52d-3c0736bb5917", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null, + "LexemeForm": { + "luq": "Communications" + }, + "CitationForm": { + "ykl": "Dominican Republic", + "tw": "Unbranded", + "sqh": "hack" + }, + "LiteralMeaning": { + "rpn": { + "Spans": [ + { + "Text": "Home Loan Account", + "Ws": "kmd", + "Bold": "On", + "FontSize": 1210454949, + "ForeColor": "#A52A2A", + "Tags": [ + "7231e128-410a-9cae-4141-997965f4a853" + ] + } + ] + } + }, + "MorphType": "Particle", + "HomographNumber": 0, + "Senses": [], + "Note": { + "ekl": { + "Spans": [ + { + "Text": "Sleek", + "Ws": "akv", + "Bold": "Off", + "FontSize": 2066121125, + "ForeColor": "#ADFF2F", + "Tags": [ + "82408188-7ce4-ba9a-5f35-8ffec5b3b254" + ] + } + ] + }, + "uki": { + "Spans": [ + { + "Text": "Refined Fresh Computer", + "Ws": "uki", + "Tags": [ + "122f575c-140b-4bb1-9c8c-f98e1969951d" + ] + }, + { + "Text": "internet solution", + "Ws": "uki", + "Tags": [ + "a5bd8ab1-99a0-4bcc-baaf-93c7ccc77429" + ] + }, + { + "Text": "wireless", + "Ws": "uki", + "Tags": [ + "005d71cb-4f05-486c-897c-710a7a6b5346" + ] + }, + { + "Text": "navigate", + "Ws": "uki", + "Tags": [ + "f04879c9-1e04-49b5-b4e0-0ce28e77aacd" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "15a8d32f-5cac-8a71-7b31-cbefa36ad322", + "Name": { + "tgi": "input", + "gnk": "silver", + "suo": "Refined Wooden Chair" + }, + "DeletedAt": null + } + ], + "PublishIn": [ + { + "Id": "ec21b4b7-3861-38d4-bc7b-fe77bd2321c2", + "DeletedAt": null, + "IsMain": false, + "Name": { + "nak": "CSS" + } + } + ] + }, + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null, + "LexemeForm": { + "luq": "Communications" + }, + "CitationForm": { + "ykl": "Dominican Republic", + "tw": "Unbranded", + "sqh": "hack" + }, + "LiteralMeaning": { + "rpn": { + "Spans": [ + { + "Text": "Home Loan Account", + "Ws": "kmd", + "Bold": "On", + "FontSize": 1210454949, + "ForeColor": "#A52A2A", + "Tags": [ + "7231e128-410a-9cae-4141-997965f4a853" + ] + } + ] + } + }, + "MorphType": "Particle", + "HomographNumber": 0, + "Senses": [], + "Note": { + "ekl": { + "Spans": [ + { + "Text": "Sleek", + "Ws": "akv", + "Bold": "Off", + "FontSize": 2066121125, + "ForeColor": "#ADFF2F", + "Tags": [ + "82408188-7ce4-ba9a-5f35-8ffec5b3b254" + ] + } + ] + }, + "uki": { + "Spans": [ + { + "Text": "Refined Fresh Computer", + "Ws": "uki", + "Tags": [ + "122f575c-140b-4bb1-9c8c-f98e1969951d" + ] + }, + { + "Text": "internet solution", + "Ws": "uki", + "Tags": [ + "a5bd8ab1-99a0-4bcc-baaf-93c7ccc77429" + ] + }, + { + "Text": "wireless", + "Ws": "uki", + "Tags": [ + "005d71cb-4f05-486c-897c-710a7a6b5346" + ] + }, + { + "Text": "navigate", + "Ws": "uki", + "Tags": [ + "f04879c9-1e04-49b5-b4e0-0ce28e77aacd" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "15a8d32f-5cac-8a71-7b31-cbefa36ad322", + "Name": { + "tgi": "input", + "gnk": "silver", + "suo": "Refined Wooden Chair" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "ec21b4b7-3861-38d4-bc7b-fe77bd2321c2", + "DeletedAt": null, + "IsMain": false, + "Name": { + "nak": "CSS" + } + } + ] + }, + "Id": "691dda9c-b83e-71c6-3638-e66a279c396e", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null, + "LexemeForm": { + "en": "\uD83C\uDF4C", + "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" + }, + "CitationForm": {}, + "LiteralMeaning": { + "en": { + "Spans": [ + { + "Text": "yellow fruit that comes in bunches.", + "Ws": "en" + } + ] + } + }, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "en": { + "Spans": [ + { + "Text": "often used in cartoon gags for slipping", + "Ws": "en" + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "PublishIn": [] + }, + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null, + "LexemeForm": { + "en": "\uD83C\uDF4C", + "th": "\u0E01\u0E25\u0E49\u0E27\u0E22" + }, + "CitationForm": {}, + "LiteralMeaning": { + "en": { + "Spans": [ + { + "Text": "yellow fruit that comes in bunches.", + "Ws": "en" + } + ] + } + }, + "MorphType": "Stem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "en": { + "Spans": [ + { + "Text": "often used in cartoon gags for slipping", + "Ws": "en" + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "82cf7254-3a4f-497a-9e15-7d93fc830356", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null, + "LexemeForm": { + "mqs": "maximized" + }, + "CitationForm": { + "nrz": "Portugal" + }, + "LiteralMeaning": { + "juy": { + "Spans": [ + { + "Text": "Kyat", + "Ws": "juy", + "Tags": [ + "bc47798c-6e35-430e-a94a-2d1aa82d9119" + ] + }, + { + "Text": "synthesize", + "Ws": "juy", + "Tags": [ + "75fc659a-ae47-45ec-87a8-2475d5667496" + ] + } + ] + }, + "rer": { + "Spans": [ + { + "Text": "Licensed", + "Ws": "rer", + "Tags": [ + "adf734b1-3abb-4644-a5b7-e712c29a59e6" + ] + }, + { + "Text": "architectures", + "Ws": "dos", + "Bold": "On", + "FontSize": -1392951304, + "ForeColor": "#ADFF2F", + "Tags": [ + "b316a4f4-208a-e75f-13f0-09a91a2b3506" + ] + } + ] + }, + "zpa": { + "Spans": [ + { + "Text": "Concrete", + "Ws": "zpa", + "Tags": [ + "10cb16c2-6f15-4101-8689-7c77e6576f52" + ] + }, + { + "Text": "Shoals", + "Ws": "cjy", + "Bold": "Invert", + "FontSize": -437265941, + "ForeColor": "#ADFF2F", + "Tags": [ + "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + ] + } + ] + } + }, + "MorphType": "BoundStem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "rkw": { + "Spans": [ + { + "Text": "XML", + "Ws": "vot", + "Bold": "On", + "FontSize": -1698959192, + "ForeColor": "#ADFF2F", + "Tags": [ + "9218c79b-f453-0ef3-de05-ea5eeba26367" + ] + }, + { + "Text": "invoice", + "Ws": "rkw", + "Tags": [ + "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + ] + }, + { + "Text": "bypass", + "Ws": "rkw", + "Tags": [ + "e615bb12-61d9-452e-bac5-06deb6942851" + ] + } + ] + }, + "kee": { + "Spans": [ + { + "Text": "Money Market Account", + "Ws": "ekp", + "Bold": "On", + "FontSize": -315220510, + "ForeColor": "#A52A2A", + "Tags": [ + "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + ] + }, + { + "Text": "Glens", + "Ws": "kee", + "Tags": [ + "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "kee", + "Tags": [ + "13a974bf-8b90-4f36-99c6-9f0771f53db0" + ] + }, + { + "Text": "SMTP", + "Ws": "cly", + "Bold": "Invert", + "FontSize": 872689318, + "ForeColor": "#0000FF", + "Tags": [ + "498aea00-217b-9a3e-7fd0-2748edadf3b3" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Name": { + "hup": "THX", + "rsk": "Reduced", + "zmq": "hard drive", + "nnx": "cyan" + }, + "DeletedAt": null + } + ], + "PublishIn": [ + { + "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "DeletedAt": null, + "IsMain": false, + "Name": { + "zrg": "cross-platform", + "bno": "heuristic" + } + } + ] + }, + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null, + "LexemeForm": { + "mqs": "maximized" + }, + "CitationForm": { + "nrz": "Portugal" + }, + "LiteralMeaning": { + "juy": { + "Spans": [ + { + "Text": "Kyat", + "Ws": "juy", + "Tags": [ + "bc47798c-6e35-430e-a94a-2d1aa82d9119" + ] + }, + { + "Text": "synthesize", + "Ws": "juy", + "Tags": [ + "75fc659a-ae47-45ec-87a8-2475d5667496" + ] + } + ] + }, + "rer": { + "Spans": [ + { + "Text": "Licensed", + "Ws": "rer", + "Tags": [ + "adf734b1-3abb-4644-a5b7-e712c29a59e6" + ] + }, + { + "Text": "architectures", + "Ws": "dos", + "Bold": "On", + "FontSize": -1392951304, + "ForeColor": "#ADFF2F", + "Tags": [ + "b316a4f4-208a-e75f-13f0-09a91a2b3506" + ] + } + ] + }, + "zpa": { + "Spans": [ + { + "Text": "Concrete", + "Ws": "zpa", + "Tags": [ + "10cb16c2-6f15-4101-8689-7c77e6576f52" + ] + }, + { + "Text": "Shoals", + "Ws": "cjy", + "Bold": "Invert", + "FontSize": -437265941, + "ForeColor": "#ADFF2F", + "Tags": [ + "53cd8e2b-15c6-0490-70d6-738a6708b9ca" + ] + } + ] + } + }, + "MorphType": "BoundStem", + "HomographNumber": 0, + "Senses": [], + "Note": { + "rkw": { + "Spans": [ + { + "Text": "XML", + "Ws": "vot", + "Bold": "On", + "FontSize": -1698959192, + "ForeColor": "#ADFF2F", + "Tags": [ + "9218c79b-f453-0ef3-de05-ea5eeba26367" + ] + }, + { + "Text": "invoice", + "Ws": "rkw", + "Tags": [ + "6ef3cf72-b5a5-488c-9381-fb7a7f6f961e" + ] + }, + { + "Text": "bypass", + "Ws": "rkw", + "Tags": [ + "e615bb12-61d9-452e-bac5-06deb6942851" + ] + } + ] + }, + "kee": { + "Spans": [ + { + "Text": "Money Market Account", + "Ws": "ekp", + "Bold": "On", + "FontSize": -315220510, + "ForeColor": "#A52A2A", + "Tags": [ + "424e0f12-78a7-37c7-8fa5-74dd81ccc8a7" + ] + }, + { + "Text": "Glens", + "Ws": "kee", + "Tags": [ + "a323544c-2b85-4fa7-b3c7-f5321ad75c49" + ] + }, + { + "Text": "Buckinghamshire", + "Ws": "kee", + "Tags": [ + "13a974bf-8b90-4f36-99c6-9f0771f53db0" + ] + }, + { + "Text": "SMTP", + "Ws": "cly", + "Bold": "Invert", + "FontSize": 872689318, + "ForeColor": "#0000FF", + "Tags": [ + "498aea00-217b-9a3e-7fd0-2748edadf3b3" + ] + } + ] + } + }, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [ + { + "Id": "292e9847-8c7c-56e1-87fb-41d200c789e1", + "Name": { + "hup": "THX", + "rsk": "Reduced", + "zmq": "hard drive", + "nnx": "cyan" + }, + "DeletedAt": null + } + ], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "bd874c92-e063-2a20-d263-bdc6897a1e85", + "DeletedAt": null, + "IsMain": false, + "Name": { + "zrg": "cross-platform", + "bno": "heuristic" + } + } + ] + }, + "Id": "8dbc0f41-998e-836a-97e1-f05d46d95c92", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null, + "LexemeForm": { + "dkk": "Product" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Infix", + "HomographNumber": 1102525176, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "PublishIn": [ + { + "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "DeletedAt": null, + "IsMain": true, + "Name": { + "mps": "Small Granite Salad" + } + } + ] + }, + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null, + "LexemeForm": { + "dkk": "Product" + }, + "CitationForm": {}, + "LiteralMeaning": {}, + "MorphType": "Infix", + "HomographNumber": 1102525176, + "Senses": [], + "Note": {}, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [ + { + "Id": "78c00e29-d69e-56ba-77f5-b5be25469c4f", + "DeletedAt": null, + "IsMain": true, + "Name": { + "mps": "Small Granite Salad" + } + } + ] + }, + "Id": "84bb5f48-b2a9-d0c8-85ee-aec9203830ee", + "DeletedAt": null + } + }, + { + "Input": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null, + "LexemeForm": { + "kvj": "Florida" + }, + "CitationForm": null, + "LiteralMeaning": null, + "MorphType": "Prefix", + "HomographNumber": 4, + "Senses": [], + "Note": null, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "PublishIn": [] + }, + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null + }, + "Output": { + "$type": "MiniLcmCrdtAdapter", + "Obj": { + "$type": "Entry", + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null, + "LexemeForm": { + "kvj": "Florida" + }, + "CitationForm": null, + "LiteralMeaning": null, + "MorphType": "Prefix", + "HomographNumber": 4, + "Senses": [], + "Note": null, + "Components": [], + "ComplexForms": [], + "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], + "PublishIn": [] + }, + "Id": "249c38f3-fc0d-195f-7533-97e8c140d0d7", + "DeletedAt": null + } } ] \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json index b087157ce9..e733d6c2ac 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json +++ b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v1.verified.json @@ -70,6 +70,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_7" diff --git a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json index b10f437131..77a842a4ac 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json +++ b/backend/FwLite/LcmCrdt.Tests/Data/VerifyRegeneratedSnapshotsAfterMigrationFromScriptedDb.v2.verified.json @@ -122,6 +122,8 @@ } } ], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_4" @@ -163,6 +165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_3" @@ -204,6 +208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_16" @@ -245,6 +251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [] }, "Id": "Guid_19" diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt index f11904f409..9b70a58db5 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyChangeModels.verified.txt @@ -40,6 +40,14 @@ DerivedType: JsonPatchChange, TypeDiscriminator: jsonPatch:ComplexFormType }, + { + DerivedType: JsonPatchChange, + TypeDiscriminator: jsonPatch:VariantType + }, + { + DerivedType: JsonPatchChange, + TypeDiscriminator: jsonPatch:Variant + }, { DerivedType: JsonPatchChange, TypeDiscriminator: jsonPatch:MorphType @@ -76,6 +84,14 @@ DerivedType: DeleteChange, TypeDiscriminator: delete:ComplexFormComponent }, + { + DerivedType: DeleteChange, + TypeDiscriminator: delete:VariantType + }, + { + DerivedType: DeleteChange, + TypeDiscriminator: delete:Variant + }, { DerivedType: DeleteChange, TypeDiscriminator: delete:Publication @@ -208,6 +224,22 @@ DerivedType: CreateComplexFormType, TypeDiscriminator: CreateComplexFormType }, + { + DerivedType: AddVariantChange, + TypeDiscriminator: AddVariantChange + }, + { + DerivedType: AddVariantTypeChange, + TypeDiscriminator: AddVariantTypeChange + }, + { + DerivedType: RemoveVariantTypeChange, + TypeDiscriminator: RemoveVariantTypeChange + }, + { + DerivedType: CreateVariantType, + TypeDiscriminator: CreateVariantType + }, { DerivedType: CreateCustomViewChange, TypeDiscriminator: CreateCustomViewChange diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt index 6eaccd9213..23715abfaf 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyDbModel.verified.txt @@ -160,6 +160,8 @@ ComplexForms (List) Collection ToDependent ComplexFormComponent Components (List) Collection ToDependent ComplexFormComponent Senses (List) Collection ToDependent Sense + VariantOf (List) Collection ToDependent Variant + Variants (List) Collection ToDependent Variant Keys: Id PK Foreign keys: @@ -344,6 +346,70 @@ Relational:TableName: Sense Relational:ViewName: Relational:ViewSchema: + EntityType: Variant + Properties: + Id (_id, Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd + Comment (RichMultiString) Required + Annotations: + Relational:ColumnType: jsonb + DeletedAt (DateTimeOffset?) + HideMinorEntry (bool) Required + MainEntryId (Guid) Required FK Index + MainHeadword (string) + MainSenseId (Guid?) FK Index + Annotations: + Relational:ColumnName: MainSenseId + SnapshotId (no field, Guid?) Shadow FK Index + Types (List) Required + Annotations: + Relational:ColumnType: jsonb + VariantEntryId (Guid) Required FK Index + VariantHeadword (string) + Keys: + Id PK + Foreign keys: + Variant {'MainEntryId'} -> Entry {'Id'} Required Cascade ToDependent: Variants + Variant {'MainSenseId'} -> Sense {'Id'} Cascade + Variant {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull + Variant {'VariantEntryId'} -> Entry {'Id'} Required Cascade ToDependent: VariantOf + Indexes: + MainEntryId + MainSenseId + SnapshotId Unique + VariantEntryId, MainEntryId Unique + Annotations: + Relational:Filter: MainSenseId IS NULL + VariantEntryId, MainEntryId, MainSenseId Unique + Annotations: + Relational:Filter: MainSenseId IS NOT NULL + Annotations: + Relational:FunctionName: + Relational:Schema: + Relational:SqlQuery: + Relational:TableName: Variants + Relational:ViewName: + Relational:ViewSchema: + EntityType: VariantType + Properties: + Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd + DeletedAt (DateTimeOffset?) + Name (MultiString) Required + Annotations: + Relational:ColumnType: jsonb + SnapshotId (no field, Guid?) Shadow FK Index + Keys: + Id PK + Foreign keys: + VariantType {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull + Indexes: + SnapshotId Unique + Annotations: + Relational:FunctionName: + Relational:Schema: + Relational:SqlQuery: + Relational:TableName: VariantType + Relational:ViewName: + Relational:ViewSchema: EntityType: WritingSystem Properties: Id (_id, Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd diff --git a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt index 048b425e86..09a82c9b55 100644 --- a/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.VerifyIObjectWithIdModels.verified.txt @@ -36,6 +36,14 @@ DerivedType: ComplexFormComponent, TypeDiscriminator: ComplexFormComponent }, + { + DerivedType: VariantType, + TypeDiscriminator: VariantType + }, + { + DerivedType: Variant, + TypeDiscriminator: Variant + }, { DerivedType: CustomView, TypeDiscriminator: CustomView diff --git a/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/VariantTests.cs b/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/VariantTests.cs new file mode 100644 index 0000000000..d6fdefe61f --- /dev/null +++ b/backend/FwLite/LcmCrdt.Tests/MiniLcmTests/VariantTests.cs @@ -0,0 +1,55 @@ +namespace LcmCrdt.Tests.MiniLcmTests; + +public class VariantTests : VariantTestsBase +{ + private readonly MiniLcmApiFixture _fixture = new(); + + protected override async Task NewApi() + { + await _fixture.InitializeAsync(); + return _fixture.Api; + } + + public override async Task DisposeAsync() + { + await base.DisposeAsync(); + await _fixture.DisposeAsync(); + } + + [Fact] + public async Task Create_AlwaysAssignsNewEntityId() + { + // The caller's entity ID is never used. This matches FwData behavior (which ignores + // the ID entirely) and prevents Harmony duplicate-ID pitfalls during sync. + var input = Variant.FromEntries( + (await Api.GetEntry(_variantEntryId))!, + (await Api.GetEntry(_mainEntryId))!); + var providedId = input.Id; + + var created = await Api.CreateVariant(input); + + created.MaybeId.Should().NotBeNull(); + created.Id.Should().NotBe(providedId); + } + + [Fact] + public async Task Create_ChangingProperty_ProducesNewEntityId() + { + // When the sync diff detects a property change (e.g. MainEntryId), it does + // remove + add. The "add" reuses the same input object with the old entity ID. + var newMainEntry = await Api.CreateEntry(new() + { + LexemeForm = { { "en", "New Main" } } + }); + + var input = Variant.FromEntries( + (await Api.GetEntry(_variantEntryId))!, + (await Api.GetEntry(_mainEntryId))!); + var first = await Api.CreateVariant(input); + + input.MainEntryId = newMainEntry.Id; + var second = await Api.CreateVariant(input); + + second.Id.Should().NotBe(first.Id); + } +} diff --git a/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs b/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs index 64ce9d5783..5031284225 100644 --- a/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs @@ -26,6 +26,7 @@ private void AssertSnapshotsAreEquivalentEqual(ProjectSnapshot expected, Project .WithoutStrictOrderingFor(x => x.SemanticDomains) .WithoutStrictOrderingFor(x => x.ComplexFormTypes) .WithoutStrictOrderingFor(x => x.MorphTypes) + .WithoutStrictOrderingFor(x => x.VariantTypes) ); } diff --git a/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs index 4e232f4e2b..d3c283d28f 100644 --- a/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs +++ b/backend/FwLite/LcmCrdt/Changes/Entries/AddVariantChange.cs @@ -84,30 +84,40 @@ public override async ValueTask NewEntity(Commit commit, IChangeContext private static async ValueTask CreatesReferenceCycleOrDuplicate(Variant parent, IChangeContext context) { if (parent.VariantEntryId == parent.MainEntryId) return true; - //used to avoid checking the same Variant multiple times - HashSet visited = [parent.Id]; - Queue queue = new Queue(); - queue.Enqueue(parent); + await foreach (var o in context.GetObjectsReferencing(parent.VariantEntryId)) + { + if (o is not Variant v) continue; + if (v.DeletedAt is not null) continue; + if (v.Id == parent.Id) continue; + var duplicate = v.VariantEntryId == parent.VariantEntryId && + v.MainEntryId == parent.MainEntryId && + v.MainSenseId == parent.MainSenseId; + if (duplicate) return true; + } + + //LCM enforces acyclicity over the COMBINED complex-form + variant component graph + //(LexEntryRef.ValidateAddObjectInternal → LexEntry.AllComponents), so mirror that: + //walk everything the main entry depends on through both link types; if the variant + //entry is reachable, this link would close a cycle FLEx rejects + HashSet visited = []; + Queue queue = new(); + queue.Enqueue(parent.MainEntryId); while (queue.Count > 0) { - var current = queue.Dequeue(); - if (current.VariantEntryId == parent.MainEntryId) return true; - await foreach (var o in context.GetObjectsReferencing(current.VariantEntryId)) + var entryId = queue.Dequeue(); + if (entryId == parent.VariantEntryId) return true; + if (!visited.Add(entryId)) continue; + await foreach (var o in context.GetObjectsReferencing(entryId)) { - if (o is not Variant v) continue; - if (v.DeletedAt is not null) continue; - if (visited.Contains(v.Id)) continue; - if (current == parent) + switch (o) { - var duplicate = v.VariantEntryId == parent.VariantEntryId && - v.MainEntryId == parent.MainEntryId && - v.MainSenseId == parent.MainSenseId; - if (duplicate) return true; + case Variant v when v.DeletedAt is null && v.VariantEntryId == entryId: + queue.Enqueue(v.MainEntryId); + break; + case ComplexFormComponent cfc when cfc.DeletedAt is null && cfc.ComplexFormEntryId == entryId: + queue.Enqueue(cfc.ComponentEntryId); + break; } - - if (v.VariantEntryId == parent.MainEntryId) return true; - queue.Enqueue(v); - visited.Add(v.Id); } } return false; diff --git a/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs b/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs index 71a884d72e..096dadb867 100644 --- a/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs +++ b/backend/FwLite/MiniLcm.Tests/AutoFakerHelpers/EntryFakerHelper.cs @@ -10,11 +10,12 @@ public static async Task EntryReadyForCreation(this AutoFaker autoFaker, bool createComplexForms = true, bool createComplexFormTypes = true, bool createComponents = true, - bool createPublications = true) + bool createPublications = true, + bool createVariants = true) { var entry = autoFaker.Generate(); if (entryId.HasValue) entry.Id = entryId.Value; - await PrepareToCreateEntry(api, entry, createComplexForms, createComplexFormTypes, createComponents, createPublications); + await PrepareToCreateEntry(api, entry, createComplexForms, createComplexFormTypes, createComponents, createPublications, createVariants); return entry; } @@ -27,12 +28,23 @@ public static async Task PrepareToCreateEntry( bool createComplexForms = true, bool createComplexFormTypes = true, bool createComponents = true, - bool createPublications = true) + bool createPublications = true, + bool createVariants = true) { if (createComponents) await CreateComplexFormComponentEntry(entry, true, entry.Components, api); if (createComplexForms) await CreateComplexFormComponentEntry(entry, false, entry.ComplexForms, api); if (createComplexFormTypes) await CreateComplexFormTypes(entry.ComplexFormTypes, api); if (createPublications) await CreatePublications(entry.PublishIn, api); + if (createVariants) + { + await CreateVariantLinkEntry(entry, isVariantOf: true, entry.VariantOf, api); + await CreateVariantLinkEntry(entry, isVariantOf: false, entry.Variants, api); + } + else + { + entry.VariantOf.Clear(); + entry.Variants.Clear(); + } foreach (var sense in entry.Senses) { @@ -130,6 +142,52 @@ private static async Task CreateComplexFormComponentEntry(Entry entry, } } + private static async Task CreateVariantLinkEntry(Entry entry, + bool isVariantOf, + IList variants, + IMiniLcmApi api) + { + int i = 1; + foreach (var variant in variants) + { + //generated entries won't have the expected ids, so fix them up here + if (isVariantOf) + { + variant.VariantEntryId = entry.Id; + } + else + { + variant.MainEntryId = entry.Id; + } + //generated sense ids don't reference real senses; targeting the entry is enough here + variant.MainSenseId = null; + + foreach (var variantType in variant.Types) + { + if (await api.GetVariantType(variantType.Id) is null) + await api.CreateVariantType(variantType); + } + + var name = $"test {(isVariantOf ? "main" : "variant")} entry {i}"; + var createdEntry = await api.CreateEntry(new() + { + Id = isVariantOf ? variant.MainEntryId : variant.VariantEntryId, + LexemeForm = { { "en", name } }, + }); + if (isVariantOf) + { + variant.MainHeadword = createdEntry.Headword(); + variant.VariantHeadword = entry.Headword(); + } + else + { + variant.VariantHeadword = createdEntry.Headword(); + variant.MainHeadword = entry.Headword(); + } + i++; + } + } + private static async Task CreateComplexFormTypes(IList complexFormTypes, IMiniLcmApi api) { foreach (var complexFormType in complexFormTypes) diff --git a/backend/FwLite/MiniLcm.Tests/Validators/VariantTypeValidationTests.cs b/backend/FwLite/MiniLcm.Tests/Validators/VariantTypeValidationTests.cs new file mode 100644 index 0000000000..57ee87f7cc --- /dev/null +++ b/backend/FwLite/MiniLcm.Tests/Validators/VariantTypeValidationTests.cs @@ -0,0 +1,44 @@ +using FluentValidation.TestHelper; +using MiniLcm.Validators; + +namespace MiniLcm.Tests.Validators; + +public class VariantTypeValidationTests +{ + private readonly VariantTypeValidator _validator = new(); + + [Fact] + public void FailsForEmptyName() + { + var variantType = new VariantType() { Name = new MultiString() }; + _validator.TestValidate(variantType).ShouldHaveValidationErrorFor(c => c.Name); + } + + [Fact] + public void FailsForNameWithEmptyStringValue() + { + var variantType = new VariantType() { Name = new() { { "en", string.Empty } } }; + _validator.TestValidate(variantType).ShouldHaveValidationErrorFor(c => c.Name); + } + + [Fact] + public void FailsForNonNullDeletedAt() + { + var variantType = new VariantType() + { + Name = new() { { "en", "test" } }, DeletedAt = DateTimeOffset.UtcNow + }; + _validator.TestValidate(variantType).ShouldHaveValidationErrorFor(c => c.DeletedAt); + } + + [Fact] + public void Succeeds() + { + var variantType = new VariantType() + { + Name = new() { { "en", "test" } }, + DeletedAt = null + }; + _validator.TestValidate(variantType).ShouldNotHaveAnyValidationErrors(); + } +} diff --git a/backend/FwLite/MiniLcm.Tests/Validators/VariantValidationTests.cs b/backend/FwLite/MiniLcm.Tests/Validators/VariantValidationTests.cs new file mode 100644 index 0000000000..3e4830b672 --- /dev/null +++ b/backend/FwLite/MiniLcm.Tests/Validators/VariantValidationTests.cs @@ -0,0 +1,64 @@ +using FluentValidation.TestHelper; +using MiniLcm.Validators; + +namespace MiniLcm.Tests.Validators; + +public class VariantValidationTests +{ + private readonly VariantValidator _validator = new(); + + private static Variant NewVariant() + { + return new Variant + { + Id = Guid.NewGuid(), + VariantEntryId = Guid.NewGuid(), + MainEntryId = Guid.NewGuid(), + }; + } + + [Fact] + public void Succeeds() + { + _validator.TestValidate(NewVariant()).ShouldNotHaveAnyValidationErrors(); + } + + [Fact] + public void FailsForNonNullDeletedAt() + { + var variant = NewVariant() with { DeletedAt = DateTimeOffset.UtcNow }; + _validator.TestValidate(variant).ShouldHaveValidationErrorFor(v => v.DeletedAt); + } + + [Fact] + public void FailsForSelfReference() + { + var id = Guid.NewGuid(); + var variant = NewVariant() with { VariantEntryId = id, MainEntryId = id }; + _validator.TestValidate(variant).IsValid.Should().BeFalse(); + } + + [Fact] + public void SucceedsWhenVariantEntryIdIsEmpty() + { + // nested in an entry the variant-entry side may be inferred from the parent + var variant = NewVariant() with { VariantEntryId = Guid.Empty }; + _validator.TestValidate(variant).ShouldNotHaveAnyValidationErrors(); + } + + [Fact] + public void FailsForCommentWithEmptyStringValue() + { + var variant = NewVariant(); + variant.Comment = new() { { "en", new RichString(string.Empty) } }; + _validator.TestValidate(variant).ShouldHaveValidationErrorFor(v => v.Comment); + } + + [Fact] + public void FailsForTypeWithEmptyName() + { + var variant = NewVariant(); + variant.Types = [new VariantType { Id = Guid.NewGuid(), Name = new MultiString() }]; + _validator.TestValidate(variant).IsValid.Should().BeFalse(); + } +} diff --git a/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs new file mode 100644 index 0000000000..701a05e97a --- /dev/null +++ b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs @@ -0,0 +1,381 @@ +using MiniLcm.Models; + +namespace MiniLcm.Tests; + +public abstract class VariantTestsBase : MiniLcmTestBase +{ + protected readonly Guid _mainEntryId = Guid.NewGuid(); + protected readonly Guid _variantEntryId = Guid.NewGuid(); + protected readonly Guid _mainSenseId1 = Guid.NewGuid(); + protected readonly Guid _mainSenseId2 = Guid.NewGuid(); + protected Entry _mainEntry = null!; + protected Entry _variantEntry = null!; + + public override async Task InitializeAsync() + { + await base.InitializeAsync(); + _mainEntry = await Api.CreateEntry(new() + { + Id = _mainEntryId, + LexemeForm = { { "en", "main entry" } }, + Senses = + [ + new Sense + { + Id = _mainSenseId1, + Gloss = { { "en", "main sense 1" } } + }, + new Sense + { + Id = _mainSenseId2, + Gloss = { { "en", "main sense 2" } } + } + ] + }); + // deliberately sense-less: FLEx's "Insert Variant" creates variant entries without senses + _variantEntry = await Api.CreateEntry(new() + { + Id = _variantEntryId, + LexemeForm = { { "en", "variant form" } } + }); + } + + private async Task CreateVariantType(string name = "test type") + { + return await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", name } } }); + } + + [Fact] + public async Task CreateVariant_Works() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + variant.VariantEntryId.Should().Be(_variantEntryId); + variant.MainEntryId.Should().Be(_mainEntryId); + variant.MainSenseId.Should().BeNull(); + variant.VariantHeadword.Should().Be("variant form"); + variant.MainHeadword.Should().Be("main entry"); + variant.Types.Should().BeEmpty(); + variant.HideMinorEntry.Should().BeFalse(); + variant.Comment.Should().BeEmpty(); + } + + [Fact] + public async Task CreateVariant_WithSense_Works() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + variant.MainSenseId.Should().Be(_mainSenseId1); + + // a sense-targeted link still surfaces under the owning entry's Variants + var mainEntry = await Api.GetEntry(_mainEntryId); + mainEntry!.Variants.Should().ContainSingle(v => v.VariantEntryId == _variantEntryId && v.MainSenseId == _mainSenseId1); + } + + [Fact] + public async Task CreateVariant_WithTypesCommentAndHideMinorEntry_RoundTrips() + { + var type = await CreateVariantType(); + var input = Variant.FromEntries(_variantEntry, _mainEntry) with + { + Types = [type], + HideMinorEntry = true, + Comment = new() { { "en", new RichString("originally meant something else") } }, + }; + await Api.CreateVariant(input); + + var variantEntry = await Api.GetEntry(_variantEntryId); + var link = variantEntry!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == type.Id); + link.HideMinorEntry.Should().BeTrue(); + link.Comment["en"].GetPlainText().Should().Be("originally meant something else"); + + var mainEntry = await Api.GetEntry(_mainEntryId); + var backLink = mainEntry!.Variants.Should().ContainSingle().Subject; + backLink.Types.Should().ContainSingle(t => t.Id == type.Id); + backLink.HideMinorEntry.Should().BeTrue(); + backLink.Comment["en"].GetPlainText().Should().Be("originally meant something else"); + } + + [Fact] + public async Task VariantHeadwords_UpdateWhenReferencedEntriesChange() + { + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + + var beforeVariant = _variantEntry.Copy(); + _variantEntry.LexemeForm["en"] = "renamed variant"; + await Api.UpdateEntry(beforeVariant, _variantEntry); + + var mainEntry = (await Api.GetEntry(_mainEntryId))!; + var beforeMain = mainEntry.Copy(); + mainEntry.LexemeForm["en"] = "renamed main"; + await Api.UpdateEntry(beforeMain, mainEntry); + + var link = (await Api.GetEntry(_mainEntryId))!.Variants.Should().ContainSingle().Subject; + link.VariantHeadword.Should().Be("renamed variant"); + link.MainHeadword.Should().Be("renamed main"); + } + + [Fact] + public async Task DeleteVariant_Works() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.DeleteVariant(variant); + var entries = await Api.GetEntries().ToArrayAsync(); + var variantEntry = entries.Should().ContainSingle(e => e.Id == _variantEntryId).Subject; + var mainEntry = entries.Should().ContainSingle(e => e.Id == _mainEntryId).Subject; + variantEntry.VariantOf.Should().BeEmpty(); + mainEntry.Variants.Should().BeEmpty(); + } + + [Fact] + public async Task GetEntries_Works() + { + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var entries = await Api.GetEntries().ToArrayAsync(); + var variantEntry = entries.Should().ContainSingle(e => e.Id == _variantEntryId).Subject; + var mainEntry = entries.Should().ContainSingle(e => e.Id == _mainEntryId).Subject; + variantEntry.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId); + mainEntry.Variants.Should().ContainSingle(v => v.VariantEntryId == _variantEntryId); + } + + [Fact] + public async Task VariantEntryWithoutSenses_RoundTrips() + { + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var variantEntry = await Api.GetEntry(_variantEntryId); + variantEntry.Should().NotBeNull(); + variantEntry!.Senses.Should().BeEmpty(); + variantEntry.VariantOf.Should().ContainSingle(); + } + + [Fact] + public async Task CreateVariant_UsingTheSameLinkDoesNothing() + { + var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + variant2.Should().BeEquivalentTo(variant1, options => options.ComparingByMembers().Excluding(v => v.Id)); + (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); + } + + [Fact] + public async Task CreateVariant_UsingTheSameLinkWithSenseDoesNothing() + { + var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + variant2.Should().BeEquivalentTo(variant1, options => options.ComparingByMembers().Excluding(v => v.Id)); + (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); + } + + [Fact] + public async Task CreateVariant_ReplayingReturnedObject_IsIdempotent() + { + // Sync can be interrupted and replayed, so the exact same object (including its + // internal entity ID) may be passed to CreateVariant again. + var created = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var again = await Api.CreateVariant(created); + again.Should().BeEquivalentTo(created, options => options.ComparingByMembers().Excluding(v => v.Id)); + } + + [Fact] + public async Task CreateVariant_CanTargetMultipleSensesOfSameEntry() + { + var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); + variant1.MainSenseId.Should().Be(_mainSenseId1); + var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId2)); + variant2.MainSenseId.Should().Be(_mainSenseId2); + + // ensure our sync code can handle them too + _variantEntry = (await Api.GetEntry(_variantEntryId))!; + await Api.UpdateEntry(_variantEntry, _variantEntry); + _mainEntry = (await Api.GetEntry(_mainEntryId))!; + await Api.UpdateEntry(_mainEntry, _mainEntry); + } + + [Fact] + public async Task CreateVariant_ChangingPropertyAndCreatingAgain_CreatesBoth() + { + var newMainEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "new main" } } + }); + + var input = Variant.FromEntries(_variantEntry, _mainEntry); + var first = await Api.CreateVariant(input); + first.MainEntryId.Should().Be(_mainEntryId); + + // Mutate a property on the same object and create again. + // The sync diff does this when a property changes (remove + add). + input.MainEntryId = newMainEntry.Id; + var second = await Api.CreateVariant(input); + second.MainEntryId.Should().Be(newMainEntry.Id); + + var entry = await Api.GetEntry(_variantEntryId); + entry!.VariantOf.Should().HaveCount(2); + } + + [Fact] + public async Task CreateVariant_ThrowsOnSelfReference() + { + var act = async () => await Api.CreateVariant(Variant.FromEntries(_mainEntry, _mainEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_AllowsChains() + { + // FLEx allows variant chains (a variant of a variant); we must too + var entry3 = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "entry3" } } + }); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.CreateVariant(Variant.FromEntries(entry3, _variantEntry)); + var middle = await Api.GetEntry(_variantEntryId); + middle!.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId); + middle.Variants.Should().ContainSingle(v => v.VariantEntryId == entry3.Id); + } + + [Fact] + public async Task CreateVariant_ThrowsWhenMakingA2LayerReferenceCycle() + { + // LCM rejects circular component references (LexEntryRef.ValidateAddObjectInternal), + // so both implementations must too + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + var act = async () => await Api.CreateVariant(Variant.FromEntries(_mainEntry, _variantEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_ThrowsWhenMakingA3LayerReferenceCycle() + { + var entry3 = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "entry3" } } + }); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.CreateVariant(Variant.FromEntries(_mainEntry, entry3)); + var act = async () => await Api.CreateVariant(Variant.FromEntries(entry3, _variantEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_ThrowsWhenClosingAMixedCycleThroughAComplexForm() + { + // LCM's cycle check spans the combined complex-form + variant component graph + await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(_mainEntry, _variantEntry)); + var act = async () => await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await act.Should().ThrowAsync(); + } + + [Fact] + public async Task CreateVariant_WorksWhenALinkWasDeletedWhichWouldCauseACycle() + { + var created = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.DeleteVariant(created); + var act = async () => await Api.CreateVariant(Variant.FromEntries(_mainEntry, _variantEntry)); + await act.Should().NotThrowAsync("a link was deleted which was part of the cycle"); + } + + [Fact] + public async Task UpdateVariant_SyncsTypesAndScalars() + { + var typeA = await CreateVariantType("type a"); + var typeB = await CreateVariantType("type b"); + var created = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [typeA] }); + + var after = created.Copy(); + after.Types = [typeB]; + after.HideMinorEntry = true; + after.Comment = new() { { "en", new RichString("now hidden") } }; + await Api.UpdateVariant(created, after); + + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == typeB.Id); + link.HideMinorEntry.Should().BeTrue(); + link.Comment["en"].GetPlainText().Should().Be("now hidden"); + } + + [Fact] + public async Task AddVariantType_Works() + { + var type = await CreateVariantType(); + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.AddVariantType(variant, type.Id); + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == type.Id); + } + + [Fact] + public async Task AddVariantType_IsIdempotent() + { + var type = await CreateVariantType(); + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.AddVariantType(variant, type.Id); + await Api.AddVariantType(variant, type.Id); + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == type.Id); + } + + [Fact] + public async Task RemoveVariantType_Works() + { + var type = await CreateVariantType(); + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [type] }); + await Api.RemoveVariantType(variant, type.Id); + var link = (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().BeEmpty(); + } + + [Fact] + public async Task RemoveVariantType_WorksWhenTypeIsNotOnLink() + { + var variant = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await Api.RemoveVariantType(variant, Guid.NewGuid()); + } + + [Fact] + public async Task CreateVariantType_Works() + { + var variantType = new VariantType() { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }; + await Api.CreateVariantType(variantType); + var types = await Api.GetVariantTypes().ToArrayAsync(); + types.Should().ContainSingle(t => t.Id == variantType.Id); + } + + [Fact] + public async Task UpdateVariantType_Works() + { + var variantType = new VariantType() { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }; + await Api.CreateVariantType(variantType); + var updatedVariantType = await Api.UpdateVariantType(variantType.Id, new UpdateObjectInput().Set(c => c.Name["en"], "updated")); + updatedVariantType.Name["en"].Should().Be("updated"); + } + + [Fact] + public async Task UpdateVariantTypeSync_Works() + { + var variantType = new VariantType() { Id = Guid.NewGuid(), Name = new() { { "en", "test" } } }; + await Api.CreateVariantType(variantType); + var afterVariantType = variantType with { Name = new() { { "en", "updated" } } }; + var actualVariantType = await Api.UpdateVariantType(variantType, afterVariantType); + actualVariantType.Should().BeEquivalentTo(afterVariantType, options => options.Excluding(c => c.Id)); + } + + [Fact] + public async Task EntryCanBeBothVariantAndComponent() + { + var complexFormEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "complex form" } } + }); + await Api.CreateComplexFormComponent(ComplexFormComponent.FromEntries(complexFormEntry, _variantEntry)); + await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + + var entry = await Api.GetEntry(_variantEntryId); + entry!.ComplexForms.Should().ContainSingle(c => c.ComplexFormEntryId == complexFormEntry.Id); + entry.VariantOf.Should().ContainSingle(v => v.MainEntryId == _mainEntryId); + } +} diff --git a/backend/FwLite/MiniLcm/Import/ProjectImporter.cs b/backend/FwLite/MiniLcm/Import/ProjectImporter.cs index 95cf713b52..4084505f17 100644 --- a/backend/FwLite/MiniLcm/Import/ProjectImporter.cs +++ b/backend/FwLite/MiniLcm/Import/ProjectImporter.cs @@ -6,9 +6,9 @@ namespace MiniLcm.Import; /// /// Populates from a in dependency order -/// (writing systems → parts of speech → publications → complex-form types → morph types → -/// semantic domains → entries). Both FwData→CRDT import and template-based project creation funnel -/// through here, so the ordering and the create-vs-update rules live in exactly one place. +/// (writing systems → parts of speech → publications → complex-form types → variant types → +/// morph types → semantic domains → entries). Both FwData→CRDT import and template-based project +/// creation funnel through here, so the ordering and the create-vs-update rules live in exactly one place. /// public class ProjectImporter(ILogger logger) { @@ -39,6 +39,13 @@ public async Task ImportProject(IMiniLcmApi importTo, ProjectSnapshot snapshot) logger.LogInformation("Imported complex form type {Id}", complexFormType.Id); } + logger.LogInformation("Importing {Count} variant types", snapshot.VariantTypes.Length); + foreach (var variantType in snapshot.VariantTypes) + { + await importTo.CreateVariantType(variantType); + logger.LogInformation("Imported variant type {Id}", variantType.Id); + } + // Reconcile against the destination's existing morph types: MorphTypeSync updates them in place // and creates any missing, but rejects removals — canonical morph types can't be deleted. logger.LogInformation("Importing/Syncing {Count} morph types", snapshot.MorphTypes.Length); diff --git a/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs b/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs index e6165321c4..02bc3fa560 100644 --- a/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs +++ b/backend/FwLite/MiniLcm/MiniLcmApiExtensions.cs @@ -18,6 +18,7 @@ await api.GetPublications().ToArrayAsync(), await api.GetSemanticDomains().ToArrayAsync(), await api.GetComplexFormTypes().ToArrayAsync(), await api.GetMorphTypes().ToArrayAsync(), + await api.GetVariantTypes().ToArrayAsync(), await api.GetWritingSystems()); } } diff --git a/backend/FwLite/MiniLcm/ProjectSnapshot.cs b/backend/FwLite/MiniLcm/ProjectSnapshot.cs index f6c880fe76..95ae5f8920 100644 --- a/backend/FwLite/MiniLcm/ProjectSnapshot.cs +++ b/backend/FwLite/MiniLcm/ProjectSnapshot.cs @@ -9,7 +9,11 @@ public record ProjectSnapshot( SemanticDomain[] SemanticDomains, ComplexFormType[] ComplexFormTypes, MorphType[] MorphTypes, + VariantType[] VariantTypes, WritingSystems WritingSystems) { - public static ProjectSnapshot Empty { get; } = new([], [], [], [], [], [], new WritingSystems()); + public static ProjectSnapshot Empty { get; } = new([], [], [], [], [], [], [], new WritingSystems()); + + //snapshots and templates serialized before variant support deserialize this as null + public VariantType[] VariantTypes { get; init; } = VariantTypes ?? []; } diff --git a/backend/FwLite/MiniLcm/Validators/VariantValidator.cs b/backend/FwLite/MiniLcm/Validators/VariantValidator.cs index 43fe4d7eb2..f03f2799e4 100644 --- a/backend/FwLite/MiniLcm/Validators/VariantValidator.cs +++ b/backend/FwLite/MiniLcm/Validators/VariantValidator.cs @@ -8,6 +8,11 @@ internal class VariantValidator : AbstractValidator public VariantValidator() { RuleFor(v => v.DeletedAt).Null(); + //one endpoint may be an empty guid when nested in an entry (inferred from the parent), + //so only reject self-reference when both are set + RuleFor(v => v) + .Must(v => v.VariantEntryId == Guid.Empty || v.VariantEntryId != v.MainEntryId) + .WithMessage(v => $"Variant {GetIdentifier(v)} must not be a variant of itself."); RuleFor(v => v.Comment).NoEmptyValues(GetIdentifier).NoDefaultWritingSystems(GetIdentifier); RuleForEach(v => v.Types).SetValidator(new VariantTypeValidator()); } diff --git a/backend/FwLite/VARIANTS.md b/backend/FwLite/VARIANTS.md index 5a5883d9f2..df4c93050b 100644 --- a/backend/FwLite/VARIANTS.md +++ b/backend/FwLite/VARIANTS.md @@ -7,12 +7,20 @@ dev/agent can pick up the work mid-stream. Update the **Status** section as step - [x] Exploration (complex-forms blueprint, liblcm variant model, viewer UI) - [x] Design review with Tim (2026-07-03): per-link model confirmed, naming settled -- [ ] Step 1 — MiniLcm model, CRDT change types, both API implementations, conformance tests -- [ ] Step 2 — FwData↔CRDT project sync (orchestration, snapshot, round-trip tests) +- [~] Step 1 — model, changes, both APIs, sync orchestration, conformance tests + (in progress: conformance suites green both sides; chasing fallout in broader + LcmCrdt.Tests run) +- [ ] Step 2 — sync round-trip test suite, upgrade tests, Sena3 + verified regens - [ ] Step 3 — Viewer UI (fields, picker, i18n, Playwright) Branches are stacked: `feat/variants-model` ← `feat/variants-sync` ← `feat/variants-ui`. +**Boundary change vs the original plan**: the sync/import orchestration +(`VariantTypeSync` in `SyncInternal`, `ProjectSnapshot.VariantTypes`, `ProjectImporter` +variant-type loop, `ResumableImportApi` caching) moved INTO step 1 — the moment the FwData +bridge reads variants, importing a variant-containing project crashes unless variant types +are imported before entries, so a "model-only" PR can't be green against real projects. + ## The LCM model (authority: liblcm) A variant relationship is a `LexEntryRef` **owned by the variant (minor) entry** @@ -105,9 +113,13 @@ public record Variant : IObjectWithId This is what makes concurrent type edits merge instead of last-writer-wins. 6. **No ordering.** Variant lists have no user-meaningful order in FLEx; both directions diff as sets. No `IOrderable`, no `SetOrderChange`, no Move API. -7. **Cycle/duplicate guard mirrors `AddEntryComponentChange`** — lives in the *change class* - (soft-deletes instead of throwing, because sync must tolerate incoming duplicates); - validator only rejects self-reference cheaply. Don't duplicate the BFS in validators. +7. **Only self-reference and duplicates are rejected — NOT chains or cycles.** This + deliberately diverges from complex forms' BFS cycle guard: FLEx itself allows variant + chains and cycles (`MakeVariantOf` has no cycle check, unlike complex-form components), + and FwLite never traverses variant links recursively, so rejecting shapes FLEx data can + contain would make sync diverge permanently. The duplicate guard lives in + `AddVariantChange` (soft-delete, sync-tolerant); self-reference is rejected by + `VariantValidator` in the validation wrapper (consistent across both implementations). 8. **Deleted `VariantType` cleanup**: `Variant.GetReferences()` includes its `Types` ids, and `RemoveReference` removes the type from the list (only endpoint ids soft-delete the link). Better than the complex-forms quirk where deleted types linger in `Entry.ComplexFormTypes`. From 62dd4807c4c29277359cf02d757503e8c05c7c73 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 14:01:03 +0200 Subject: [PATCH 03/10] Add variant fields to viewer entry factories and demo data Co-Authored-By: Claude Fable 5 --- frontend/viewer/src/lib/utils.ts | 2 ++ frontend/viewer/src/project/demo/demo-entry-data.ts | 6 ++++-- .../entity-primitives/entry-editor-primitive.stories.svelte | 2 ++ frontend/viewer/tests/entry-api-helper.ts | 4 ++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/viewer/src/lib/utils.ts b/frontend/viewer/src/lib/utils.ts index 55ccdacd9f..9e2c201945 100644 --- a/frontend/viewer/src/lib/utils.ts +++ b/frontend/viewer/src/lib/utils.ts @@ -44,6 +44,8 @@ export function defaultEntry(): IEntry { complexForms: [], complexFormTypes: [], components: [], + variantOf: [], + variants: [], publishIn: [], morphType: MorphTypeKind.Stem, homographNumber: 0, diff --git a/frontend/viewer/src/project/demo/demo-entry-data.ts b/frontend/viewer/src/project/demo/demo-entry-data.ts index 787da7cb05..02af4eadc2 100644 --- a/frontend/viewer/src/project/demo/demo-entry-data.ts +++ b/frontend/viewer/src/project/demo/demo-entry-data.ts @@ -207,7 +207,7 @@ export const _entries: IEntry[] = [ 'exampleSentences': [] } ], 'note': {}, - complexForms: [], complexFormTypes: [], components: [], publishIn: [], + complexForms: [], complexFormTypes: [], components: [], variantOf: [], variants: [], publishIn: [], homographNumber: 0, }, { @@ -277,6 +277,8 @@ export const _entries: IEntry[] = [ complexForms: [], complexFormTypes: [], components: [], + variantOf: [], + variants: [], publishIn: [], homographNumber: 0, }, @@ -321,7 +323,7 @@ export const allWsEntry: IEntry = { }], }], note: {}, - complexForms: [], complexFormTypes: [], components: [], publishIn: [], + complexForms: [], complexFormTypes: [], components: [], variantOf: [], variants: [], publishIn: [], homographNumber: 0, }; diff --git a/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte b/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte index fda6e8d5fd..695c8f09c7 100644 --- a/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte +++ b/frontend/viewer/src/stories/editor/entity-primitives/entry-editor-primitive.stories.svelte @@ -40,6 +40,8 @@ complexForms: [], complexFormTypes: [], components: [], + variantOf: [], + variants: [], publishIn: [], senses: [], morphType: MorphTypeKind.Stem, diff --git a/frontend/viewer/tests/entry-api-helper.ts b/frontend/viewer/tests/entry-api-helper.ts index 485cfe1164..3d4917d01b 100644 --- a/frontend/viewer/tests/entry-api-helper.ts +++ b/frontend/viewer/tests/entry-api-helper.ts @@ -79,6 +79,8 @@ export class EntryApiHelper { components: [], complexForms: [], complexFormTypes: [], + variantOf: [], + variants: [], publishIn: [], homographNumber: 0, }; @@ -101,6 +103,8 @@ export class EntryApiHelper { components: [], complexForms: [], complexFormTypes: [], + variantOf: [], + variants: [], publishIn: [], homographNumber: 0, }; From 5ead7d35b4344f245a9b22e827283abafaffb73b Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 14:15:07 +0200 Subject: [PATCH 04/10] Seed standard variant types in the blank project template Regenerated via ProjectTemplateTests.GenerateTemplate; new CRDT projects get the 7 standard FLEx variant types (well-known guids), matching FieldWorks. Co-Authored-By: Claude Fable 5 --- ...ScriptedDb.v1.ProjectSnapshot.verified.txt | 4 +- ...ScriptedDb.v2.ProjectSnapshot.verified.txt | 4 +- .../Templates/blank-project-template.json | 57 ++++++++++++++++++- .../MiniLcm.Tests/FluentAssertGlobalConfig.cs | 2 +- .../FwLite/MiniLcm.Tests/VariantTestsBase.cs | 6 +- 5 files changed, 62 insertions(+), 11 deletions(-) diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt index 64a5a30f0b..10b9e90d11 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v1.ProjectSnapshot.verified.txt @@ -168,7 +168,6 @@ } ], "MorphTypes": [], - "VariantTypes": [], "WritingSystems": { "Analysis": [ { @@ -254,5 +253,6 @@ "Order": 0 } ] - } + }, + "VariantTypes": [] } \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt index 493e75ff38..4eea61e35a 100644 --- a/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt +++ b/backend/FwLite/LcmCrdt.Tests/Data/MigrationTests_FromScriptedDb.v2.ProjectSnapshot.verified.txt @@ -496,7 +496,6 @@ } ], "MorphTypes": [], - "VariantTypes": [], "WritingSystems": { "Analysis": [ { @@ -742,5 +741,6 @@ "Order": 3 } ] - } + }, + "VariantTypes": [] } \ No newline at end of file diff --git a/backend/FwLite/LcmCrdt/Templates/blank-project-template.json b/backend/FwLite/LcmCrdt/Templates/blank-project-template.json index 1958dfe164..6b08a17f7f 100644 --- a/backend/FwLite/LcmCrdt/Templates/blank-project-template.json +++ b/backend/FwLite/LcmCrdt/Templates/blank-project-template.json @@ -16739,8 +16739,8 @@ "WritingSystems": { "Analysis": [ { - "Id": "e15928c1-48ce-439c-bbf7-f23457718d72", - "MaybeId": "e15928c1-48ce-439c-bbf7-f23457718d72", + "Id": "53f7afa3-13c7-4c07-a9e4-038912170095", + "MaybeId": "53f7afa3-13c7-4c07-a9e4-038912170095", "WsId": "en", "IsAudio": false, "Name": "en", @@ -16780,5 +16780,56 @@ } ], "Vernacular": [] - } + }, + "VariantTypes": [ + { + "Id": "3942addb-99fd-43e9-ab7d-99025ceb0d4e", + "Name": { + "en": "Unspecified Variant" + }, + "DeletedAt": null + }, + { + "Id": "024b62c9-93b3-41a0-ab19-587a0030219a", + "Name": { + "en": "Dialectal Variant" + }, + "DeletedAt": null + }, + { + "Id": "4343b1ef-b54f-4fa4-9998-271319a6d74c", + "Name": { + "en": "Free Variant" + }, + "DeletedAt": null + }, + { + "Id": "01d4fbc1-3b0c-4f52-9163-7ab0d4f4711c", + "Name": { + "en": "Irregularly Inflected Form" + }, + "DeletedAt": null + }, + { + "Id": "a32f1d1c-4832-46a2-9732-c2276d6547e8", + "Name": { + "en": "Plural" + }, + "DeletedAt": null + }, + { + "Id": "837ebe72-8c1d-4864-95d9-fa313c499d78", + "Name": { + "en": "Past" + }, + "DeletedAt": null + }, + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant" + }, + "DeletedAt": null + } + ] } \ No newline at end of file diff --git a/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs b/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs index c8b247b304..a71382a606 100644 --- a/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs +++ b/backend/FwLite/MiniLcm.Tests/FluentAssertGlobalConfig.cs @@ -14,7 +14,7 @@ public static void Initialize() //however that will result in very poor error messages, so we override it .ComparingByMembers() .ComparingByMembers() - .Excluding(m => (m.DeclaringType == typeof(ComplexFormComponent) || m.DeclaringType == typeof(WritingSystem)) + .Excluding(m => (m.DeclaringType == typeof(ComplexFormComponent) || m.DeclaringType == typeof(Variant) || m.DeclaringType == typeof(WritingSystem)) && (m.Name == nameof(ComplexFormComponent.Id) || m.Name == nameof(ComplexFormComponent.MaybeId))) //Shadow query-rewrite targets — domain state lives on the underlying collection. .Excluding(m => (m.DeclaringType == typeof(Entry) && m.Name == nameof(Entry.PublishInRows)) diff --git a/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs index 701a05e97a..6f6f616e8c 100644 --- a/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs +++ b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs @@ -152,7 +152,7 @@ public async Task CreateVariant_UsingTheSameLinkDoesNothing() { var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); - variant2.Should().BeEquivalentTo(variant1, options => options.ComparingByMembers().Excluding(v => v.Id)); + variant2.Should().BeEquivalentTo(variant1); (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); } @@ -161,7 +161,7 @@ public async Task CreateVariant_UsingTheSameLinkWithSenseDoesNothing() { var variant1 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); var variant2 = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, _mainSenseId1)); - variant2.Should().BeEquivalentTo(variant1, options => options.ComparingByMembers().Excluding(v => v.Id)); + variant2.Should().BeEquivalentTo(variant1); (await Api.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); } @@ -172,7 +172,7 @@ public async Task CreateVariant_ReplayingReturnedObject_IsIdempotent() // internal entity ID) may be passed to CreateVariant again. var created = await Api.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); var again = await Api.CreateVariant(created); - again.Should().BeEquivalentTo(created, options => options.ComparingByMembers().Excluding(v => v.Id)); + again.Should().BeEquivalentTo(created); } [Fact] From b30eb58de2a5bff833c627bbb66aa372e6ef01d8 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 14:43:32 +0200 Subject: [PATCH 05/10] Sync variants FwData<->CRDT: round-trip tests, import fast path, Sena3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Variant lists sort by composite key on both sides (deterministic, culture-free); BulkCreateEntries emits variant links; regenerated Sena3 live db + snapshots — sena-3's real variants (custom Pronunciation Variant type) now round-trip. Co-Authored-By: Claude Fable 5 --- .../Api/FwDataMiniLcmApi.cs | 6 +- .../FwLiteProjectSync.Tests/EntrySyncTests.cs | 9 + .../Import/ResumableTests.cs | 6 + .../sena-3_snapshot.2026-06-18.verified.txt | 2927 ++++++++++++++- .../UpdateDiffTests.cs | 2 + .../VariantSyncTests.cs | 316 ++ .../sena-3-live.verified.sqlite | Bin 11436032 -> 11436032 bytes .../sena-3-live_snapshot.verified.txt | 3150 ++++++++++++++++- .../Services/MiniLcmJsInvokable.cs | 42 + backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs | 12 + backend/FwLite/LcmCrdt/QueryHelpers.cs | 23 +- backend/FwLite/MiniLcm/Models/Variant.cs | 17 + .../Services/IMiniLcmJsInvokable.ts | 8 + frontend/viewer/src/project/data/index.ts | 1 + .../viewer/src/project/data/variant-types.ts | 10 + 15 files changed, 6504 insertions(+), 25 deletions(-) create mode 100644 backend/FwLite/FwLiteProjectSync.Tests/VariantSyncTests.cs create mode 100644 frontend/viewer/src/project/data/variant-types.ts diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs index 577190511c..670d205b5a 100644 --- a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs @@ -794,7 +794,8 @@ private IEnumerable ToVariantOf(ILexEntry entry) ILexSense mainSense => ToVariant(entry, r, mainSense.Entry, mainSense), _ => throw new NotSupportedException($"object type {o.ClassName} not supported") }) - .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)); + .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)) + .Order(Variant.VariantOfOrder); } private IEnumerable ToVariants(ILexEntry entry) @@ -806,7 +807,8 @@ private IEnumerable ToVariants(ILexEntry entry) sense.VariantFormEntryBackRefs.Select(r => ToVariant(r.OwningEntry, r, entry, sense))) } .SelectMany(v => v) - .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)); + .DistinctBy(v => (v.VariantEntryId, v.MainEntryId, v.MainSenseId)) + .Order(Variant.VariantsOrder); } private Variant ToVariant(ILexEntry variantEntry, ILexEntryRef variantRef, ILexEntry mainEntry, ILexSense? mainSense) diff --git a/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs index e204582aeb..3435128a85 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs @@ -370,6 +370,15 @@ public async Task CanSyncRandomEntries(ApiType? roundTripApiType) options = options .For(e => e.Components).Exclude(c => c.ComplexFormHeadword) .For(e => e.ComplexForms).Exclude(c => c.ComponentHeadword); + // both apis sort variant links by composite key, not the order the expected object was built in; + // headwords are derived on read like the complex-form ones above (see VariantTestsBase) + options = options + .WithoutStrictOrderingFor(e => e.VariantOf) + .WithoutStrictOrderingFor(e => e.Variants) + .For(e => e.VariantOf).Exclude(v => v.VariantHeadword) + .For(e => e.VariantOf).Exclude(v => v.MainHeadword) + .For(e => e.Variants).Exclude(v => v.VariantHeadword) + .For(e => e.Variants).Exclude(v => v.MainHeadword); if (currentApiType == ApiType.FwData) { // does not support changing MorphType yet (see UpdateEntryProxy.MorphType) diff --git a/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs index 7bb31a7e67..127a4d9cd2 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/Import/ResumableTests.cs @@ -82,6 +82,12 @@ public async Task ImportProject_IsResumable_AcrossRandomFailures() Id = Guid.NewGuid(), Name = new(){ ["en"] = "Test Complex Form Type" } }])); + mockFrom.Setup(f => f.GetVariantTypes()) + .Returns(MockAsyncEnumerable([new VariantType() + { + Id = Guid.NewGuid(), + Name = new(){ ["en"] = "Test Variant Type" } + }])); mockFrom.Setup(f => f.GetMorphTypes()) .Returns(MockAsyncEnumerable(expectedMorphTypes)); mockFrom.Setup(f => f.GetSemanticDomains()) diff --git a/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt b/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt index 37f9fde0ec..a2568e6031 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt +++ b/backend/FwLite/FwLiteProjectSync.Tests/Snapshots/sena-3_snapshot.2026-06-18.verified.txt @@ -98,6 +98,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -238,6 +240,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -313,6 +317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -477,6 +483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -528,6 +536,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -579,6 +589,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -662,6 +674,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -713,6 +727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -764,6 +780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -872,6 +890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -915,6 +935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -966,6 +988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1076,6 +1100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1163,6 +1189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1214,6 +1242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1265,6 +1295,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1332,6 +1364,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1383,6 +1417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1434,6 +1470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1485,6 +1523,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1578,6 +1618,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1658,6 +1700,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1728,6 +1772,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1815,6 +1861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1878,6 +1926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1964,6 +2014,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2051,6 +2103,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2171,6 +2225,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2262,6 +2318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2347,6 +2405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2425,6 +2485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2476,6 +2538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2571,6 +2635,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2651,6 +2717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2719,6 +2787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2780,6 +2850,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2943,6 +3015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3021,6 +3095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3089,6 +3165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3157,6 +3235,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3218,6 +3298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3281,6 +3363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3358,6 +3442,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3476,6 +3562,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3547,6 +3635,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3632,6 +3722,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3700,6 +3792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3785,6 +3879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3848,6 +3944,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3928,6 +4026,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4023,6 +4123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4084,6 +4186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4216,6 +4320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4320,6 +4426,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4466,6 +4574,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4551,6 +4661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4612,6 +4724,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4673,6 +4787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4733,6 +4849,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4810,6 +4928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4895,6 +5015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4975,6 +5097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5035,6 +5159,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5096,6 +5222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5147,6 +5275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5217,6 +5347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5352,6 +5484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5505,6 +5639,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5568,6 +5704,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5631,6 +5769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5703,6 +5843,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5771,6 +5913,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5832,6 +5976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6001,6 +6147,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6094,6 +6242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6166,6 +6316,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6267,6 +6419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6370,6 +6524,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6438,6 +6594,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6501,6 +6659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6613,6 +6773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6730,6 +6892,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6809,6 +6973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6902,6 +7068,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6979,6 +7147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7073,6 +7243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7136,6 +7308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7222,6 +7396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7275,6 +7451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7360,6 +7538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7430,6 +7610,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7523,6 +7705,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7632,6 +7816,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7711,6 +7897,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7774,6 +7962,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7851,6 +8041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7914,6 +8106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7984,6 +8178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8035,6 +8231,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8105,6 +8303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8158,6 +8358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8201,6 +8403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8302,6 +8506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8382,6 +8588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8452,6 +8660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8532,6 +8742,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8602,6 +8814,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8672,6 +8886,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8742,6 +8958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8812,6 +9030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8899,6 +9119,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8950,6 +9172,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9051,6 +9275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9114,6 +9340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9184,6 +9412,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9325,6 +9555,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9429,6 +9661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9492,6 +9726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9562,6 +9798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9625,6 +9863,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9688,6 +9928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9751,6 +9993,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9804,6 +10048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9872,6 +10118,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9935,6 +10183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9998,6 +10248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10060,6 +10312,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10152,6 +10406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10222,6 +10478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10292,6 +10550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10377,6 +10637,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10440,6 +10702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10510,6 +10774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10587,6 +10853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10674,6 +10942,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10737,6 +11007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10800,6 +11072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10938,6 +11212,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11047,6 +11323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11098,6 +11376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11209,6 +11489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11289,6 +11571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11369,6 +11653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11441,6 +11727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11504,6 +11792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11567,6 +11857,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11630,6 +11922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11693,6 +11987,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11765,6 +12061,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11835,6 +12133,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11886,6 +12186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11966,6 +12268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12029,6 +12333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12128,6 +12434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12179,6 +12487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12266,6 +12576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12353,6 +12665,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12416,6 +12730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12488,6 +12804,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12577,6 +12895,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12640,6 +12960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12724,6 +13046,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12802,6 +13126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12865,6 +13191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12960,6 +13288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13037,6 +13367,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13088,6 +13420,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13158,6 +13492,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13261,6 +13597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13324,6 +13662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13411,6 +13751,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13505,6 +13847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13558,6 +13902,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13628,6 +13974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13698,6 +14046,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13759,6 +14109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13899,6 +14251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13962,6 +14316,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14041,6 +14397,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14104,6 +14462,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14183,6 +14543,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14265,6 +14627,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14359,6 +14723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14446,6 +14812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14516,6 +14884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14589,6 +14959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14662,6 +15034,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14732,6 +15106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14800,6 +15176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14895,6 +15273,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14989,6 +15369,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15059,6 +15441,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15120,6 +15504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15190,6 +15576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15260,6 +15648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15313,6 +15703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15376,6 +15768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15470,6 +15864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15540,6 +15936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15610,6 +16008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15680,6 +16080,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15760,6 +16162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15839,6 +16243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15909,6 +16315,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15991,6 +16399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16067,6 +16477,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16161,6 +16573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16231,6 +16645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16282,6 +16698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16345,6 +16763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16436,6 +16856,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16530,6 +16952,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16612,6 +17036,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16740,6 +17166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16819,6 +17247,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16891,6 +17321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16951,6 +17383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17021,6 +17455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17091,6 +17527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17159,6 +17597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17219,6 +17659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17304,6 +17746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17367,6 +17811,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17454,6 +17900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17522,6 +17970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17585,6 +18035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17653,6 +18105,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17714,6 +18168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17793,6 +18249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17856,6 +18314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17941,6 +18401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18009,6 +18471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18070,6 +18534,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18123,6 +18589,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18193,6 +18661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18280,6 +18750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18371,6 +18843,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18434,6 +18908,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18485,6 +18961,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18576,6 +19054,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18654,6 +19134,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18722,6 +19204,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18833,6 +19317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18918,6 +19404,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19011,6 +19499,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19128,6 +19618,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19233,6 +19725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19301,6 +19795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19371,6 +19867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19439,6 +19937,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19507,6 +20007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19594,6 +20096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19664,6 +20168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19727,6 +20233,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19790,6 +20298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19860,6 +20370,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19963,6 +20475,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20033,6 +20547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20096,6 +20612,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20199,6 +20717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20328,6 +20848,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20420,6 +20942,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20480,6 +21004,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20566,6 +21092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20634,6 +21162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20713,6 +21243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20764,6 +21296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20834,6 +21368,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20945,6 +21481,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21008,6 +21546,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21069,6 +21609,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21130,6 +21672,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21193,6 +21737,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21244,6 +21790,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21353,6 +21901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21421,6 +21971,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21541,6 +22093,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21609,6 +22163,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21670,6 +22226,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21738,6 +22296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21801,6 +22361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21880,6 +22442,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21950,6 +22514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22120,6 +22686,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22206,6 +22774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22259,6 +22829,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22322,6 +22894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22402,6 +22976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22463,6 +23039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22531,6 +23109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22609,6 +23189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22689,6 +23271,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22774,6 +23358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22827,6 +23413,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22895,6 +23483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22958,6 +23548,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23036,6 +23628,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23127,6 +23721,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23214,6 +23810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23282,6 +23880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23369,6 +23969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23463,6 +24065,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23528,6 +24132,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23651,6 +24257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23702,6 +24310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23762,6 +24372,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23832,6 +24444,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23900,6 +24514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24042,6 +24658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24112,6 +24730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24204,6 +24824,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24272,6 +24894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24352,6 +24976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24424,6 +25050,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24511,6 +25139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24572,6 +25202,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24625,6 +25257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24678,6 +25312,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24748,6 +25384,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24801,6 +25439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24864,6 +25504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24969,6 +25611,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25051,6 +25695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25104,6 +25750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25165,6 +25813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25233,6 +25883,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25319,6 +25971,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25389,6 +26043,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25476,6 +26132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25563,6 +26221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25702,6 +26362,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25793,6 +26455,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25856,6 +26520,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25919,6 +26585,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25972,6 +26640,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26072,6 +26742,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26135,6 +26807,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26222,6 +26896,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26285,6 +26961,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26348,6 +27026,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26410,6 +27090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26496,6 +27178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26566,6 +27250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26636,6 +27322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26713,6 +27401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26847,6 +27537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26898,6 +27590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26966,6 +27660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27027,6 +27723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27114,6 +27812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27194,6 +27894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27262,6 +27964,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27315,6 +28019,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27395,6 +28101,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27488,6 +28196,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27558,6 +28268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27621,6 +28333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27691,6 +28405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27771,6 +28487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27859,6 +28577,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27946,6 +28666,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28009,6 +28731,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28094,6 +28818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28165,6 +28891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28228,6 +28956,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28314,6 +29044,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28367,6 +29099,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28430,6 +29164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28525,6 +29261,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28612,6 +29350,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28696,6 +29436,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28764,6 +29506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28887,6 +29631,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28988,6 +29734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29039,6 +29787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29099,6 +29849,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29169,6 +29921,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29220,6 +29974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29273,6 +30029,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29333,6 +30091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29403,6 +30163,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29456,6 +30218,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29526,6 +30290,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29594,6 +30360,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29687,6 +30455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29757,6 +30527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29809,6 +30581,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29888,6 +30662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29939,6 +30715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29990,6 +30768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30041,6 +30821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30109,6 +30891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30261,6 +31045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30312,6 +31098,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30363,6 +31151,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30433,6 +31223,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30486,6 +31278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30546,6 +31340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30621,6 +31417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30672,6 +31470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30740,6 +31540,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30791,6 +31593,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30859,6 +31663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30927,6 +31733,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30978,6 +31786,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31038,6 +31848,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31089,6 +31901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31149,6 +31963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31209,6 +32025,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31356,6 +32174,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31448,6 +32268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31499,6 +32321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31567,6 +32391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31654,6 +32480,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31722,6 +32550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31783,6 +32613,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31844,6 +32676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31931,6 +32765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31994,6 +32830,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32079,6 +32917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32199,6 +33039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32260,6 +33102,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32401,6 +33245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32462,6 +33308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32554,6 +33402,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32622,6 +33472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32700,6 +33552,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32780,6 +33634,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32848,6 +33704,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32926,6 +33784,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32987,6 +33847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33057,6 +33919,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33125,6 +33989,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33193,6 +34059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33261,6 +34129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33329,6 +34199,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33406,6 +34278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33545,6 +34419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33630,6 +34506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33698,6 +34576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33771,6 +34651,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33854,6 +34736,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33922,6 +34806,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33973,6 +34859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34041,6 +34929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34173,6 +35063,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34264,6 +35156,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34325,6 +35219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34393,6 +35289,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34517,6 +35415,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34611,6 +35511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34698,6 +35600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34759,6 +35663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34894,6 +35800,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34957,6 +35865,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35098,6 +36008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35195,6 +36107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35280,6 +36194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35350,6 +36266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35445,6 +36363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35496,6 +36416,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35581,6 +36503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35649,6 +36573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35712,6 +36638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35773,6 +36701,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35859,6 +36789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35936,6 +36868,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36021,6 +36955,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36089,6 +37025,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36159,6 +37097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36231,6 +37171,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36318,6 +37260,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36411,6 +37355,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36498,6 +37444,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36566,6 +37514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36650,6 +37600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36730,6 +37682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36793,6 +37747,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36856,6 +37812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36975,6 +37933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37054,6 +38014,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37117,6 +38079,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37187,6 +38151,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37255,6 +38221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37319,6 +38287,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37380,6 +38350,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37441,6 +38413,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37502,6 +38476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37582,6 +38558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37645,6 +38623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37722,6 +38702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37775,6 +38757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37878,6 +38862,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37941,6 +38927,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38031,6 +39019,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38147,6 +39137,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38219,6 +39211,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38282,6 +39276,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38352,6 +39348,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38422,6 +39420,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38483,6 +39483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38570,6 +39572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38717,6 +39721,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38840,6 +39846,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38908,6 +39916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38959,6 +39969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39010,6 +40022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39122,6 +40136,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39317,6 +40333,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39385,6 +40403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39472,6 +40492,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39544,6 +40566,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39631,6 +40655,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39724,6 +40750,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39786,6 +40814,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39839,6 +40869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39947,6 +40979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40097,6 +41131,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40167,6 +41203,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40237,6 +41275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40300,6 +41340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40361,6 +41403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40424,6 +41468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40492,6 +41538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40585,6 +41633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40678,6 +41728,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40746,6 +41798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40825,6 +41879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40911,6 +41967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41021,6 +42079,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41081,6 +42141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41151,6 +42213,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41276,6 +42340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41370,6 +42436,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41443,6 +42511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41537,6 +42607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41621,6 +42693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41691,6 +42765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41785,6 +42861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41865,6 +42943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41928,6 +43008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41991,6 +43073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42051,6 +43135,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42131,6 +43217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42194,6 +43282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42288,6 +43378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42416,6 +43508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42479,6 +43573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42558,6 +43654,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42628,6 +43726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42698,6 +43798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42792,6 +43894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42855,6 +43959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42935,6 +44041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43015,6 +44123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43088,6 +44198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43151,6 +44263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43214,6 +44328,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43301,6 +44417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43369,6 +44487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43451,6 +44571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43519,6 +44641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43612,6 +44736,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43699,6 +44825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43779,6 +44907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43849,6 +44979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43919,6 +45051,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43989,6 +45123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44059,6 +45195,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44122,6 +45260,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44190,6 +45330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44258,6 +45400,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44345,6 +45489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44438,6 +45584,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44501,6 +45649,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44573,6 +45723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44686,6 +45838,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44803,6 +45957,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44894,6 +46050,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44964,6 +46122,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45027,6 +46187,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45115,6 +46277,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45217,6 +46381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45287,6 +46453,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45350,6 +46518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45420,6 +46590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45497,6 +46669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45558,6 +46732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45621,6 +46797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45684,6 +46862,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45744,6 +46924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45835,6 +47017,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45913,6 +47097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45976,6 +47162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46100,6 +47288,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46151,6 +47341,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46271,6 +47463,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46341,6 +47535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46404,6 +47600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46455,6 +47653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46525,6 +47725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46588,6 +47790,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46680,6 +47884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46743,6 +47949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46794,6 +48002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46845,6 +48055,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46915,6 +48127,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46994,6 +48208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47097,6 +48313,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47160,6 +48378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47230,6 +48450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47296,6 +48518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47376,6 +48600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47444,6 +48670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47567,6 +48795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47742,6 +48972,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47828,6 +49060,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47913,6 +49147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47976,6 +49212,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48037,6 +49275,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48090,6 +49330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48141,6 +49383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48202,6 +49446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48327,6 +49573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48406,6 +49654,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48469,6 +49719,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48566,6 +49818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48675,6 +49929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48738,6 +49994,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48919,6 +50177,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48987,6 +50247,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49076,6 +50338,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49160,6 +50424,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49237,6 +50503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49331,6 +50599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49425,6 +50695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49497,6 +50769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49632,6 +50906,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49692,6 +50968,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49753,6 +51031,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49821,6 +51101,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49898,6 +51180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49977,6 +51261,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50047,6 +51333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50117,6 +51405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50178,6 +51468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50241,6 +51533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50304,6 +51598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50376,6 +51672,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50494,6 +51792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50571,6 +51871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50648,6 +51950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50718,6 +52022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50779,6 +52085,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50840,6 +52148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50927,6 +52237,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51006,6 +52318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51067,6 +52381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51138,6 +52454,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51208,6 +52526,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51278,6 +52598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51348,6 +52670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51458,6 +52782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51538,6 +52864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51618,6 +52946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51705,6 +53035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51792,6 +53124,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51845,6 +53179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51915,6 +53251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51985,6 +53323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52036,6 +53376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52115,6 +53457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52195,6 +53539,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52280,6 +53626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52348,6 +53696,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52416,6 +53766,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52501,6 +53853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52571,6 +53925,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52648,6 +54004,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52737,6 +54095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52822,6 +54182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52892,6 +54254,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53022,6 +54386,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53102,6 +54468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53182,6 +54550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53250,6 +54620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53313,6 +54685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53393,6 +54767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53456,6 +54832,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53526,6 +54904,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53612,6 +54992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53732,6 +55114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53785,6 +55169,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53855,6 +55241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53918,6 +55306,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53988,6 +55378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54058,6 +55450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54137,6 +55531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54188,6 +55584,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54258,6 +55656,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54326,6 +55726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54420,6 +55822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54500,6 +55904,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54570,6 +55976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54633,6 +56041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54727,6 +56137,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54807,6 +56219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54858,6 +56272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54919,6 +56335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54989,6 +56407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55059,6 +56479,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55129,6 +56551,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55199,6 +56623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55262,6 +56688,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55341,6 +56769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55411,6 +56841,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55474,6 +56906,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55517,6 +56951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55647,6 +57083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55744,6 +57182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55814,6 +57254,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55884,6 +57326,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55954,6 +57398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56119,6 +57565,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56198,6 +57646,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56261,6 +57711,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56331,6 +57783,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56399,6 +57853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56462,6 +57918,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56515,6 +57973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56585,6 +58045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56688,6 +58150,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56758,6 +58222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56821,6 +58287,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56891,6 +58359,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56961,6 +58431,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57024,6 +58496,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57118,6 +58592,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57181,6 +58657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57244,6 +58722,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57345,6 +58825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57423,6 +58905,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57517,6 +59001,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57587,6 +59073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57681,6 +59169,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57751,6 +59241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57838,6 +59330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57908,6 +59402,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57978,6 +59474,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58048,6 +59546,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58118,6 +59618,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58197,6 +59699,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58260,6 +59764,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58330,6 +59836,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58443,6 +59951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58515,6 +60025,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58585,6 +60097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58663,6 +60177,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58741,6 +60257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58792,6 +60310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58867,6 +60387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58942,6 +60464,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59010,6 +60534,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59078,6 +60604,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59225,6 +60753,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59334,6 +60864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59503,6 +61035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59589,6 +61123,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59671,6 +61207,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59741,6 +61279,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59863,6 +61403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59943,6 +61485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60013,6 +61557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60083,6 +61629,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60146,6 +61694,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60209,6 +61759,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60329,6 +61881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60416,6 +61970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60503,6 +62059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60610,6 +62168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60690,6 +62250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60760,6 +62322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60852,6 +62416,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60922,6 +62488,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60985,6 +62553,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61064,6 +62634,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61134,6 +62706,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61212,6 +62786,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61275,6 +62851,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61338,6 +62916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61400,6 +62980,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61497,6 +63079,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61610,6 +63194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61680,6 +63266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61800,6 +63388,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61880,6 +63470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61950,6 +63542,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62013,6 +63607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62093,6 +63689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62163,6 +63761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62257,6 +63857,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62310,6 +63912,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62423,6 +64027,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62515,6 +64121,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62633,6 +64241,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62712,6 +64322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62782,6 +64394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62845,6 +64459,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62915,6 +64531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63002,6 +64620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63065,6 +64685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63128,6 +64750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63198,6 +64822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63249,6 +64875,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63312,6 +64940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63390,6 +65020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63484,6 +65116,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63554,6 +65188,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63617,6 +65253,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63704,6 +65342,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63783,6 +65423,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63853,6 +65495,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63950,6 +65594,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64046,6 +65692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64126,6 +65774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64213,6 +65863,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64283,6 +65935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64334,6 +65988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64711,6 +66367,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64773,6 +66431,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64841,6 +66501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64909,6 +66571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64993,6 +66657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65078,6 +66744,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65139,6 +66807,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65219,6 +66889,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65289,6 +66961,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65359,6 +67033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65422,6 +67098,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65492,6 +67170,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65562,6 +67242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65632,6 +67314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65702,6 +67386,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65765,6 +67451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65826,6 +67514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65889,6 +67579,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65985,6 +67677,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66046,6 +67740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66109,6 +67805,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66161,6 +67859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66229,6 +67929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66290,6 +67992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66378,6 +68082,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66455,6 +68161,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66515,6 +68223,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66566,6 +68276,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66627,6 +68339,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66695,6 +68409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66842,6 +68558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66912,6 +68630,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67046,6 +68766,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67133,6 +68855,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67266,6 +68990,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67348,6 +69074,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67418,6 +69146,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67499,6 +69229,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67550,6 +69282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67593,6 +69327,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67710,6 +69446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67763,6 +69501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67840,6 +69580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67918,6 +69660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67979,6 +69723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68056,6 +69802,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68126,6 +69874,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68220,6 +69970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68290,6 +70042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68360,6 +70114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68485,6 +70241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68570,6 +70328,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68621,6 +70381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68689,6 +70451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68757,6 +70521,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68834,6 +70600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69010,6 +70778,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69094,6 +70864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69188,6 +70960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69267,6 +71041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69335,6 +71111,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69414,6 +71192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69508,6 +71288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69627,6 +71409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69700,6 +71484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69768,6 +71554,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69838,6 +71626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69901,6 +71691,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69986,6 +71778,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70083,6 +71877,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70162,6 +71958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70230,6 +72028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70300,6 +72100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70363,6 +72165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70433,6 +72237,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70501,6 +72307,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70588,6 +72396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70656,6 +72466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70726,6 +72538,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70843,6 +72657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70995,6 +72811,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71065,6 +72883,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71144,6 +72964,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71223,6 +73045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71293,6 +73117,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71391,6 +73217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71461,6 +73289,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71522,6 +73352,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71583,6 +73415,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71677,6 +73511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71740,6 +73576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71820,6 +73658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71890,6 +73730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71960,6 +73802,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72030,6 +73874,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72121,6 +73967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72191,6 +74039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72270,6 +74120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72349,6 +74201,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72417,6 +74271,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72520,6 +74376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72581,6 +74439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72644,6 +74504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72712,6 +74574,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72784,6 +74648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72864,6 +74730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72927,6 +74795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72990,6 +74860,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73060,6 +74932,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73214,6 +75088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73282,6 +75158,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73368,6 +75246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73438,6 +75318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73501,6 +75383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73571,6 +75455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73651,6 +75537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73713,6 +75601,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73804,6 +75694,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73865,6 +75757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73928,6 +75822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74018,6 +75914,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74081,6 +75979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74144,6 +76044,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74207,6 +76109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74277,6 +76181,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74347,6 +76253,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74417,6 +76325,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74504,6 +76414,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74594,6 +76506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74683,6 +76597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74746,6 +76662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74825,6 +76743,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74895,6 +76815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75012,6 +76934,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75092,6 +77016,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75162,6 +77088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75232,6 +77160,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75295,6 +77225,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75365,6 +77297,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75435,6 +77369,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75498,6 +77434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75549,6 +77487,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75634,6 +77574,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75721,6 +77663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75808,6 +77752,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75878,6 +77824,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75939,6 +77887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76024,6 +77974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76094,6 +78046,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76157,6 +78111,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76227,6 +78183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76290,6 +78248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76360,6 +78320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76453,6 +78415,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76516,6 +78480,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76579,6 +78545,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76656,6 +78624,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76719,6 +78689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76782,6 +78754,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76871,6 +78845,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76939,6 +78915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77007,6 +78985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77077,6 +79057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77147,6 +79129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77210,6 +79194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77278,6 +79264,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77348,6 +79336,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77411,6 +79401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77479,6 +79471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77570,6 +79564,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77633,6 +79629,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77722,6 +79720,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77775,6 +79775,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77854,6 +79856,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77945,6 +79949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78015,6 +80021,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78068,6 +80076,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78129,6 +80139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78220,6 +80232,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78298,6 +80312,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78395,6 +80411,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78492,6 +80510,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78578,6 +80598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78646,6 +80668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78732,6 +80756,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78836,6 +80862,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78925,6 +80953,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78993,6 +81023,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79063,6 +81095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79142,6 +81176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79212,6 +81248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79291,6 +81329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79359,6 +81399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79420,6 +81462,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79488,6 +81532,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79551,6 +81597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79619,6 +81667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79696,6 +81746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79764,6 +81816,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79835,6 +81889,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79903,6 +81959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79975,6 +82033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80036,6 +82096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80097,6 +82159,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80165,6 +82229,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80243,6 +82309,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80328,6 +82396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80420,6 +82490,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80481,6 +82553,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80549,6 +82623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80617,6 +82693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80668,6 +82746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80729,6 +82809,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80797,6 +82879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80868,6 +82952,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80971,6 +83057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81041,6 +83129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81109,6 +83199,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81186,6 +83278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81300,6 +83394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81370,6 +83466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81431,6 +83529,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81499,6 +83599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81586,6 +83688,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81656,6 +83760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81724,6 +83830,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81792,6 +83900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81920,6 +84030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81991,6 +84103,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82068,6 +84182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82153,6 +84269,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82238,6 +84356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82318,6 +84438,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82388,6 +84510,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82466,6 +84590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82537,6 +84663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82672,6 +84800,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82770,6 +84900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82831,6 +84963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82901,6 +85035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82969,6 +85105,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83048,6 +85186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83101,6 +85241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83169,6 +85311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83230,6 +85374,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83293,6 +85439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83356,6 +85504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83426,6 +85576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83575,6 +85727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83628,6 +85782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83715,6 +85871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83778,6 +85936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83848,6 +86008,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83911,6 +86073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83981,6 +86145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84044,6 +86210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84114,6 +86282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84267,6 +86437,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84337,6 +86509,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84407,6 +86581,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84500,6 +86676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84596,6 +86774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84666,6 +86846,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84719,6 +86901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84789,6 +86973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84874,6 +87060,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85062,6 +87250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85113,6 +87303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85215,6 +87407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85285,6 +87479,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85376,6 +87572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85482,6 +87680,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85552,6 +87752,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85629,6 +87831,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85729,6 +87933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85790,6 +87996,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85843,6 +88051,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85934,6 +88144,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85985,6 +88197,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86048,6 +88262,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86116,6 +88332,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86185,6 +88403,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86248,6 +88468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86342,6 +88564,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86433,6 +88657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86503,6 +88729,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86573,6 +88801,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86636,6 +88866,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86706,6 +88938,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86769,6 +89003,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86903,6 +89139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86996,6 +89234,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87089,6 +89329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87150,6 +89392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87218,6 +89462,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87312,6 +89558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87380,6 +89628,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87443,6 +89693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87511,6 +89763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87593,6 +89847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87644,6 +89900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87704,6 +89962,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87780,6 +90040,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87843,6 +90105,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87913,6 +90177,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87985,6 +90251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88055,6 +90323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88298,6 +90568,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88382,6 +90654,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88452,6 +90726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88520,6 +90796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88609,6 +90887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88679,6 +90959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88732,6 +91014,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88811,6 +91095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88881,6 +91167,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88951,6 +91239,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89021,6 +91311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89091,6 +91383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89195,6 +91489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89258,6 +91554,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89328,6 +91626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89398,6 +91698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89471,6 +91773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89589,6 +91893,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89652,6 +91958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89722,6 +92030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89815,6 +92125,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89885,6 +92197,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89964,6 +92278,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90034,6 +92350,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90128,6 +92446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90198,6 +92518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90266,6 +92588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90346,6 +92670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90418,6 +92744,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90481,6 +92809,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90551,6 +92881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90614,6 +92946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90687,6 +93021,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90774,6 +93110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90842,6 +93180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90946,6 +93286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91032,6 +93374,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91095,6 +93439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91158,6 +93504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91228,6 +93576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91298,6 +93648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91378,6 +93730,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91458,6 +93812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91528,6 +93884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91589,6 +93947,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91712,6 +94072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91791,6 +94153,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91938,6 +94302,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91989,6 +94355,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92066,6 +94434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92157,6 +94527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92244,6 +94616,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92324,6 +94698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92392,6 +94768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92455,6 +94833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92508,6 +94888,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92609,6 +94991,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92755,6 +95139,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92827,6 +95213,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92907,6 +95295,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92987,6 +95377,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93074,6 +95466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93175,6 +95569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93245,6 +95641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93400,6 +95798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93480,6 +95880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93571,6 +95973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93641,6 +96045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93709,6 +96115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93772,6 +96180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93840,6 +96250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93908,6 +96320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93987,6 +96401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94081,6 +96497,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94151,6 +96569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94221,6 +96641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94291,6 +96713,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94361,6 +96785,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94424,6 +96850,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94487,6 +96915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94555,6 +96985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94625,6 +97057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94695,6 +97129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94788,6 +97224,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94856,6 +97294,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94917,6 +97357,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94997,6 +97439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95050,6 +97494,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95111,6 +97557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95195,6 +97643,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95265,6 +97715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95335,6 +97787,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95405,6 +97859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95475,6 +97931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95545,6 +98003,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95617,6 +98077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95680,6 +98142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95752,6 +98216,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95848,6 +98314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95911,6 +98379,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96036,6 +98506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96097,6 +98569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96191,6 +98665,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96252,6 +98728,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96322,6 +98800,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96401,6 +98881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96488,6 +98970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96556,6 +99040,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96624,6 +99110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96675,6 +99163,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96752,6 +99242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96815,6 +99307,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96887,6 +99381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96937,6 +99433,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97005,6 +99503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97098,6 +99598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97168,6 +99670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97231,6 +99735,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97375,6 +99881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97469,6 +99977,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97532,6 +100042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97595,6 +100107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97720,6 +100234,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97806,6 +100322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97869,6 +100387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97955,6 +100475,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98025,6 +100547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98095,6 +100619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98172,6 +100698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98242,6 +100770,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98303,6 +100833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98373,6 +100905,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98443,6 +100977,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98513,6 +101049,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98583,6 +101121,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98636,6 +101176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98704,6 +101246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98774,6 +101318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98844,6 +101390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98912,6 +101460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98980,6 +101530,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99043,6 +101595,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99106,6 +101660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99176,6 +101732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99253,6 +101811,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99504,6 +102064,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99567,6 +102129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99760,6 +102324,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99828,6 +102394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100009,6 +102577,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100071,6 +102641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100134,6 +102706,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100197,6 +102771,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100250,6 +102826,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100335,6 +102913,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100411,6 +102991,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100481,6 +103063,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100544,6 +103128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100631,6 +103217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100701,6 +103289,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100771,6 +103361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100868,6 +103460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100955,6 +103549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101023,6 +103619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101084,6 +103682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101156,6 +103756,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101216,6 +103818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101303,6 +103907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101371,6 +103977,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101422,6 +104030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101494,6 +104104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101574,6 +104186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101652,6 +104266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101720,6 +104336,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101799,6 +104417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101862,6 +104482,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101925,6 +104547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102028,6 +104652,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102098,6 +104724,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102161,6 +104789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102214,6 +104844,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102331,6 +104963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102392,6 +105026,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102460,6 +105096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102521,6 +105159,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102608,6 +105248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102676,6 +105318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102737,6 +105381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102800,6 +105446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102860,6 +105508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102937,6 +105587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103029,6 +105681,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103113,6 +105767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103164,6 +105820,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103256,6 +105914,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103319,6 +105979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103370,6 +106032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103422,6 +106086,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103504,6 +106170,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103605,6 +106273,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103699,6 +106369,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103762,6 +106434,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103832,6 +106506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103912,6 +106588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103992,6 +106670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104045,6 +106725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104130,6 +106812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104183,6 +106867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104234,6 +106920,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104350,6 +107038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104485,6 +107175,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104553,6 +107245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104702,6 +107396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104765,6 +107461,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104816,6 +107514,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104901,6 +107601,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104996,6 +107698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105057,6 +107761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105125,6 +107831,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105188,6 +107896,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105258,6 +107968,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105394,6 +108106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105464,6 +108178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105534,6 +108250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105602,6 +108320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105681,6 +108401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105751,6 +108473,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105821,6 +108545,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105874,6 +108600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105946,6 +108674,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106009,6 +108739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106081,6 +108813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106192,6 +108926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106360,6 +109096,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106428,6 +109166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106551,6 +109291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106650,6 +109392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106701,6 +109445,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106801,6 +109547,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106890,6 +109638,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106960,6 +109710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107030,6 +109782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107098,6 +109852,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107166,6 +109922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107234,6 +109992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107347,6 +110107,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107424,6 +110186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107508,6 +110272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107571,6 +110337,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107639,6 +110407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107707,6 +110477,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107785,6 +110557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107871,6 +110645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107922,6 +110698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108014,6 +110792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108065,6 +110845,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108142,6 +110924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108202,6 +110986,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108255,6 +111041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108318,6 +111106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108403,6 +111193,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108454,6 +111246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108517,6 +111311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108594,6 +111390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108674,6 +111472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108760,6 +111560,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108823,6 +111625,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108891,6 +111695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108954,6 +111760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109005,6 +111813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109075,6 +111885,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109162,6 +111974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109239,6 +112053,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109290,6 +112106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109353,6 +112171,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109421,6 +112241,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109532,6 +112354,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109633,6 +112457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109718,6 +112544,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109803,6 +112631,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109890,6 +112720,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109960,6 +112792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110030,6 +112864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110100,6 +112936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110168,6 +113006,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110231,6 +113071,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110361,6 +113203,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110429,6 +113273,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110499,6 +113345,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110596,6 +113444,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110690,6 +113540,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110741,6 +113593,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110811,6 +113665,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110890,6 +113746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110984,6 +113842,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111035,6 +113895,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111098,6 +113960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111159,6 +114023,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111229,6 +114095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111309,6 +114177,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111372,6 +114242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111489,6 +114361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111561,6 +114435,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111696,6 +114572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111764,6 +114642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111834,6 +114714,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111902,6 +114784,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111970,6 +114854,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112031,6 +114917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112082,6 +114970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112143,6 +115033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112223,6 +115115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112291,6 +115185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112342,6 +115238,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112412,6 +115310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112480,6 +115380,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112564,6 +115466,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112627,6 +115531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112690,6 +115596,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112753,6 +115661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112900,6 +115810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113031,6 +115943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113110,6 +116024,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113173,6 +116089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113236,6 +116154,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113306,6 +116226,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113369,6 +116291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -130490,5 +133414,6 @@ "Order": 2 } ] - } + }, + "VariantTypes": [] } \ No newline at end of file diff --git a/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs index 7daa8468a4..bbacc49119 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/UpdateDiffTests.cs @@ -25,6 +25,8 @@ public void EntryDiffShouldUpdateAllFields() .Excluding(x => x.Components) .Excluding(x => x.ComplexForms) .Excluding(x => x.ComplexFormTypes) + .Excluding(x => x.VariantOf) + .Excluding(x => x.Variants) .Excluding(x => x.PublishIn); }); } diff --git a/backend/FwLite/FwLiteProjectSync.Tests/VariantSyncTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/VariantSyncTests.cs new file mode 100644 index 0000000000..931d28a54e --- /dev/null +++ b/backend/FwLite/FwLiteProjectSync.Tests/VariantSyncTests.cs @@ -0,0 +1,316 @@ +using FwLiteProjectSync.Tests.Fixtures; +using MiniLcm; +using MiniLcm.Models; + +namespace FwLiteProjectSync.Tests; + +public class VariantSyncTests : IClassFixture, IAsyncLifetime +{ + private readonly SyncFixture _fixture; + private readonly CrdtFwdataProjectSyncService _syncService; + + private readonly Guid _mainEntryId = Guid.NewGuid(); + private readonly Guid _variantEntryId = Guid.NewGuid(); + private Entry _mainEntry = null!; + private Entry _variantEntry = null!; + + public VariantSyncTests(SyncFixture fixture) + { + _fixture = fixture; + _syncService = _fixture.SyncService; + } + + public async Task InitializeAsync() + { + _fixture.DeleteSyncSnapshot(); + _mainEntry = await _fixture.FwDataApi.CreateEntry(new() + { + Id = _mainEntryId, + LexemeForm = { { "en", "color" } }, + Senses = + [ + new Sense { Gloss = { { "en", "colour sense" } } } + ] + }); + // sense-less on purpose — the FLEx "Insert Variant" shape + _variantEntry = await _fixture.FwDataApi.CreateEntry(new() + { + Id = _variantEntryId, + LexemeForm = { { "en", "colour" } } + }); + } + + public async Task DisposeAsync() + { + await foreach (var entry in _fixture.FwDataApi.GetAllEntries()) + { + await _fixture.FwDataApi.DeleteEntry(entry.Id); + } + foreach (var entry in await _fixture.CrdtApi.GetAllEntries().ToArrayAsync()) + { + await _fixture.CrdtApi.DeleteEntry(entry.Id); + } + _fixture.DeleteSyncSnapshot(); + } + + private async Task GetVariantType(IMiniLcmApi api, string name) + { + return (await api.GetVariantTypes().ToArrayAsync()).Single(t => t.Name["en"] == name); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantTypesSyncFwToCrdtAtProjectImport() + { + await _syncService.Import(_fixture.CrdtApi, _fixture.FwDataApi); + var fwdataVariantTypes = await _fixture.FwDataApi.GetVariantTypes().ToArrayAsync(); + var crdtVariantTypes = await _fixture.CrdtApi.GetVariantTypes().ToArrayAsync(); + fwdataVariantTypes.Should().NotBeEmpty(); + crdtVariantTypes.Should().BeEquivalentTo(fwdataVariantTypes); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task CreatingVariantInFwDataSyncsWithoutIssue() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var dialectal = await GetVariantType(fwdataApi, "Dialectal Variant"); + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with + { + Types = [dialectal], + HideMinorEntry = true, + Comment = new() { { "en", new RichString("british spelling") } }, + }); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var crdtVariantEntry = await crdtApi.GetEntry(_variantEntryId); + crdtVariantEntry.Should().NotBeNull(); + crdtVariantEntry!.Senses.Should().BeEmpty(); + var link = crdtVariantEntry.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == dialectal.Id); + link.HideMinorEntry.Should().BeTrue(); + + // Sync again, ensure no problems or changes + var secondSnapshot = await _fixture.RegenerateAndGetSnapshot(); + var secondSync = await _syncService.Sync(crdtApi, fwdataApi, secondSnapshot); + secondSync.CrdtChanges.Should().Be(0); + secondSync.FwdataChanges.Should().Be(0); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task CreatingVariantInCrdtSyncsWithoutIssue() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var spelling = await GetVariantType(crdtApi, "Spelling Variant"); + await crdtApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [spelling] }); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var fwVariantEntry = await fwdataApi.GetEntry(_variantEntryId); + fwVariantEntry.Should().NotBeNull(); + var link = fwVariantEntry!.VariantOf.Should().ContainSingle().Subject; + link.Types.Should().ContainSingle(t => t.Id == spelling.Id); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task SenseTargetedVariantWithNewSenseSyncs() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var newSense = await fwdataApi.CreateSense(_mainEntryId, new Sense { Gloss = { { "en", "new target sense" } } }); + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry, newSense.Id)); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var crdtMainEntry = await crdtApi.GetEntry(_mainEntryId); + crdtMainEntry!.Variants.Should().ContainSingle(v => v.MainSenseId == newSense.Id); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantTypesSyncBothWays() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + var fwType = new VariantType() + { + Id = Guid.NewGuid(), + Name = new() { { "en", "fw custom type" } }, + }; + await fwdataApi.CreateVariantType(fwType); + + var crdtType = new VariantType() + { + Id = Guid.NewGuid(), + Name = new() { { "en", "crdt custom type" } }, + }; + await crdtApi.CreateVariantType(crdtType); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + var crdtVariantTypes = await crdtApi.GetVariantTypes().ToArrayAsync(); + var fwdataVariantTypes = await fwdataApi.GetVariantTypes().ToArrayAsync(); + crdtVariantTypes.Should().ContainEquivalentOf(fwType); + crdtVariantTypes.Should().ContainEquivalentOf(crdtType); + fwdataVariantTypes.Should().ContainEquivalentOf(fwType); + fwdataVariantTypes.Should().ContainEquivalentOf(crdtType); + crdtVariantTypes.Should().BeEquivalentTo(fwdataVariantTypes); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantLinkEditsSyncBothWays() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + var free = await GetVariantType(fwdataApi, "Free Variant"); + var created = await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry) with { Types = [free] }); + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + // edit the same link's own fields on each side (types in FwData, scalars in CRDT) + var dialectal = await GetVariantType(fwdataApi, "Dialectal Variant"); + var fwLink = (await fwdataApi.GetEntry(_variantEntryId))!.VariantOf.Single(); + await fwdataApi.AddVariantType(fwLink, dialectal.Id); + await fwdataApi.RemoveVariantType(fwLink, free.Id); + + var crdtLink = (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Single(); + var crdtAfter = crdtLink.Copy(); + crdtAfter.HideMinorEntry = true; + crdtAfter.Comment = new() { { "en", new RichString("prefer the main entry") } }; + await crdtApi.UpdateVariant(crdtLink, crdtAfter); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + SyncTests.AssertSnapshotsAreEquivalent(await fwdataApi.TakeProjectSnapshot(), await crdtApi.TakeProjectSnapshot()); + var merged = (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle().Subject; + merged.Types.Should().ContainSingle(t => t.Id == dialectal.Id); + merged.HideMinorEntry.Should().BeTrue(); + merged.Comment["en"].GetPlainText().Should().Be("prefer the main entry"); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task DeletingMainEntryInCrdtRemovesLinkOnSync() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + await crdtApi.DeleteEntry(_mainEntryId); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + (await fwdataApi.GetEntry(_mainEntryId)).Should().BeNull(); + var fwVariantEntry = await fwdataApi.GetEntry(_variantEntryId); + fwVariantEntry.Should().NotBeNull("only the link dies, not the variant entry"); + fwVariantEntry!.VariantOf.Should().BeEmpty(); + (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Should().BeEmpty(); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task DeletingVariantEntryInFwDataRemovesLinkOnSync() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + await fwdataApi.DeleteEntry(_variantEntryId); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + (await crdtApi.GetEntry(_variantEntryId)).Should().BeNull(); + var crdtMainEntry = await crdtApi.GetEntry(_mainEntryId); + crdtMainEntry.Should().NotBeNull("only the link dies, not the main entry"); + crdtMainEntry!.Variants.Should().BeEmpty(); + (await fwdataApi.GetEntry(_mainEntryId))!.Variants.Should().BeEmpty(); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task VariantAddedInFwDataWhileMainEntryDeletedInCrdt_SyncDoesNotThrow() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + await crdtApi.DeleteEntry(_mainEntryId); + + await _syncService.Sync(crdtApi, fwdataApi, projectSnapshot); + + (await crdtApi.GetEntry(_mainEntryId)).Should().BeNull(); + (await fwdataApi.GetEntry(_mainEntryId)).Should().BeNull(); + var crdtVariantEntry = await crdtApi.GetEntry(_variantEntryId); + crdtVariantEntry.Should().NotBeNull(); + crdtVariantEntry!.VariantOf.Should().BeEmpty(); + } + + [Fact] + [Trait("Category", "Integration")] + public async Task LegacySnapshotWithoutVariantTypes_FirstSyncImportsVariantsIntoCrdt() + { + var crdtApi = _fixture.CrdtApi; + var fwdataApi = _fixture.FwDataApi; + await _syncService.Import(crdtApi, fwdataApi); + var projectSnapshot = await _fixture.RegenerateAndGetSnapshot(); + + // wipe the variants a CRDT imported before variant support would have missed; + // pre-variant snapshot json deserializes with an empty VariantTypes list + // (ProjectSnapshot normalizes the missing property) + foreach (var entry in await crdtApi.GetAllEntries().ToArrayAsync()) + { + foreach (var link in entry.VariantOf) + { + await crdtApi.DeleteVariant(link); + } + } + var legacySnapshot = projectSnapshot with + { + VariantTypes = [], + Entries = [..projectSnapshot.Entries.Select(e => StripVariants(e.Copy()))] + }; + + var fwdataVariant = await fwdataApi.CreateVariant(Variant.FromEntries(_variantEntry, _mainEntry)); + + await _syncService.Sync(crdtApi, fwdataApi, legacySnapshot); + + // FwData kept its link and the CRDT gained it + (await fwdataApi.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(); + (await crdtApi.GetEntry(_variantEntryId))!.VariantOf.Should().ContainSingle(v => v.MainEntryId == fwdataVariant.MainEntryId); + (await crdtApi.GetVariantTypes().ToArrayAsync()).Should().NotBeEmpty(); + + static Entry StripVariants(Entry entry) + { + entry.VariantOf = []; + entry.Variants = []; + return entry; + } + } +} diff --git a/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live.verified.sqlite b/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live.verified.sqlite index 55dcad0faa117e18b40dec7a63192de06b018aab..f83e3cace6a4e8f93b235fa3bbde97175a0c1dee 100644 GIT binary patch delta 41207 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 Dqq@y* delta 104164 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 SHosru_rdDHBj5S;9sfV5o@Lem diff --git a/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt b/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt index 035ac6ab5b..c3b469f4d4 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt +++ b/backend/FwLite/FwLiteProjectSync.Tests/sena-3-live_snapshot.verified.txt @@ -98,6 +98,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -238,6 +240,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -313,6 +317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -477,6 +483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -528,6 +536,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -579,6 +589,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -662,6 +674,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -713,6 +727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -764,6 +780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -872,6 +890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -915,6 +935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -966,6 +988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1076,6 +1100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1163,6 +1189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1214,6 +1242,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [ + { + "Id": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "MaybeId": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "DeletedAt": null, + "VariantEntryId": "6485b811-120d-486b-bb97-425faa9008d9", + "VariantHeadword": "inde", + "MainEntryId": "425289f4-fbcd-4644-99d7-c9417e20fa66", + "MainSenseId": null, + "MainHeadword": "ande", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1265,6 +1318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1332,6 +1387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1383,6 +1440,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1434,6 +1493,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1485,6 +1546,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1578,6 +1641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1658,6 +1723,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1728,6 +1795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1815,6 +1884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1878,6 +1949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -1964,6 +2037,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2051,6 +2126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2171,6 +2248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2262,6 +2341,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2347,6 +2428,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2425,6 +2508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2476,6 +2561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2571,6 +2658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2651,6 +2740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2719,6 +2810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2780,6 +2873,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -2943,6 +3038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3021,6 +3118,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3089,6 +3188,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3157,6 +3258,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3218,6 +3321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3281,6 +3386,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3358,6 +3465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3476,6 +3585,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3547,6 +3658,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3632,6 +3745,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3700,6 +3815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3785,6 +3902,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3848,6 +3967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -3928,6 +4049,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4023,6 +4146,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4084,6 +4209,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4216,6 +4343,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4320,6 +4449,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4466,6 +4597,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4551,6 +4684,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4612,6 +4747,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4673,6 +4810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4733,6 +4872,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4810,6 +4951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4895,6 +5038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -4975,6 +5120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5035,6 +5182,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5096,6 +5245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5147,6 +5298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5217,6 +5370,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5352,6 +5507,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5505,6 +5662,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5568,6 +5727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5631,6 +5792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5703,6 +5866,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5771,6 +5936,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -5832,6 +5999,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6001,6 +6170,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6094,6 +6265,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6166,6 +6339,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6267,6 +6442,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6370,6 +6547,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6438,6 +6617,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6501,6 +6682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6613,6 +6796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6730,6 +6915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6809,6 +6996,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6902,6 +7091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -6979,6 +7170,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7073,6 +7266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7136,6 +7331,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7222,6 +7419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7275,6 +7474,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7360,6 +7561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7430,6 +7633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7523,6 +7728,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7632,6 +7839,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7711,6 +7920,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7774,6 +7985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7851,6 +8064,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7914,6 +8129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -7984,6 +8201,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8035,6 +8254,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8105,6 +8326,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8158,6 +8381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8201,6 +8426,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8302,6 +8529,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8382,6 +8611,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8452,6 +8683,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8532,6 +8765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8602,6 +8837,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8672,6 +8909,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8742,6 +8981,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8812,6 +9053,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8899,6 +9142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -8950,6 +9195,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9051,6 +9298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9114,6 +9363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9184,6 +9435,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9325,6 +9578,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9429,6 +9684,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9492,6 +9749,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9562,6 +9821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9625,6 +9886,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9688,6 +9951,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9751,6 +10016,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9804,6 +10071,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9872,6 +10141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9935,6 +10206,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -9998,6 +10271,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10060,6 +10335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10152,6 +10429,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10222,6 +10501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10292,6 +10573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10377,6 +10660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10440,6 +10725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10510,6 +10797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10587,6 +10876,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10674,6 +10965,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10737,6 +11030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10800,6 +11095,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -10938,6 +11235,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11047,6 +11346,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11098,6 +11399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11209,6 +11512,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11289,6 +11594,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11369,6 +11676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11441,6 +11750,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11504,6 +11815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11567,6 +11880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11630,6 +11945,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11693,6 +12010,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11765,6 +12084,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11835,6 +12156,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11886,6 +12209,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -11966,6 +12291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12029,6 +12356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12128,6 +12457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12179,6 +12510,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12266,6 +12599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12353,6 +12688,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12416,6 +12753,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12488,6 +12827,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12577,6 +12918,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12640,6 +12983,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12724,6 +13069,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12802,6 +13149,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12865,6 +13214,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -12960,6 +13311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13037,6 +13390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13088,6 +13443,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13158,6 +13515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13261,6 +13620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13324,6 +13685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13411,6 +13774,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13505,6 +13870,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13558,6 +13925,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13628,6 +13997,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13698,6 +14069,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13759,6 +14132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13899,6 +14274,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -13962,6 +14339,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14041,6 +14420,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14104,6 +14485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14183,6 +14566,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14265,6 +14650,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14359,6 +14746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14446,6 +14835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14516,6 +14907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14589,6 +14982,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14662,6 +15057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14732,6 +15129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14800,6 +15199,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14895,6 +15296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -14989,6 +15392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15059,6 +15464,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15120,6 +15527,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15190,6 +15599,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15260,6 +15671,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15313,6 +15726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15376,6 +15791,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15470,6 +15887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15540,6 +15959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15610,6 +16031,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15680,6 +16103,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15760,6 +16185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15839,6 +16266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15909,6 +16338,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -15991,6 +16422,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16067,6 +16500,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16161,6 +16596,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16231,6 +16668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16282,6 +16721,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16345,6 +16786,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16436,6 +16879,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16530,6 +16975,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16612,6 +17059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16740,6 +17189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16819,6 +17270,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16891,6 +17344,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -16951,6 +17406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17021,6 +17478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17091,6 +17550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17159,6 +17620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17219,6 +17682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17304,6 +17769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17367,6 +17834,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17454,6 +17923,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17522,6 +17993,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17585,6 +18058,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17653,6 +18128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17714,6 +18191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17793,6 +18272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17856,6 +18337,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -17941,6 +18424,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18009,6 +18494,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18070,6 +18557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18123,6 +18612,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18193,6 +18684,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18280,6 +18773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18371,6 +18866,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18434,6 +18931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18485,6 +18984,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18576,6 +19077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18654,6 +19157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18722,6 +19227,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18833,6 +19340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -18918,6 +19427,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19011,6 +19522,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19128,6 +19641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19233,6 +19748,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19301,6 +19818,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19371,6 +19890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19439,6 +19960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19507,6 +20030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19594,6 +20119,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19664,6 +20191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19727,6 +20256,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19790,6 +20321,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19860,6 +20393,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -19963,6 +20498,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20033,6 +20570,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20096,6 +20635,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20199,6 +20740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20328,6 +20871,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20420,6 +20965,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20480,6 +21027,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20566,6 +21115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20634,6 +21185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20713,6 +21266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20764,6 +21319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20834,6 +21391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -20945,6 +21504,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21008,6 +21569,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21069,6 +21632,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21130,6 +21695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21193,6 +21760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21244,6 +21813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21353,6 +21924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21421,6 +21994,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21541,6 +22116,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21609,6 +22186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21670,6 +22249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21738,6 +22319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21801,6 +22384,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21880,6 +22465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -21950,6 +22537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22120,6 +22709,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22206,6 +22797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22259,6 +22852,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22322,6 +22917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22402,6 +22999,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22463,6 +23062,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22531,6 +23132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22609,6 +23212,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22689,6 +23294,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22774,6 +23381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22827,6 +23436,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22895,6 +23506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -22958,6 +23571,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23036,6 +23651,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23127,6 +23744,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23214,6 +23833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23282,6 +23903,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23369,6 +23992,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23463,6 +24088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23528,6 +24155,31 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [ + { + "Id": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "MaybeId": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "DeletedAt": null, + "VariantEntryId": "564fffa0-0aec-46ab-8d41-cbd30be82be1", + "VariantHeadword": "yenda", + "MainEntryId": "2bde7e2c-9ddc-4de0-b416-c24c0710c2fa", + "MainSenseId": null, + "MainHeadword": "enda", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23651,6 +24303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23702,6 +24356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23762,6 +24418,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23832,6 +24490,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -23900,6 +24560,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24042,6 +24704,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24112,6 +24776,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24204,6 +24870,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24272,6 +24940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24352,6 +25022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24424,6 +25096,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24511,6 +25185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24572,6 +25248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24625,6 +25303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24678,6 +25358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24748,6 +25430,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24801,6 +25485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24864,6 +25550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -24969,6 +25657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25051,6 +25741,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25104,6 +25796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25165,6 +25859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25233,6 +25929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25319,6 +26017,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25389,6 +26089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25476,6 +26178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25563,6 +26267,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25702,6 +26408,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25793,6 +26501,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25856,6 +26566,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25919,6 +26631,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -25972,6 +26686,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26072,6 +26788,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26135,6 +26853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26222,6 +26942,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26285,6 +27007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26348,6 +27072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26410,6 +27136,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26496,6 +27224,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26566,6 +27296,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26636,6 +27368,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26713,6 +27447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26847,6 +27583,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26898,6 +27636,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -26966,6 +27706,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27027,6 +27769,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27114,6 +27858,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27194,6 +27940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27262,6 +28010,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27315,6 +28065,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27395,6 +28147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27488,6 +28242,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27558,6 +28314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27621,6 +28379,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27691,6 +28451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27771,6 +28533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27859,6 +28623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -27946,6 +28712,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28009,6 +28777,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28094,6 +28864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28165,6 +28937,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28228,6 +29002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28314,6 +29090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28367,6 +29145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28430,6 +29210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28525,6 +29307,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28612,6 +29396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28696,6 +29482,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28764,6 +29552,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28887,6 +29677,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -28988,6 +29780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29039,6 +29833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29099,6 +29895,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29169,6 +29967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29220,6 +30020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29273,6 +30075,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29333,6 +30137,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29403,6 +30209,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29456,6 +30264,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29526,6 +30336,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29594,6 +30406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29687,6 +30501,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29757,6 +30573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29809,6 +30627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29888,6 +30708,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29939,6 +30761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -29990,6 +30814,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [ + { + "Id": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "MaybeId": "3b4ca7e3-ad5a-4d5c-93cd-19ddb0aa5027", + "DeletedAt": null, + "VariantEntryId": "6485b811-120d-486b-bb97-425faa9008d9", + "VariantHeadword": "inde", + "MainEntryId": "425289f4-fbcd-4644-99d7-c9417e20fa66", + "MainSenseId": null, + "MainHeadword": "ande", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30041,6 +30890,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30109,6 +30960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30261,6 +31114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30312,6 +31167,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30363,6 +31220,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30433,6 +31292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30486,6 +31347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30546,6 +31409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30621,6 +31486,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30672,6 +31539,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30740,6 +31609,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30791,6 +31662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30859,6 +31732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30927,6 +31802,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -30978,6 +31855,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31038,6 +31917,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31089,6 +31970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31149,6 +32032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31209,6 +32094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31356,6 +32243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31448,6 +32337,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31499,6 +32390,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31567,6 +32460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31654,6 +32549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31722,6 +32619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31783,6 +32682,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31844,6 +32745,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31931,6 +32834,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -31994,6 +32899,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32079,6 +32986,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32199,6 +33108,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32260,6 +33171,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32401,6 +33314,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32462,6 +33377,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32554,6 +33471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32622,6 +33541,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32700,6 +33621,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32780,6 +33703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32848,6 +33773,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32926,6 +33853,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -32987,6 +33916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33057,6 +33988,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33125,6 +34058,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33193,6 +34128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33261,6 +34198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33329,6 +34268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33406,6 +34347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33545,6 +34488,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33630,6 +34575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33698,6 +34645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33771,6 +34720,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33854,6 +34805,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33922,6 +34875,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -33973,6 +34928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34041,6 +34998,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34173,6 +35132,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34264,6 +35225,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34325,6 +35288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34393,6 +35358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34517,6 +35484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34611,6 +35580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34698,6 +35669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34759,6 +35732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34894,6 +35869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -34957,6 +35934,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35098,6 +36077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35195,6 +36176,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35280,6 +36263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35350,6 +36335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35445,6 +36432,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35496,6 +36485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35581,6 +36572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35649,6 +36642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35712,6 +36707,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35773,6 +36770,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35859,6 +36858,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -35936,6 +36937,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36021,6 +37024,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36089,6 +37094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36159,6 +37166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36231,6 +37240,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36318,6 +37329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36411,6 +37424,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36498,6 +37513,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36566,6 +37583,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36650,6 +37669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36730,6 +37751,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36793,6 +37816,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36856,6 +37881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -36975,6 +38002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37054,6 +38083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37117,6 +38148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37187,6 +38220,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37255,6 +38290,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37319,6 +38356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37380,6 +38419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37441,6 +38482,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37502,6 +38545,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37582,6 +38627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37645,6 +38692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37722,6 +38771,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37775,6 +38826,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37878,6 +38931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -37941,6 +38996,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38031,6 +39088,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38147,6 +39206,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38219,6 +39280,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38282,6 +39345,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38352,6 +39417,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38422,6 +39489,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38483,6 +39552,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38570,6 +39641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38717,6 +39790,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38840,6 +39915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38908,6 +39985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -38959,6 +40038,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39010,6 +40091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39122,6 +40205,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39317,6 +40402,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39385,6 +40472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39472,6 +40561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39544,6 +40635,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39631,6 +40724,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39724,6 +40819,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39786,6 +40883,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39839,6 +40938,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -39947,6 +41048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40097,6 +41200,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40167,6 +41272,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40237,6 +41344,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40300,6 +41409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40361,6 +41472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40424,6 +41537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40492,6 +41607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40585,6 +41702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40678,6 +41797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40746,6 +41867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40825,6 +41948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -40911,6 +42036,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41021,6 +42148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41081,6 +42210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41151,6 +42282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41276,6 +42409,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41370,6 +42505,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41443,6 +42580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41537,6 +42676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41621,6 +42762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41691,6 +42834,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41785,6 +42930,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41865,6 +43012,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41928,6 +43077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -41991,6 +43142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42051,6 +43204,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42131,6 +43286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42194,6 +43351,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42288,6 +43447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42416,6 +43577,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42479,6 +43642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42558,6 +43723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42628,6 +43795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42698,6 +43867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42792,6 +43963,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42855,6 +44028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -42935,6 +44110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43015,6 +44192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43088,6 +44267,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43151,6 +44332,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43214,6 +44397,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43301,6 +44486,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43369,6 +44556,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43451,6 +44640,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43519,6 +44710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43612,6 +44805,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43699,6 +44894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43779,6 +44976,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43849,6 +45048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43919,6 +45120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -43989,6 +45192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44059,6 +45264,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44122,6 +45329,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44190,6 +45399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44258,6 +45469,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44345,6 +45558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44438,6 +45653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44501,6 +45718,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44573,6 +45792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44686,6 +45907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44803,6 +46026,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44894,6 +46119,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -44964,6 +46191,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45027,6 +46256,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45115,6 +46346,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45217,6 +46450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45287,6 +46522,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45350,6 +46587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45420,6 +46659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45497,6 +46738,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45558,6 +46801,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45621,6 +46866,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45684,6 +46931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45744,6 +46993,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45835,6 +47086,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45913,6 +47166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -45976,6 +47231,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46100,6 +47357,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46151,6 +47410,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46271,6 +47532,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46341,6 +47604,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46404,6 +47669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46455,6 +47722,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46525,6 +47794,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46588,6 +47859,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46680,6 +47953,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46743,6 +48018,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46794,6 +48071,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46845,6 +48124,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46915,6 +48196,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -46994,6 +48277,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47097,6 +48382,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47160,6 +48447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47230,6 +48519,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47296,6 +48587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47376,6 +48669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47444,6 +48739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47567,6 +48864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47742,6 +49041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47828,6 +49129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47913,6 +49216,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -47976,6 +49281,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48037,6 +49344,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48090,6 +49399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48141,6 +49452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48202,6 +49515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48327,6 +49642,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48406,6 +49723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48469,6 +49788,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48566,6 +49887,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48675,6 +49998,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48738,6 +50063,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48919,6 +50246,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -48987,6 +50316,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49076,6 +50407,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49160,6 +50493,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49237,6 +50572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49331,6 +50668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49425,6 +50764,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49497,6 +50838,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49632,6 +50975,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49692,6 +51037,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49753,6 +51100,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49821,6 +51170,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49898,6 +51249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -49977,6 +51330,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50047,6 +51402,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50117,6 +51474,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50178,6 +51537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50241,6 +51602,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50304,6 +51667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50376,6 +51741,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50494,6 +51861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50571,6 +51940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50648,6 +52019,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50718,6 +52091,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50779,6 +52154,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50840,6 +52217,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -50927,6 +52306,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51006,6 +52387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51067,6 +52450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51138,6 +52523,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51208,6 +52595,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51278,6 +52667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51348,6 +52739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51458,6 +52851,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51538,6 +52933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51618,6 +53015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51705,6 +53104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51792,6 +53193,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51845,6 +53248,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51915,6 +53320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -51985,6 +53392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52036,6 +53445,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52115,6 +53526,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52195,6 +53608,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52280,6 +53695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52348,6 +53765,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52416,6 +53835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52501,6 +53922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52571,6 +53994,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52648,6 +54073,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52737,6 +54164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52822,6 +54251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -52892,6 +54323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53022,6 +54455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53102,6 +54537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53182,6 +54619,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53250,6 +54689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53313,6 +54754,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53393,6 +54836,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53456,6 +54901,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53526,6 +54973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53612,6 +55061,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53732,6 +55183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53785,6 +55238,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53855,6 +55310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53918,6 +55375,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -53988,6 +55447,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54058,6 +55519,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54137,6 +55600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54188,6 +55653,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54258,6 +55725,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54326,6 +55795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54420,6 +55891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54500,6 +55973,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54570,6 +56045,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54633,6 +56110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54727,6 +56206,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54807,6 +56288,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54858,6 +56341,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54919,6 +56404,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -54989,6 +56476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55059,6 +56548,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55129,6 +56620,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55199,6 +56692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55262,6 +56757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55341,6 +56838,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55411,6 +56910,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55474,6 +56975,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55517,6 +57020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55647,6 +57152,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55744,6 +57251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55814,6 +57323,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55884,6 +57395,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -55954,6 +57467,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56119,6 +57634,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56198,6 +57715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56261,6 +57780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56331,6 +57852,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56399,6 +57922,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56462,6 +57987,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56515,6 +58042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56585,6 +58114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56688,6 +58219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56758,6 +58291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56821,6 +58356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56891,6 +58428,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -56961,6 +58500,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57024,6 +58565,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57118,6 +58661,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57181,6 +58726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57244,6 +58791,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57345,6 +58894,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57423,6 +58974,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57517,6 +59070,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57587,6 +59142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57681,6 +59238,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57751,6 +59310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57838,6 +59399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57908,6 +59471,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -57978,6 +59543,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58048,6 +59615,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58118,6 +59687,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58197,6 +59768,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58260,6 +59833,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58330,6 +59905,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58443,6 +60020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58515,6 +60094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58585,6 +60166,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58663,6 +60246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58741,6 +60326,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58792,6 +60379,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58867,6 +60456,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -58942,6 +60533,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59010,6 +60603,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59078,6 +60673,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59225,6 +60822,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59334,6 +60933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59503,6 +61104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59589,6 +61192,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59671,6 +61276,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59741,6 +61348,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59863,6 +61472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -59943,6 +61554,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60013,6 +61626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60083,6 +61698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60146,6 +61763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60209,6 +61828,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60329,6 +61950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60416,6 +62039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60503,6 +62128,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60610,6 +62237,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60690,6 +62319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60760,6 +62391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60852,6 +62485,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60922,6 +62557,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -60985,6 +62622,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61064,6 +62703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61134,6 +62775,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61212,6 +62855,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61275,6 +62920,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61338,6 +62985,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61400,6 +63049,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61497,6 +63148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61610,6 +63263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61680,6 +63335,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61800,6 +63457,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61880,6 +63539,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -61950,6 +63611,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62013,6 +63676,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62093,6 +63758,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62163,6 +63830,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62257,6 +63926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62310,6 +63981,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62423,6 +64096,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62515,6 +64190,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62633,6 +64310,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62712,6 +64391,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62782,6 +64463,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62845,6 +64528,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -62915,6 +64600,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63002,6 +64689,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63065,6 +64754,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63128,6 +64819,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63198,6 +64891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63249,6 +64944,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63312,6 +65009,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63390,6 +65089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63484,6 +65185,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63554,6 +65257,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63617,6 +65322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63704,6 +65411,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63783,6 +65492,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63853,6 +65564,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -63950,6 +65663,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64046,6 +65761,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64126,6 +65843,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64213,6 +65932,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64283,6 +66004,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64334,6 +66057,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64711,6 +66436,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64773,6 +66500,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64841,6 +66570,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64909,6 +66640,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -64993,6 +66726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65078,6 +66813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65139,6 +66876,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65219,6 +66958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65289,6 +67030,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65359,6 +67102,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65422,6 +67167,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65492,6 +67239,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65562,6 +67311,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65632,6 +67383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65702,6 +67455,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65765,6 +67520,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65826,6 +67583,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65889,6 +67648,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -65985,6 +67746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66046,6 +67809,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66109,6 +67874,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66161,6 +67928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66229,6 +67998,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66290,6 +68061,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66378,6 +68151,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66455,6 +68230,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66515,6 +68292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66566,6 +68345,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66627,6 +68408,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66695,6 +68478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66842,6 +68627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -66912,6 +68699,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67046,6 +68835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67133,6 +68924,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67266,6 +69059,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67348,6 +69143,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67418,6 +69215,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67499,6 +69298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67550,6 +69351,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67593,6 +69396,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67710,6 +69515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67763,6 +69570,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67840,6 +69649,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67918,6 +69729,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -67979,6 +69792,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68056,6 +69871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68126,6 +69943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68220,6 +70039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68290,6 +70111,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68360,6 +70183,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68485,6 +70310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68570,6 +70397,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68621,6 +70450,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68689,6 +70520,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68757,6 +70590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -68834,6 +70669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69010,6 +70847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69094,6 +70933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69188,6 +71029,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69267,6 +71110,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69335,6 +71180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69414,6 +71261,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69508,6 +71357,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69627,6 +71478,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69700,6 +71553,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69768,6 +71623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69838,6 +71695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69901,6 +71760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -69986,6 +71847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70083,6 +71946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70162,6 +72027,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70230,6 +72097,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70300,6 +72169,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70363,6 +72234,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70433,6 +72306,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70501,6 +72376,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70588,6 +72465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70656,6 +72535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70726,6 +72607,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70843,6 +72726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -70995,6 +72880,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71065,6 +72952,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71144,6 +73033,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71223,6 +73114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71293,6 +73186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71391,6 +73286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71461,6 +73358,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71522,6 +73421,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71583,6 +73484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71677,6 +73580,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71740,6 +73645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71820,6 +73727,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71890,6 +73799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -71960,6 +73871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72030,6 +73943,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72121,6 +74036,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72191,6 +74108,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72270,6 +74189,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72349,6 +74270,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72417,6 +74340,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72520,6 +74445,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72581,6 +74508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72644,6 +74573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72712,6 +74643,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72784,6 +74717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72864,6 +74799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72927,6 +74864,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -72990,6 +74929,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73060,6 +75001,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73214,6 +75157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73282,6 +75227,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73368,6 +75315,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73438,6 +75387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73501,6 +75452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73571,6 +75524,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73651,6 +75606,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73713,6 +75670,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73804,6 +75763,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73865,6 +75826,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -73928,6 +75891,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74018,6 +75983,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74081,6 +76048,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74144,6 +76113,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74207,6 +76178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74277,6 +76250,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74347,6 +76322,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74417,6 +76394,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74504,6 +76483,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74594,6 +76575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74683,6 +76666,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74746,6 +76731,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74825,6 +76812,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -74895,6 +76884,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75012,6 +77003,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75092,6 +77085,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75162,6 +77157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75232,6 +77229,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75295,6 +77294,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75365,6 +77366,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75435,6 +77438,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75498,6 +77503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75549,6 +77556,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75634,6 +77643,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75721,6 +77732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75808,6 +77821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75878,6 +77893,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -75939,6 +77956,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76024,6 +78043,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76094,6 +78115,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76157,6 +78180,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76227,6 +78252,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76290,6 +78317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76360,6 +78389,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76453,6 +78484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76516,6 +78549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76579,6 +78614,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76656,6 +78693,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76719,6 +78758,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76782,6 +78823,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76871,6 +78914,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -76939,6 +78984,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77007,6 +79054,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77077,6 +79126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77147,6 +79198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77210,6 +79263,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77278,6 +79333,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77348,6 +79405,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77411,6 +79470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77479,6 +79540,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77570,6 +79633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77633,6 +79698,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77722,6 +79789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77775,6 +79844,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77854,6 +79925,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -77945,6 +80018,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78015,6 +80090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78068,6 +80145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78129,6 +80208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78220,6 +80301,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78298,6 +80381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78395,6 +80480,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78492,6 +80579,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78578,6 +80667,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78646,6 +80737,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78732,6 +80825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78836,6 +80931,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78925,6 +81022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -78993,6 +81092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79063,6 +81164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79142,6 +81245,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79212,6 +81317,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79291,6 +81398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79359,6 +81468,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79420,6 +81531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79488,6 +81601,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79551,6 +81666,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79619,6 +81736,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79696,6 +81815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79764,6 +81885,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79835,6 +81958,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79903,6 +82028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -79975,6 +82102,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80036,6 +82165,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80097,6 +82228,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80165,6 +82298,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80243,6 +82378,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80328,6 +82465,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80420,6 +82559,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80481,6 +82622,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80549,6 +82692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80617,6 +82762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80668,6 +82815,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80729,6 +82878,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80797,6 +82948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80868,6 +83021,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -80971,6 +83126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81041,6 +83198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81109,6 +83268,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81186,6 +83347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81300,6 +83463,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81370,6 +83535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81431,6 +83598,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81499,6 +83668,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81586,6 +83757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81656,6 +83829,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81724,6 +83899,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81792,6 +83969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81920,6 +84099,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -81991,6 +84172,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82068,6 +84251,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82153,6 +84338,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82238,6 +84425,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82318,6 +84507,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82388,6 +84579,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82466,6 +84659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82537,6 +84732,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82672,6 +84869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82770,6 +84969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82831,6 +85032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82901,6 +85104,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -82969,6 +85174,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83048,6 +85255,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83101,6 +85310,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83169,6 +85380,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83230,6 +85443,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83293,6 +85508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83356,6 +85573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83426,6 +85645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83575,6 +85796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83628,6 +85851,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83715,6 +85940,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83778,6 +86005,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83848,6 +86077,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83911,6 +86142,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -83981,6 +86214,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84044,6 +86279,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84114,6 +86351,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84267,6 +86506,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84337,6 +86578,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84407,6 +86650,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84500,6 +86745,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84596,6 +86843,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84666,6 +86915,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84719,6 +86970,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84789,6 +87042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -84874,6 +87129,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85062,6 +87319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85113,6 +87372,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85215,6 +87476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85285,6 +87548,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85376,6 +87641,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85482,6 +87749,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85552,6 +87821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85629,6 +87900,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85729,6 +88002,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85790,6 +88065,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85843,6 +88120,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85934,6 +88213,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -85985,6 +88266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86048,6 +88331,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86116,6 +88401,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86185,6 +88472,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86248,6 +88537,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86342,6 +88633,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86433,6 +88726,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86503,6 +88798,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86573,6 +88870,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86636,6 +88935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86706,6 +89007,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86769,6 +89072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86903,6 +89208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -86996,6 +89303,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87089,6 +89398,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87150,6 +89461,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87218,6 +89531,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87312,6 +89627,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87380,6 +89697,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87443,6 +89762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87511,6 +89832,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87593,6 +89916,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87644,6 +89969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87704,6 +90031,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87780,6 +90109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87843,6 +90174,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87913,6 +90246,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -87985,6 +90320,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88055,6 +90392,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88298,6 +90637,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88382,6 +90723,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88452,6 +90795,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88520,6 +90865,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88609,6 +90956,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88679,6 +91028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88732,6 +91083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88811,6 +91164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88881,6 +91236,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -88951,6 +91308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89021,6 +91380,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89091,6 +91452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89195,6 +91558,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89258,6 +91623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89328,6 +91695,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89398,6 +91767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89471,6 +91842,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89589,6 +91962,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89652,6 +92027,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89722,6 +92099,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89815,6 +92194,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89885,6 +92266,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -89964,6 +92347,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90034,6 +92419,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90128,6 +92515,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90198,6 +92587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90266,6 +92657,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90346,6 +92739,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90418,6 +92813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90481,6 +92878,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90551,6 +92950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90614,6 +93015,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90687,6 +93090,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90774,6 +93179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90842,6 +93249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -90946,6 +93355,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91032,6 +93443,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91095,6 +93508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91158,6 +93573,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91228,6 +93645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91298,6 +93717,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91378,6 +93799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91458,6 +93881,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91528,6 +93953,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91589,6 +94016,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91712,6 +94141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91791,6 +94222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91938,6 +94371,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -91989,6 +94424,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92066,6 +94503,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92157,6 +94596,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92244,6 +94685,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92324,6 +94767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92392,6 +94837,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92455,6 +94902,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92508,6 +94957,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92609,6 +95060,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92755,6 +95208,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92827,6 +95282,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92907,6 +95364,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -92987,6 +95446,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93074,6 +95535,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93175,6 +95638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93245,6 +95710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93400,6 +95867,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93480,6 +95949,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93571,6 +96042,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93641,6 +96114,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93709,6 +96184,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93772,6 +96249,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93840,6 +96319,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93908,6 +96389,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -93987,6 +96470,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94081,6 +96566,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94151,6 +96638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94221,6 +96710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94291,6 +96782,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94361,6 +96854,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94424,6 +96919,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94487,6 +96984,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94555,6 +97054,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94625,6 +97126,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94695,6 +97198,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94788,6 +97293,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94856,6 +97363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94917,6 +97426,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -94997,6 +97508,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95050,6 +97563,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95111,6 +97626,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95195,6 +97712,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95265,6 +97784,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95335,6 +97856,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95405,6 +97928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95475,6 +98000,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95545,6 +98072,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95617,6 +98146,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95680,6 +98211,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95752,6 +98285,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95848,6 +98383,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -95911,6 +98448,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96036,6 +98575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96097,6 +98638,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96191,6 +98734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96252,6 +98797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96322,6 +98869,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96401,6 +98950,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96488,6 +99039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96556,6 +99109,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96624,6 +99179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96675,6 +99232,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [ + { + "Id": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "MaybeId": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "DeletedAt": null, + "VariantEntryId": "d03f39d0-10ef-4d35-b13b-a965124a9230", + "VariantHeadword": "sia", + "MainEntryId": "05640c89-1b5b-463b-83e9-778928d23fc7", + "MainSenseId": null, + "MainHeadword": "siya", + "Types": [ + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant", + "pt": "Variac\u0327a\u0303o de Soletrac\u0327a\u0303o" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96752,6 +99334,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96815,6 +99399,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96887,6 +99473,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -96937,6 +99525,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97005,6 +99595,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97098,6 +99690,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97168,6 +99762,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97231,6 +99827,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97375,6 +99973,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [ + { + "Id": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "MaybeId": "be2fc635-b543-4267-9dbc-b1fc96711f48", + "DeletedAt": null, + "VariantEntryId": "d03f39d0-10ef-4d35-b13b-a965124a9230", + "VariantHeadword": "sia", + "MainEntryId": "05640c89-1b5b-463b-83e9-778928d23fc7", + "MainSenseId": null, + "MainHeadword": "siya", + "Types": [ + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant", + "pt": "Variac\u0327a\u0303o de Soletrac\u0327a\u0303o" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97469,6 +100092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97532,6 +100157,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97595,6 +100222,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97720,6 +100349,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97806,6 +100437,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97869,6 +100502,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -97955,6 +100590,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98025,6 +100662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98095,6 +100734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98172,6 +100813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98242,6 +100885,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98303,6 +100948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98373,6 +101020,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98443,6 +101092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98513,6 +101164,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98583,6 +101236,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98636,6 +101291,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98704,6 +101361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98774,6 +101433,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98844,6 +101505,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98912,6 +101575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -98980,6 +101645,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99043,6 +101710,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99106,6 +101775,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99176,6 +101847,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99253,6 +101926,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99504,6 +102179,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99567,6 +102244,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99760,6 +102439,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -99828,6 +102509,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100009,6 +102692,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100071,6 +102756,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100134,6 +102821,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100197,6 +102886,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100250,6 +102941,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100335,6 +103028,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100411,6 +103106,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100481,6 +103178,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100544,6 +103243,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100631,6 +103332,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100701,6 +103404,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100771,6 +103476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100868,6 +103575,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -100955,6 +103664,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101023,6 +103734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101084,6 +103797,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101156,6 +103871,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101216,6 +103933,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101303,6 +104022,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101371,6 +104092,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101422,6 +104145,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101494,6 +104219,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101574,6 +104301,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101652,6 +104381,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101720,6 +104451,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101799,6 +104532,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101862,6 +104597,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -101925,6 +104662,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102028,6 +104767,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102098,6 +104839,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102161,6 +104904,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102214,6 +104959,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102331,6 +105078,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102392,6 +105141,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102460,6 +105211,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102521,6 +105274,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102608,6 +105363,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102676,6 +105433,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102737,6 +105496,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102800,6 +105561,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102860,6 +105623,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -102937,6 +105702,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103029,6 +105796,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103113,6 +105882,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103164,6 +105935,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103256,6 +106029,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103319,6 +106094,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103370,6 +106147,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103422,6 +106201,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103504,6 +106285,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103605,6 +106388,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103699,6 +106484,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103762,6 +106549,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103832,6 +106621,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103912,6 +106703,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -103992,6 +106785,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104045,6 +106840,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104130,6 +106927,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104183,6 +106982,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104234,6 +107035,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104350,6 +107153,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104485,6 +107290,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104553,6 +107360,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104702,6 +107511,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104765,6 +107576,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104816,6 +107629,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104901,6 +107716,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -104996,6 +107813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105057,6 +107876,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105125,6 +107946,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105188,6 +108011,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105258,6 +108083,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105394,6 +108221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105464,6 +108293,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105534,6 +108365,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105602,6 +108435,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105681,6 +108516,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105751,6 +108588,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105821,6 +108660,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105874,6 +108715,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -105946,6 +108789,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106009,6 +108854,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106081,6 +108928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106192,6 +109041,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106360,6 +109211,8 @@ } ], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106428,6 +109281,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106551,6 +109406,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106650,6 +109507,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106701,6 +109560,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106801,6 +109662,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106890,6 +109753,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -106960,6 +109825,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107030,6 +109897,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107098,6 +109967,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107166,6 +110037,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107234,6 +110107,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107347,6 +110222,8 @@ "DeletedAt": null } ], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107424,6 +110301,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107508,6 +110387,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107571,6 +110452,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107639,6 +110522,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107707,6 +110592,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107785,6 +110672,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107871,6 +110760,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -107922,6 +110813,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108014,6 +110907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108065,6 +110960,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108142,6 +111039,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108202,6 +111101,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108255,6 +111156,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108318,6 +111221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108403,6 +111308,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108454,6 +111361,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108517,6 +111426,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108594,6 +111505,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108674,6 +111587,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108760,6 +111675,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108823,6 +111740,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108891,6 +111810,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -108954,6 +111875,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109005,6 +111928,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109075,6 +112000,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109162,6 +112089,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109239,6 +112168,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109290,6 +112221,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109353,6 +112286,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109421,6 +112356,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109532,6 +112469,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109633,6 +112572,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109718,6 +112659,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109803,6 +112746,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109890,6 +112835,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -109960,6 +112907,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110030,6 +112979,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110100,6 +113051,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110168,6 +113121,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110231,6 +113186,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110361,6 +113318,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110429,6 +113388,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110499,6 +113460,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110596,6 +113559,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110690,6 +113655,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110741,6 +113708,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110811,6 +113780,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110890,6 +113861,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -110984,6 +113957,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111035,6 +114010,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111098,6 +114075,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111159,6 +114138,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111229,6 +114210,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111309,6 +114292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111372,6 +114357,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111489,6 +114476,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111561,6 +114550,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111696,6 +114687,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111764,6 +114757,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111834,6 +114829,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111902,6 +114899,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -111970,6 +114969,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112031,6 +115032,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112082,6 +115085,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112143,6 +115148,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112223,6 +115230,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112291,6 +115300,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112342,6 +115353,31 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [ + { + "Id": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "MaybeId": "dafa2dec-2fe6-4c6c-a07c-121de360d7b1", + "DeletedAt": null, + "VariantEntryId": "564fffa0-0aec-46ab-8d41-cbd30be82be1", + "VariantHeadword": "yenda", + "MainEntryId": "2bde7e2c-9ddc-4de0-b416-c24c0710c2fa", + "MainSenseId": null, + "MainHeadword": "enda", + "Types": [ + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + } + ], + "HideMinorEntry": false, + "Comment": {} + } + ], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112412,6 +115448,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112480,6 +115518,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112564,6 +115604,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112627,6 +115669,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112690,6 +115734,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112753,6 +115799,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -112900,6 +115948,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113031,6 +116081,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113110,6 +116162,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113173,6 +116227,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113236,6 +116292,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113306,6 +116364,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -113369,6 +116429,8 @@ "Components": [], "ComplexForms": [], "ComplexFormTypes": [], + "VariantOf": [], + "Variants": [], "PublishIn": [ { "Id": "70c0a758-5901-4884-b992-94ca31087607", @@ -130490,5 +133552,91 @@ "Order": 2 } ] - } + }, + "VariantTypes": [ + { + "Id": "024b62c9-93b3-41a0-ab19-587a0030219a", + "Name": { + "en": "Dialectal Variant", + "pt": "Variac\u0327a\u0303o Dialectal" + }, + "DeletedAt": null + }, + { + "Id": "86dd5eb3-b90a-4296-afd3-60c312b63a9a", + "Name": { + "en": "Semantic Dialect Variant", + "pt": "Variac\u0327a\u0303o Sema\u0302ntica" + }, + "DeletedAt": null + }, + { + "Id": "bbd4adb3-9af5-4542-94e8-b0932124108b", + "Name": { + "en": "Pronunciation Variant", + "pt": "Variac\u0327a\u0303o da Pronuncia" + }, + "DeletedAt": null + }, + { + "Id": "c7fe4c4a-abaf-4a0b-b633-d3e73f4057ee", + "Name": { + "en": "Lexical Dialect Variant", + "pt": "Variac\u0327a\u0303o Lexical" + }, + "DeletedAt": null + }, + { + "Id": "4343b1ef-b54f-4fa4-9998-271319a6d74c", + "Name": { + "en": "Free Variant", + "pt": "Variac\u0327a\u0303o livre" + }, + "DeletedAt": null + }, + { + "Id": "fcc61889-00e6-467b-9cf0-8c4f48b9a486", + "Name": { + "en": "Inflectional Variant", + "pt": "Variac\u0327a\u0303o Inflectional" + }, + "DeletedAt": null + }, + { + "Id": "0c4663b3-4d9a-47af-b9a1-c8565d8112ed", + "Name": { + "en": "Spelling Variant", + "pt": "Variac\u0327a\u0303o de Soletrac\u0327a\u0303o" + }, + "DeletedAt": null + }, + { + "Id": "01d4fbc1-3b0c-4f52-9163-7ab0d4f4711c", + "Name": { + "en": "Irregularly Inflected Form" + }, + "DeletedAt": null + }, + { + "Id": "a32f1d1c-4832-46a2-9732-c2276d6547e8", + "Name": { + "en": "Plural" + }, + "DeletedAt": null + }, + { + "Id": "837ebe72-8c1d-4864-95d9-fa313c499d78", + "Name": { + "en": "Past" + }, + "DeletedAt": null + }, + { + "Id": "3942addb-99fd-43e9-ab7d-99025ceb0d4e", + "Name": { + "en": "Unspecified Variant" + }, + "DeletedAt": null + } + ] } \ No newline at end of file diff --git a/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs b/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs index a56aa4817e..69e243ee0e 100644 --- a/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs +++ b/backend/FwLite/FwLiteShared/Services/MiniLcmJsInvokable.cs @@ -322,6 +322,48 @@ public async Task RemoveComplexFormType(Guid entryId, Guid complexFormTypeId) OnDataChanged(); } + [JSInvokable] + public ValueTask GetVariantTypes() + { + return _wrappedApi.GetVariantTypes().ToArrayAsync(); + } + + [JSInvokable] + [TsFunction(Type = "Promise")] + public Task GetVariantType(Guid id) + { + return _wrappedApi.GetVariantType(id); + } + + [JSInvokable] + public async Task CreateVariant(Variant variant) + { + var createdVariant = await _wrappedApi.CreateVariant(variant); + OnDataChanged(); + return createdVariant; + } + + [JSInvokable] + public async Task DeleteVariant(Variant variant) + { + await _wrappedApi.DeleteVariant(variant); + OnDataChanged(); + } + + [JSInvokable] + public async Task AddVariantType(Variant variant, Guid variantTypeId) + { + await _wrappedApi.AddVariantType(variant, variantTypeId); + OnDataChanged(); + } + + [JSInvokable] + public async Task RemoveVariantType(Variant variant, Guid variantTypeId) + { + await _wrappedApi.RemoveVariantType(variant, variantTypeId); + OnDataChanged(); + } + [JSInvokable] public async Task CreateSense(Guid entryId, Sense sense) { diff --git a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs index 1a0c27f75b..ec9e216e58 100644 --- a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs +++ b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs @@ -644,6 +644,18 @@ private IEnumerable CreateEntryChanges(Entry entry, if (!createdEntryIds.Contains(complexForm.ComplexFormEntryId)) continue; yield return new AddEntryComponentChange(complexForm); } + foreach (var variantOf in entry.VariantOf) + { + //only add variant links if the main entry was created already, otherwise it will be added when the main entry is created + if (!createdEntryIds.Contains(variantOf.MainEntryId)) continue; + yield return new AddVariantChange(variantOf); + } + foreach (var variant in entry.Variants) + { + //only add variant links if the variant entry was created already, otherwise it will be added when the variant entry is created + if (!createdEntryIds.Contains(variant.VariantEntryId)) continue; + yield return new AddVariantChange(variant); + } foreach (var addComplexFormTypeChange in entry.ComplexFormTypes.Select(c => new AddComplexFormTypeChange(entry.Id, c))) { yield return addComplexFormTypeChange; diff --git a/backend/FwLite/LcmCrdt/QueryHelpers.cs b/backend/FwLite/LcmCrdt/QueryHelpers.cs index a20e94a758..3bac06af0e 100644 --- a/backend/FwLite/LcmCrdt/QueryHelpers.cs +++ b/backend/FwLite/LcmCrdt/QueryHelpers.cs @@ -9,8 +9,8 @@ public static void Finalize(this Entry entry, CompareInfo compareInfo) entry.Senses.ApplySortOrder(); entry.Components.ApplySortOrder(); entry.ComplexForms.Sort(compareInfo.AsComplexFormComparer()); - entry.VariantOf.Sort(compareInfo.AsVariantOfComparer()); - entry.Variants.Sort(compareInfo.AsVariantsComparer()); + entry.VariantOf.Sort(Variant.VariantOfOrder); + entry.Variants.Sort(Variant.VariantsOrder); foreach (var sense in entry.Senses) { sense.Finalize(); @@ -57,23 +57,4 @@ public static IComparer AsComplexFormComparer(this Compare }); } - public static IComparer AsVariantOfComparer(this CompareInfo compareInfo) - { - return Comparer.Create((a, b) => - { - var result = compareInfo.Compare(a.MainHeadword, b.MainHeadword, CompareOptions.IgnoreCase); - if (result != 0) return result; - return a.MainEntryId.CompareTo(b.MainEntryId); - }); - } - - public static IComparer AsVariantsComparer(this CompareInfo compareInfo) - { - return Comparer.Create((a, b) => - { - var result = compareInfo.Compare(a.VariantHeadword, b.VariantHeadword, CompareOptions.IgnoreCase); - if (result != 0) return result; - return a.VariantEntryId.CompareTo(b.VariantEntryId); - }); - } } diff --git a/backend/FwLite/MiniLcm/Models/Variant.cs b/backend/FwLite/MiniLcm/Models/Variant.cs index 7ba8d25996..d21854bb34 100644 --- a/backend/FwLite/MiniLcm/Models/Variant.cs +++ b/backend/FwLite/MiniLcm/Models/Variant.cs @@ -96,6 +96,23 @@ public Variant Copy() }; } + //variant lists have no user-meaningful order, so both IMiniLcmApi implementations sort them by + //their composite key — deterministic and culture-free, unlike headword sorting (which is why + //ComplexForms sort alphabetically: FieldWorks does; there's no such convention for variants) + public static readonly Comparer VariantOfOrder = Comparer.Create((a, b) => + { + var result = a.MainEntryId.CompareTo(b.MainEntryId); + if (result != 0) return result; + return (a.MainSenseId ?? Guid.Empty).CompareTo(b.MainSenseId ?? Guid.Empty); + }); + + public static readonly Comparer VariantsOrder = Comparer.Create((a, b) => + { + var result = a.VariantEntryId.CompareTo(b.VariantEntryId); + if (result != 0) return result; + return (a.MainSenseId ?? Guid.Empty).CompareTo(b.MainSenseId ?? Guid.Empty); + }); + public override string ToString() { return diff --git a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts index 5fedeb1bfc..e3b406c812 100644 --- a/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts +++ b/frontend/viewer/src/lib/dotnet-types/generated-types/FwLiteShared/Services/IMiniLcmJsInvokable.ts @@ -19,6 +19,8 @@ import type {IWritingSystem} from '../../MiniLcm/Models/IWritingSystem'; import type {WritingSystemType} from '../../MiniLcm/Models/WritingSystemType'; import type {ICreateEntryOptions} from '../../MiniLcm/ICreateEntryOptions'; import type {IComplexFormComponent} from '../../MiniLcm/Models/IComplexFormComponent'; +import type {IVariantType} from '../../MiniLcm/Models/IVariantType'; +import type {IVariant} from '../../MiniLcm/Models/IVariant'; import type {ISense} from '../../MiniLcm/Models/ISense'; import type {IExampleSentence} from '../../MiniLcm/Models/IExampleSentence'; import type {IReadFileResponseJs} from './IReadFileResponseJs'; @@ -67,6 +69,12 @@ export interface IMiniLcmJsInvokable deleteComplexFormComponent(complexFormComponent: IComplexFormComponent) : Promise; addComplexFormType(entryId: string, complexFormTypeId: string) : Promise; removeComplexFormType(entryId: string, complexFormTypeId: string) : Promise; + getVariantTypes() : Promise; + getVariantType(id: string) : Promise; + createVariant(variant: IVariant) : Promise; + deleteVariant(variant: IVariant) : Promise; + addVariantType(variant: IVariant, variantTypeId: string) : Promise; + removeVariantType(variant: IVariant, variantTypeId: string) : Promise; createSense(entryId: string, sense: ISense) : Promise; updateSense(entryId: string, before: ISense, after: ISense) : Promise; deleteSense(entryId: string, senseId: string) : Promise; diff --git a/frontend/viewer/src/project/data/index.ts b/frontend/viewer/src/project/data/index.ts index e5735f3fa7..b8843ee062 100644 --- a/frontend/viewer/src/project/data/index.ts +++ b/frontend/viewer/src/project/data/index.ts @@ -3,5 +3,6 @@ export * from './custom-view-service.svelte'; export * from './publications.svelte'; export * from './parts-of-speech.svelte'; export * from './complex-form-types'; +export * from './variant-types'; export * from './project-stats'; export * from './semantic-domains'; diff --git a/frontend/viewer/src/project/data/variant-types.ts b/frontend/viewer/src/project/data/variant-types.ts new file mode 100644 index 0000000000..3e8d88b11c --- /dev/null +++ b/frontend/viewer/src/project/data/variant-types.ts @@ -0,0 +1,10 @@ +import {useProjectContext} from '$project/project-context.svelte'; + +const variantTypesSymbol = Symbol.for('fw-lite-variant-types'); +export function useVariantTypes() { + const projectContext = useProjectContext(); + return projectContext.getOrAddAsync(variantTypesSymbol, [], api => api.getVariantTypes()); +} + +/** Unspecified Variant — the type FLEx assigns when none is chosen (well-known guid) */ +export const UNSPECIFIED_VARIANT_TYPE_ID = '3942addb-99fd-43e9-ab7d-99025ceb0d4e'; From a9431bf7eb86ae32e3add4be1fbdd7c50c1f286c Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 15:11:50 +0200 Subject: [PATCH 06/10] Update VARIANTS.md status Co-Authored-By: Claude Fable 5 --- backend/FwLite/VARIANTS.md | 42 ++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/backend/FwLite/VARIANTS.md b/backend/FwLite/VARIANTS.md index df4c93050b..b1f340d232 100644 --- a/backend/FwLite/VARIANTS.md +++ b/backend/FwLite/VARIANTS.md @@ -7,19 +7,39 @@ dev/agent can pick up the work mid-stream. Update the **Status** section as step - [x] Exploration (complex-forms blueprint, liblcm variant model, viewer UI) - [x] Design review with Tim (2026-07-03): per-link model confirmed, naming settled -- [~] Step 1 — model, changes, both APIs, sync orchestration, conformance tests - (in progress: conformance suites green both sides; chasing fallout in broader - LcmCrdt.Tests run) -- [ ] Step 2 — sync round-trip test suite, upgrade tests, Sena3 + verified regens -- [ ] Step 3 — Viewer UI (fields, picker, i18n, Playwright) - -Branches are stacked: `feat/variants-model` ← `feat/variants-sync` ← `feat/variants-ui`. - -**Boundary change vs the original plan**: the sync/import orchestration -(`VariantTypeSync` in `SyncInternal`, `ProjectSnapshot.VariantTypes`, `ProjectImporter` -variant-type loop, `ResumableImportApi` caching) moved INTO step 1 — the moment the FwData +- [x] Step 1+2 — model, changes, both APIs, sync orchestration + round-trip suite + (all backend suites green: MiniLcm.Tests, LcmCrdt.Tests, FwDataMiniLcmBridge.Tests, + FwLiteProjectSync.Tests incl. Sena3 live db regen; the WS-font failure on Windows is + the known local-only false-fail) +- [x] Step 3 — Viewer UI (fields, per-link type menu, demo seed, i18n, Playwright green) +- [ ] Review + PR prep + +**Boundary change vs the original plan**: steps 1 and 2 merged — the moment the FwData bridge reads variants, importing a variant-containing project crashes unless variant types are imported before entries, so a "model-only" PR can't be green against real projects. +Final split: one backend PR (model through sync) + one UI PR stacked on it. + +### Step 2/3 decision addenda + +- **Deterministic variant-list order on both sides** (`Variant.VariantOfOrder`/`VariantsOrder`, + composite-key based, culture-free). ComplexForms sort alphabetically because FieldWorks + does; variants have no such convention, and guid order keeps snapshot comparisons and + sync stable across cultures. UI can sort for display later if wanted. +- **`CrdtMiniLcmApi.BulkCreateEntries`** (import fast path) emits `AddVariantChange` with the + same only-if-other-endpoint-already-created trick as components. +- **Sena3 verified live db/snapshot regenerated**: sena-3 really contains variants + (*inde*→*ande*, *yenda*→*enda*, custom bilingual "Pronunciation Variant" type), which now + round-trip — the diff was inspected and is purely additive. +- **Blank-project template regenerated**: new CRDT projects seed the 7 standard FLEx variant + types (well-known guids). +- **UI**: `Variant of` (picker: entries-and-senses) and `Variants` (picker: only-entries) + fields, both shown by default in both views; per-link variant types via a "Variant type" + checkbox submenu on each link badge; new links default to *Unspecified Variant* (FLEx + behavior); all edits flow through `updateEntry` (before/after diff → EntrySync), so the + in-memory demo works without dedicated endpoints. `useVariantTypes()` is **eager** — + the type list must be loaded before the first pick applies the default. +- **helpIds**: `Variant_of_field.htm` verified to exist (fetched); there's no dedicated + FLEx topic for the Variants back-reference field, so it reuses the same topic. ## The LCM model (authority: liblcm) From ca08f09b91f8f29768cf76a887fc2f8fe02b97cc Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 15:25:44 +0200 Subject: [PATCH 07/10] Review fixes: sense-move keeps variant links, hub exposes variant types A sense-targeted variant link is identified by its full composite key; the FwData bridge matched by sense guid alone, so a moved sense made the sync drop the link (new regression test covers both implementations). Co-Authored-By: Claude Fable 5 --- .../MiniLcmTests/VariantTests.cs | 10 +++++ .../Api/FwDataMiniLcmApi.cs | 15 +++++++- .../FwLiteProjectSync.Tests/EntrySyncTests.cs | 37 +++++++++++++++++++ .../FwLiteWeb/Hubs/MiniLcmApiHubBase.cs | 5 +++ .../SnapshotAtCommitServiceTests.cs | 2 +- backend/FwLite/VARIANTS.md | 11 +++--- 6 files changed, 72 insertions(+), 8 deletions(-) diff --git a/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs b/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs index 302805aeb6..3800852488 100644 --- a/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs +++ b/backend/FwLite/FwDataMiniLcmBridge.Tests/MiniLcmTests/VariantTests.cs @@ -24,6 +24,16 @@ public async Task GetVariantTypes_IncludesIrregularlyInflectedFormSubtypes() types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypPastVar); types.Should().Contain(t => t.Id == LexEntryTypeTags.kguidLexTypSpellingVar); } + + [Fact] + public async Task CreateVariantType_LandsAsATopLevelPossibility() + { + // the flattened read can surface children, but created types must be top-level + var created = await Api.CreateVariantType(new VariantType { Id = Guid.NewGuid(), Name = new() { { "en", "custom type" } } }); + var fwDataApi = (FwDataMiniLcmApi)BaseApi; + fwDataApi.Cache.LangProject.LexDbOA.VariantEntryTypesOA.PossibilitiesOS + .Should().Contain(p => p.Guid == created.Id); + } } /// diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs index 670d205b5a..f54982efec 100644 --- a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs @@ -1500,6 +1500,9 @@ internal void RemoveVariant(ILexEntry lexVariantEntry, Variant variant) { //sense has been deleted, so this link is gone already if (!SenseRepository.TryGetObject(variant.MainSenseId.Value, out var sense)) return; + //links are identified by their full composite key; when the sense has moved to a + //different entry this link no longer exists (it became a link to the new entry) + if (sense.Entry.Guid != variant.MainEntryId) return; target = sense; } else @@ -1523,9 +1526,17 @@ internal void RemoveVariant(ILexEntry lexVariantEntry, Variant variant) internal ILexEntryRef? FindVariantRef(ILexEntry lexVariantEntry, Variant variant) { - var targetGuid = variant.MainSenseId ?? variant.MainEntryId; return lexVariantEntry.VariantEntryRefs - .FirstOrDefault(r => r.ComponentLexemesRS.Any(o => o.Guid == targetGuid)); + .FirstOrDefault(r => r.ComponentLexemesRS.Any(o => MatchesVariantTarget(o, variant))); + } + + //match the full composite key: a sense target only counts while the sense still belongs + //to the link's main entry (a moved sense means this is a different link) + private static bool MatchesVariantTarget(ICmObject o, Variant variant) + { + return variant.MainSenseId is not null + ? o is ILexSense sense && sense.Guid == variant.MainSenseId && sense.Entry.Guid == variant.MainEntryId + : o is ILexEntry entry && entry.Guid == variant.MainEntryId; } private IList MultiStringToTsStrings(MultiString? multiString) diff --git a/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs b/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs index 3435128a85..64a6b1abaf 100644 --- a/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs +++ b/backend/FwLite/FwLiteProjectSync.Tests/EntrySyncTests.cs @@ -961,6 +961,43 @@ public async Task CanSyncComponentWhenSenseMovesToDifferentEntry(string entryOrd actualNewComponentEntry.ComplexForms[0].ComplexFormEntryId.Should().Be(complexForm.Id); } + [Fact] + public async Task CanSyncVariantWhenTargetSenseMovesToDifferentEntry() + { + var senseId = Guid.NewGuid(); + var oldMainEntry = await Api.CreateEntry(new() { LexemeForm = { { "en", "old-main" } }, Senses = [new() { Id = senseId }] }); + var oldMainEntryAfter = oldMainEntry.Copy(); + oldMainEntryAfter.Senses.Clear(); // sense is moved from here + + var newMainEntry = await Api.CreateEntry(new() { Id = Guid.NewGuid(), LexemeForm = { { "en", "new-main" } } }); + var newMainEntryAfter = newMainEntry.Copy(); + newMainEntryAfter.Senses.Add(new Sense() { Id = senseId }); // sense is moved to here + + var variantEntry = new Entry + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "variant" } }, + }; + variantEntry.VariantOf.Add(Variant.FromEntries(variantEntry, oldMainEntry, senseId)); + variantEntry = await Api.CreateEntry(variantEntry); + + var variantEntryAfter = variantEntry.Copy(); + variantEntryAfter.VariantOf = [Variant.FromEntries(variantEntry, newMainEntry, senseId)]; + + await EntrySync.SyncFull( + [variantEntry, oldMainEntry, newMainEntry], + [variantEntryAfter, oldMainEntryAfter, newMainEntryAfter], + Api); + + var actualVariantEntry = await Api.GetEntry(variantEntry.Id); + actualVariantEntry.Should().NotBeNull(); + var link = actualVariantEntry!.VariantOf.Should().ContainSingle().Subject; + link.MainEntryId.Should().Be(newMainEntry.Id); + link.MainSenseId.Should().Be(senseId); + (await Api.GetEntry(oldMainEntry.Id))!.Variants.Should().BeEmpty(); + (await Api.GetEntry(newMainEntry.Id))!.Variants.Should().ContainSingle(); + } + [Fact] public async Task SyncComplexFormsAndComponents_MovesComponentsToCorrectPosition() { diff --git a/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs b/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs index 1d79927f9e..220def7307 100644 --- a/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs +++ b/backend/FwLite/FwLiteWeb/Hubs/MiniLcmApiHubBase.cs @@ -48,6 +48,11 @@ public IAsyncEnumerable GetComplexFormTypes() return _miniLcmApi.GetComplexFormTypes(); } + public IAsyncEnumerable GetVariantTypes() + { + return _miniLcmApi.GetVariantTypes(); + } + public virtual async Task UpdateMorphType(Guid id, JsonPatchDocument update) { var updatedMorphType = await _miniLcmApi.UpdateMorphType(id, new UpdateObjectInput(update)); diff --git a/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs b/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs index 5031284225..1622f1e89c 100644 --- a/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs +++ b/backend/FwLite/LcmCrdt.Tests/SnapshotAtCommitServiceTests.cs @@ -26,7 +26,7 @@ private void AssertSnapshotsAreEquivalentEqual(ProjectSnapshot expected, Project .WithoutStrictOrderingFor(x => x.SemanticDomains) .WithoutStrictOrderingFor(x => x.ComplexFormTypes) .WithoutStrictOrderingFor(x => x.MorphTypes) - .WithoutStrictOrderingFor(x => x.VariantTypes) + .WithoutStrictOrderingFor(x => x.VariantTypes) ); } diff --git a/backend/FwLite/VARIANTS.md b/backend/FwLite/VARIANTS.md index b1f340d232..cca50861e3 100644 --- a/backend/FwLite/VARIANTS.md +++ b/backend/FwLite/VARIANTS.md @@ -143,6 +143,8 @@ public record Variant : IObjectWithId 8. **Deleted `VariantType` cleanup**: `Variant.GetReferences()` includes its `Types` ids, and `RemoveReference` removes the type from the list (only endpoint ids soft-delete the link). Better than the complex-forms quirk where deleted types linger in `Entry.ComplexFormTypes`. + Like `Entry.ComplexFormTypes`, `Variant.Types` stores denormalized copies (jsonb), so a + type *rename* reaches already-linked variants on the next sync/read, not instantly. 9. **Variant entries with no senses are first-class** and must be covered by tests both ways (headline behavioral difference; FLEx "Insert Variant" creates sense-less entries). 10. **A variant can target a sense** (`MainSenseId`); on the main side such links still @@ -185,14 +187,13 @@ Write: - Changes (register in `LcmCrdtKernel.ConfigureCrdt` **and** add instances to `UseChangesTests.GetAllChanges()` — kernel comment mandates it): `AddVariantChange` (create; carries types+scalars; dedupe/cycle/deleted-ref handling - mirroring `AddEntryComponentChange`), `SetVariantChange` (mirror - `SetComplexFormComponentChange`; needs a hand-written generator branch in - `ChangeSerializationTests.GeneratedChangesForType` — protected ctor), + mirroring `AddEntryComponentChange`), `AddVariantTypeChange`/`RemoveVariantTypeChange` (`EditChange`), `CreateVariantType`, `JsonPatchChange`, `JsonPatchChange`, `DeleteChange`, `DeleteChange`. - Check `ConfigRegistrationTests.AllChangesAreRegistered` exclusion list (it force-crosses - generic changes with all object types). + A `SetVariantChange` (mirror of `SetComplexFormComponentChange`) was considered and + dropped: that change turned out to be test/wire-legacy only for complex forms; variant + scalars go through `JsonPatchChange` and endpoint changes are delete+recreate. ### API surface (both implementations + wrappers) From b04569db84f4e69ecb8c8d82800e8da35d403693 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 15:28:59 +0200 Subject: [PATCH 08/10] Demo api parity for the extended MiniLcm JS interface Co-Authored-By: Claude Fable 5 --- frontend/viewer/src/lib/dotnet-types/index.ts | 2 ++ .../src/project/demo/demo-entry-data.ts | 31 ++++++++++++++++++- .../src/project/demo/in-memory-demo-api.ts | 28 ++++++++++++++++- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/frontend/viewer/src/lib/dotnet-types/index.ts b/frontend/viewer/src/lib/dotnet-types/index.ts index 811b6979d1..f2d50fdaaf 100644 --- a/frontend/viewer/src/lib/dotnet-types/index.ts +++ b/frontend/viewer/src/lib/dotnet-types/index.ts @@ -10,6 +10,8 @@ export * from './generated-types/FwLiteShared/Services/IMiniLcmFeatures'; export * from './generated-types/FwLiteShared/Services/IMiniLcmJsInvokable'; export * from './generated-types/MiniLcm/Models/IComplexFormComponent'; export * from './generated-types/MiniLcm/Models/IComplexFormType'; +export * from './generated-types/MiniLcm/Models/IVariant'; +export * from './generated-types/MiniLcm/Models/IVariantType'; export * from './generated-types/MiniLcm/Models/IEntry'; export * from './generated-types/MiniLcm/Models/IExampleSentence'; export * from './generated-types/MiniLcm/Models/ITranslation'; diff --git a/frontend/viewer/src/project/demo/demo-entry-data.ts b/frontend/viewer/src/project/demo/demo-entry-data.ts index 02af4eadc2..df73740b73 100644 --- a/frontend/viewer/src/project/demo/demo-entry-data.ts +++ b/frontend/viewer/src/project/demo/demo-entry-data.ts @@ -1,4 +1,4 @@ -import {type IEntry, type IMorphType, type IWritingSystems, MorphTypeKind, WritingSystemType} from '$lib/dotnet-types'; +import {type IEntry, type IMorphType, type IVariant, type IVariantType, type IWritingSystems, MorphTypeKind, WritingSystemType} from '$lib/dotnet-types'; export const projectName = 'Sena 3'; @@ -336,4 +336,33 @@ export const entries: IEntry[] = JSON.parse( // Keep the array the same length and don't shift entries down, // so that tests keep passing +// entries in the JSON blob predate variants +for (const entry of entries) { + entry.variantOf ??= []; + entry.variants ??= []; +} + entries.splice(0, 1, allWsEntry); + +// FLEx standard variant types (well-known guids) +export const variantTypes: IVariantType[] = [ + {id: '3942addb-99fd-43e9-ab7d-99025ceb0d4e', name: {en: 'Unspecified Variant'}}, + {id: '024b62c9-93b3-41a0-ab19-587a0030219a', name: {en: 'Dialectal Variant'}}, + {id: '0c4663b3-4d9a-47af-b9a1-c8565d8112ed', name: {en: 'Spelling Variant'}}, +]; + +// seed a variant pair so the demo project shows the feature +const demoVariantEntry = entries[2]; +const demoMainEntry = entries[3]; +const demoVariant: IVariant = { + id: 'b6d5be87-9958-0d55-8788-79e04c8cc001', + variantEntryId: demoVariantEntry.id, + variantHeadword: Object.values(demoVariantEntry.citationForm)[0] ?? Object.values(demoVariantEntry.lexemeForm)[0], + mainEntryId: demoMainEntry.id, + mainHeadword: Object.values(demoMainEntry.citationForm)[0] ?? Object.values(demoMainEntry.lexemeForm)[0], + types: [variantTypes[0]], + hideMinorEntry: false, + comment: {}, +}; +demoVariantEntry.variantOf = [demoVariant]; +demoMainEntry.variants = [demoVariant]; diff --git a/frontend/viewer/src/project/demo/in-memory-demo-api.ts b/frontend/viewer/src/project/demo/in-memory-demo-api.ts index ee4b297943..34256b2ef3 100644 --- a/frontend/viewer/src/project/demo/in-memory-demo-api.ts +++ b/frontend/viewer/src/project/demo/in-memory-demo-api.ts @@ -3,6 +3,8 @@ import { DotnetService, type IComplexFormComponent, + type IVariant, + type IVariantType, type IComplexFormType, type ICreateEntryOptions, type IEntry, @@ -26,7 +28,7 @@ import { ViewBase, MorphTypeKind, } from '$lib/dotnet-types'; -import {entries, morphTypes, partsOfSpeech, projectName, writingSystems} from './demo-entry-data'; +import {entries, morphTypes, partsOfSpeech, projectName, variantTypes, writingSystems} from './demo-entry-data'; import {WritingSystemService} from '../data/writing-system-service.svelte'; import {FwLitePlatform} from '$lib/dotnet-types/generated-types/FwLiteShared/FwLitePlatform'; @@ -467,6 +469,30 @@ export class InMemoryDemoApi implements IMiniLcmJsInvokable { return Promise.resolve(); } + getVariantTypes(): Promise { + return Promise.resolve(variantTypes); + } + + getVariantType(_id: string): Promise { + return Promise.resolve(variantTypes.find(vt => vt.id === _id) ?? null); + } + + createVariant(_variant: IVariant): Promise { + throw new Error('Method not implemented.'); + } + + deleteVariant(_variant: IVariant): Promise { + throw new Error('Method not implemented.'); + } + + addVariantType(_variant: IVariant, _variantTypeId: string): Promise { + throw new Error('Method not implemented.'); + } + + removeVariantType(_variant: IVariant, _variantTypeId: string): Promise { + throw new Error('Method not implemented.'); + } + createComplexFormComponent(_complexFormComponent: IComplexFormComponent): Promise { throw new Error('Method not implemented.'); } From a5a336fdddd111708d64fab4b2697ec29fa64982 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 15:32:16 +0200 Subject: [PATCH 09/10] Note review outcome and PR links in VARIANTS.md Co-Authored-By: Claude Fable 5 --- backend/FwLite/VARIANTS.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/backend/FwLite/VARIANTS.md b/backend/FwLite/VARIANTS.md index cca50861e3..0ac7299cff 100644 --- a/backend/FwLite/VARIANTS.md +++ b/backend/FwLite/VARIANTS.md @@ -12,7 +12,10 @@ dev/agent can pick up the work mid-stream. Update the **Status** section as step FwLiteProjectSync.Tests incl. Sena3 live db regen; the WS-font failure on Windows is the known local-only false-fail) - [x] Step 3 — Viewer UI (fields, per-link type menu, demo seed, i18n, Playwright green) -- [ ] Review + PR prep +- [x] Review (8-agent pass; fixes: sense-move composite-key lookup in the FwData bridge, + type-toggle re-render, hub read parity) + draft PRs: + backend [#2408](https://github.com/sillsdev/languageforge-lexbox/pull/2408), + UI [#2409](https://github.com/sillsdev/languageforge-lexbox/pull/2409) (stacked) **Boundary change vs the original plan**: steps 1 and 2 merged — the moment the FwData bridge reads variants, importing a variant-containing project crashes unless variant types From 55d4485cd507e1c9c233e45e611b170ff093ae45 Mon Sep 17 00:00:00 2001 From: Tim Haasdyk Date: Sat, 4 Jul 2026 16:05:34 +0200 Subject: [PATCH 10/10] CodeRabbit fixes: sense-ownership guard on variant create, require variant entry id Both implementations now reject a MainSenseId that belongs to a different entry (fail before mutation); EntryValidator requires VariantEntryId on Variants items. Also corrects the stale cycle-guard decision text in VARIANTS.md. Co-Authored-By: Claude Fable 5 --- .../FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs | 17 ++++++++++++++--- backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs | 11 +++++++++++ .../FwLite/MiniLcm.Tests/VariantTestsBase.cs | 13 +++++++++++++ .../FwLite/MiniLcm/Validators/EntryValidator.cs | 6 ++++++ backend/FwLite/VARIANTS.md | 17 ++++++++++------- 5 files changed, 54 insertions(+), 10 deletions(-) diff --git a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs index f54982efec..d808dc4d57 100644 --- a/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs +++ b/backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs @@ -1476,9 +1476,20 @@ public Task RemoveVariantType(Variant variant, Guid variantTypeId) internal void AddVariant(ILexEntry lexVariantEntry, Variant variant) { if (FindVariantRef(lexVariantEntry, variant) is not null) return; //idempotent, like the CRDT side - var target = variant.MainSenseId is not null - ? (ICmObject)SenseRepository.GetObject(variant.MainSenseId.Value) - : EntriesRepository.GetObject(variant.MainEntryId); + ICmObject target; + if (variant.MainSenseId is not null) + { + var sense = SenseRepository.GetObject(variant.MainSenseId.Value); + //fail before mutating: a mismatched pair would create a link whose derived + //MainEntryId is the sense's actual entry, not the requested one + if (sense.Entry.Guid != variant.MainEntryId) + throw new InvalidOperationException($"Sense {variant.MainSenseId} does not belong to entry {variant.MainEntryId}, it belongs to {sense.Entry.Guid}"); + target = sense; + } + else + { + target = EntriesRepository.GetObject(variant.MainEntryId); + } //one LexEntryRef per link — multiple variant refs on an entry are how FLEx represents //being a variant of multiple things with different types var entryRef = Cache.ServiceLocator.GetInstance().Create(); diff --git a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs index ec9e216e58..efc2f0833c 100644 --- a/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs +++ b/backend/FwLite/LcmCrdt/CrdtMiniLcmApi.cs @@ -463,6 +463,17 @@ public async Task SubmitCreateVariant(Variant variant) private static async Task CreateVariantChange(MiniLcmRepository repo, Variant variant) { + if (variant.MainSenseId is not null) + { + //a missing sense is tolerated (out-of-order sync; the change soft-deletes the link), + //but a sense that exists under a DIFFERENT entry is a bad request + var senseEntryId = await repo.Senses + .Where(s => s.Id == variant.MainSenseId.Value) + .Select(s => (Guid?)s.EntryId) + .FirstOrDefaultAsync(); + if (senseEntryId is not null && senseEntryId != variant.MainEntryId) + throw new InvalidOperationException($"Sense {variant.MainSenseId} does not belong to entry {variant.MainEntryId}, it belongs to {senseEntryId}"); + } var typeIds = variant.Types.Select(t => t.Id).ToArray(); var resolvedTypes = await repo.VariantTypes.Where(t => typeIds.Contains(t.Id)).ToArrayAsync(); var missing = typeIds.Except(resolvedTypes.Select(t => t.Id)).ToArray(); diff --git a/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs index 6f6f616e8c..11aa7141ec 100644 --- a/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs +++ b/backend/FwLite/MiniLcm.Tests/VariantTestsBase.cs @@ -220,6 +220,19 @@ public async Task CreateVariant_ThrowsOnSelfReference() await act.Should().ThrowAsync(); } + [Fact] + public async Task CreateVariant_ThrowsWhenSenseBelongsToADifferentEntry() + { + var otherEntry = await Api.CreateEntry(new() + { + Id = Guid.NewGuid(), + LexemeForm = { { "en", "other entry" } } + }); + //_mainSenseId1 belongs to _mainEntry, not otherEntry + var act = async () => await Api.CreateVariant(Variant.FromEntries(_variantEntry, otherEntry, _mainSenseId1)); + await act.Should().ThrowAsync(); + } + [Fact] public async Task CreateVariant_AllowsChains() { diff --git a/backend/FwLite/MiniLcm/Validators/EntryValidator.cs b/backend/FwLite/MiniLcm/Validators/EntryValidator.cs index e07d1de399..33a40fc5d3 100644 --- a/backend/FwLite/MiniLcm/Validators/EntryValidator.cs +++ b/backend/FwLite/MiniLcm/Validators/EntryValidator.cs @@ -25,6 +25,7 @@ public EntryValidator() RuleForEach(e => e.VariantOf).Must(NotBeEmptyMainEntryReference).WithMessage("Variant main-entry reference must not be empty."); RuleForEach(e => e.VariantOf).Must(NotBeVariantOfSelfReference).WithMessage("Variant main-entry reference must not be the same as the entry."); RuleForEach(e => e.VariantOf).Must(HaveCorrectVariantEntryReference).WithMessage("Variant entry reference must be correct."); + RuleForEach(e => e.Variants).Must(NotBeEmptyVariantEntryReference).WithMessage("Variant entry reference must not be empty."); RuleForEach(e => e.Variants).Must(NotBeVariantSelfReference).WithMessage("Variant entry reference must not be the same as the entry."); RuleForEach(e => e.Variants).Must(HaveCorrectMainEntryReference).WithMessage("Variant main-entry reference must be correct."); RuleForEach(e => e.VariantOf).SetValidator(new VariantValidator()); @@ -63,6 +64,11 @@ private bool NotBeEmptyMainEntryReference(Entry entry, Variant variant) return variant.MainEntryId != Guid.Empty; } + private bool NotBeEmptyVariantEntryReference(Entry entry, Variant variant) + { + return variant.VariantEntryId != Guid.Empty; + } + private bool NotBeVariantOfSelfReference(Entry entry, Variant variant) { return variant.MainEntryId != entry.Id; diff --git a/backend/FwLite/VARIANTS.md b/backend/FwLite/VARIANTS.md index 0ac7299cff..e7953ba1ea 100644 --- a/backend/FwLite/VARIANTS.md +++ b/backend/FwLite/VARIANTS.md @@ -136,13 +136,16 @@ public record Variant : IObjectWithId This is what makes concurrent type edits merge instead of last-writer-wins. 6. **No ordering.** Variant lists have no user-meaningful order in FLEx; both directions diff as sets. No `IOrderable`, no `SetOrderChange`, no Move API. -7. **Only self-reference and duplicates are rejected — NOT chains or cycles.** This - deliberately diverges from complex forms' BFS cycle guard: FLEx itself allows variant - chains and cycles (`MakeVariantOf` has no cycle check, unlike complex-form components), - and FwLite never traverses variant links recursively, so rejecting shapes FLEx data can - contain would make sync diverge permanently. The duplicate guard lives in - `AddVariantChange` (soft-delete, sync-tolerant); self-reference is rejected by - `VariantValidator` in the validation wrapper (consistent across both implementations). +7. **Self-references, duplicates AND cycles are rejected; chains are allowed.** (This + decision reversed mid-implementation: `MakeVariantOf` has no cycle check, but the FwData + conformance tests proved liblcm rejects circular refs at a lower level — + `LexEntryRef.ValidateAddObjectInternal` → `LexEntry.AllComponents`, which walks the + **combined** complex-form + variant component graph. Allowing in the CRDT what FLEx + rejects would wedge sync, so `AddVariantChange` mirrors the combined-graph walk.) + The duplicate/cycle guard lives in `AddVariantChange` (soft-delete, sync-tolerant); + self-reference is additionally rejected by `VariantValidator` in the validation wrapper + (consistent across both implementations). Chains (a variant of a variant) remain legal, + as in FLEx. 8. **Deleted `VariantType` cleanup**: `Variant.GetReferences()` includes its `Types` ids, and `RemoveReference` removes the type from the list (only endpoint ids soft-delete the link). Better than the complex-forms quirk where deleted types linger in `Entry.ComplexFormTypes`.