using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using Questionable.Model; using Questionable.Model.Questing; namespace Questionable.Validation.Validators; internal sealed class BasicSequenceValidator : IQuestValidator { [Serializable] [CompilerGenerated] private sealed class _003C_003Ec { public static readonly _003C_003Ec _003C_003E9 = new _003C_003Ec(); public static Func _003C_003E9__0_0; public static Func _003C_003E9__0_1; public static Func _003C_003E9__0_2; public static Func _003C_003E9__0_3; internal bool _003CValidate_003Eb__0_0(QuestSequence x) { return _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == 0; } internal byte _003CValidate_003Eb__0_1(QuestSequence x) { return _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x); } internal bool _003CValidate_003Eb__0_2(byte x) { return x != byte.MaxValue; } internal bool _003CValidate_003Eb__0_3(QuestSequence x) { return _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == byte.MaxValue; } static byte _206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(QuestSequence P_0) { return P_0.Sequence; } } [CompilerGenerated] private sealed class _003C_003Ec__DisplayClass0_0 { public int i; internal bool _003CValidate_003Eb__4(QuestSequence x) { return _200B_206E_200F_200B_206B_200C_206A_206F_206C_202B_200B_202E_202E_200D_200D_206F_206C_200C_200F_202E_200E_200E_206D_206D_206A_200B_202A_202B_206A_202B_202A_206C_206D_202B_206F_202C_206B_202E_206B_200E_202E(x) == i; } static byte _200B_206E_200F_200B_206B_200C_206A_206F_206C_202B_200B_202E_202E_200D_200D_206F_206C_200C_200F_202E_200E_200E_206D_206D_206A_200B_202A_202B_206A_202B_202A_206C_206D_202B_206F_202C_206B_202E_206B_200E_202E(QuestSequence P_0) { return P_0.Sequence; } } [CompilerGenerated] private sealed class _003CValidate_003Ed__0 : IEnumerable, IEnumerable, IEnumerator, IEnumerator, IDisposable { private int _003C_003E1__state; private ValidationIssue _003C_003E2__current; private int _003C_003El__initialThreadId; private Quest quest; public Quest _003C_003E3__quest; private _003C_003Ec__DisplayClass0_0 _003C_003E8__1; private List _003Csequences_003E5__2; private QuestSequence _003CfoundStart_003E5__3; private List.Enumerator _003C_003E7__wrap3; private int _003CmaxSequence_003E5__5; ValidationIssue IEnumerator.Current { [DebuggerHidden] get { return _003C_003E2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return _003C_003E2__current; } } [DebuggerHidden] public _003CValidate_003Ed__0(int _003C_003E1__state) { this._003C_003E1__state = _003C_003E1__state; _003C_003El__initialThreadId = _202D_202D_202E_206D_200D_206B_200E_200B_202E_200E_206C_206E_200B_202E_206A_202C_202C_202C_206F_200F_200F_200F_206C_202D_200D_200C_202C_200C_202D_206A_202A_202C_200E_206A_206E_206D_202E_202E_206E_202A_202E(); } [DebuggerHidden] void IDisposable.Dispose() { int num = _003C_003E1__state; int num2 = ((num == -3) ? (-1108787515) : (-1108787514)); while (true) { int num3 = num2; int num4 = -1108787516; int num5 = num3; switch ((num5 | num4) - (num5 & num4)) { default: continue; case 0: num2 = -1108787514; continue; case 2: if (num == 2) { num2 = -1108787515; continue; } break; case 1: try { } finally { _003C_003Em__Finally1(); } break; } break; } _003C_003E8__1 = null; _003Csequences_003E5__2 = null; _003CfoundStart_003E5__3 = null; _003C_003E7__wrap3 = default(List.Enumerator); _003C_003E1__state = -2; } [MethodImpl(MethodImplOptions.NoInlining)] private bool MoveNext() { try { int num; ValidationIssue validationIssue = default(ValidationIssue); QuestSequence current = default(QuestSequence); ValidationIssue validationIssue2 = default(ValidationIssue); QuestInfo questInfo = default(QuestInfo); switch (_003C_003E1__state) { default: num = -218365441; goto IL_002d; case 1: break; case 2: _003C_003E1__state = -3; num = -218365453; goto IL_002d; case 0: goto IL_01f4; case 3: goto IL_02ac; case 4: goto IL_0597; IL_002d: while (true) { int num2 = num; int num3 = -218365443; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 22: goto IL_00ad; case 18: goto end_IL_0008; case 15: goto end_IL_002d; case 23: goto IL_014f; case 2: return false; case 6: goto IL_018f; case 4: { int num5 = _003C_003E8__1.i; _003C_003Ec__DisplayClass0_0 _003C_003Ec__DisplayClass0_ = _003C_003E8__1; num3 = 1; num4 = num5; _003C_003Ec__DisplayClass0_.i = (num4 | num3) + (num4 & num3); num = -218365456; break; } case 16: goto IL_01f4; case 17: _003C_003E2__current = validationIssue; _003C_003E1__state = 4; return true; case 1: goto IL_0289; case 3: goto IL_02ac; case 7: _003C_003E2__current = new ValidationIssue { PathType = EPathType.Quest, Id = _206B_206C_202D_206D_202B_202B_202E_202B_200C_206F_202A_200E_206B_202B_200F_200F_202E_202A_200C_200B_200F_200F_206F_206C_206B_206F_206F_202A_206E_202E_202A_206A_202B_206C_206B_200E_200D_206C_206A_206E_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation(_206E_200F_200C_206F_200D_200D_200F_202D_202C_206A_206D_202A_206C_200F_206C_200B_202A_200B_206F_200E_206E_206F_206C_202B_200F_206E_202B_202E_200E_206B_200C_202E_202E_200C_202B_200E_202A_202C_202B_200F_202E(current), null), Type = EIssueType.InstantQuestWithMultipleSteps, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(-1806487031) }; _003C_003E1__state = 2; return true; case 20: goto IL_0340; case 5: _003C_003E2__current = validationIssue2; _003C_003E1__state = 3; return true; case 9: goto IL_03c4; case 10: _003CmaxSequence_003E5__5 = (from x in _003Csequences_003E5__2 select _003C_003Ec._206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) into x where x != byte.MaxValue select x).Max(); _003C_003E8__1 = new _003C_003Ec__DisplayClass0_0(); _003C_003E8__1.i = 0; num = -218365456; break; case 11: num = -218365441; break; case 14: goto IL_0484; case 13: goto IL_04ac; case 8: _003C_003E2__current = new ValidationIssue { PathType = EPathType.Quest, Id = _206B_206C_202D_206D_202B_202B_202E_202B_200C_206F_202A_200E_206B_202B_200F_200F_202E_202A_200C_200B_200F_200F_206F_206C_206B_206F_206F_202A_206E_202E_202A_206A_202B_206C_206B_200E_200D_206C_206A_206E_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation(0, null), Type = EIssueType.MissingSequence0, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E(-1619010830) }; _003C_003E1__state = 1; return true; case 21: _003C_003E7__wrap3 = _003Csequences_003E5__2.GetEnumerator(); _003C_003E1__state = -3; num = -218365453; break; case 19: _003C_003Em__Finally1(); _003C_003E7__wrap3 = default(List.Enumerator); num = -218365443; break; case 12: goto IL_0597; case 0: return false; } continue; IL_04ac: num = ((_003C_003E8__1.i <= _003CmaxSequence_003E5__5) ? (-218365463) : (-218365461)); continue; IL_014f: num = ((!(quest.Info is QuestInfo)) ? (-218365443) : (-218365449)); continue; IL_0340: List foundSequences = _003Csequences_003E5__2.Where((QuestSequence x) => _003C_003Ec__DisplayClass0_0._200B_206E_200F_200B_206B_200C_206A_206F_206C_202B_200B_202E_202E_200D_200D_206F_206C_200C_200F_202E_200E_200E_206D_206D_206A_200B_202A_202B_206A_202B_202A_206C_206D_202B_206F_202C_206B_202E_206B_200E_202E(x) == _003C_003E8__1.i).ToList(); validationIssue2 = ValidateSequences(quest, _003C_003E8__1.i, foundSequences); num = ((!(validationIssue2 != null)) ? (-218365447) : (-218365448)); continue; IL_0484: num = (_003C_003E7__wrap3.MoveNext() ? (-218365452) : (-218365458)); continue; IL_00ad: _003C_003E8__1 = null; List foundSequences2 = _003Csequences_003E5__2.Where((QuestSequence x) => _003C_003Ec._206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == byte.MaxValue).ToList(); validationIssue = ValidateSequences(quest, 255, foundSequences2); num = ((!(validationIssue != null)) ? (-218365443) : (-218365460)); continue; IL_018f: questInfo = quest.Info as QuestInfo; num = ((questInfo == null) ? (-218365462) : (-218365444)); continue; IL_03c4: current = _003C_003E7__wrap3.Current; num = ((current == _003CfoundStart_003E5__3) ? (-218365453) : (-218365446)); continue; IL_0289: num = ((!questInfo.CompletesInstantly) ? (-218365462) : (-218365464)); continue; end_IL_002d: break; } goto case 2; IL_0597: _003C_003E1__state = -1; num = -218365443; goto IL_002d; IL_02ac: _003C_003E1__state = -1; num = -218365447; goto IL_002d; IL_01f4: _003C_003E1__state = -1; _003Csequences_003E5__2 = _200C_200F_200F_202E_206E_202D_206F_202A_200B_200B_206F_206B_206A_206E_202B_200D_200D_200E_200E_206B_206C_200B_206A_206E_200E_202D_202E_202E_202C_206F_202C_202E_206C_200C_206C_202B_206E_202E_200C_200E_202E(quest.Root); _003CfoundStart_003E5__3 = _003Csequences_003E5__2.FirstOrDefault((QuestSequence x) => _003C_003Ec._206E_206E_206E_206C_206C_202D_200F_206A_202E_202D_206A_206E_202A_202D_200E_200B_206B_202E_200B_206A_202A_202C_202A_206E_202D_206C_202C_200D_206D_200E_200B_206E_200B_206D_206C_206D_206B_202A_200D_200F_202E(x) == 0); num = ((_003CfoundStart_003E5__3 != null) ? (-218365445) : (-218365451)); goto IL_002d; end_IL_0008: break; } _003C_003E1__state = -1; return false; } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void _003C_003Em__Finally1() { _003C_003E1__state = -1; ((IDisposable)_003C_003E7__wrap3/*cast due to .constrained prefix*/).Dispose(); } [DebuggerHidden] void IEnumerator.Reset() { throw _200E_200E_206C_202A_206E_200B_202A_200C_200D_202E_200B_206A_202C_200D_202D_206E_202D_206B_206C_206A_200D_200E_206F_206A_200C_202B_206B_206E_202C_202C_206A_202C_202A_202B_206E_200D_206B_202E_200C_206D_202E(); } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { int num = ((_003C_003E1__state != -2) ? (-1853104470) : (-1853104472)); _003CValidate_003Ed__0 _003CValidate_003Ed__ = default(_003CValidate_003Ed__0); while (true) { int num2 = num; int num3 = -1853104471; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 4: _003CValidate_003Ed__.quest = _003C_003E3__quest; return _003CValidate_003Ed__; case 1: num = ((_003C_003El__initialThreadId != _202D_202D_202E_206D_200D_206B_200E_200B_202E_200E_206C_206E_200B_202E_206A_202C_202C_202C_206F_200F_200F_200F_206C_202D_200D_200C_202C_200C_202D_206A_202A_202C_200E_206A_206E_206D_202E_202E_206E_202A_202E()) ? (-1853104470) : (-1853104469)); break; case 2: _003C_003E1__state = 0; _003CValidate_003Ed__ = this; num = -1853104467; break; case 0: num = -1853104472; break; case 3: _003CValidate_003Ed__ = new _003CValidate_003Ed__0(0); num = -1853104467; break; } } } [DebuggerHidden] IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)this).GetEnumerator(); } static int _202D_202D_202E_206D_200D_206B_200E_200B_202E_200E_206C_206E_200B_202E_206A_202C_202C_202C_206F_200F_200F_200F_206C_202D_200D_200C_202C_200C_202D_206A_202A_202C_200E_206A_206E_206D_202E_202E_206E_202A_202E() { return Environment.CurrentManagedThreadId; } static List _200C_200F_200F_202E_206E_202D_206F_202A_200B_200B_206F_206B_206A_206E_202B_200D_200D_200E_200E_206B_206C_200B_206A_206E_200E_202D_202E_202E_202C_206F_202C_202E_206C_200C_206C_202B_206E_202E_200C_200E_202E(QuestRoot P_0) { return P_0.QuestSequence; } static string _206B_206C_202D_206D_202B_202B_202E_202B_200C_206F_202A_200E_206B_202B_200F_200F_202E_202A_200C_200B_200F_200F_206F_206C_206B_206F_206F_202A_206E_202E_202A_206A_202B_206C_206B_200E_200D_206C_206A_206E_202E(object P_0) { return P_0.ToString(); } static byte _206E_200F_200C_206F_200D_200D_200F_202D_202C_206A_206D_202A_206C_200F_206C_200B_202A_200B_206F_200E_206E_206F_206C_202B_200F_206E_202B_202E_200E_206B_200C_202E_202E_200C_202B_200E_202A_202C_202B_200F_202E(QuestSequence P_0) { return P_0.Sequence; } static NotSupportedException _200E_200E_206C_202A_206E_200B_202A_200C_200D_202E_200B_206A_202C_200D_202D_206E_202D_206B_206C_206A_200D_200E_206F_206A_200C_202B_206B_206E_202C_202C_206A_202C_202A_202B_206E_200D_206B_202E_200C_206D_202E() { return new NotSupportedException(); } } [IteratorStateMachine(typeof(_003CValidate_003Ed__0))] public IEnumerable Validate(Quest quest) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new _003CValidate_003Ed__0(-2) { _003C_003E3__quest = quest }; } IEnumerable IQuestValidator.Validate(Quest quest) { //ILSpy generated this explicit interface implementation from .override directive in Validate return this.Validate(quest); } [MethodImpl(MethodImplOptions.NoInlining)] private static ValidationIssue? ValidateSequences(Quest quest, int sequenceNo, List foundSequences) { int num = ((foundSequences.Count != 0) ? (-2063346227) : (-2063346230)); while (true) { int num2 = num; int num3 = -2063346231; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 0: num = -2063346230; break; case 3: return new ValidationIssue { PathType = EPathType.Quest, Id = _206D_206D_206D_206D_202B_202D_202C_202A_206C_206A_206C_202B_206E_200B_202E_200C_202C_206E_206B_202A_206F_200F_206D_206F_202D_206F_200E_206B_206D_200C_202A_200B_202C_200B_202B_202D_206A_206E_202D_202B_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation((byte)sequenceNo, null), Type = EIssueType.MissingSequence, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E(1578841753) }; case 4: num = ((foundSequences.Count < 2) ? (-2063346229) : (-2063346232)); break; case 1: return new ValidationIssue { PathType = EPathType.Quest, Id = _206D_206D_206D_206D_202B_202D_202C_202A_206C_206A_206C_202B_206E_200B_202E_200C_202C_206E_206B_202A_206F_200F_206D_206F_202D_206F_200E_206B_206D_200C_202A_200B_202C_200B_202B_202D_206A_206E_202D_202B_202E((object)quest.Id), Location = SchemaValidationHelper.FormatQuestLocation((byte)sequenceNo, null), Type = EIssueType.DuplicateSequence, Severity = EIssueSeverity.Error, Description = global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E(-312193419) }; case 2: return null; } } } static string _206D_206D_206D_206D_202B_202D_202C_202A_206C_206A_206C_202B_206E_200B_202E_200C_202C_206E_206B_202A_206F_200F_206D_206F_202D_206F_200E_206B_206D_200C_202A_200B_202C_200B_202B_202D_206A_206E_202D_202B_202E(object P_0) { return P_0.ToString(); } }