Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of LethalConfig v1.4.6
plugins/LethalConfig/LethalConfig.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using LethalConfig.AutoConfig; using LethalConfig.ConfigItems; using LethalConfig.ConfigItems.Options; using LethalConfig.Mods; using LethalConfig.MonoBehaviours; using LethalConfig.MonoBehaviours.ColorPicker; using LethalConfig.MonoBehaviours.Components; using LethalConfig.MonoBehaviours.Managers; using LethalConfig.Utils; using Newtonsoft.Json; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.Serialization; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { MonoScriptData result = default(MonoScriptData); result.FilePathsData = new byte[4366] { 0, 0, 0, 3, 0, 0, 0, 49, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 92, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 92, 67, 111, 110, 102, 105, 103, 69, 110, 116, 114, 121, 80, 97, 116, 104, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 66, 97, 115, 101, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 72, 101, 120, 67, 111, 108, 111, 114, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 66, 97, 115, 101, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 66, 97, 115, 101, 82, 97, 110, 103, 101, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 67, 97, 110, 77, 111, 100, 105, 102, 121, 82, 101, 115, 117, 108, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 72, 101, 120, 67, 111, 108, 111, 114, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 73, 110, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 79, 112, 116, 105, 111, 110, 115, 92, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 92, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 26, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 67, 111, 110, 102, 105, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 38, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 37, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 80, 108, 117, 103, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 27, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 100, 115, 92, 77, 111, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 31, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 100, 115, 92, 77, 111, 100, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 100, 115, 92, 84, 104, 117, 110, 100, 101, 114, 115, 116, 111, 114, 101, 77, 97, 110, 105, 102, 101, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 92, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 92, 83, 86, 73, 109, 97, 103, 101, 67, 111, 110, 116, 114, 111, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 72, 101, 120, 67, 111, 108, 111, 114, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 64, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 77, 111, 100, 67, 111, 110, 102, 105, 103, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 73, 110, 102, 111, 66, 111, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 78, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 48, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 66, 111, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 97, 110, 97, 103, 101, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 65, 117, 100, 105, 111, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 97, 110, 97, 103, 101, 114, 115, 92, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 111, 100, 73, 110, 102, 111, 66, 111, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 41, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 111, 100, 76, 105, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 77, 111, 100, 76, 105, 115, 116, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 47, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 83, 101, 99, 116, 105, 111, 110, 72, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 41, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 84, 111, 111, 108, 116, 105, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 84, 111, 111, 108, 116, 105, 112, 83, 121, 115, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 48, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 84, 111, 111, 108, 116, 105, 112, 84, 114, 105, 103, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 46, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 92, 86, 101, 114, 115, 105, 111, 110, 76, 97, 98, 101, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 80, 97, 116, 99, 104, 101, 115, 92, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 80, 97, 116, 99, 104, 101, 115, 92, 81, 117, 105, 99, 107, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 46, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 80, 97, 116, 99, 104, 101, 115, 92, 83, 116, 97, 114, 116, 79, 102, 82, 111, 117, 110, 100, 80, 97, 116, 99, 104, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 43, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 65, 115, 115, 101, 109, 98, 108, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 31, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 65, 115, 115, 101, 116, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 33, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 76, 111, 103, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 35, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 77, 101, 110, 117, 115, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 34, 92, 65, 115, 115, 101, 116, 115, 92, 83, 99, 114, 105, 112, 116, 115, 92, 85, 116, 105, 108, 115, 92, 80, 97, 116, 104, 85, 116, 105, 108, 115, 46, 99, 115 }; result.TypesData = new byte[4038] { 0, 0, 0, 0, 43, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 124, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 124, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 66, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 71, 101, 110, 101, 114, 97, 116, 111, 114, 124, 67, 111, 110, 102, 105, 103, 70, 105, 108, 101, 65, 115, 115, 101, 109, 98, 108, 121, 80, 97, 105, 114, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 65, 117, 116, 111, 67, 111, 110, 102, 105, 103, 124, 67, 111, 110, 102, 105, 103, 69, 110, 116, 114, 121, 80, 97, 116, 104, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 66, 97, 115, 101, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 66, 97, 115, 101, 86, 97, 108, 117, 101, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 47, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 47, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 50, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 46, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 50, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 48, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 53, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 72, 101, 120, 67, 111, 108, 111, 114, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 48, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 66, 97, 115, 101, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 49, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 66, 97, 115, 101, 82, 97, 110, 103, 101, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 52, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 48, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 67, 97, 110, 77, 111, 100, 105, 102, 121, 82, 101, 115, 117, 108, 116, 0, 0, 0, 0, 52, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 55, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 51, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 55, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 53, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 72, 101, 120, 67, 111, 108, 111, 114, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 53, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 49, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 73, 110, 116, 83, 108, 105, 100, 101, 114, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 52, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 54, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 46, 79, 112, 116, 105, 111, 110, 115, 124, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 47, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 49, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 115, 124, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 102, 105, 103, 73, 116, 101, 109, 0, 0, 0, 0, 20, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 67, 111, 110, 102, 105, 103, 115, 0, 0, 0, 0, 32, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 23, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 80, 108, 117, 103, 105, 110, 73, 110, 102, 111, 0, 0, 0, 0, 31, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 124, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 80, 108, 117, 103, 105, 110, 0, 0, 0, 0, 21, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 100, 115, 124, 77, 111, 100, 0, 0, 0, 0, 25, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 100, 115, 124, 77, 111, 100, 73, 110, 102, 111, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 100, 115, 124, 84, 104, 117, 110, 100, 101, 114, 115, 116, 111, 114, 101, 77, 97, 110, 105, 102, 101, 115, 116, 0, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 124, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 67, 111, 110, 116, 114, 111, 108, 0, 0, 0, 0, 61, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 0, 0, 0, 0, 54, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 108, 111, 114, 80, 105, 99, 107, 101, 114, 124, 83, 86, 73, 109, 97, 103, 101, 67, 111, 110, 116, 114, 111, 108, 0, 0, 0, 0, 61, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 66, 111, 111, 108, 67, 104, 101, 99, 107, 66, 111, 120, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 61, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 69, 110, 117, 109, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 64, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 70, 108, 111, 97, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 60, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 70, 108, 111, 97, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 64, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 70, 108, 111, 97, 116, 83, 116, 101, 112, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 62, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 71, 101, 110, 101, 114, 105, 99, 66, 117, 116, 116, 111, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 67, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 72, 101, 120, 67, 111, 108, 111, 114, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 62, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 73, 110, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 73, 110, 116, 83, 108, 105, 100, 101, 114, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 1, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 77, 111, 100, 67, 111, 110, 102, 105, 103, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 1, 0, 0, 0, 58, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 77, 111, 100, 67, 111, 110, 102, 105, 103, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 61, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 84, 101, 120, 116, 68, 114, 111, 112, 68, 111, 119, 110, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 63, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 124, 84, 101, 120, 116, 73, 110, 112, 117, 116, 70, 105, 101, 108, 100, 67, 111, 110, 116, 114, 111, 108, 108, 101, 114, 0, 0, 0, 0, 41, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 73, 110, 102, 111, 66, 111, 120, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 76, 105, 115, 116, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 0, 0, 0, 0, 50, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 78, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 0, 0, 0, 0, 42, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 66, 111, 120, 0, 0, 0, 0, 59, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 77, 97, 110, 97, 103, 101, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 65, 117, 100, 105, 111, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 54, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 46, 77, 97, 110, 97, 103, 101, 114, 115, 124, 67, 111, 110, 102, 105, 103, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 38, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 77, 111, 100, 73, 110, 102, 111, 66, 111, 120, 0, 0, 0, 0, 35, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 77, 111, 100, 76, 105, 115, 116, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 77, 111, 100, 76, 105, 115, 116, 73, 116, 101, 109, 0, 0, 0, 0, 41, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 83, 101, 99, 116, 105, 111, 110, 72, 101, 97, 100, 101, 114, 0, 0, 0, 0, 41, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 83, 101, 99, 116, 105, 111, 110, 66, 117, 116, 116, 111, 110, 0, 0, 0, 0, 35, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 84, 111, 111, 108, 116, 105, 112, 0, 0, 0, 0, 41, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 84, 111, 111, 108, 116, 105, 112, 83, 121, 115, 116, 101, 109, 0, 0, 0, 0, 42, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 84, 111, 111, 108, 116, 105, 112, 84, 114, 105, 103, 103, 101, 114, 0, 0, 0, 0, 40, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 115, 124, 86, 101, 114, 115, 105, 111, 110, 76, 97, 98, 101, 108, 0, 0, 0, 0, 39, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 80, 97, 116, 99, 104, 101, 115, 124, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 0, 0, 0, 0, 44, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 80, 97, 116, 99, 104, 101, 115, 124, 81, 117, 105, 99, 107, 77, 101, 110, 117, 77, 97, 110, 97, 103, 101, 114, 80, 97, 116, 99, 104, 101, 115, 0, 0, 0, 0, 40, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 80, 97, 116, 99, 104, 101, 115, 124, 83, 116, 97, 114, 116, 79, 102, 82, 111, 117, 110, 100, 80, 97, 116, 99, 104, 101, 115, 0, 0, 0, 0, 37, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 65, 115, 115, 101, 109, 98, 108, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 25, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 65, 115, 115, 101, 116, 115, 0, 0, 0, 0, 27, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 76, 111, 103, 85, 116, 105, 108, 115, 0, 0, 0, 0, 29, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 77, 101, 110, 117, 115, 85, 116, 105, 108, 115, 0, 0, 0, 0, 28, 76, 101, 116, 104, 97, 108, 67, 111, 110, 102, 105, 103, 46, 85, 116, 105, 108, 115, 124, 80, 97, 116, 104, 85, 116, 105, 108, 115 }; result.TotalFiles = 72; result.TotalTypes = 78; result.IsEditorOnly = false; return result; } } namespace LethalConfig { internal static class Configs { private enum TestEnum { None, First, Second } internal static ConfigEntry<bool> IsLethalConfigHidden { get; private set; } internal static ConfigEntry<bool> AddSectionButtons { get; private set; } internal static ConfigEntry<bool> SectionsDefaultClosed { get; private set; } internal static ConfigEntry<bool> HideSearchBars { get; private set; } internal static void Initialize(ConfigFile config) { CreateConfigs(config); CreateExampleConfigs(config); } private static void CreateConfigs(ConfigFile config) { IsLethalConfigHidden = config.Bind<bool>("General", "Hide Lethal Config", false, "Hides the LethalConfig menu in the game. This setting will not show up in LethalConfig itself."); LethalConfigManager.SkipAutoGenFor((ConfigEntryBase)(object)IsLethalConfigHidden); AddSectionButtons = config.Bind<bool>("General", "AddSectionButtons", true, "Add Section buttons to show/hide config items in a section."); LethalConfigManager.SkipAutoGenFor((ConfigEntryBase)(object)AddSectionButtons); SectionsDefaultClosed = config.Bind<bool>("General", "SectionsDefaultClosed", false, "Hides all config items by default when AddSectionButtons is enabled."); LethalConfigManager.AddConfigItem(new BoolCheckBoxConfigItem(SectionsDefaultClosed, requiresRestart: false)); HideSearchBars = config.Bind<bool>("General", "HideSearchBars", false, "Hides all search bars."); LethalConfigManager.AddConfigItem(new BoolCheckBoxConfigItem(HideSearchBars, requiresRestart: false)); } private static void CreateExampleConfigs(ConfigFile config) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Expected O, but got Unknown //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Expected O, but got Unknown ConfigEntry<int> configEntry = config.Bind<int>("Example", "Int Slider", 30, new ConfigDescription("This is an integer slider. You can also type a value in the input field to the right of the slider.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 100), Array.Empty<object>())); ConfigEntry<float> configEntry2 = config.Bind<float>("Example", "Float Slider", 0f, new ConfigDescription("This is a float slider. You can also type a value in the input field to the right of the slider.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), Array.Empty<object>())); ConfigEntry<float> configEntry3 = config.Bind<float>("Example", "Float Step Slider", 0f, new ConfigDescription("This is a float step slider. It set values in increments. You can also type a value in the input field to the right of the slider.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 1f), Array.Empty<object>())); ConfigEntry<bool> configEntry4 = config.Bind<bool>("Example", "Bool Checkbox", false, new ConfigDescription("This is a bool checkbox.", (AcceptableValueBase)null, Array.Empty<object>())); ConfigEntry<TestEnum> configEntry5 = config.Bind<TestEnum>("Example", "Enum Dropdown", TestEnum.None, new ConfigDescription("This is a enum dropdown.", (AcceptableValueBase)null, Array.Empty<object>())); ConfigEntry<string> configEntry6 = config.Bind<string>("Example", "Text Input", "Example", "This is a text input field. It can have a limit of characters too."); ConfigEntry<string> configEntry7 = config.Bind<string>("Example", "Multiline Text Input", "Example", "This is a text input field. It can have a limit of characters too."); ConfigEntry<string> configEntry8 = config.Bind<string>("Example", "Text Input Dropdown", "Two", new ConfigDescription("This is a text input with an acceptable value list.", (AcceptableValueBase)(object)new AcceptableValueList<string>(new string[3] { "One", "Two", "HL:Alyx" }), Array.Empty<object>())); ConfigEntry<string> configEntry9 = config.Bind<string>("Example", "Hex Color Input", "#FFFFFF", "This is a hex color input field. You can preview the color and open the color picker by clicking the color!"); ConfigEntry<int> configEntry10 = config.Bind<int>("Example", "Int Input", 50, "This is an integer input field."); ConfigEntry<float> configEntry11 = config.Bind<float>("Example", "Float Input", 0.5f, "This is a float input field."); LethalConfigManager.AddConfigItem(new IntSliderConfigItem(configEntry, requiresRestart: false)); LethalConfigManager.AddConfigItem(new FloatSliderConfigItem(configEntry2, requiresRestart: false)); LethalConfigManager.AddConfigItem(new FloatStepSliderConfigItem(configEntry3, new FloatStepSliderOptions { Step = 0.1f, RequiresRestart = false, Min = -1f, Max = 1f })); LethalConfigManager.AddConfigItem(new BoolCheckBoxConfigItem(configEntry4, requiresRestart: false)); LethalConfigManager.AddConfigItem(new EnumDropDownConfigItem<TestEnum>(configEntry5, requiresRestart: false)); LethalConfigManager.AddConfigItem(new TextInputFieldConfigItem(configEntry6, requiresRestart: false)); LethalConfigManager.AddConfigItem(new TextInputFieldConfigItem(configEntry7, new TextInputFieldOptions { NumberOfLines = 0, TrimText = true })); LethalConfigManager.AddConfigItem(new TextDropDownConfigItem(configEntry8, new TextDropDownOptions { RequiresRestart = false })); LethalConfigManager.AddConfigItem(new HexColorInputFieldConfigItem(configEntry9, new HexColorInputFieldOptions { RequiresRestart = false })); LethalConfigManager.AddConfigItem(new IntInputFieldConfigItem(configEntry10, new IntInputFieldOptions { Max = 150 })); LethalConfigManager.AddConfigItem(new FloatInputFieldConfigItem(configEntry11, new FloatInputFieldOptions { Max = 2.5f })); LethalConfigManager.AddConfigItem(new GenericButtonConfigItem("Example", "Button", "This is a test button with a callback", "Open", delegate { if (Object.op_Implicit((Object)(object)ConfigMenuManager.Instance)) { ConfigMenuManager.DisplayNotification("This is a test notification", "OK"); } })); } } public static class LethalConfigManager { private static readonly List<AutoConfigGenerator.ConfigFileAssemblyPair> CustomConfigFiles = new List<AutoConfigGenerator.ConfigFileAssemblyPair>(); private static readonly List<AutoConfigGenerator.ConfigFileAssemblyPair> LateConfigFiles = new List<AutoConfigGenerator.ConfigFileAssemblyPair>(); private static bool _hasGeneratedMissingConfigs; internal static Dictionary<string, Mod> Mods { get; } = new Dictionary<string, Mod>(); private static Dictionary<Mod, Assembly> ModToAssemblyMap { get; } = new Dictionary<Mod, Assembly>(); internal static void AutoGenerateMissingConfigsIfNeeded() { if (!_hasGeneratedMissingConfigs) { GenerateConfigItems(AutoConfigGenerator.AutoGenerateConfigs(CustomConfigFiles.ToArray())); _hasGeneratedMissingConfigs = true; } } private static void GenerateConfigItems(AutoConfigGenerator.AutoConfigItem[] generatedConfigs) { Mod[] second = Mods.Values.ToArray(); IEnumerable<BaseConfigItem> existingConfigsFlat = Mods.SelectMany((KeyValuePair<string, Mod> kv) => kv.Value.ConfigItems); Dictionary<Mod, IEnumerable<BaseConfigItem>> dictionary = (from c in generatedConfigs group c.ConfigItem by ModForAssembly(c.Assembly) into kv where kv.Key != null select kv).SelectMany((IGrouping<Mod, BaseConfigItem> kv) => from c in kv.Select(delegate(BaseConfigItem c) { c.Owner = kv.Key; return c; }) where !kv.Key.EntriesToSkipAutoGen.Any((ConfigEntryPath path) => path.Matches(c)) where existingConfigsFlat.FirstOrDefault(c.IsSameConfig) == null group c by c.Owner).ToDictionary((IGrouping<Mod, BaseConfigItem> kv) => kv.Key, (IGrouping<Mod, BaseConfigItem> kv) => kv.Select((BaseConfigItem c) => c)); Mod[] array = dictionary.Keys.Except(second).ToArray(); Mod[] array2 = array; foreach (Mod obj in array2) { obj.IsAutoGenerated = true; obj.ModInfo.Description += "\n*This mod entry was automatically generated as it does not use LethalConfig directly."; } foreach (KeyValuePair<Mod, IEnumerable<BaseConfigItem>> item in dictionary) { Assembly valueOrDefault = ModToAssemblyMap.GetValueOrDefault(item.Key); if (valueOrDefault == null) { continue; } foreach (BaseConfigItem item2 in item.Value) { AddConfigItemForAssembly(item2, valueOrDefault); } } LogUtils.LogDebug($"Generated {array.Length} mod entries."); LogUtils.LogDebug($"Generated {generatedConfigs.Length} configs, of which {dictionary.SelectMany((KeyValuePair<Mod, IEnumerable<BaseConfigItem>> kv) => kv.Value).Count()} were missing and registered."); } public static void AddConfigItem(BaseConfigItem configItem) { if (AddConfigItemForAssembly(configItem, Assembly.GetCallingAssembly())) { LogUtils.LogDebug($"Registered config \"{configItem}\""); } } public static void AddConfigItem(BaseConfigItem configItem, Assembly assembly) { if (AddConfigItemForAssembly(configItem, assembly)) { LogUtils.LogDebug($"Registered config \"{configItem}\""); } } private static bool AddConfigItemForAssembly(BaseConfigItem configItem, Assembly assembly) { Mod mod = ModForAssembly(assembly); if (mod == null) { LogUtils.LogWarning("Mod for assembly not found."); return false; } configItem.Owner = mod; if (mod.ConfigItems.Any((BaseConfigItem c) => c.IsSameConfig(configItem))) { LogUtils.LogWarning($"Ignoring duplicated config \"{configItem}\""); return false; } mod.AddConfigItem(configItem); return true; } private static Mod ModForAssembly(Assembly assembly) { if (!assembly.TryGetModInfo(out var modInfo)) { return null; } if (Mods.TryGetValue(modInfo.Guid, out var value)) { return value; } Mod mod = new Mod(modInfo); Mods.Add(modInfo.Guid, mod); ModToAssemblyMap.Add(mod, assembly); return mod; } public static void SetModIcon(Sprite sprite) { if (!((Object)(object)sprite == (Object)null)) { Mod mod = ModForAssembly(Assembly.GetCallingAssembly()); if (mod != null) { mod.ModInfo.Icon = sprite; } } } public static void SetModDescription(string description) { if (description != null) { Mod mod = ModForAssembly(Assembly.GetCallingAssembly()); if (mod != null) { mod.ModInfo.Description = description; } } } public static void SkipAutoGenFor(string configSection) { ModForAssembly(Assembly.GetCallingAssembly())?.EntriesToSkipAutoGen.Add(new ConfigEntryPath(configSection, "*")); } public static void SkipAutoGenFor(ConfigEntryBase configEntryBase) { ModForAssembly(Assembly.GetCallingAssembly())?.EntriesToSkipAutoGen.Add(new ConfigEntryPath(configEntryBase.Definition.Section, configEntryBase.Definition.Key)); } public static void SkipAutoGen() { ModForAssembly(Assembly.GetCallingAssembly())?.EntriesToSkipAutoGen.Add(new ConfigEntryPath("*", "*")); } public static void QueueCustomConfigFileForAutoGeneration(ConfigFile configFile) { CustomConfigFiles.Add(new AutoConfigGenerator.ConfigFileAssemblyPair { ConfigFile = configFile, Assembly = Assembly.GetCallingAssembly() }); } public static void QueueCustomConfigFileForLateAutoGeneration(ConfigFile configFile) { LateConfigFiles.Add(new AutoConfigGenerator.ConfigFileAssemblyPair { ConfigFile = configFile, Assembly = Assembly.GetCallingAssembly() }); } public static void RunLateAutoGeneration() { if (LateConfigFiles.Count != 0) { GenerateConfigItems(AutoConfigGenerator.AutoGenerateConfigs(LateConfigFiles.ToArray())); LateConfigFiles.Clear(); } } } public static class PluginInfo { public const string Guid = "ainavt.lc.lethalconfig"; public const string Name = "LethalConfig"; public const string Version = "1.4.6"; } [BepInPlugin("ainavt.lc.lethalconfig", "LethalConfig", "1.4.6")] internal class LethalConfigPlugin : BaseUnityPlugin { private static LethalConfigPlugin _instance; private static Harmony _harmony; private void Awake() { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown if ((Object)(object)_instance == (Object)null) { _instance = this; } LogUtils.Init("ainavt.lc.lethalconfig"); Configs.Initialize(((BaseUnityPlugin)this).Config); if (Configs.IsLethalConfigHidden.Value) { LogUtils.LogInfo("LethalConfig is hidden and will not load."); return; } Assets.Init(); _harmony = new Harmony("ainavt.lc.lethalconfig"); _harmony.PatchAll(); LogUtils.LogInfo("LethalConfig loaded!"); } } } namespace LethalConfig.Utils { internal static class AssemblyExtensions { internal static bool TryGetModInfo(this Assembly assembly, out ModInfo modInfo) { modInfo = new ModInfo(); BepInPlugin val = assembly.FindPluginAttribute(); if (val == null) { return false; } modInfo.Name = val.Name; modInfo.Guid = val.GUID; modInfo.Version = val.Version.ToString(); return true; } private static BepInPlugin FindPluginAttribute(this Assembly assembly) { Type[] source; try { source = assembly.GetTypes(); } catch (ReflectionTypeLoadException ex) { source = ex.Types.Where((Type t) => t != null).ToArray(); } return source.Select((Type type) => ((MemberInfo)type).GetCustomAttribute<BepInPlugin>()).FirstOrDefault<BepInPlugin>((Func<BepInPlugin, bool>)((BepInPlugin plugin) => plugin != null)); } } internal static class Assets { private static AssetBundle _assetBundle; internal static GameObject ConfigMenuManagerPrefab; internal static GameObject ConfigMenuNotificationPrefab; internal static GameObject ConfigMenuColorPickerPrefab; internal static GameObject ConfigMenuPrefab; internal static GameObject ModListItemPrefab; internal static GameObject SectionHeaderPrefab; internal static GameObject IntSliderPrefab; internal static GameObject FloatSliderPrefab; internal static GameObject FloatStepSliderPrefab; internal static GameObject BoolCheckBoxPrefab; internal static GameObject EnumDropDownPrefab; internal static GameObject TextDropDownPrefab; internal static GameObject TextInputFieldPrefab; internal static GameObject HexColorInputFieldPrefab; internal static GameObject IntInputFieldPrefab; internal static GameObject FloatInputFieldPrefab; internal static GameObject GenericButtonPrefab; internal static Sprite DefaultModIcon; internal static Sprite LethalConfigModIcon; internal static void Init() { _assetBundle = AssetBundle.LoadFromFile(PathUtils.PathForResourceInAssembly("ainavt_lethalconfig")); if ((Object)(object)_assetBundle == (Object)null) { LogUtils.LogError("Failed to load LethalConfig bundle."); return; } LoadAsset<GameObject>("prefabs/ConfigMenuManager.prefab", out ConfigMenuManagerPrefab); LoadAsset<GameObject>("prefabs/ConfigMenuNotification.prefab", out ConfigMenuNotificationPrefab); LoadAsset<GameObject>("prefabs/ConfigMenuColorPicker.prefab", out ConfigMenuColorPickerPrefab); LoadAsset<GameObject>("prefabs/ConfigMenu.prefab", out ConfigMenuPrefab); LoadAsset<GameObject>("prefabs/ModListItem.prefab", out ModListItemPrefab); if (Configs.AddSectionButtons.Value) { LoadAsset<GameObject>("prefabs/components/SectionHeader WithButton.prefab", out SectionHeaderPrefab); } else { LoadAsset<GameObject>("prefabs/components/SectionHeader Old.prefab", out SectionHeaderPrefab); } LoadAsset<GameObject>("prefabs/components/IntSliderItem.prefab", out IntSliderPrefab); LoadAsset<GameObject>("prefabs/components/FloatSliderItem.prefab", out FloatSliderPrefab); LoadAsset<GameObject>("prefabs/components/FloatStepSliderItem.prefab", out FloatStepSliderPrefab); LoadAsset<GameObject>("prefabs/components/BoolCheckBoxItem.prefab", out BoolCheckBoxPrefab); LoadAsset<GameObject>("prefabs/components/EnumDropDownItem.prefab", out EnumDropDownPrefab); LoadAsset<GameObject>("prefabs/components/TextDropDownItem.prefab", out TextDropDownPrefab); LoadAsset<GameObject>("prefabs/components/TextInputFieldItem.prefab", out TextInputFieldPrefab); LoadAsset<GameObject>("prefabs/components/HexColorInputFieldItem.prefab", out HexColorInputFieldPrefab); LoadAsset<GameObject>("prefabs/components/IntInputFieldItem.prefab", out IntInputFieldPrefab); LoadAsset<GameObject>("prefabs/components/FloatInputFieldItem.prefab", out FloatInputFieldPrefab); LoadAsset<GameObject>("prefabs/components/GenericButtonItem.prefab", out GenericButtonPrefab); LoadAsset<Sprite>("sprite/unknown-icon.png", out DefaultModIcon); LoadAsset<Sprite>("icon.png", out LethalConfigModIcon); LogUtils.LogDebug("Finished loading assets."); } private static void LoadAsset<T>(string assetName, out T asset) where T : Object { string text = "Assets/" + assetName; asset = _assetBundle.LoadAsset<T>(text); if ((Object)(object)asset == (Object)null) { LogUtils.LogError("Failed to load asset (" + text + ")"); } } } internal static class LogUtils { private static ManualLogSource _logSource; public static void Init(string pluginGuid) { _logSource = Logger.CreateLogSource(pluginGuid); } public static void LogDebug(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogDebug((object)message); } } public static void LogInfo(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogInfo((object)message); } } public static void LogWarning(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogWarning((object)message); } } public static void LogError(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogError((object)message); } } public static void LogFatal(string message) { ManualLogSource logSource = _logSource; if (logSource != null) { logSource.LogFatal((object)message); } } } internal static class MenusUtils { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static UnityAction <>9__0_0; public static Func<Button, GameObject> <>9__0_1; public static Func<GameObject, RectTransform> <>9__0_3; public static Func<RectTransform, float> <>9__0_4; public static Func<float, float, float> <>9__0_5; internal void <InjectMenu>b__0_0() { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); } internal GameObject <InjectMenu>b__0_1(Button b) { return ((Component)b).gameObject; } internal RectTransform <InjectMenu>b__0_3(GameObject b) { Transform transform = b.transform; return (RectTransform)(object)((transform is RectTransform) ? transform : null); } internal float <InjectMenu>b__0_4(RectTransform t) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return t.anchoredPosition.y; } internal float <InjectMenu>b__0_5(float y1, float y2) { return Mathf.Abs(y2 - y1); } } internal static void InjectMenu(Transform parentTransform, Transform mainButtonsTransform, GameObject quitButton) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Expected O, but got Unknown //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Expected O, but got Unknown //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Expected O, but got Unknown //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_029f: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) Object.Instantiate<GameObject>(Assets.ConfigMenuManagerPrefab, parentTransform, true).transform.localPosition = Vector3.zero; GameObject obj = Object.Instantiate<GameObject>(Assets.ConfigMenuPrefab, parentTransform, false); obj.transform.localPosition = Vector3.zero; obj.transform.localScale = Vector3.one; obj.transform.localRotation = Quaternion.identity; obj.SetActive(false); GameObject obj2 = Object.Instantiate<GameObject>(Assets.ConfigMenuNotificationPrefab, parentTransform, false); obj2.transform.localPosition = Vector3.zero; obj2.transform.localScale = Vector3.one; obj2.transform.localRotation = Quaternion.identity; obj2.SetActive(false); GameObject obj3 = Object.Instantiate<GameObject>(Assets.ConfigMenuColorPickerPrefab, parentTransform, false); obj3.transform.localPosition = Vector3.zero; obj3.transform.localScale = Vector3.one; obj3.transform.localRotation = Quaternion.identity; obj3.SetActive(false); GameObject clonedButton = Object.Instantiate<GameObject>(quitButton, mainButtonsTransform); ((UnityEventBase)clonedButton.GetComponent<Button>().onClick).RemoveAllListeners(); clonedButton.GetComponent<Button>().onClick = new ButtonClickedEvent(); ((UnityEvent)clonedButton.GetComponent<Button>().onClick).AddListener(new UnityAction(ConfigMenuManager.ShowConfigMenu)); ButtonClickedEvent onClick = clonedButton.GetComponent<Button>().onClick; object obj4 = <>c.<>9__0_0; if (obj4 == null) { UnityAction val = delegate { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); }; <>c.<>9__0_0 = val; obj4 = (object)val; } ((UnityEvent)onClick).AddListener((UnityAction)obj4); ((TMP_Text)clonedButton.GetComponentInChildren<TextMeshProUGUI>()).text = "> LethalConfig"; List<GameObject> source = (from b in ((Component)mainButtonsTransform).GetComponentsInChildren<Button>() select ((Component)b).gameObject).ToList(); List<float> list = (from t in source.Where((GameObject b) => (Object)(object)b != (Object)(object)clonedButton).Select(delegate(GameObject b) { Transform transform = b.transform; return (RectTransform)(object)((transform is RectTransform) ? transform : null); }) select t.anchoredPosition.y).ToList(); float num = list.Zip(list.Skip(1), (float y1, float y2) => Mathf.Abs(y2 - y1)).Min(); foreach (GameObject item in source.Where((GameObject g) => (Object)(object)g != (Object)(object)quitButton)) { RectTransform component = item.GetComponent<RectTransform>(); component.anchoredPosition += new Vector2(0f, num); } clonedButton.GetComponent<RectTransform>().anchoredPosition = quitButton.GetComponent<RectTransform>().anchoredPosition + new Vector2(0f, num); } } internal static class PathUtils { public static string PathForResourceInAssembly(string resourceName, Assembly assembly = null) { return Path.Combine(Path.GetDirectoryName((assembly ?? Assembly.GetCallingAssembly()).Location), resourceName); } } } namespace LethalConfig.Patches { [HarmonyPatch(typeof(MenuManager))] internal class MenuManagerPatches { [HarmonyPatch("Start")] [HarmonyPostfix] public static void StartPostFix(MenuManager __instance) { ((MonoBehaviour)__instance).StartCoroutine(DelayedMainMenuInjection()); } private static IEnumerator DelayedMainMenuInjection() { yield return (object)new WaitForSeconds(0f); InjectToMainMenu(); } private static void InjectToMainMenu() { LogUtils.LogDebug("Injecting mod config menu into main menu..."); GameObject val = GameObject.Find("MenuContainer"); if (!Object.op_Implicit((Object)(object)val)) { return; } Transform val2 = val.transform.Find("MainButtons"); if (Object.op_Implicit((Object)(object)val2)) { Transform val3 = val2.Find("QuitButton"); if (Object.op_Implicit((Object)(object)val3)) { MenusUtils.InjectMenu(val.transform, val2, ((Component)val3).gameObject); } } } } [HarmonyPatch(typeof(QuickMenuManager))] internal class QuickMenuManagerPatches { [HarmonyPatch("CloseQuickMenuPanels")] [HarmonyPostfix] public static void CloseQuickMenuPanelsPostFix(QuickMenuManager __instance) { ConfigMenu componentInChildren = ((Component)__instance.menuContainer.transform).GetComponentInChildren<ConfigMenu>(true); if (Object.op_Implicit((Object)(object)componentInChildren)) { componentInChildren.Close(animated: false); } ConfigMenuNotification componentInChildren2 = ((Component)__instance.menuContainer.transform).GetComponentInChildren<ConfigMenuNotification>(true); if (Object.op_Implicit((Object)(object)componentInChildren2)) { componentInChildren2.Close(animated: false); } } [HarmonyPatch("Start")] [HarmonyPostfix] public static void StartPostFix(QuickMenuManager __instance) { LogUtils.LogDebug("Injecting mod config menu into quick menu..."); GameObject menuContainer = __instance.menuContainer; if (!Object.op_Implicit((Object)(object)menuContainer)) { return; } Transform val = menuContainer.transform.Find("MainButtons"); if (Object.op_Implicit((Object)(object)val)) { Transform val2 = val.Find("Quit"); if (Object.op_Implicit((Object)(object)val2)) { MenusUtils.InjectMenu(menuContainer.transform, val, ((Component)val2).gameObject); } } } } [HarmonyPatch(typeof(StartOfRound))] internal class StartOfRoundPatches { [HarmonyPatch("Start")] [HarmonyPostfix] public static void StartPostFix() { LethalConfigManager.RunLateAutoGeneration(); } } } namespace LethalConfig.MonoBehaviours { internal class ConfigInfoBox : MonoBehaviour { public TextMeshProUGUI configInfoText; public void SetConfigInfo(string configInfo) { ((TMP_Text)configInfoText).text = configInfo; } } internal class ConfigList : MonoBehaviour { public GameObject listContainerObject; public DescriptionBox descriptionBox; public GameObject searchBarObject; public TMP_InputField searchInputField; public static List<string> disabledSections = new List<string>(); public static List<SectionButton> sectionButtons = new List<SectionButton>(); private List<(SectionHeader, List<ModConfigController>)> _sections = new List<(SectionHeader, List<ModConfigController>)>(); private void OnEnable() { Configs.HideSearchBars.SettingChanged += delegate { UpdateSearchBarVisibility(); }; UpdateSearchBarVisibility(); } private void OnDisable() { Configs.HideSearchBars.SettingChanged -= delegate { UpdateSearchBarVisibility(); }; } internal void LoadConfigsForMod(Mod mod) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) ClearConfigList(); foreach (IGrouping<string, BaseConfigItem> item in from c in mod.ConfigItems group c by c.Section) { GameObject val = Object.Instantiate<GameObject>(Assets.SectionHeaderPrefab, listContainerObject.transform, true); val.GetComponent<SectionHeader>().SetSectionName(item.Key); val.GetComponent<SectionHeader>().SetSectionButton(item, out var thisButton); val.transform.localPosition = Vector3.zero; val.transform.localScale = Vector3.one; val.transform.localRotation = Quaternion.identity; if (thisButton != null) { sectionButtons.Add(thisButton); } List<ModConfigController> list = new List<ModConfigController>(); foreach (BaseConfigItem item2 in item) { ModConfigController modConfigController = CreateMenuItem(item2, thisButton); if ((Object)(object)modConfigController != (Object)null) { list.Add(modConfigController); } } if (list.Any()) { _sections.Add((val.GetComponent<SectionHeader>(), list)); } } if ((Object)(object)searchInputField != (Object)null && !Configs.HideSearchBars.Value) { OnSearchValueChanged(searchInputField.text); } } private ModConfigController CreateMenuItem(BaseConfigItem configItem, SectionButton button = null) { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) GameObject val = configItem.CreateGameObjectForConfig(); ModConfigController controller = val.GetComponent<ModConfigController>(); if (!controller.SetConfigItem(configItem)) { Object.DestroyImmediate((Object)(object)val); return null; } val.transform.SetParent(listContainerObject.transform); val.transform.localPosition = Vector3.zero; val.transform.localScale = Vector3.one; val.transform.localRotation = Quaternion.identity; controller.OnHoverEnter += delegate { descriptionBox.ShowConfigInfo(controller.GetDescription()); ConfigMenuManager.Instance.menuAudio.PlayHoverSfx(); }; if (button != null) { if (Configs.SectionsDefaultClosed.Value) { if (!disabledSections.Contains(button.sectionName)) { disabledSections.Add(button.sectionName); } val.SetActive(false); ((TMP_Text)button.buttonText).text = "Show"; } button.AddTransform(val.transform); } return controller; } private void ClearConfigList() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) foreach (Transform item in listContainerObject.transform) { Object.Destroy((Object)(object)((Component)item).gameObject); } sectionButtons.Clear(); disabledSections.Clear(); _sections.Clear(); } private void UpdateSearchBarVisibility() { if (!((Object)(object)searchBarObject == (Object)null)) { bool flag = !Configs.HideSearchBars.Value; searchBarObject.SetActive(flag); if (flag) { OnSearchValueChanged(((Object)(object)searchInputField != (Object)null) ? searchInputField.text : string.Empty); } else { OnSearchValueChanged(string.Empty); } } } public void OnSearchValueChanged(string value) { foreach (var section in _sections) { bool active = false; if (string.IsNullOrWhiteSpace(value) || CanShowSection(value, section)) { active = true; } ((Component)section.Item1).gameObject.SetActive(active); if (disabledSections.Contains(section.Item1.sectionName)) { continue; } foreach (ModConfigController item in section.Item2) { ((Component)item).gameObject.SetActive(active); } } } private bool CanShowSection(string value, (SectionHeader, List<ModConfigController>) section) { if (((TMP_Text)section.Item1.textMesh).text.Contains(value, StringComparison.OrdinalIgnoreCase)) { return true; } foreach (ModConfigController item in section.Item2) { if (((TMP_Text)item.nameTextComponent).text.Contains(value, StringComparison.OrdinalIgnoreCase)) { return true; } } return false; } } internal class ConfigMenu : MonoBehaviour { private static readonly int TriggerIdOpen = Animator.StringToHash("Open"); private static readonly int TriggerIdForceClose = Animator.StringToHash("ForceClose"); private static readonly int TriggerIdClose = Animator.StringToHash("Close"); public ConfigList configList; public Animator menuAnimator; private void Awake() { LethalConfigManager.AutoGenerateMissingConfigsIfNeeded(); } public void Open() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = menuAnimator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuNormal") && !((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuAppear")) { ((Component)this).gameObject.SetActive(true); menuAnimator.SetTrigger(TriggerIdOpen); ((Component)this).transform.SetAsLastSibling(); } } public void Close(bool animated = true) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = menuAnimator.GetCurrentAnimatorStateInfo(0); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuClosed") || ((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("ConfigMenuDisappear")) { return; } foreach (BaseConfigItem item in LethalConfigManager.Mods.SelectMany((KeyValuePair<string, Mod> m) => m.Value.ConfigItems)) { item.CancelChanges(); } UpdateAppearanceOfCurrentComponents(); if (!animated) { ((Component)this).gameObject.SetActive(false); menuAnimator.SetTrigger(TriggerIdForceClose); } else { menuAnimator.SetTrigger(TriggerIdClose); } } public void OnCloseAnimationEnd() { ((Component)this).gameObject.SetActive(false); } public void OnCancelButtonClicked() { Close(); ConfigMenuManager.Instance.menuAudio.PlayCancelSfx(); } public void OnApplyButtonClicked() { List<BaseConfigItem> list = (from c in LethalConfigManager.Mods.SelectMany((KeyValuePair<string, Mod> m) => m.Value.ConfigItems) where c.HasValueChanged select c).ToList(); List<BaseConfigItem> list2 = list.Where((BaseConfigItem c) => c.RequiresRestart).ToList(); foreach (BaseConfigItem item in list) { item.ApplyChanges(); } UpdateAppearanceOfCurrentComponents(); ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); LogUtils.LogDebug($"Saved config values for {list.Count} items."); LogUtils.LogDebug($"Modified {list2.Count} item(s) that requires a restart."); if (list2.Count > 0) { ConfigMenuManager.DisplayNotification("Some of the modified settings may require a restart to take effect.", "OK"); } } private void UpdateAppearanceOfCurrentComponents() { ModConfigController[] componentsInChildren = ((Component)configList).GetComponentsInChildren<ModConfigController>(); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].UpdateAppearance(); } } } internal class ConfigMenuNotification : MonoBehaviour { private static readonly int TriggerIdOpen = Animator.StringToHash("Open"); private static readonly int TriggerIdForceClose = Animator.StringToHash("ForceClose"); private static readonly int TriggerIdClose = Animator.StringToHash("Close"); public TextMeshProUGUI messageTextComponent; public TextMeshProUGUI buttonTextComponent; public Animator notificationAnimator; public void SetNotificationContent(string text, string button) { ((TMP_Text)messageTextComponent).text = text; ((TMP_Text)buttonTextComponent).text = "[" + button + "]"; } public void Open() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = notificationAnimator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationNormal") && !((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationAppear")) { ((Component)this).gameObject.SetActive(true); notificationAnimator.SetTrigger(TriggerIdOpen); ((Component)this).transform.SetAsLastSibling(); } } public void Close(bool animated = true) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) AnimatorStateInfo currentAnimatorStateInfo = notificationAnimator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationClosed") && !((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("NotificationDisappear")) { if (!animated) { ((Component)this).gameObject.SetActive(false); notificationAnimator.SetTrigger(TriggerIdForceClose); } else { notificationAnimator.SetTrigger(TriggerIdClose); } } } public void OnButtonClick() { Close(); ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); } public void OnCloseAnimationEnd() { ((Component)this).gameObject.SetActive(false); } } internal class DescriptionBox : MonoBehaviour { public ModInfoBox modInfoBox; public ConfigInfoBox configInfoBox; private void Awake() { ((Component)modInfoBox).gameObject.SetActive(false); ((Component)configInfoBox).gameObject.SetActive(false); } public void ShowConfigInfo(string configInfo) { ((Component)configInfoBox).gameObject.SetActive(true); configInfoBox.SetConfigInfo(configInfo); HideModInfo(); } public void HideConfigInfo() { ((Component)configInfoBox).gameObject.SetActive(false); } public void ShowModInfo(Mod mod) { ((Component)modInfoBox).gameObject.SetActive(true); modInfoBox.SetModInfo(mod); HideConfigInfo(); } public void HideModInfo() { ((Component)modInfoBox).gameObject.SetActive(false); } } internal class ModInfoBox : MonoBehaviour { public Image modIconImage; public TextMeshProUGUI modInfoText; public void SetModInfo(Mod mod) { modIconImage.sprite = mod.ModInfo.Icon; ((TMP_Text)modInfoText).text = $"{mod.ModInfo}"; } } internal class ModList : MonoBehaviour { public GameObject modItemPrefab; public GameObject listContainerObject; public GameObject searchBarObject; public TMP_InputField searchInputField; public ConfigList configList; public DescriptionBox descriptionBox; private List<ModListItem> _items; private void Awake() { _items = new List<ModListItem>(); BuildModList(); } private void OnEnable() { Configs.HideSearchBars.SettingChanged += delegate { UpdateSearchBarVisibility(); }; UpdateSearchBarVisibility(); } private void OnDisable() { Configs.HideSearchBars.SettingChanged -= delegate { UpdateSearchBarVisibility(); }; } private void BuildModList() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) _items.Clear(); foreach (Transform item in listContainerObject.transform) { Object.Destroy((Object)(object)((Component)item).gameObject); } foreach (Mod mod in from m in LethalConfigManager.Mods.Values orderby m.ModInfo.Guid != "ainavt.lc.lethalconfig", m.IsAutoGenerated, m.ModInfo.Name select m) { GameObject val = Object.Instantiate<GameObject>(modItemPrefab, listContainerObject.transform); val.transform.localScale = Vector3.one; val.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity); ModListItem component = val.GetComponent<ModListItem>(); component.Mod = mod; component.ModSelected += ModSelected; component.OnHoverEnter += delegate { descriptionBox.ShowModInfo(mod); ConfigMenuManager.Instance.menuAudio.PlayHoverSfx(); }; component.OnHoverExit += delegate { descriptionBox.HideModInfo(); }; _items.Add(val.GetComponent<ModListItem>()); } } private void ModSelected(Mod mod) { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); configList.LoadConfigsForMod(mod); _items.First((ModListItem i) => i.Mod == mod).SetSelected(selected: true); foreach (ModListItem item in _items.Where((ModListItem i) => i.Mod != mod)) { item.SetSelected(selected: false); } } private void UpdateSearchBarVisibility() { if (!((Object)(object)searchBarObject == (Object)null)) { bool flag = !Configs.HideSearchBars.Value; searchBarObject.SetActive(flag); if (flag) { OnSearchValueChanged(((Object)(object)searchInputField != (Object)null) ? searchInputField.text : string.Empty); } else { OnSearchValueChanged(string.Empty); } } } public void OnSearchValueChanged(string value) { foreach (ModListItem item in _items) { if (item.Mod.ModInfo.Name.Contains(value, StringComparison.OrdinalIgnoreCase) || string.IsNullOrWhiteSpace(value)) { ((Component)item).gameObject.SetActive(true); } else { ((Component)item).gameObject.SetActive(false); } } } } internal class ModListItem : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler, IPointerExitHandler { public delegate void OnHoverHandler(); internal delegate void ModSelectedHandler(Mod mod); public TextMeshProUGUI textMesh; public GameObject selectedBorder; public Image modIcon; private Mod _mod; internal Mod Mod { get { return _mod; } set { _mod = value; ((TMP_Text)textMesh).text = _mod.ModInfo.Name; modIcon.sprite = _mod.ModInfo.Icon; } } public event OnHoverHandler OnHoverEnter; public event OnHoverHandler OnHoverExit; internal event ModSelectedHandler ModSelected; public void OnPointerEnter(PointerEventData eventData) { this.OnHoverEnter?.Invoke(); } public void OnPointerExit(PointerEventData eventData) { this.OnHoverExit?.Invoke(); } public void OnClick() { this.ModSelected?.Invoke(_mod); } public void SetSelected(bool selected) { selectedBorder.SetActive(selected); } public string GetDescription() { return _mod.ModInfo.Name + "\n" + _mod.ModInfo.Guid + "\n" + _mod.ModInfo.Version; } } internal class SectionHeader : MonoBehaviour { public TextMeshProUGUI textMesh; public Button sectionButton; public TextMeshProUGUI buttonTextMesh; public string sectionName { get; private set; } public void SetSectionName(string sectionName) { this.sectionName = sectionName; ((TMP_Text)textMesh).text = "[" + sectionName + "]"; } public void SetSectionButton(IGrouping<string, BaseConfigItem> section, out SectionButton thisButton) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown if (!Configs.AddSectionButtons.Value) { thisButton = null; return; } ((UnityEventBase)sectionButton.onClick).RemoveAllListeners(); sectionButton.onClick = new ButtonClickedEvent(); ((UnityEvent)sectionButton.onClick).AddListener((UnityAction)delegate { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); OnToggle(section); }); ((TMP_Text)buttonTextMesh).text = "Hide"; thisButton = new SectionButton(section.Key, section.ToList(), buttonTextMesh); } private void OnToggle(IGrouping<string, BaseConfigItem> section) { if (!ConfigList.disabledSections.Contains(section.Key)) { ToggleSection(state: false, section); } else { ToggleSection(state: true, section); } } private void ToggleSection(bool state, IGrouping<string, BaseConfigItem> section) { int num = 0; if (!state) { foreach (SectionButton sectionButton in ConfigList.sectionButtons) { if (!(sectionButton.sectionName == section.Key)) { continue; } foreach (Transform item in sectionButton.transformsInSection) { num++; ((Component)item).gameObject.SetActive(false); ((TMP_Text)buttonTextMesh).text = "Show"; } } LogUtils.LogDebug($"{num} config item(s) hidden in section: {section.Key}"); ConfigList.disabledSections.Add(section.Key); return; } foreach (SectionButton sectionButton2 in ConfigList.sectionButtons) { if (!(sectionButton2.sectionName == section.Key)) { continue; } foreach (Transform item2 in sectionButton2.transformsInSection) { num++; ((Component)item2).gameObject.SetActive(true); ((TMP_Text)buttonTextMesh).text = "Hide"; } } LogUtils.LogDebug($"{num} config item(s) shown in section: {section.Key}"); ConfigList.disabledSections.Remove(section.Key); } } internal class SectionButton { internal string sectionName = ""; internal List<BaseConfigItem> itemsInSection = new List<BaseConfigItem>(); internal List<Transform> transformsInSection = new List<Transform>(); internal TextMeshProUGUI buttonText; internal SectionButton(string sectionName, List<BaseConfigItem> itemsInSection, TextMeshProUGUI button) { this.sectionName = sectionName; this.itemsInSection = itemsInSection; buttonText = button; } internal void AddTransform(Transform item) { if (!transformsInSection.Contains(item)) { transformsInSection.Add(item); } } } internal class Tooltip : MonoBehaviour { public TextMeshProUGUI textComponent; private RectTransform _rectTransform; private Camera _uiCamera; public void SetText(string text) { ((TMP_Text)textComponent).text = text; } public void SetTarget(GameObject newTargetGameObject) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.position = newTargetGameObject.transform.position; } } internal class TooltipSystem : MonoBehaviour { private static TooltipSystem _instance; public Tooltip tooltip; private void Awake() { _instance = this; } public static void Show(string content, GameObject target) { if (!((Object)(object)_instance == (Object)null)) { ((Component)_instance.tooltip).gameObject.SetActive(true); _instance.tooltip.SetText(content); _instance.tooltip.SetTarget(target); } } public static void Hide() { if (!((Object)(object)_instance == (Object)null)) { ((Component)_instance.tooltip).gameObject.SetActive(false); } } } internal class TooltipTrigger : MonoBehaviour, IPointerEnterHandler, IEventSystemHandler, IPointerExitHandler { public string tooltipText; public void OnPointerEnter(PointerEventData eventData) { TooltipSystem.Show(tooltipText, ((Component)this).gameObject); } public void OnPointerExit(PointerEventData eventData) { TooltipSystem.Hide(); } } internal class VersionLabel : MonoBehaviour { private void Start() { ((TMP_Text)((Component)this).GetComponent<TextMeshProUGUI>()).text = "LethalConfig v1.4.6"; } } } namespace LethalConfig.MonoBehaviours.Managers { internal class ConfigMenuAudioManager : MonoBehaviour { [FormerlySerializedAs("confirmSFX")] public AudioClip confirmSfx; [FormerlySerializedAs("cancelSFX")] public AudioClip cancelSfx; [FormerlySerializedAs("selectSFX")] public AudioClip selectSfx; [FormerlySerializedAs("hoverSFX")] public AudioClip hoverSfx; [FormerlySerializedAs("changeValueSFX")] public AudioClip changeValueSfx; public AudioSource audioSource; public void PlayConfirmSfx() { audioSource.PlayOneShot(confirmSfx); } public void PlayCancelSfx() { audioSource.PlayOneShot(cancelSfx); } public void PlayHoverSfx() { audioSource.PlayOneShot(hoverSfx); } public void PlaySelectSfx() { audioSource.PlayOneShot(selectSfx); } public void PlayChangeValueSfx() { audioSource.PlayOneShot(changeValueSfx); } } internal class ConfigMenuManager : MonoBehaviour { public ConfigMenuAudioManager menuAudio; public static ConfigMenuManager Instance { get; private set; } private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } public static void ShowConfigMenu() { ConfigMenu configMenu = Object.FindObjectOfType<ConfigMenu>(true); if (!Object.op_Implicit((Object)(object)configMenu)) { LogUtils.LogWarning("ConfigMenu object not found"); } else { configMenu.Open(); } } public static void DisplayNotification(string message, string button) { ConfigMenuNotification configMenuNotification = Object.FindObjectOfType<ConfigMenuNotification>(true); if (!Object.op_Implicit((Object)(object)configMenuNotification)) { LogUtils.LogWarning("Notification object not found"); return; } configMenuNotification.SetNotificationContent(message, button); configMenuNotification.Open(); EventSystem.current.SetSelectedGameObject(((Component)((Component)configMenuNotification).GetComponentInChildren<Button>()).gameObject); } public static void ShowColorPicker(string name, string hexColor, Action<string> colorSelectedCallback) { ConfigMenuColorPicker configMenuColorPicker = Object.FindObjectOfType<ConfigMenuColorPicker>(true); if (!Object.op_Implicit((Object)(object)configMenuColorPicker)) { LogUtils.LogWarning("ColorPicker object not found"); return; } configMenuColorPicker.SetColorPickerContent(name, hexColor, colorSelectedCallback); configMenuColorPicker.Open(); } } } namespace LethalConfig.MonoBehaviours.Components { internal class BoolCheckBoxController : ModConfigController<BoolCheckBoxConfigItem, bool> { public Toggle toggleComponent; public override void UpdateAppearance() { base.UpdateAppearance(); toggleComponent.SetIsOnWithoutNotify(base.ConfigItem.CurrentValue); } protected override void OnSetConfigItem() { toggleComponent.SetIsOnWithoutNotify(base.ConfigItem.CurrentValue); UpdateAppearance(); } public void OnCheckBoxValueChanged(bool value) { base.ConfigItem.CurrentValue = value; UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } } internal class EnumDropDownController : ModConfigController { public TMP_Dropdown dropdownComponent; private List<string> _enumNames = new List<string>(); private Type _enumType; private void OnDestroy() { BaseConfigItem.OnCurrentValueChanged -= OnCurrentValueChanged; } public override string GetDescription() { return base.GetDescription() + "\n\nDefault: " + Enum.GetName(_enumType, BaseConfigItem.BoxedDefaultValue); } public override void UpdateAppearance() { base.UpdateAppearance(); int valueWithoutNotify = _enumNames.FindIndex((string e) => e == Enum.GetName(_enumType, BaseConfigItem.CurrentBoxedValue)); dropdownComponent.SetValueWithoutNotify(valueWithoutNotify); } protected override void OnSetConfigItem() { BaseConfigItem.OnCurrentValueChanged += OnCurrentValueChanged; _enumType = BaseConfigItem.BaseConfigEntry.SettingType; _enumNames = Enum.GetNames(_enumType).ToList(); dropdownComponent.ClearOptions(); dropdownComponent.AddOptions(_enumNames); int valueWithoutNotify = _enumNames.FindIndex((string e) => e == Enum.GetName(_enumType, BaseConfigItem.CurrentBoxedValue)); dropdownComponent.SetValueWithoutNotify(valueWithoutNotify); UpdateAppearance(); } public void OnDropDownValueChanged(int index) { BaseConfigItem.CurrentBoxedValue = Enum.Parse(_enumType, _enumNames[index]); UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } private void OnCurrentValueChanged() { UpdateAppearance(); } } internal class FloatInputFieldController : ModConfigController<FloatInputFieldConfigItem, float> { public TMP_InputField textInputField; public override string GetDescription() { string text = base.GetDescription(); if (base.ConfigItem.MinValue != float.MinValue) { text += $"\nMin: {base.ConfigItem.MinValue:0.0#}"; } if (base.ConfigItem.MaxValue != float.MaxValue) { text += $"\nMax: {base.ConfigItem.MaxValue:0.0#}"; } return text; } protected override void OnSetConfigItem() { textInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue}"); UpdateAppearance(); } public void OnInputFieldEndEdit(string value) { if (float.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) base.UpdateAppearance(); textInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue}"); ((Transform)textInputField.textComponent.rectTransform).localPosition = Vector3.zero; } } internal class FloatSliderController : ModConfigController<FloatSliderConfigItem, float> { public Slider sliderComponent; public TMP_InputField valueInputField; public override string GetDescription() { return $"{base.GetDescription()}\nMin: {base.ConfigItem.MinValue:0.0#}\nMax: {base.ConfigItem.MaxValue:0.0#}"; } protected override void OnSetConfigItem() { sliderComponent.SetValueWithoutNotify(base.ConfigItem.CurrentValue); sliderComponent.maxValue = base.ConfigItem.MaxValue; sliderComponent.minValue = base.ConfigItem.MinValue; UpdateAppearance(); } public void OnSliderValueChanged(float value) { base.ConfigItem.CurrentValue = value; UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public void OnInputFieldEndEdit(string value) { if (float.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { base.UpdateAppearance(); sliderComponent.SetValueWithoutNotify(base.ConfigItem.CurrentValue); valueInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue:0.0#}"); } } internal class FloatStepSliderController : ModConfigController<FloatStepSliderConfigItem, float> { public Slider sliderComponent; public TMP_InputField valueInputField; public override string GetDescription() { return $"{base.GetDescription()}\nMin: {base.ConfigItem.MinValue:0.0#}\nMax: {base.ConfigItem.MaxValue:0.0#}"; } protected override void OnSetConfigItem() { sliderComponent.SetValueWithoutNotify(base.ConfigItem.CurrentValue); int num = (int)MathF.Ceiling((base.ConfigItem.MaxValue - base.ConfigItem.MinValue) / MathF.Max(base.ConfigItem.Step, float.Epsilon)); sliderComponent.maxValue = num; sliderComponent.minValue = 0f; sliderComponent.wholeNumbers = true; UpdateAppearance(); } public void OnSliderValueChanged(float value) { base.ConfigItem.CurrentValue = MathF.Round(base.ConfigItem.MinValue + base.ConfigItem.Step * (float)(int)value, 4); UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public void OnInputFieldEndEdit(string value) { if (float.TryParse(value, out var result)) { base.ConfigItem.CurrentValue = Math.Clamp(result, base.ConfigItem.MinValue, base.ConfigItem.MaxValue); } UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public override void UpdateAppearance() { base.UpdateAppearance(); sliderComponent.SetValueWithoutNotify((base.ConfigItem.CurrentValue - base.ConfigItem.MinValue) / MathF.Max(base.ConfigItem.Step, float.Epsilon)); valueInputField.SetTextWithoutNotify($"{base.ConfigItem.CurrentValue:0.0#}"); } } internal class GenericButtonController : ModConfigController { public TextMeshProUGUI buttonTextComponent; private GenericButtonConfigItem ConfigItem => BaseConfigItem as GenericButtonConfigItem; public override void UpdateAppearance() { base.UpdateAppearance(); ((TMP_Text)buttonTextComponent).text = ConfigItem?.ButtonOptions?.ButtonText ?? "Button"; } protected override void OnSetConfigItem() { UpdateAppearance(); } public void OnButtonClicked() { ConfigMenuManager.Instance.menuAudio.PlayConfirmSfx(); ConfigItem?.ButtonOptions?.ButtonHandler?.Invoke(); } } internal class HexColorInputFieldController : ModConfigController<HexColorInputFieldConfigItem, string> { public TMP_InputField textInputField; public Image colorPreviewImage; protected override void OnSetConfigItem() { textInputField.text = base.ConfigItem.CurrentValue; UpdateAppearance(); } public override void UpdateAppearance() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) base.UpdateAppearance(); textInputField.text = base.ConfigItem.CurrentValue; ((Transform)textInputField.textComponent.rectTransform).localPosition = Vector3.zero; UpdateColorPreviewImage(base.ConfigItem.CurrentValue); } public void UpdateColorPreviewImage(string hexColor) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) Color color = default(Color); if (ColorUtility.TryParseHtmlString(hexColor, ref color)) { ((Graphic)colorPreviewImage).color = color; } } public void OnInputFieldValueChanged(string value) { UpdateColorPreviewImage(value); } public void OnInputFieldEndEdit(string value) { base.ConfigItem.CurrentValue = value.Trim(); UpdateAppearance(); ConfigMenuManager.Instance.menuAudio.PlayChangeValueSfx(); } public void OnColorPickerButtonClick() { ConfigMenuManager.ShowColorPicker(base.ConfigItem.Name, base.ConfigItem.CurrentValue, delegate(string newHexColor) { base.ConfigItem.Cur