// Decompiled with JetBrains decompiler // Type: TaskScheduler.TriggerList // Assembly: AutoKMS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: D1CED9E3-1FC7-49B8-B3AC-44976AB7F6E4 // Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\HackTool.Win32.KMSAuto.i-f317ba4d4051fad64a0aa45b587fa3dcea795bac30acec2872779abe31a07cbe.exe using System; using System.Collections; using TaskSchedulerInterop; namespace TaskScheduler { public class TriggerList : IList, ICollection, IEnumerable, IDisposable { private ITask iTask; private ArrayList oTriggers; internal TriggerList(ITask iTask) { this.iTask = iTask; ushort Count = 0; iTask.GetTriggerCount(out Count); this.oTriggers = new ArrayList((int) Count + 5); for (int TriggerIndex = 0; TriggerIndex < (int) Count; ++TriggerIndex) { ITaskTrigger Trigger; iTask.GetTrigger((ushort) TriggerIndex, out Trigger); this.oTriggers.Add((object) Trigger.CreateTrigger(Trigger)); } } public void RemoveAt(int index) { if (index >= this.Count) throw new ArgumentOutOfRangeException(nameof (index), (object) index, "Failed to remove Trigger. Index out of range."); ((Trigger) this.oTriggers[index]).Unbind(); this.oTriggers.RemoveAt(index); this.iTask.DeleteTrigger((ushort) index); } void IList.Insert(int index, object value) => throw new NotImplementedException("TriggerList does not support Insert()."); public void Remove(Trigger trigger) { int index = this.IndexOf(trigger); if (index == -1) return; this.RemoveAt(index); } void IList.Remove(object value) => this.Remove(value as Trigger); public bool Contains(Trigger trigger) => this.IndexOf(trigger) != -1; bool IList.Contains(object value) => this.Contains(value as Trigger); public void Clear() { for (int index = this.Count - 1; index >= 0; --index) this.RemoveAt(index); } public int IndexOf(Trigger trigger) { for (int index = 0; index < this.Count; ++index) { if (this[index].Equals((object) trigger)) return index; } return -1; } int IList.IndexOf(object value) => this.IndexOf(value as Trigger); public int Add(Trigger trigger) { if (trigger.Bound) throw new ArgumentException("A Trigger cannot be added if it is already in a list."); ushort NewTriggerIndex; ITaskTrigger Trigger; this.iTask.CreateTrigger(out NewTriggerIndex, out Trigger); trigger.Bind(Trigger); if (this.oTriggers.Add((object) trigger) != (int) NewTriggerIndex) throw new ApplicationException("Assertion Failure"); return (int) NewTriggerIndex; } int IList.Add(object value) => this.Add(value as Trigger); public bool IsReadOnly => false; public Trigger this[int index] { get => index < this.Count ? (Trigger) this.oTriggers[index] : throw new ArgumentOutOfRangeException(nameof (index), (object) index, "TriggerList collection"); set { Trigger trigger = index < this.Count ? (Trigger) this.oTriggers[index] : throw new ArgumentOutOfRangeException(nameof (index), (object) index, "TriggerList collection"); value.Bind(trigger); this.oTriggers[index] = (object) value; } } object IList.this[int index] { get => (object) this[index]; set => this[index] = value as Trigger; } public bool IsFixedSize => false; public int Count => this.oTriggers.Count; public void CopyTo(Array array, int index) { if (this.oTriggers.Count > array.Length - index) throw new ArgumentException("Array has insufficient space to copy the collection."); for (int index1 = 0; index1 < this.oTriggers.Count; ++index1) array.SetValue(((Trigger) this.oTriggers[index1]).Clone(), index + index1); } public bool IsSynchronized => false; public object SyncRoot => (object) null; public IEnumerator GetEnumerator() => (IEnumerator) new TriggerList.Enumerator(this); public void Dispose() { foreach (Trigger oTrigger in this.oTriggers) oTrigger.Unbind(); this.oTriggers = (ArrayList) null; this.iTask = (ITask) null; } private class Enumerator : IEnumerator { private TriggerList outer; private int currentIndex; internal Enumerator(TriggerList outer) { this.outer = outer; this.Reset(); } public bool MoveNext() => ++this.currentIndex < this.outer.oTriggers.Count; public void Reset() => this.currentIndex = -1; public object Current => this.outer.oTriggers[this.currentIndex]; } } }