Back to OIM Explorer

VI.UI.Controls.Common.Base/VI.UI.Controls.Common.Data.Relations/MemberRelationDataStore.cs

Decompiler Source FileVI.UI.Controls.Common.Base.MemberRelationDataStoreDecompiled Source

1 extracted method/event/call references in MemberRelationDataStore.

Source: F:\Claude\.tmp\oim-decompiled-full\1292_One_Identity_Manager_VI.UI.Controls.Common.Base.dll\VI.UI.Controls.Common.Data.Relations\MemberRelationDataStore.cs

Source size: 47.653 characters

Interpretation

  • Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.

Relations

  • CallMethod: AssignDirect at line 926

Typed Edges

  • No typed edges extracted for this source.

References

  • No direct source references extracted.

Referenced By

  • No direct source references extracted.

C# source-derived context

Generated by pattern extraction from the decompiled C# source and decompile index. This is factual source evidence, not inferred behavior.

reads entity values references DB/Dialog objects

Summary: classes MemberRelationDataStore, DeferredOperationInfo, MNLoadMemberInfo, OriginInformation; methods StateImageInfo, GetStateKey, Compare, MoveNext, SetStateMachine, IsMember; references DialogDeferredOperation, DynamicGroup, ESet; markers reads entity values, references DB/Dialog objects

Complete Source

C#1.254 lines
1using System;2using System.Collections;3using System.Collections.Generic;4using System.Diagnostics;5using System.Linq;6using System.Runtime.CompilerServices;7using System.Runtime.InteropServices;8using System.Threading;9using System.Threading.Tasks;10using VI.Base;11using VI.UI.Base;12using VI.UI.Base.Components;13using VI.UI.Base.Data;14using VI.UI.Base.Data.Entities;15using VI.UI.Base.Data.Hierarchy;16using VI.UI.Base.Data.Meta;17using VI.UI.Base.Data.Queries;18using VI.UI.Base.IoC.InversiveAPI;19using VI.UI.Base.TimeTrace;2021namespace VI.UI.Controls.Common.Data.Relations;2223public class MemberRelationDataStore : RelationDataStoreBase24{25	[RequiredMember]26	protected internal class DeferredOperationInfo27	{28		[RequiredMember]29		[field: CompilerGenerated]30		public string Operation31		{32			[CompilerGenerated]33			get;34			[CompilerGenerated]35			init;36		}3738		[RequiredMember]39		[field: CompilerGenerated]40		public System.DateTime Date41		{42			[CompilerGenerated]43			get;44			[CompilerGenerated]45			init;46		}4748		[Obsolete("Constructors of types with required members are not supported in this version of your compiler.", true)]49		[CompilerFeatureRequired("RequiredMembers")]50		public DeferredOperationInfo()51		{52		}53	}5455	internal class MNLoadMemberInfo56	{57		[field: CompilerGenerated]58		internal int DirectAssignmentCounter59		{60			[CompilerGenerated]61			get;62			[CompilerGenerated]63			set;64		}6566		[field: CompilerGenerated]67		internal int IndirectAssignmentCounter68		{69			[CompilerGenerated]70			get;71			[CompilerGenerated]72			set;73		}7475		[field: CompilerGenerated]76		internal int DynamicGroupAssignmentCounter77		{78			[CompilerGenerated]79			get;80			[CompilerGenerated]81			set;82		}8384		[field: CompilerGenerated]85		internal int EffectiveAssignmentCounter86		{87			[CompilerGenerated]88			get;89			[CompilerGenerated]90			set;91		}9293		[field: CompilerGenerated]94		internal int MarkedForDeletionCounter95		{96			[CompilerGenerated]97			get;98			[CompilerGenerated]99			set;100		}101102		[field: CompilerGenerated]103		internal int OutstandingCounter104		{105			[CompilerGenerated]106			get;107			[CompilerGenerated]108			set;109		}110	}111112	protected internal class OriginInformation113	{114		[field: CompilerGenerated]115		internal bool Available116		{117			[CompilerGenerated]118			get;119		}120121		[field: CompilerGenerated]122		internal bool HasDynamicGroupInfo123		{124			[CompilerGenerated]125			get;126		}127128		internal OriginInformation(IMetaType metaType)129		{130			//IL_000e: Unknown result type (might be due to invalid IL or missing references)131			if (metaType == null)132			{133				throw new ArgumentNullException("metaType");134			}135			IMetaProperty metaProperty = metaType.Properties["XOrigin", false];136			Available = metaProperty != null;137			int num;138			if (metaProperty == null)139			{140				num = 0;141			}142			else143			{144				BitDescriptor[]? bitMask = metaProperty.BitMask;145				num = ((((bitMask != null) ? new bool?(Enumerable.Any<BitDescriptor>((System.Collections.Generic.IEnumerable<BitDescriptor>)bitMask, (Func<BitDescriptor, bool>)((BitDescriptor b) => b.Position == 2))) : ((bool?)null)) == true) ? 1 : 0);146			}147			HasDynamicGroupInfo = (byte)num != 0;148		}149	}150151	internal class StateImageInfo(DataEntryState memberState, DataEntryState indirectDynamicState, DataEntryState effectiveState, RelationStateImage image)152	{153		[field: CompilerGenerated]154		public DataEntryState MemberState155		{156			[CompilerGenerated]157			get;158		} = memberState;159160		[field: CompilerGenerated]161		public DataEntryState IndirectDynamicState162		{163			[CompilerGenerated]164			get;165		} = indirectDynamicState;166167		[field: CompilerGenerated]168		public DataEntryState EffectiveState169		{170			[CompilerGenerated]171			get;172		} = effectiveState;173174		[field: CompilerGenerated]175		public RelationStateImage Image176		{177			[CompilerGenerated]178			get;179		} = image;180181		public static int GetStateKey(DataEntryState memberState, DataEntryState indirectDynamicState, DataEntryState effectiveState)182		{183			return (int)((uint)memberState | (uint)((int)indirectDynamicState << 4)) | ((int)effectiveState << 8);184		}185	}186187	public class StateComparer : IComparer<DataEntry>188	{189		internal static readonly StateComparer Instance = new StateComparer();190191		private const int ConstRawStateMask = 30;192193		public int Compare(DataEntry e1, DataEntry e2)194		{195			if (e1 == null || e2 == null)196			{197				return 0;198			}199			bool flag = !e1.IsHierarchyPart;200			bool flag2 = !e2.IsHierarchyPart;201			if (!flag && flag2)202			{203				return -1;204			}205			if (flag && !flag2)206			{207				return 1;208			}209			if (!flag && !flag2)210			{211				return string.Compare(e1.Display, e2.Display, (StringComparison)3);212			}213			int num = (((e1.RawState & 0x1E) > 0) ? 1 : 0);214			int num2 = (((e2.RawState & 0x1E) > 0) ? 1 : 0);215			int num3 = num.CompareTo(num2) * -1;216			if (num3 == 0)217			{218				return string.Compare(e1.Display, e2.Display, (StringComparison)3);219			}220			return num3;221		}222	}223224	[StructLayout((LayoutKind)3)]225	[CompilerGenerated]226	private struct _003COnGetHistoryChangeInfosAsync_003Ed__27 : IAsyncStateMachine227	{228		public int _003C_003E1__state;229230		public AsyncTaskMethodBuilder<DataTimeTrace[]> _003C_003Et__builder;231232		public MemberRelationDataStore _003C_003E4__this;233234		public CancellationToken ct;235236		public System.DateTime startTime;237238		public System.DateTime endTime;239240		private ITimeTraceDataService _003Csrv_003E5__2;241242		private Dictionary<string, object> _003C_003E7__wrap2;243244		private string _003C_003E7__wrap3;245246		private Dictionary<string, object> _003C_003E7__wrap4;247248		private ConfiguredTaskAwaiter<object> _003C_003Eu__1;249250		private ConfiguredTaskAwaiter<DataTimeTrace[]> _003C_003Eu__2;251252		private void MoveNext()253		{254			//IL_0102: Unknown result type (might be due to invalid IL or missing references)255			//IL_0107: Unknown result type (might be due to invalid IL or missing references)256			//IL_010f: Unknown result type (might be due to invalid IL or missing references)257			//IL_0180: Unknown result type (might be due to invalid IL or missing references)258			//IL_018b: Unknown result type (might be due to invalid IL or missing references)259			//IL_0190: Unknown result type (might be due to invalid IL or missing references)260			//IL_0194: Unknown result type (might be due to invalid IL or missing references)261			//IL_0199: Unknown result type (might be due to invalid IL or missing references)262			//IL_01c6: Unknown result type (might be due to invalid IL or missing references)263			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)264			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)265			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)266			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)267			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)268			//IL_00c4: Unknown result type (might be due to invalid IL or missing references)269			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)270			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)271			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)272			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)273			//IL_00e9: Unknown result type (might be due to invalid IL or missing references)274			int num = _003C_003E1__state;275			MemberRelationDataStore memberRelationDataStore = _003C_003E4__this;276			DataTimeTrace[] result;277			try278			{279				ConfiguredTaskAwaiter<object> val;280				if (num == 0)281				{282					val = _003C_003Eu__1;283					_003C_003Eu__1 = default(ConfiguredTaskAwaiter<object>);284					num = (_003C_003E1__state = -1);285					goto IL_011e;286				}287				ConfiguredTaskAwaiter<DataTimeTrace[]> val2;288				if (num == 1)289				{290					val2 = _003C_003Eu__2;291					_003C_003Eu__2 = default(ConfiguredTaskAwaiter<DataTimeTrace[]>);292					num = (_003C_003E1__state = -1);293					goto IL_01e2;294				}295				if (memberRelationDataStore.BaseEntity == null)296				{297					result = null;298				}299				else300				{301					_003Csrv_003E5__2 = memberRelationDataStore.IoCContainer.Resolve<ITimeTraceDataService>(throwEx: false);302					if (_003Csrv_003E5__2 != null)303					{304						_003C_003E7__wrap4 = new Dictionary<string, object>((IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);305						_003C_003E7__wrap2 = _003C_003E7__wrap4;306						_003C_003E7__wrap3 = memberRelationDataStore.BaseReference.Source.Name;307						val = Enumerable.First<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)memberRelationDataStore.m_MemberRelation.BaseType.Properties, (Func<IMetaProperty, bool>)((IMetaProperty p) => p.IsKeyMember)).GetValueAsync<object>(memberRelationDataStore.BaseEntity, null, ct).ConfigureAwait(false)308							.GetAwaiter();309						if (!val.IsCompleted)310						{311							num = (_003C_003E1__state = 0);312							_003C_003Eu__1 = val;313							_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<object>, _003COnGetHistoryChangeInfosAsync_003Ed__27>(ref val, ref this);314							return;315						}316						goto IL_011e;317					}318					result = null;319				}320				goto end_IL_000e;321				IL_011e:322				object result2 = val.GetResult();323				_003C_003E7__wrap2.Add(_003C_003E7__wrap3, result2);324				Dictionary<string, object> queryByExampleValues = _003C_003E7__wrap4;325				_003C_003E7__wrap2 = null;326				_003C_003E7__wrap3 = null;327				_003C_003E7__wrap4 = null;328				val2 = _003Csrv_003E5__2.GetTimeTracesAsync(memberRelationDataStore.MemberReference.Source.Type, (IReadOnlyDictionary<string, object>)(object)queryByExampleValues, new GetTimeTracesOption(startTime, endTime), ct).ConfigureAwait(false).GetAwaiter();329				if (!val2.IsCompleted)330				{331					num = (_003C_003E1__state = 1);332					_003C_003Eu__2 = val2;333					_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<DataTimeTrace[]>, _003COnGetHistoryChangeInfosAsync_003Ed__27>(ref val2, ref this);334					return;335				}336				goto IL_01e2;337				IL_01e2:338				result = val2.GetResult();339				end_IL_000e:;340			}341			catch (System.Exception exception)342			{343				_003C_003E1__state = -2;344				_003Csrv_003E5__2 = null;345				_003C_003Et__builder.SetException(exception);346				return;347			}348			_003C_003E1__state = -2;349			_003Csrv_003E5__2 = null;350			_003C_003Et__builder.SetResult(result);351		}352353		[DebuggerHidden]354		private void SetStateMachine(IAsyncStateMachine stateMachine)355		{356			_003C_003Et__builder.SetStateMachine(stateMachine);357		}358	}359360	internal const string ConstXOriginColumn = "XOrigin";361362	internal const string ConstXIsInEffectColumn = "XIsInEffect";363364	internal const int ConstXOriginDirectAssigned = 1;365366	internal const int ConstXOriginIndirectAssigned = 2;367368	internal const int ConstXOriginAssignedByDynamicGroup = 4;369370	internal const int ConstXMarkedForDeletionOutstanding = 2;371372	internal const int ConstXMarkedForDeletionDelayed = 1;373374	private static readonly StateImageInfo[] m_StateImageInfos;375376	private static readonly Dictionary<int, RelationStateImage> m_StateImageMap;377378	private OriginInformation m_OriginInfo;379380	private MemberRelationInfo m_MemberRelation;381382	private MemberRelationInfo m_MemberRelationOriginal;383384	internal const string ConstDefOpsTag = "DefOps";385386	private const string ApiKeyGetDeferredOperations = "Hierarchy.MemberRelationDataStore.GetDeferredOperations";387388	private IDictionary<string, DeferredOperationInfo> m_DeferredOperationsDict;389390	public override string RelationCaption391	{392		get393		{394			if (!string.IsNullOrEmpty(base.RelationCaption))395			{396				return base.RelationCaption;397			}398			IMetaType memberType = m_MemberRelation.MemberType;399			return GetOrCreateContextSensitiveRelationCaption(memberType.Name) ?? memberType.DisplayName.Translated;400		}401		set402		{403			base.RelationCaption = value;404		}405	}406407	protected override SupportedEntityTypes SupportedObjectType => SupportedEntityTypes.Single | SupportedEntityTypes.Composite;408409	protected internal OriginInformation OriginInfo => LazyInitializer.EnsureInitialized<OriginInformation>(ref m_OriginInfo, (Func<OriginInformation>)([CompilerGenerated] () => new OriginInformation(MemberReference.Source.Type)));410411	protected IMetaType MNTableName => MemberRelation.MNType;412413	protected IMetaReference BaseReference => MemberRelation.BaseProperty.Reference;414415	protected IMetaReference MemberReference => MemberRelation.MemberProperty.Reference;416417	protected MemberRelationInfo MemberRelation => LazyInitializer.EnsureInitialized<MemberRelationInfo>(ref m_MemberRelation, (Func<MemberRelationInfo>)([CompilerGenerated] () => base.IoCContainer.Resolve<ISchemeDescriptionService>().GetMemberRelation(base.BaseEntity, m_MemberRelationOriginal.BaseProperty.Reference, [CompilerGenerated] (MetaReferenceTarget memberTarget) => memberTarget.Target.Type == m_MemberRelationOriginal.MemberType)));418419	protected override bool RelationNeedsSavedBaseObject => true;420421	static MemberRelationDataStore()422	{423		m_StateImageInfos = new StateImageInfo[27]424		{425			new StateImageInfo(DataEntryState.None, DataEntryState.None, DataEntryState.None, RelationStateImage.AssignedNone),426			new StateImageInfo(DataEntryState.None, DataEntryState.None, DataEntryState.Set, RelationStateImage.AssignedIndirect),427			new StateImageInfo(DataEntryState.None, DataEntryState.None, DataEntryState.TriState, RelationStateImage.TriState),428			new StateImageInfo(DataEntryState.None, DataEntryState.Set, DataEntryState.None, RelationStateImage.AssignedIndirect),429			new StateImageInfo(DataEntryState.None, DataEntryState.Set, DataEntryState.Set, RelationStateImage.AssignedIndirect),430			new StateImageInfo(DataEntryState.None, DataEntryState.Set, DataEntryState.TriState, RelationStateImage.AssignedIndirect),431			new StateImageInfo(DataEntryState.None, DataEntryState.TriState, DataEntryState.None, RelationStateImage.None),432			new StateImageInfo(DataEntryState.None, DataEntryState.TriState, DataEntryState.Set, RelationStateImage.None),433			new StateImageInfo(DataEntryState.None, DataEntryState.TriState, DataEntryState.TriState, RelationStateImage.AssignedIndirect),434			new StateImageInfo(DataEntryState.Set, DataEntryState.None, DataEntryState.None, RelationStateImage.AssignedDirect),435			new StateImageInfo(DataEntryState.Set, DataEntryState.None, DataEntryState.Set, RelationStateImage.AssignedDirect),436			new StateImageInfo(DataEntryState.Set, DataEntryState.None, DataEntryState.TriState, RelationStateImage.AssignedDirect),437			new StateImageInfo(DataEntryState.Set, DataEntryState.Set, DataEntryState.None, RelationStateImage.AssignedDirectIndirect),438			new StateImageInfo(DataEntryState.Set, DataEntryState.Set, DataEntryState.Set, RelationStateImage.AssignedDirectIndirect),439			new StateImageInfo(DataEntryState.Set, DataEntryState.Set, DataEntryState.TriState, RelationStateImage.None),440			new StateImageInfo(DataEntryState.Set, DataEntryState.TriState, DataEntryState.None, RelationStateImage.None),441			new StateImageInfo(DataEntryState.Set, DataEntryState.TriState, DataEntryState.Set, RelationStateImage.AssignedDirectIndirect),442			new StateImageInfo(DataEntryState.Set, DataEntryState.TriState, DataEntryState.TriState, RelationStateImage.AssignedDirectIndirect),443			new StateImageInfo(DataEntryState.TriState, DataEntryState.None, DataEntryState.None, RelationStateImage.TriState),444			new StateImageInfo(DataEntryState.TriState, DataEntryState.None, DataEntryState.Set, RelationStateImage.TriState),445			new StateImageInfo(DataEntryState.TriState, DataEntryState.None, DataEntryState.TriState, RelationStateImage.TriState),446			new StateImageInfo(DataEntryState.TriState, DataEntryState.Set, DataEntryState.None, RelationStateImage.TriState),447			new StateImageInfo(DataEntryState.TriState, DataEntryState.Set, DataEntryState.Set, RelationStateImage.TriState),448			new StateImageInfo(DataEntryState.TriState, DataEntryState.Set, DataEntryState.TriState, RelationStateImage.TriState),449			new StateImageInfo(DataEntryState.TriState, DataEntryState.TriState, DataEntryState.None, RelationStateImage.TriState),450			new StateImageInfo(DataEntryState.TriState, DataEntryState.TriState, DataEntryState.Set, RelationStateImage.TriState),451			new StateImageInfo(DataEntryState.TriState, DataEntryState.TriState, DataEntryState.TriState, RelationStateImage.TriState)452		};453		m_StateImageMap = new Dictionary<int, RelationStateImage>();454		StateImageInfo[] stateImageInfos = m_StateImageInfos;455		foreach (StateImageInfo stateImageInfo in stateImageInfos)456		{457			m_StateImageMap[StateImageInfo.GetStateKey(stateImageInfo.MemberState, stateImageInfo.IndirectDynamicState, stateImageInfo.EffectiveState)] = stateImageInfo.Image;458		}459	}460461	public MemberRelationDataStore(IResolve iocContainer, MemberRelationInfo memberRelation, HierarchyHistoryLoadOption historyLoadOption)462		: base(iocContainer, memberRelation?.MemberType ?? throw new ArgumentNullException("memberRelation"), historyLoadOption)463	{464		//IL_0017: Unknown result type (might be due to invalid IL or missing references)465		m_MemberRelation = (m_MemberRelationOriginal = memberRelation);466	}467468	public static bool IsMember(DataEntry entry)469	{470		if (entry == null || entry.IsHierarchyPart)471		{472			return false;473		}474		return GetEffectiveMemberState(entry) == DataEntryState.Set;475	}476477	public bool MakeMember(DataEntry entry, bool recursive)478	{479		if (base.ReadOnly || entry == null)480		{481			return false;482		}483		bool result = false;484		if (!entry.IsHierarchyPart)485		{486			while (entry.Enabled && GetEffectiveMemberState(entry) != DataEntryState.Set)487			{488				entry.SignalChange();489				result = true;490			}491		}492		if (recursive)493		{494			System.Collections.Generic.IEnumerator<DataEntry> enumerator = ((System.Collections.Generic.IEnumerable<DataEntry>)entry.Children).GetEnumerator();495			try496			{497				while (((System.Collections.IEnumerator)enumerator).MoveNext())498				{499					DataEntry current = enumerator.Current;500					if (MakeMember(current, recursive: true))501					{502						result = true;503					}504				}505			}506			finally507			{508				((System.IDisposable)enumerator)?.Dispose();509			}510		}511		return result;512	}513514	public bool MakeNoMember(DataEntry entry, bool recursive)515	{516		if (base.ReadOnly || entry == null)517		{518			return false;519		}520		bool result = false;521		if (!entry.IsHierarchyPart)522		{523			while (entry.Enabled && GetEffectiveMemberState(entry) != DataEntryState.None)524			{525				entry.SignalChange();526				result = true;527			}528		}529		if (recursive)530		{531			System.Collections.Generic.IEnumerator<DataEntry> enumerator = ((System.Collections.Generic.IEnumerable<DataEntry>)entry.Children).GetEnumerator();532			try533			{534				while (((System.Collections.IEnumerator)enumerator).MoveNext())535				{536					DataEntry current = enumerator.Current;537					if (MakeNoMember(current, recursive: true))538					{539						result = true;540					}541				}542			}543			finally544			{545				((System.IDisposable)enumerator)?.Dispose();546			}547		}548		return result;549	}550551	protected override bool OnLoading(HierarchicalDataStoreLoadMode loadMode)552	{553		//IL_01e1: Unknown result type (might be due to invalid IL or missing references)554		//IL_01e7: Unknown result type (might be due to invalid IL or missing references)555		//IL_01ff: Unknown result type (might be due to invalid IL or missing references)556		//IL_0205: Unknown result type (might be due to invalid IL or missing references)557		bool cancel = false;558		IDataFilterExpression dataFilterExpression = ((loadMode == HierarchicalDataStoreLoadMode.Complete) ? GetQueryLimit(DataQuery.From(base.BaseType).Filter(base.BaseDataFilter).OptionalFilter([CompilerGenerated] (IQueryFilterBuilder b) => MemberRelation.MembersFilter, LanguageManager.Get("§CtrlCommonBase_Relations_Caption_ShowMembersOnly")), out cancel) : null);559		if (cancel)560		{561			return true;562		}563		List<IDataFilterExpression> val = new List<IDataFilterExpression>();564		if (base.BaseDataFilter != null)565		{566			val.Add(base.BaseDataFilter);567		}568		if (dataFilterExpression != null)569		{570			val.Add(dataFilterExpression);571		}572		if (base.ForceLoadCurrentAssignmentData && base.BaseEntity != null && val.Count > 0)573		{574			IDataFilterExpression membersFilter = MemberRelation.MembersFilter;575			if (membersFilter != null)576			{577				val.Add(membersFilter);578				IDataFilterExpression dataFilterExpression2 = ExpressionBuilder.Instance.Or("MemberRelationStore", val.ToArray());579				val.Clear();580				val.Add(dataFilterExpression2);581			}582		}583		bool flag = base.ForceFlatMode || (base.AutoFilterFlatMode && dataFilterExpression != null);584		HierarchyLoadOption hierarchyLoadOption = new HierarchyLoadOption(base.BaseType.Name)585		{586			DisplayPattern = (flag ? base.DisplayPatternFlat : base.DisplayPattern),587			Filters = (System.Collections.Generic.IReadOnlyCollection<IDataFilterExpression>)val,588			PostFilterRegex = base.PostFilterRegex,589			OrderBy = base.OrderBy,590			LoadDescription = true,591			LoadHierarchyDisplay = true592		};593		if (base.HandleCutNode)594		{595			hierarchyLoadOption.AddPropertyToLoad("IsCutNode");596		}597		if (base.BaseType.Properties["XMarkedForDeletion", false] != null)598		{599			hierarchyLoadOption.AddPropertyToLoad("XMarkedForDeletion");600		}601		base.LoadOptions = new HierarchyLoadOption[1] { hierarchyLoadOption };602		base.Hierarchy = HierarchyPath.FromParentPath(base.BaseType, flag ? "" : base.HierarchyDefinition?.ParentConnectProperty, base.HierarchyDefinition?.OuterHierarchy);603		List<RightsFilter> val2 = new List<RightsFilter>();604		IUserRightsAuthority userRightsAuthority = base.IoCContainer.Resolve<IUserRightsAuthority>(throwEx: false);605		bool flag2 = userRightsAuthority?.CanInsert(MNTableName) ?? true;606		bool flag3 = userRightsAuthority?.CanDelete(MNTableName) ?? true;607		if (base.ReadOnly || (!flag2 && !flag3))608		{609			val2.Add((RightsFilter)new NoRightsFilter());610		}611		else612		{613			if (!flag2 && flag3)614			{615				val2.Add((RightsFilter)new DataFilterBasedRightsFilter(base.IoCContainer, base.BaseType, MemberRelation.MembersFilter));616			}617			if (!flag3 && flag2)618			{619				val2.Add((RightsFilter)new DataFilterBasedRightsFilter(base.IoCContainer, base.BaseType, MemberRelation.NotMembersFilter));620			}621			if (base.EditFilter != null)622			{623				val2.Add((RightsFilter)new DataFilterBasedRightsFilter(base.IoCContainer, base.BaseType, base.EditFilter));624			}625		}626		base.RightsFilter = RelationDataStoreBase.BuildFilter((System.Collections.Generic.IEnumerable<RightsFilter>)val2);627		_LoadDeferredOperationInformation();628		return false;629	}630631	protected override void OnSetState()632	{633		//IL_0031: Unknown result type (might be due to invalid IL or missing references)634		//IL_0037: Unknown result type (might be due to invalid IL or missing references)635		//IL_0215: Unknown result type (might be due to invalid IL or missing references)636		//IL_021b: Unknown result type (might be due to invalid IL or missing references)637		//IL_03b4: Unknown result type (might be due to invalid IL or missing references)638		//IL_03b9: Unknown result type (might be due to invalid IL or missing references)639		//IL_03c2: Unknown result type (might be due to invalid IL or missing references)640		//IL_03c7: Unknown result type (might be due to invalid IL or missing references)641		if (base.BaseEntity == null)642		{643			return;644		}645		IMetaType baseMetaType = base.BaseEntity.Resolve<IMetaType>(throwException: true);646		IMetaProperty baseKeyProp = Enumerable.FirstOrDefault<MetaReferenceTarget>((System.Collections.Generic.IEnumerable<MetaReferenceTarget>)BaseReference.GetTargets(), (Func<MetaReferenceTarget, bool>)((MetaReferenceTarget t) => t.Target.Type == baseMetaType))?.Target;647		if (baseKeyProp == null)648		{649			return;650		}651		string[] baseEntityKeyValues = Enumerable.SelectMany<IUIEntity, string>(GetBaseEntities(), (Func<IUIEntity, System.Collections.Generic.IEnumerable<string>>)((IUIEntity e) => Enumerable.OfType<string>((System.Collections.IEnumerable)BaseReference.GetVariations(e.GetValue<string>(baseKeyProp.Name))))).ToArraySmart();652		IMetaType mNType = MemberRelation.MNType;653		IDataQueryService srv = base.IoCContainer.Resolve<IDataQueryService>(throwEx: true);654		IBuildDataQueryFilter buildDataQueryFilter = DataQuery.From(mNType).Filter((IQueryFilterBuilder b) => b.In(BaseReference.Source.Name, baseEntityKeyValues));655		if (base.IsHistoryMode)656		{657			buildDataQueryFilter.GoBackTo(base.HistoryLoadOption.DataTimeTrace);658			buildDataQueryFilter.Filter(ExpressionBuilder.Instance.QueryByExample(BaseReference.Source, Enumerable.First<string>((System.Collections.Generic.IEnumerable<string>)baseEntityKeyValues), "MNRelStore.History"));659		}660		bool flag = mNType.Properties["XOrigin", false] != null;661		bool flag2 = mNType.Properties["XIsInEffect", false] != null;662		bool flag3 = mNType.Properties["XMarkedForDeletion", false] != null;663		IDataQuery query = buildDataQueryFilter.Select(Enumerable.ToArray<string>(Enumerable.Select<IMetaProperty, string>(Enumerable.Where<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)new IMetaProperty[5]664		{665			flag3 ? mNType.Properties["XMarkedForDeletion", false] : null,666			flag ? mNType.Properties["XOrigin", false] : null,667			flag2 ? mNType.Properties["XIsInEffect", false] : null,668			BaseReference.Source,669			MemberReference.Source670		}, (Func<IMetaProperty, bool>)((IMetaProperty p) => p != null)), (Func<IMetaProperty, string>)((IMetaProperty p) => p.Name))));671		System.Collections.Generic.IReadOnlyList<IUIEntityLightweight> result = srv.QueryData(query, DataQueryOption.Slim).Result;672		if (((System.Collections.Generic.IReadOnlyCollection<IUIEntityLightweight>)result).Count == 0)673		{674			return;675		}676		string name = MemberReference.Source.Name;677		Dictionary<string, MNLoadMemberInfo> val = new Dictionary<string, MNLoadMemberInfo>((IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);678		System.Collections.Generic.IEnumerator<IUIEntityLightweight> enumerator = ((System.Collections.Generic.IEnumerable<IUIEntityLightweight>)result).GetEnumerator();679		try680		{681			MNLoadMemberInfo mNLoadMemberInfo = default(MNLoadMemberInfo);682			while (((System.Collections.IEnumerator)enumerator).MoveNext())683			{684				IUIEntityLightweight current = enumerator.Current;685				string value = current.GetValue<string>(name);686				value = MemberReference.ConvertToKey(value).ToString();687				if (!val.TryGetValue(value, ref mNLoadMemberInfo))688				{689					mNLoadMemberInfo = (val[value] = new MNLoadMemberInfo());690				}691				int num = ((!flag) ? 1 : current.GetValue("XOrigin", 0));692				if (num == 0 && base.IsHistoryMode)693				{694					num = 1;695				}696				if ((num & 1) > 0)697				{698					mNLoadMemberInfo.DirectAssignmentCounter++;699				}700				if ((num & 2) > 0)701				{702					mNLoadMemberInfo.IndirectAssignmentCounter++;703				}704				if ((num & 4) > 0)705				{706					mNLoadMemberInfo.DynamicGroupAssignmentCounter++;707				}708				if (base.IsHistoryMode || !flag2 || current.GetValue("XIsInEffect", defaultValue: false))709				{710					mNLoadMemberInfo.EffectiveAssignmentCounter++;711				}712				if (flag3)713				{714					int value2 = current.GetValue("XMarkedForDeletion", 0);715					if ((value2 & 2) > 0)716					{717						mNLoadMemberInfo.OutstandingCounter++;718					}719					if ((value2 & 1) > 0)720					{721						mNLoadMemberInfo.MarkedForDeletionCounter++;722					}723				}724			}725		}726		finally727		{728			((System.IDisposable)enumerator)?.Dispose();729		}730		int num2 = baseEntityKeyValues.Length;731		Enumerator<string, MNLoadMemberInfo> enumerator2 = val.GetEnumerator();732		try733		{734			while (enumerator2.MoveNext())735			{736				KeyValuePair<string, MNLoadMemberInfo> current2 = enumerator2.Current;737				DataEntry dataEntry = base.BaseDictionary[current2.Key];738				if (dataEntry != null)739				{740					MNLoadMemberInfo value3 = current2.Value;741					int directAssignmentCounter = value3.DirectAssignmentCounter;742					if (directAssignmentCounter == num2)743					{744						dataEntry.SetState(2, DataEntryState.Set);745					}746					else747					{748						dataEntry.SetState(2, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);749					}750					directAssignmentCounter = value3.IndirectAssignmentCounter;751					if (directAssignmentCounter == num2)752					{753						dataEntry.SetState(4, DataEntryState.Set);754					}755					else756					{757						dataEntry.SetState(4, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);758					}759					directAssignmentCounter = value3.DynamicGroupAssignmentCounter;760					if (directAssignmentCounter == num2)761					{762						dataEntry.SetState(8, DataEntryState.Set);763					}764					else765					{766						dataEntry.SetState(8, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);767					}768					directAssignmentCounter = value3.EffectiveAssignmentCounter;769					if (directAssignmentCounter == num2)770					{771						dataEntry.SetState(16, DataEntryState.Set);772					}773					else774					{775						dataEntry.SetState(16, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);776					}777					directAssignmentCounter = value3.OutstandingCounter;778					if (directAssignmentCounter == num2)779					{780						dataEntry.SetState(32, DataEntryState.Set);781					}782					else783					{784						dataEntry.SetState(32, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);785					}786					directAssignmentCounter = value3.MarkedForDeletionCounter;787					if (directAssignmentCounter == num2)788					{789						dataEntry.SetState(64, DataEntryState.Set);790					}791					else792					{793						dataEntry.SetState(64, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);794					}795					if (value3.OutstandingCounter > 0 || value3.MarkedForDeletionCounter > 0)796					{797						dataEntry.Enabled = false;798					}799				}800			}801		}802		finally803		{804			((System.IDisposable)enumerator2/*cast due to .constrained prefix*/).Dispose();805		}806		if (!base.HandleCutNode)807		{808			return;809		}810		System.Collections.Generic.IEnumerator<DataEntry> enumerator3 = base.BaseDictionary.GetEnumerator();811		try812		{813			while (((System.Collections.IEnumerator)enumerator3).MoveNext())814			{815				DataEntry current3 = enumerator3.Current;816				if ((bool)current3.GetRaw("IsCutNode", DataEntryValueKind.Raw))817				{818					current3.SetState(1, DataEntryState.Set);819				}820			}821		}822		finally823		{824			((System.IDisposable)enumerator3)?.Dispose();825		}826	}827828	protected override void OnSaveChanges(System.Collections.Generic.IReadOnlyCollection<DataEntry> entriesToSave)829	{830		//IL_005c: Unknown result type (might be due to invalid IL or missing references)831		//IL_0062: Unknown result type (might be due to invalid IL or missing references)832		//IL_0186: Unknown result type (might be due to invalid IL or missing references)833		//IL_018c: Unknown result type (might be due to invalid IL or missing references)834		//IL_0266: Unknown result type (might be due to invalid IL or missing references)835		//IL_026c: Unknown result type (might be due to invalid IL or missing references)836		//IL_01fd: Unknown result type (might be due to invalid IL or missing references)837		//IL_0203: Unknown result type (might be due to invalid IL or missing references)838		//IL_02b7: Unknown result type (might be due to invalid IL or missing references)839		//IL_02bd: Unknown result type (might be due to invalid IL or missing references)840		//IL_0349: Unknown result type (might be due to invalid IL or missing references)841		//IL_034f: Unknown result type (might be due to invalid IL or missing references)842		List<IUIEntity> val = new List<IUIEntity>();843		List<IUIEntity> val2 = new List<IUIEntity>();844		string mnBaseProp = BaseReference.Source.Name;845		string mnMemberProp = MemberReference.Source.Name;846		IDataQueryService srv = base.IoCContainer.Resolve<IDataQueryService>();847		string text = null;848		IMetaProperty target = Enumerable.First<MetaReferenceTarget>((System.Collections.Generic.IEnumerable<MetaReferenceTarget>)MemberReference.GetTargets(), (Func<MetaReferenceTarget, bool>)((MetaReferenceTarget t) => t.Target.Type == base.BaseType)).Target;849		System.Collections.Generic.IEnumerator<DataEntry> enumerator = ((System.Collections.Generic.IEnumerable<DataEntry>)entriesToSave).GetEnumerator();850		try851		{852			while (((System.Collections.IEnumerator)enumerator).MoveNext())853			{854				DataEntry entryToSave = enumerator.Current;855				DataEntryState effectiveMemberState = GetEffectiveMemberState(entryToSave);856				bool flag = false;857				switch (entryToSave.GetState(2))858				{859				case DataEntryState.None:860					if (effectiveMemberState != DataEntryState.Set)861					{862						continue;863					}864					break;865				case DataEntryState.Set:866					if (effectiveMemberState != DataEntryState.None)867					{868						continue;869					}870					flag = true;871					break;872				case DataEntryState.TriState:873					if (effectiveMemberState != DataEntryState.None)874					{875						if (effectiveMemberState != DataEntryState.Set)876						{877							continue;878						}879					}880					else881					{882						flag = true;883					}884					break;885				}886				string memberKeyValue;887				if (target.IsKeyMember)888				{889					memberKeyValue = entryToSave.Key;890				}891				else892				{893					memberKeyValue = Enumerable.First<IUIEntity>((System.Collections.Generic.IEnumerable<IUIEntity>)srv.QueryData<IUIEntity>(DataQuery.From(base.BaseType).Filter((IQueryFilterBuilder b) => b.KeyIs(entryToSave.Key)).Select(target.Name), DataQueryOption.Default).Result).GetValue<string>(target.Name);894				}895				System.Collections.Generic.IEnumerator<IUIEntity> enumerator2 = GetBaseEntities().GetEnumerator();896				try897				{898					while (((System.Collections.IEnumerator)enumerator2).MoveNext())899					{900						IUIEntity current = enumerator2.Current;901						if (text == null)902						{903							IMetaType baseType = current.Resolve<IMetaType>(throwException: true);904							text = Enumerable.First<MetaReferenceTarget>((System.Collections.Generic.IEnumerable<MetaReferenceTarget>)BaseReference.GetTargets(), (Func<MetaReferenceTarget, bool>)((MetaReferenceTarget t) => t.Target.Type == baseType)).Target.Name;905						}906						string baseKeyValue = current.GetValue<string>(text);907						System.Collections.Generic.IReadOnlyList<IUIEntity> result = srv.QueryData<IUIEntity>(DataQuery.From(MNTableName).Filter((IQueryFilterBuilder b) => b.And(b.Is(mnBaseProp, baseKeyValue), b.Is(mnMemberProp, memberKeyValue))).Select(), DataQueryOption.Default).Result;908						IUIEntity iUIEntity = null;909						if (flag && ((System.Collections.Generic.IReadOnlyCollection<IUIEntity>)result).Count == 1)910						{911							val.Add(result[0]);912						}913						else if (!flag)914						{915							if (((System.Collections.Generic.IReadOnlyCollection<IUIEntity>)result).Count == 0)916							{917								iUIEntity = srv.CreateNew(MNTableName);918								iUIEntity.SetValue(mnBaseProp, baseKeyValue);919								iUIEntity.SetValue(mnMemberProp, memberKeyValue);920							}921							else922							{923								iUIEntity = result[0];924								if (MNTableName.Properties["XOrigin", false] != null)925								{926									iUIEntity.Resolve<IUIEntityController>(throwException: true).CallMethod("AssignDirect");927								}928							}929						}930						if (iUIEntity != null)931						{932							val2.Add(iUIEntity);933						}934					}935				}936				finally937				{938					((System.IDisposable)enumerator2)?.Dispose();939				}940				if (flag)941				{942					entryToSave.SetState(18, DataEntryState.None, resetChangeLevel: true);943				}944				else945				{946					entryToSave.SetState(2, DataEntryState.Set, resetChangeLevel: true);947				}948			}949		}950		finally951		{952			((System.IDisposable)enumerator)?.Dispose();953		}954		if (val2.Count > 0)955		{956			UIEntityComposite.CreateSmart((System.Collections.Generic.IEnumerable<IUIEntity>)val2).Resolve<IUIEntityController>(throwException: true).Save();957		}958		if (val.Count > 0)959		{960			UIEntityComposite.CreateSmart((System.Collections.Generic.IEnumerable<IUIEntity>)val).Resolve<IUIEntityController>(throwException: true).Delete();961		}962	}963964	protected override void OnLoaded(EventArgs e)965	{966		_TagDeferredOperations(base.BaseDictionary);967		base.OnLoaded(e);968	}969970	protected override void OnSavedChanges()971	{972		RefreshDeferredOperationStates();973		base.OnSavedChanges();974	}975976	protected override RelationStateImage OnGetStateImage(DataEntry entry)977	{978		bool flag = base.HandleCutNode && entry.GetState(1) == DataEntryState.Set;979		DataEntryState indirectDynamicState = entry.GetState(4);980		switch (entry.GetState(8))981		{982		case DataEntryState.Set:983			indirectDynamicState = DataEntryState.Set;984			break;985		case DataEntryState.TriState:986			indirectDynamicState = DataEntryState.TriState;987			break;988		}989		int stateKey = StateImageInfo.GetStateKey(GetEffectiveMemberState(entry), indirectDynamicState, GetCurMemberEffectiveState(entry));990		RelationStateImage relationStateImage = default(RelationStateImage);991		if (!m_StateImageMap.TryGetValue(stateKey, ref relationStateImage))992		{993			return RelationStateImage.None;994		}995		if (!flag)996		{997			return relationStateImage;998		}999		return relationStateImage + 1;1000	}10011002	protected override DataEntryState OnGetEffectiveState(DataEntry entry)1003	{1004		return GetEffectiveMemberState(entry);1005	}10061007	internal static DataEntryState GetEffectiveMemberState(DataEntry entry)1008	{1009		int changeLevel = entry.ChangeLevel;1010		switch (entry.GetState(2))1011		{1012		case DataEntryState.Set:1013			if (changeLevel % 2 != 1)1014			{1015				return DataEntryState.Set;1016			}1017			return DataEntryState.None;1018		case DataEntryState.None:1019			if (changeLevel % 2 != 1)1020			{1021				return DataEntryState.None;1022			}1023			return DataEntryState.Set;1024		case DataEntryState.TriState:1025			switch (changeLevel % 3)1026			{1027			case 0:1028				return DataEntryState.TriState;1029			case 1:1030				return DataEntryState.Set;1031			case 2:1032				return DataEntryState.None;1033			}1034			break;1035		}1036		return DataEntryState.None;1037	}10381039	public static DataEntryState GetCurMemberEffectiveState(DataEntry entry)1040	{1041		int changeLevel = entry.ChangeLevel;1042		switch (entry.GetState(16))1043		{1044		case DataEntryState.Set:1045			if (changeLevel % 2 != 1)1046			{1047				return DataEntryState.Set;1048			}1049			return DataEntryState.None;1050		case DataEntryState.None:1051			if (changeLevel % 2 != 1)1052			{1053				return DataEntryState.None;1054			}1055			return DataEntryState.Set;1056		case DataEntryState.TriState:1057			switch (changeLevel % 3)1058			{1059			case 0:1060				return DataEntryState.TriState;1061			case 1:1062				return DataEntryState.Set;1063			case 2:1064				return DataEntryState.None;1065			}1066			break;1067		}1068		return DataEntryState.None;1069	}10701071	protected override IComparer<DataEntry> OnGetStateComparer()1072	{1073		return StateComparer.Instance;1074	}10751076	protected override void OnToggleEntries(DataEntry refEntry, DataEntry[] entries)1077	{1078		bool flag = !IsMember(refEntry);1079		foreach (DataEntry entry in entries)1080		{1081			if (flag && !IsMember(entry))1082			{1083				MakeMember(entry, recursive: false);1084			}1085			else if (!flag && IsMember(entry))1086			{1087				MakeNoMember(entry, recursive: false);1088			}1089		}1090	}10911092	protected override void OnAssignEntries(DataEntry[] entries)1093	{1094		entries.ForEach([CompilerGenerated] (DataEntry e) =>1095		{1096			MakeMember(e, recursive: false);1097		});1098	}10991100	protected override void OnRemoveEntries(DataEntry[] entries)1101	{1102		entries.ForEach([CompilerGenerated] (DataEntry e) =>1103		{1104			MakeNoMember(e, recursive: false);1105		});1106	}11071108	[AsyncStateMachine(typeof(_003COnGetHistoryChangeInfosAsync_003Ed__27))]1109	protected override async System.Threading.Tasks.Task<DataTimeTrace[]> OnGetHistoryChangeInfosAsync(System.DateTime startTime, System.DateTime endTime, CancellationToken ct)1110	{1111		//IL_0002: Unknown result type (might be due to invalid IL or missing references)1112		//IL_0007: Unknown result type (might be due to invalid IL or missing references)1113		//IL_0026: Unknown result type (might be due to invalid IL or missing references)1114		//IL_0027: Unknown result type (might be due to invalid IL or missing references)1115		if (base.BaseEntity == null)1116		{1117			return null;1118		}1119		ITimeTraceDataService srv = base.IoCContainer.Resolve<ITimeTraceDataService>(throwEx: false);1120		if (srv == null)1121		{1122			return null;1123		}1124		Dictionary<string, object> val = new Dictionary<string, object>((IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);1125		Dictionary<string, object> val2 = val;1126		string name = BaseReference.Source.Name;1127		val2.Add(name, await Enumerable.First<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)m_MemberRelation.BaseType.Properties, (Func<IMetaProperty, bool>)((IMetaProperty p) => p.IsKeyMember)).GetValueAsync<object>(base.BaseEntity, null, ct).ConfigureAwait(false));1128		return await srv.GetTimeTracesAsync(MemberReference.Source.Type, (IReadOnlyDictionary<string, object>)(object)val, new GetTimeTracesOption(startTime, endTime), ct).ConfigureAwait(false);1129	}11301131	protected override void OnGetSettings(System.Collections.Generic.IList<KeyValuePair<string, string>> settings)1132	{1133		//IL_0025: Unknown result type (might be due to invalid IL or missing references)1134		//IL_004a: Unknown result type (might be due to invalid IL or missing references)1135		//IL_0074: Unknown result type (might be due to invalid IL or missing references)1136		((System.Collections.Generic.ICollection<KeyValuePair<string, string>>)settings).Add(new KeyValuePair<string, string>(LanguageManager.Instance["§CtrlCommonBase_RelationControl_DefMode_MNTable"], MemberReference.Source.Type.Name));1137		((System.Collections.Generic.ICollection<KeyValuePair<string, string>>)settings).Add(new KeyValuePair<string, string>(LanguageManager.Instance["§CtrlCommonBase_RelationControl_DefMode_MNMemberTable"], base.BaseType.Name));1138		((System.Collections.Generic.ICollection<KeyValuePair<string, string>>)settings).Add(new KeyValuePair<string, string>(LanguageManager.Instance["§CtrlCommonBase_RelationControl_DefMode_MNMemberColumn"], MemberReference.Source.Name));1139	}11401141	protected override void OnBaseEntityChanged(IUIEntity old)1142	{1143		base.OnBaseEntityChanged(old);1144		m_MemberRelation = null;1145	}11461147	protected IDictionary<string, DeferredOperationInfo> OnLoadDeferredOperationDictionary(IMetaType mnType, IMetaProperty sourceKeyProperty, string sourceKeyValue)1148	{1149		//IL_0065: Unknown result type (might be due to invalid IL or missing references)1150		//IL_006b: Unknown result type (might be due to invalid IL or missing references)1151		if (!mnType.IsMNType)1152		{1153			return null;1154		}1155		IInversiveAPIService inversiveAPIService = base.IoCContainer.Resolve<IInversiveAPIService>(throwEx: false);1156		if (inversiveAPIService == null || !inversiveAPIService.IsImplemented(mnType.Model.Scheme, "Hierarchy.MemberRelationDataStore.GetDeferredOperations"))1157		{1158			return null;1159		}1160		return (IDictionary<string, DeferredOperationInfo>)(object)Enumerable.ToDictionary<IGrouping<string, object[]>, string, DeferredOperationInfo>(Enumerable.GroupBy<object[], string>((System.Collections.Generic.IEnumerable<object[]>)(List<object[]>)inversiveAPIService.Call<GenericCallResult>(mnType.Model.Scheme, "Hierarchy.MemberRelationDataStore.GetDeferredOperations", new GenericCallParameter1161		{1162			Param1 = mnType.Name,1163			Param2 = sourceKeyValue1164		}).Result1, (Func<object[], string>)((object[] o) => (string)o[0])), (Func<IGrouping<string, object[]>, string>)((IGrouping<string, object[]> g) => g.Key), (Func<IGrouping<string, object[]>, DeferredOperationInfo>)delegate(IGrouping<string, object[]> g)1165		{1166			object[] array = Enumerable.First<object[]>((System.Collections.Generic.IEnumerable<object[]>)g);1167			return new DeferredOperationInfo1168			{1169				Operation = (string)array[1],1170				Date = (System.DateTime)array[2]1171			};1172		}, (IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);1173	}11741175	private void _LoadDeferredOperationInformation()1176	{1177		//IL_0093: Unknown result type (might be due to invalid IL or missing references)1178		//IL_0099: Unknown result type (might be due to invalid IL or missing references)1179		if (!MNTableName.IsMAllType && base.BaseEntity != null)1180		{1181			IMetaProperty metaProperty = Enumerable.First<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)base.BaseEntity.Resolve<IMetaType>(throwException: true).Properties, (Func<IMetaProperty, bool>)((IMetaProperty p) => p.IsKeyMember));1182			string value = base.BaseEntity.GetValue<string>(metaProperty.Name);1183			m_DeferredOperationsDict = null;1184			if (base.IoCContainer.Resolve<IDataQueryService>().CountData(DataQuery.From(base.BaseType.Model.Scheme, "DialogDeferredOperation").SelectDisplays()) > 0)1185			{1186				m_DeferredOperationsDict = OnLoadDeferredOperationDictionary(MNTableName, metaProperty, value);1187			}1188		}1189	}11901191	private void _TagDeferredOperations(System.Collections.Generic.IEnumerable<DataEntry> entries)1192	{1193		if (m_DeferredOperationsDict == null || ((System.Collections.Generic.ICollection<KeyValuePair<string, DeferredOperationInfo>>)m_DeferredOperationsDict).Count == 0)1194		{1195			return;1196		}1197		System.Collections.Generic.IEnumerator<DataEntry> enumerator = entries.GetEnumerator();1198		try1199		{1200			DeferredOperationInfo value = default(DeferredOperationInfo);1201			while (((System.Collections.IEnumerator)enumerator).MoveNext())1202			{1203				DataEntry current = enumerator.Current;1204				if (m_DeferredOperationsDict.TryGetValue(current.Key, ref value))1205				{1206					current.Tags.Set("DefOps", value);1207				}1208			}1209		}1210		finally1211		{1212			((System.IDisposable)enumerator)?.Dispose();1213		}1214	}12151216	internal void RefreshDeferredOperationStates()1217	{1218		_LoadDeferredOperationInformation();1219		if (m_DeferredOperationsDict != null && ((System.Collections.Generic.ICollection<KeyValuePair<string, DeferredOperationInfo>>)m_DeferredOperationsDict).Count != 0)1220		{1221			_TagDeferredOperations(base.BaseDictionary);1222			if (Enumerable.Any<DeferredOperationInfo>((System.Collections.Generic.IEnumerable<DeferredOperationInfo>)m_DeferredOperationsDict.Values, (Func<DeferredOperationInfo, bool>)((DeferredOperationInfo doi) => doi.Operation.Equals("delete", (StringComparison)5))))1223			{1224				OnSetState();1225			}1226			if (Enumerable.Any<DeferredOperationInfo>((System.Collections.Generic.IEnumerable<DeferredOperationInfo>)m_DeferredOperationsDict.Values, (Func<DeferredOperationInfo, bool>)((DeferredOperationInfo doi) => doi.Operation.Equals("insert", (StringComparison)5))))1227			{1228				_ClearInsertTaggedDataEntryStateRecursive(base.BaseDictionary);1229			}1230		}1231	}12321233	private void _ClearInsertTaggedDataEntryStateRecursive(System.Collections.Generic.IEnumerable<DataEntry> entries)1234	{1235		System.Collections.Generic.IEnumerator<DataEntry> enumerator = entries.GetEnumerator();1236		try1237		{1238			while (((System.Collections.IEnumerator)enumerator).MoveNext())1239			{1240				DataEntry current = enumerator.Current;1241				DeferredOperationInfo deferredOperationInfo = current.Tags.Get<DeferredOperationInfo>("DefOps");1242				if (deferredOperationInfo != null && deferredOperationInfo.Operation.Equals("insert", (StringComparison)5))1243				{1244					current.SetState(2, DataEntryState.None);1245				}1246			}1247		}1248		finally1249		{1250			((System.IDisposable)enumerator)?.Dispose();1251		}1252	}1253}1254