Decompiled source of EnemySkinKit v1.2.5

plugins/EnemySkinKit/EnemySkinKit.dll

Decompiled 2 weeks ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text.RegularExpressions;
using AntlerShed.EnemySkinKit.ArmatureReflection;
using AntlerShed.EnemySkinKit.SkinAction;
using AntlerShed.EnemySkinKit.Vanilla;
using AntlerShed.SkinRegistry;
using AntlerShed.SkinRegistry.Events;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using Unity.Netcode;
using UnityEditor;
using UnityEditor.Compilation;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEngine.VFX;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CustomPropertyDrawer(typeof(SkinnedMeshAction))]
internal class StaticMeshDrawer : PropertyDrawer
{
	public override VisualElement CreatePropertyGUI(SerializedProperty property)
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Expected O, but got Unknown
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Expected O, but got Unknown
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Expected O, but got Unknown
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Expected O, but got Unknown
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f9: Expected O, but got Unknown
		Foldout val = new Foldout
		{
			text = property.displayName
		};
		TextElement deprecatedText = new TextElement();
		deprecatedText.text = "This method of skinning is deprecated. See the readme for more info.";
		PropertyField val2 = new PropertyField(property.FindPropertyRelative("actionType"));
		PropertyField replacementField = new PropertyField(property.FindPropertyRelative("replacementObject"));
		PropertyField mapField = new PropertyField(property.FindPropertyRelative("armatureMap"));
		((VisualElement)val).contentContainer.Add((VisualElement)(object)val2);
		((VisualElement)val).contentContainer.Add((VisualElement)(object)deprecatedText);
		((VisualElement)val).contentContainer.Add((VisualElement)(object)replacementField);
		((VisualElement)val).contentContainer.Add((VisualElement)(object)mapField);
		UpdateDisplay(property, replacementField, mapField, deprecatedText);
		val2.RegisterValueChangeCallback((EventCallback<SerializedPropertyChangeEvent>)delegate
		{
			UpdateDisplay(property, replacementField, mapField, deprecatedText);
		});
		return (VisualElement)val;
	}

	private static void UpdateDisplay(SerializedProperty property, PropertyField replacementField, PropertyField mapField, TextElement deprecated)
	{
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0047: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		string text = property.FindPropertyRelative("actionType").enumNames[property.FindPropertyRelative("actionType").enumValueIndex];
		if (text.Equals("REPLACE"))
		{
			((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0);
			((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0);
			((VisualElement)deprecated).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0);
		}
		else if (text.Equals("REPLACE_MESH"))
		{
			((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0);
			((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
			((VisualElement)deprecated).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
		}
		else
		{
			((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
			((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
			((VisualElement)deprecated).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
		}
	}
}
[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[4866]
		{
			0, 0, 0, 1, 0, 0, 0, 71, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 65, 114, 109,
			97, 116, 117, 114, 101, 82, 101, 102, 108, 101,
			99, 116, 105, 111, 110, 92, 65, 114, 109, 97,
			116, 117, 114, 101, 77, 97, 112, 71, 101, 110,
			101, 114, 97, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 68, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 65, 114, 109, 97,
			116, 117, 114, 101, 82, 101, 102, 108, 101, 99,
			116, 105, 111, 110, 92, 65, 114, 109, 97, 116,
			117, 114, 101, 82, 101, 102, 108, 101, 99, 116,
			111, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 56, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 69, 100, 105, 116, 111, 114, 92, 65,
			114, 109, 97, 116, 117, 114, 101, 77, 97, 112,
			69, 100, 105, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 56, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 69, 100, 105, 116,
			111, 114, 92, 65, 117, 100, 105, 111, 65, 99,
			116, 105, 111, 110, 68, 114, 97, 119, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			60, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			69, 100, 105, 116, 111, 114, 92, 65, 117, 100,
			105, 111, 76, 105, 115, 116, 65, 99, 116, 105,
			111, 110, 68, 114, 97, 119, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 56, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 69, 100,
			105, 116, 111, 114, 92, 67, 111, 108, 111, 114,
			65, 99, 116, 105, 111, 110, 68, 114, 97, 119,
			101, 114, 46, 99, 115, 0, 0, 0, 2, 0,
			0, 0, 49, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 69, 100, 105, 116, 111, 114, 92, 67,
			111, 110, 102, 105, 103, 86, 105, 101, 119, 46,
			99, 115, 0, 0, 0, 7, 0, 0, 0, 66,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 69,
			100, 105, 116, 111, 114, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 69, 100,
			105, 116, 111, 114, 69, 120, 99, 101, 112, 116,
			105, 111, 110, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 59, 92, 65, 115, 115, 101, 116,
			115, 92, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 92, 83, 99, 114, 105, 112,
			116, 115, 92, 69, 100, 105, 116, 111, 114, 92,
			77, 97, 116, 101, 114, 105, 97, 108, 65, 99,
			116, 105, 111, 110, 68, 114, 97, 119, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			49, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			69, 100, 105, 116, 111, 114, 92, 77, 111, 100,
			66, 117, 105, 108, 100, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 59, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 69, 100, 105,
			116, 111, 114, 92, 80, 97, 114, 116, 105, 99,
			108, 101, 65, 99, 116, 105, 111, 110, 68, 114,
			97, 119, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 59, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 69, 100, 105, 116, 111, 114,
			92, 83, 107, 105, 110, 77, 111, 100, 66, 117,
			105, 108, 100, 101, 114, 69, 100, 105, 116, 111,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 62, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 69, 100, 105, 116, 111, 114, 92, 83, 107,
			105, 110, 110, 101, 100, 77, 101, 115, 104, 65,
			99, 116, 105, 111, 110, 68, 114, 97, 119, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 61, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 69, 100, 105, 116, 111, 114, 92, 83, 116,
			97, 116, 105, 99, 77, 101, 115, 104, 65, 99,
			116, 105, 111, 110, 68, 114, 97, 119, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			58, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			69, 100, 105, 116, 111, 114, 92, 84, 101, 120,
			116, 117, 114, 101, 65, 99, 116, 105, 111, 110,
			68, 114, 97, 119, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 44, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 99,
			115, 0, 0, 0, 9, 0, 0, 0, 42, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 83, 107,
			105, 110, 65, 99, 116, 105, 111, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 46, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 83, 107,
			105, 110, 65, 116, 116, 97, 99, 104, 109, 101,
			110, 116, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 61, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 83, 107, 105, 110, 110, 101, 100, 77,
			101, 115, 104, 65, 100, 97, 112, 116, 101, 114,
			92, 66, 111, 110, 101, 77, 97, 112, 112, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 65, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 83, 107,
			105, 110, 110, 101, 114, 115, 92, 66, 97, 98,
			111, 111, 110, 72, 97, 119, 107, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 61, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			66, 97, 114, 98, 101, 114, 83, 107, 105, 110,
			110, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 59, 92, 65, 115, 115, 101, 116,
			115, 92, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 92, 83, 99, 114, 105, 112,
			116, 115, 92, 86, 97, 110, 105, 108, 108, 97,
			83, 107, 105, 110, 110, 101, 114, 115, 92, 66,
			97, 115, 101, 83, 107, 105, 110, 110, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			62, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 83, 107, 105,
			110, 110, 101, 114, 115, 92, 66, 114, 97, 99,
			107, 101, 110, 83, 107, 105, 110, 110, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			67, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 83, 107, 105,
			110, 110, 101, 114, 115, 92, 66, 117, 110, 107,
			101, 114, 83, 112, 105, 100, 101, 114, 83, 107,
			105, 110, 110, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 61, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 83, 107, 105, 110, 110, 101, 114, 115,
			92, 66, 117, 116, 108, 101, 114, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 65, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			67, 105, 114, 99, 117, 105, 116, 66, 101, 101,
			83, 107, 105, 110, 110, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 63, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 86, 97, 110,
			105, 108, 108, 97, 83, 107, 105, 110, 110, 101,
			114, 115, 92, 67, 111, 105, 108, 104, 101, 97,
			100, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 69, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 69, 97, 114, 116, 104, 76,
			101, 118, 105, 97, 116, 104, 97, 110, 83, 107,
			105, 110, 110, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 65, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 83, 107, 105, 110, 110, 101, 114, 115,
			92, 69, 121, 101, 108, 101, 115, 115, 68, 111,
			103, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 67, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 70, 111, 114, 101, 115, 116,
			75, 101, 101, 112, 101, 114, 83, 107, 105, 110,
			110, 101, 114, 46, 99, 115, 0, 0, 0, 2,
			0, 0, 0, 64, 92, 65, 115, 115, 101, 116,
			115, 92, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 92, 83, 99, 114, 105, 112,
			116, 115, 92, 86, 97, 110, 105, 108, 108, 97,
			83, 107, 105, 110, 110, 101, 114, 115, 92, 71,
			104, 111, 115, 116, 71, 105, 114, 108, 83, 107,
			105, 110, 110, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 65, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 83, 107, 105, 110, 110, 101, 114, 115,
			92, 72, 111, 97, 114, 100, 101, 114, 66, 117,
			103, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 64, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 72, 121, 103, 114, 111, 100,
			101, 114, 101, 83, 107, 105, 110, 110, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			61, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 83, 107, 105,
			110, 110, 101, 114, 115, 92, 74, 101, 115, 116,
			101, 114, 83, 107, 105, 110, 110, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 67,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 83, 107, 105, 110,
			110, 101, 114, 115, 92, 75, 105, 100, 110, 97,
			112, 112, 101, 114, 70, 111, 120, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 63, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			77, 97, 110, 101, 97, 116, 101, 114, 83, 107,
			105, 110, 110, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 64, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 83, 107, 105, 110, 110, 101, 114, 115,
			92, 77, 97, 110, 116, 105, 99, 111, 105, 108,
			83, 107, 105, 110, 110, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 65, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 86, 97, 110,
			105, 108, 108, 97, 83, 107, 105, 110, 110, 101,
			114, 115, 92, 78, 117, 116, 99, 114, 97, 99,
			107, 101, 114, 83, 107, 105, 110, 110, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			66, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 83, 107, 105,
			110, 110, 101, 114, 115, 92, 79, 108, 100, 66,
			105, 114, 100, 78, 101, 115, 116, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 62, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			79, 108, 100, 66, 105, 114, 100, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 68, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			82, 111, 97, 109, 105, 110, 103, 76, 111, 99,
			117, 115, 116, 83, 107, 105, 110, 110, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			64, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 83, 107, 105,
			110, 110, 101, 114, 115, 92, 83, 110, 97, 114,
			101, 70, 108, 101, 97, 83, 107, 105, 110, 110,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 66, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 83,
			107, 105, 110, 110, 101, 114, 115, 92, 83, 112,
			111, 114, 101, 76, 105, 122, 97, 114, 100, 83,
			107, 105, 110, 110, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 62, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 86, 97, 110, 105,
			108, 108, 97, 83, 107, 105, 110, 110, 101, 114,
			115, 92, 84, 104, 117, 109, 112, 101, 114, 83,
			107, 105, 110, 110, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 65, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 86, 97, 110, 105,
			108, 108, 97, 83, 107, 105, 110, 110, 101, 114,
			115, 92, 84, 117, 108, 105, 112, 83, 110, 97,
			107, 101, 83, 107, 105, 110, 110, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 63,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 84, 101, 109, 112,
			108, 97, 116, 101, 115, 92, 66, 97, 98, 111,
			111, 110, 72, 97, 119, 107, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			59, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 66, 97, 114,
			98, 101, 114, 83, 107, 105, 110, 46, 99, 115,
			0, 0, 0, 2, 0, 0, 0, 57, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 86, 97, 110,
			105, 108, 108, 97, 84, 101, 109, 112, 108, 97,
			116, 101, 115, 92, 66, 97, 115, 101, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 60, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 66,
			114, 97, 99, 107, 101, 110, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			65, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 66, 117, 110,
			107, 101, 114, 83, 112, 105, 100, 101, 114, 83,
			107, 105, 110, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 59, 92, 65, 115, 115, 101, 116,
			115, 92, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 92, 83, 99, 114, 105, 112,
			116, 115, 92, 86, 97, 110, 105, 108, 108, 97,
			84, 101, 109, 112, 108, 97, 116, 101, 115, 92,
			66, 117, 116, 108, 101, 114, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			63, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 67, 105, 114,
			99, 117, 105, 116, 66, 101, 101, 83, 107, 105,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 61, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 84, 101,
			109, 112, 108, 97, 116, 101, 115, 92, 67, 111,
			105, 108, 104, 101, 97, 100, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			67, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 69, 97, 114,
			116, 104, 76, 101, 118, 105, 97, 116, 104, 97,
			110, 83, 107, 105, 110, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 63, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 84, 101, 109, 112, 108, 97, 116, 101,
			115, 92, 69, 121, 101, 108, 101, 115, 115, 68,
			111, 103, 83, 107, 105, 110, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 65, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 86, 97, 110, 105,
			108, 108, 97, 84, 101, 109, 112, 108, 97, 116,
			101, 115, 92, 70, 111, 114, 101, 115, 116, 75,
			101, 101, 112, 101, 114, 83, 107, 105, 110, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 62,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 84, 101, 109, 112,
			108, 97, 116, 101, 115, 92, 71, 104, 111, 115,
			116, 71, 105, 114, 108, 83, 107, 105, 110, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 63,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 84, 101, 109, 112,
			108, 97, 116, 101, 115, 92, 72, 111, 97, 114,
			100, 101, 114, 66, 117, 103, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			62, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 72, 121, 103,
			114, 111, 100, 101, 114, 101, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			59, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 74, 101, 115,
			116, 101, 114, 83, 107, 105, 110, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 65, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 86, 97, 110,
			105, 108, 108, 97, 84, 101, 109, 112, 108, 97,
			116, 101, 115, 92, 75, 105, 100, 110, 97, 112,
			112, 101, 114, 70, 111, 120, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			61, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 77, 97, 110,
			101, 97, 116, 101, 114, 83, 107, 105, 110, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 62,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 84, 101, 109, 112,
			108, 97, 116, 101, 115, 92, 77, 97, 110, 116,
			105, 99, 111, 105, 108, 83, 107, 105, 110, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 63,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 84, 101, 109, 112,
			108, 97, 116, 101, 115, 92, 78, 117, 116, 99,
			114, 97, 99, 107, 101, 114, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			60, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 79, 108, 100,
			66, 105, 114, 100, 83, 107, 105, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 66, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 84, 101, 109, 112, 108,
			97, 116, 101, 115, 92, 82, 111, 97, 109, 105,
			110, 103, 76, 111, 99, 117, 115, 116, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 62, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 83,
			110, 97, 114, 101, 70, 108, 101, 97, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 64, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 83,
			112, 111, 114, 101, 76, 105, 122, 97, 114, 100,
			83, 107, 105, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 60, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 84, 101, 109, 112, 108, 97, 116, 101, 115,
			92, 84, 104, 117, 109, 112, 101, 114, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 63, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 84,
			117, 108, 105, 112, 83, 110, 97, 107, 101, 83,
			107, 105, 110, 46, 99, 115
		};
		result.TypesData = new byte[4591]
		{
			0, 0, 0, 0, 63, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 65,
			114, 109, 97, 116, 117, 114, 101, 82, 101, 102,
			108, 101, 99, 116, 105, 111, 110, 124, 65, 114,
			109, 97, 116, 117, 114, 101, 77, 97, 112, 71,
			101, 110, 101, 114, 97, 116, 111, 114, 0, 0,
			0, 0, 60, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 65, 114, 109,
			97, 116, 117, 114, 101, 82, 101, 102, 108, 101,
			99, 116, 105, 111, 110, 124, 65, 114, 109, 97,
			116, 117, 114, 101, 82, 101, 102, 108, 101, 99,
			116, 111, 114, 0, 0, 0, 0, 63, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 65, 114, 109, 97, 116, 117, 114, 101,
			82, 101, 102, 108, 101, 99, 116, 105, 111, 110,
			124, 65, 114, 109, 97, 116, 117, 114, 101, 77,
			97, 112, 73, 110, 115, 112, 101, 99, 116, 111,
			114, 0, 0, 0, 0, 52, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			83, 107, 105, 110, 65, 99, 116, 105, 111, 110,
			124, 65, 117, 100, 105, 111, 65, 99, 116, 105,
			111, 110, 68, 114, 97, 119, 101, 114, 0, 0,
			0, 0, 56, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 83, 107, 105,
			110, 65, 99, 116, 105, 111, 110, 124, 65, 117,
			100, 105, 111, 76, 105, 115, 116, 65, 99, 116,
			105, 111, 110, 68, 114, 97, 119, 101, 114, 0,
			0, 0, 0, 52, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 83, 107,
			105, 110, 65, 99, 116, 105, 111, 110, 124, 67,
			111, 108, 111, 114, 65, 99, 116, 105, 111, 110,
			68, 114, 97, 119, 101, 114, 0, 0, 0, 0,
			52, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 124, 68, 101, 102, 97, 117,
			108, 116, 83, 107, 105, 110, 67, 111, 110, 102,
			105, 103, 117, 114, 97, 116, 105, 111, 110, 86,
			105, 101, 119, 0, 0, 0, 0, 48, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 124, 68, 101, 102, 97, 117, 108, 116, 77,
			111, 111, 110, 70, 114, 101, 113, 117, 101, 110,
			99, 121, 86, 105, 101, 119, 0, 0, 0, 0,
			50, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 124, 73, 110, 118, 97, 108,
			105, 100, 80, 108, 117, 103, 105, 110, 78, 97,
			109, 101, 69, 120, 99, 101, 112, 116, 105, 111,
			110, 0, 0, 0, 0, 52, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 124,
			73, 110, 118, 97, 108, 105, 100, 65, 115, 115,
			101, 109, 98, 108, 121, 78, 97, 109, 101, 69,
			120, 99, 101, 112, 116, 105, 111, 110, 0, 0,
			0, 0, 49, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 124, 73, 110, 118,
			97, 108, 105, 100, 78, 97, 109, 101, 115, 112,
			97, 99, 101, 69, 120, 99, 101, 112, 116, 105,
			111, 110, 0, 0, 0, 0, 47, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			124, 73, 110, 118, 97, 108, 105, 100, 77, 111,
			100, 78, 97, 109, 101, 69, 120, 99, 101, 112,
			116, 105, 111, 110, 0, 0, 0, 0, 46, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 124, 73, 110, 118, 97, 108, 105, 100,
			65, 117, 116, 104, 111, 114, 69, 120, 99, 101,
			112, 116, 105, 111, 110, 0, 0, 0, 0, 47,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 124, 73, 110, 118, 97, 108, 105,
			100, 77, 111, 100, 71, 85, 73, 68, 69, 120,
			99, 101, 112, 116, 105, 111, 110, 0, 0, 0,
			0, 44, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 124, 73, 110, 118, 97,
			108, 105, 100, 73, 99, 111, 110, 69, 120, 99,
			101, 112, 116, 105, 111, 110, 0, 0, 0, 0,
			55, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 83, 107, 105, 110, 65,
			99, 116, 105, 111, 110, 124, 77, 97, 116, 101,
			114, 105, 97, 108, 65, 99, 116, 105, 111, 110,
			68, 114, 97, 119, 101, 114, 0, 0, 0, 0,
			38, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 124, 83, 107, 105, 110, 77,
			111, 100, 66, 117, 105, 108, 100, 101, 114, 0,
			0, 0, 0, 55, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 83, 107,
			105, 110, 65, 99, 116, 105, 111, 110, 124, 80,
			97, 114, 116, 105, 99, 108, 101, 65, 99, 116,
			105, 111, 110, 68, 114, 97, 119, 101, 114, 0,
			0, 0, 0, 44, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 124, 83, 107,
			105, 110, 77, 111, 100, 66, 117, 105, 108, 100,
			101, 114, 69, 100, 105, 116, 111, 114, 0, 0,
			0, 0, 17, 124, 83, 116, 97, 116, 105, 99,
			77, 101, 115, 104, 68, 114, 97, 119, 101, 114,
			0, 0, 0, 0, 51, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 83,
			107, 105, 110, 65, 99, 116, 105, 111, 110, 124,
			83, 116, 97, 116, 105, 99, 77, 101, 115, 104,
			68, 114, 97, 119, 101, 114, 0, 0, 0, 0,
			54, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 83, 107, 105, 110, 65,
			99, 116, 105, 111, 110, 124, 84, 101, 120, 116,
			117, 114, 101, 65, 99, 116, 105, 111, 110, 68,
			114, 97, 119, 101, 114, 0, 0, 0, 0, 36,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 124, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 0, 0, 0, 0,
			52, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 83, 107, 105, 110, 65,
			99, 116, 105, 111, 110, 124, 83, 107, 105, 110,
			110, 101, 100, 77, 101, 115, 104, 65, 99, 116,
			105, 111, 110, 0, 0, 0, 0, 51, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 83, 107, 105, 110, 65, 99, 116, 105,
			111, 110, 124, 83, 116, 97, 116, 105, 99, 77,
			101, 115, 104, 65, 99, 116, 105, 111, 110, 0,
			0, 0, 0, 46, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 83, 107,
			105, 110, 65, 99, 116, 105, 111, 110, 124, 67,
			111, 108, 111, 114, 65, 99, 116, 105, 111, 110,
			0, 0, 0, 0, 48, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 83,
			107, 105, 110, 65, 99, 116, 105, 111, 110, 124,
			84, 101, 120, 116, 117, 114, 101, 65, 99, 116,
			105, 111, 110, 0, 0, 0, 0, 50, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 83, 107, 105, 110, 65, 99, 116, 105,
			111, 110, 124, 86, 97, 110, 105, 108, 108, 97,
			77, 97, 116, 101, 114, 105, 97, 108, 0, 0,
			0, 0, 49, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 83, 107, 105,
			110, 65, 99, 116, 105, 111, 110, 124, 77, 97,
			116, 101, 114, 105, 97, 108, 65, 99, 116, 105,
			111, 110, 0, 0, 0, 0, 55, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 83, 107, 105, 110, 65, 99, 116, 105, 111,
			110, 124, 80, 97, 114, 116, 105, 99, 108, 101,
			83, 121, 115, 116, 101, 109, 65, 99, 116, 105,
			111, 110, 0, 0, 0, 0, 46, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 83, 107, 105, 110, 65, 99, 116, 105, 111,
			110, 124, 65, 117, 100, 105, 111, 65, 99, 116,
			105, 111, 110, 0, 0, 0, 0, 50, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 83, 107, 105, 110, 65, 99, 116, 105,
			111, 110, 124, 65, 117, 100, 105, 111, 76, 105,
			115, 116, 65, 99, 116, 105, 111, 110, 0, 0,
			0, 0, 42, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 124, 65, 114, 109,
			97, 116, 117, 114, 101, 65, 116, 116, 97, 99,
			104, 109, 101, 110, 116, 0, 0, 0, 0, 45,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 83, 107, 105, 110, 65, 99,
			116, 105, 111, 110, 124, 66, 111, 110, 101, 77,
			97, 112, 112, 101, 114, 0, 0, 0, 0, 49,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 66, 97, 98, 111, 111, 110, 72, 97,
			119, 107, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 45, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 66, 97, 114, 98,
			101, 114, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 43, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 66, 97, 115, 101,
			83, 107, 105, 110, 110, 101, 114, 0, 0, 0,
			0, 46, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 66, 114, 97, 99, 107, 101,
			110, 83, 107, 105, 110, 110, 101, 114, 0, 0,
			0, 0, 51, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 66, 117, 110, 107, 101,
			114, 83, 112, 105, 100, 101, 114, 83, 107, 105,
			110, 110, 101, 114, 0, 0, 0, 0, 45, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 66, 117, 116, 108, 101, 114, 83, 107, 105,
			110, 110, 101, 114, 0, 0, 0, 0, 50, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 67, 105, 114, 99, 117, 105, 116, 66, 101,
			101, 115, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 47, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 67, 111, 105, 108,
			72, 101, 97, 100, 83, 107, 105, 110, 110, 101,
			114, 0, 0, 0, 0, 53, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			86, 97, 110, 105, 108, 108, 97, 124, 69, 97,
			114, 116, 104, 76, 101, 118, 105, 97, 116, 104,
			97, 110, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 49, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 69, 121, 101, 108,
			101, 115, 115, 68, 111, 103, 83, 107, 105, 110,
			110, 101, 114, 0, 0, 0, 0, 51, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			70, 111, 114, 101, 115, 116, 75, 101, 101, 112,
			101, 114, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 48, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 71, 104, 111, 115,
			116, 71, 105, 114, 108, 83, 107, 105, 110, 110,
			101, 114, 0, 0, 0, 0, 62, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 71,
			104, 111, 115, 116, 71, 105, 114, 108, 68, 105,
			115, 97, 112, 112, 101, 97, 114, 69, 118, 101,
			110, 116, 72, 97, 110, 100, 108, 101, 114, 0,
			0, 0, 0, 49, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 72, 111, 97, 114,
			100, 101, 114, 66, 117, 103, 83, 107, 105, 110,
			110, 101, 114, 0, 0, 0, 0, 48, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			72, 121, 103, 114, 111, 100, 101, 114, 101, 83,
			107, 105, 110, 110, 101, 114, 0, 0, 0, 0,
			45, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 74, 101, 115, 116, 101, 114, 83,
			107, 105, 110, 110, 101, 114, 0, 0, 0, 0,
			51, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 75, 105, 100, 110, 97, 112, 112,
			101, 114, 70, 111, 120, 83, 107, 105, 110, 110,
			101, 114, 0, 0, 0, 0, 47, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 77,
			97, 110, 101, 97, 116, 101, 114, 83, 107, 105,
			110, 110, 101, 114, 0, 0, 0, 0, 48, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 77, 97, 110, 116, 105, 99, 111, 105, 108,
			83, 107, 105, 110, 110, 101, 114, 0, 0, 0,
			0, 49, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 78, 117, 116, 99, 114, 97,
			99, 107, 101, 114, 83, 107, 105, 110, 110, 101,
			114, 0, 0, 0, 0, 50, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			86, 97, 110, 105, 108, 108, 97, 124, 79, 108,
			100, 66, 105, 114, 100, 78, 101, 115, 116, 83,
			107, 105, 110, 110, 101, 114, 0, 0, 0, 0,
			46, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 79, 108, 100, 66, 105, 114, 100,
			83, 107, 105, 110, 110, 101, 114, 0, 0, 0,
			0, 52, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 82, 111, 97, 109, 105, 110,
			103, 76, 111, 99, 117, 115, 116, 83, 107, 105,
			110, 110, 101, 114, 0, 0, 0, 0, 48, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 83, 110, 97, 114, 101, 70, 108, 101, 97,
			83, 107, 105, 110, 110, 101, 114, 0, 0, 0,
			0, 50, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 83, 112, 111, 114, 101, 76,
			105, 122, 97, 114, 100, 83, 107, 105, 110, 110,
			101, 114, 0, 0, 0, 0, 46, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 84,
			104, 117, 109, 112, 101, 114, 83, 107, 105, 110,
			110, 101, 114, 0, 0, 0, 0, 49, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			84, 117, 108, 105, 112, 83, 110, 97, 107, 101,
			83, 107, 105, 110, 110, 101, 114, 0, 0, 0,
			0, 46, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 66, 97, 98, 111, 111, 110,
			72, 97, 119, 107, 83, 107, 105, 110, 0, 0,
			0, 0, 42, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 66, 97, 114, 98, 101,
			114, 83, 107, 105, 110, 0, 0, 0, 0, 40,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 66, 97, 115, 101, 83, 107, 105, 110,
			0, 0, 0, 0, 44, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 66, 97, 115,
			101, 78, 101, 115, 116, 83, 107, 105, 110, 0,
			0, 0, 0, 43, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 66, 114, 97, 99,
			107, 101, 110, 83, 107, 105, 110, 0, 0, 0,
			0, 48, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 66, 117, 110, 107, 101, 114,
			83, 112, 105, 100, 101, 114, 83, 107, 105, 110,
			0, 0, 0, 0, 42, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 66, 117, 116,
			108, 101, 114, 83, 107, 105, 110, 0, 0, 0,
			0, 47, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 67, 105, 114, 99, 117, 105,
			116, 66, 101, 101, 115, 83, 107, 105, 110, 0,
			0, 0, 0, 44, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 67, 111, 105, 108,
			104, 101, 97, 100, 83, 107, 105, 110, 0, 0,
			0, 0, 50, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 69, 97, 114, 116, 104,
			76, 101, 118, 105, 97, 116, 104, 97, 110, 83,
			107, 105, 110, 0, 0, 0, 0, 46, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			69, 121, 101, 108, 101, 115, 115, 68, 111, 103,
			83, 107, 105, 110, 0, 0, 0, 0, 48, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 70, 111, 114, 101, 115, 116, 75, 101, 101,
			112, 101, 114, 83, 107, 105, 110, 0, 0, 0,
			0, 45, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 71, 104, 111, 115, 116, 71,
			105, 114, 108, 83, 107, 105, 110, 0, 0, 0,
			0, 46, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 72, 111, 97, 114, 100, 101,
			114, 66, 117, 103, 83, 107, 105, 110, 0, 0,
			0, 0, 45, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 72, 121, 103, 114, 111,
			100, 101, 114, 101, 83, 107, 105, 110, 0, 0,
			0, 0, 42, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 74, 101, 115, 116, 101,
			114, 83, 107, 105, 110, 0, 0, 0, 0, 48,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 75, 105, 100, 110, 97, 112, 112, 101,
			114, 70, 111, 120, 83, 107, 105, 110, 0, 0,
			0, 0, 44, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 77, 97, 110, 101, 97,
			116, 101, 114, 83, 107, 105, 110, 0, 0, 0,
			0, 45, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 77, 97, 110, 116, 105, 99,
			111, 105, 108, 83, 107, 105, 110, 0, 0, 0,
			0, 46, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 78, 117, 116, 99, 114, 97,
			99, 107, 101, 114, 83, 107, 105, 110, 0, 0,
			0, 0, 43, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 79, 108, 100, 66, 105,
			114, 100, 83, 107, 105, 110, 0, 0, 0, 0,
			49, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 82, 111, 97, 109, 105, 110, 103,
			76, 111, 99, 117, 115, 116, 83, 107, 105, 110,
			0, 0, 0, 0, 45, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 83, 110, 97,
			114, 101, 70, 108, 101, 97, 83, 107, 105, 110,
			0, 0, 0, 0, 47, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 83, 112, 111,
			114, 101, 76, 105, 122, 97, 114, 100, 83, 107,
			105, 110, 0, 0, 0, 0, 43, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 84,
			104, 117, 109, 112, 101, 114, 83, 107, 105, 110,
			0, 0, 0, 0, 46, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 84, 117, 108,
			105, 112, 83, 110, 97, 107, 101, 83, 107, 105,
			110
		};
		result.TotalFiles = 70;
		result.TotalTypes = 87;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace AntlerShed.EnemySkinKit
{
	[Serializable]
	internal struct DefaultSkinConfigurationView
	{
		public string skinId;

		public DefaultMoonFrequencyView[] defaultEntries;

		public float defaultFrequency;

		public float vanillaFallbackFrequency;
	}
	[Serializable]
	internal struct DefaultMoonFrequencyView
	{
		public string moonId;

		public float frequency;
	}
	internal class InvalidPluginNameException : Exception
	{
		internal InvalidPluginNameException()
			: base("The given mod name created an invalid plugin name. The mod name must contain at least one alphabetical character.")
		{
		}
	}
	internal class InvalidAssemblyNameException : Exception
	{
		internal InvalidAssemblyNameException()
			: base("The given mod name is an invalid assembly name. The mod name must have at least one alphabetical character.")
		{
		}
	}
	internal class InvalidNamespaceException : Exception
	{
		internal InvalidNamespaceException()
			: base("The given mod name and author created an invalid namespace. The mod name and author must each contain at least one aphabetical character in order to generate a valid namespace identifier.")
		{
		}
	}
	internal class InvalidModNameException : Exception
	{
		internal InvalidModNameException()
			: base("Given mod name was empty or only contained whitespace.")
		{
		}
	}
	internal class InvalidAuthorException : Exception
	{
		internal InvalidAuthorException()
			: base("Given author was empty or only contained whitespace.")
		{
		}
	}
	internal class InvalidModGUIDException : Exception
	{
		internal InvalidModGUIDException()
			: base("Mod GUID and either the author or the mod name were not specified or only contain whitespace.")
		{
		}
	}
	internal class InvalidIconException : Exception
	{
		internal InvalidIconException()
			: base("Icon must be a png file of size 256 x 256.")
		{
		}
	}
	[CreateAssetMenu(fileName = "SkinMod", menuName = "EnemySkinKit/Mod", order = 1)]
	public class SkinModBuilder : ScriptableObject
	{
		[SerializeField]
		[Tooltip("The name of the mod")]
		private string modName;

		[SerializeField]
		[Tooltip("The name of the mod's author")]
		private string author;

		[SerializeField]
		[Tooltip("Optional place to specify an explicit mod GUID. If not speficied, the GUID will be \"<ModName>.<ModAuthor>\"")]
		private string modGUID;

		[SerializeField]
		[Tooltip("ReadMe file. This will be the text content of your mod's ThunderStore page. Talk about your mod in detail here.")]
		private TextAsset readMe;

		[SerializeField]
		[Tooltip("The icon of your mod that will appear on your mod's Thunderstore page and in the Thunderstore mod manager.")]
		private Texture2D icon;

		[SerializeField]
		[Tooltip("The major version of your mod. Start at one and add one every time you make a change that will break something if someone else depends on your mod (probably never, so this should be 1 in most cases).")]
		private uint major;

		[SerializeField]
		[Tooltip("The minor version of your mod. Start at zero and add one every time you add a new feature, like a new skin. Go back to zero if you update the major version.")]
		private uint minor;

		[SerializeField]
		[Tooltip("The patch part of your mod version. Start at zero and add one every time you make a change that fixes a problem with your mod. Reset to zero when updating the minor or major version.")]
		private uint patch;

		[SerializeField]
		[Tooltip("A short description of your mod that just tells people what it is. Shouldn't be more than a sentence or two.")]
		private string description;

		[SerializeField]
		[Tooltip("The skins that will be packaged with your mod.")]
		private BaseSkin[] skins;

		[SerializeField]
		[Tooltip("Any default configurations to include with your mod")]
		private DefaultSkinConfigurationView[] configs;

		private const string ASSET_BUNDLE_NAME = "SkinAssets";

		private const string PLUGINS_FOLDER = "plugins";

		private const string ASSETS_FOLDER = "AssetBundles";

		private const string STAGING_FOLDER_SUFFIX = "Staging";

		private const string BUILD_FOLDER = "EnemySkinKit";

		private static readonly Regex whitespace = new Regex("\\s");

		private static readonly Regex wordDelim = new Regex("[\\s_-][\\w]");

		private static readonly Regex cSharpInvalid = new Regex("[^\\w\\d]");

		private static readonly Regex fileNameInvalid = new Regex("[^\\w\\d_-]");

		private static readonly Regex leadingDigits = new Regex("^\\d+");

		private static readonly Regex validClassName = new Regex("\\w+[\\w\\d]*");

		private string sanitizedAssemblyName;

		private string sanitizedModName;

		private string stagingPath;

		private string pluginPath;

		private string assetsPath;

		private string sourceCodeFilePath;

		private string assemblyFilePath;

		public void BuildMod(string author, string modName, string modGUID, string description, TextAsset readMe, Texture2D icon, uint major, uint minor, uint patch, BaseSkin[] skins)
		{
			//IL_026b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_0335: Unknown result type (might be due to invalid IL or missing references)
			if (!Directory.Exists("EnemySkinKit"))
			{
				Directory.CreateDirectory("EnemySkinKit");
			}
			if ((Object)(object)icon == (Object)null || !AssetDatabase.GetAssetPath((Object)(object)icon).EndsWith(".png") || ((Texture)icon).width != 256 || ((Texture)icon).height != 256)
			{
				throw new InvalidIconException();
			}
			sanitizedModName = modName.Replace(" ", "_");
			sanitizedModName = fileNameInvalid.Replace(sanitizedModName, "");
			string input = author.Replace(" ", "_");
			input = fileNameInvalid.Replace(input, "");
			string value = (string.IsNullOrEmpty(modGUID) ? (input + "." + sanitizedModName) : whitespace.Replace(modGUID, ""));
			string text = convertToValidCSharpName(sanitizedModName + "Plugin");
			string text2 = convertToValidCSharpName(input) + ".LethalCompany." + convertToValidCSharpName(sanitizedModName);
			sanitizedAssemblyName = convertToValidCSharpName(sanitizedModName);
			if (string.IsNullOrEmpty(input))
			{
				throw new InvalidAuthorException();
			}
			if (string.IsNullOrEmpty(value))
			{
				throw new InvalidModGUIDException();
			}
			if (string.IsNullOrEmpty(text))
			{
				throw new InvalidPluginNameException();
			}
			if (text2.Split(".").Any((string section) => string.IsNullOrEmpty(section)))
			{
				throw new InvalidNamespaceException();
			}
			if (string.IsNullOrEmpty(sanitizedAssemblyName))
			{
				throw new InvalidAssemblyNameException();
			}
			if (string.IsNullOrEmpty(sanitizedModName))
			{
				throw new InvalidModNameException();
			}
			Debug.Log((object)createSkinModSource(value, sanitizedModName, "BundleName", major, minor, patch, text, text2, skins, configs));
			stagingPath = Path.Combine("Assets", sanitizedModName + "Staging");
			pluginPath = Path.Combine(new string[3] { stagingPath, "plugins", sanitizedModName });
			assetsPath = Path.Combine(pluginPath, "AssetBundles");
			if (Directory.Exists(stagingPath))
			{
				Directory.Delete(stagingPath, recursive: true);
			}
			Directory.CreateDirectory(assetsPath);
			string text3 = input + "_" + sanitizedModName + "_SkinAssets";
			AssetBundleBuild val = default(AssetBundleBuild);
			val.assetBundleName = text3;
			val.assetNames = (from path in skins.Select((BaseSkin skin) => AssetDatabase.GetDependencies(AssetDatabase.GetAssetPath((Object)(object)skin), true)).Aggregate(new List<string>(), (List<string> list, string[] paths) => list.Concat(paths).ToList())
				where !path.EndsWith(".cs") && !path.EndsWith(".asm") && !path.EndsWith(".dll")
				select path).ToHashSet().ToArray();
			BuildAssetBundlesParameters val2 = default(BuildAssetBundlesParameters);
			((BuildAssetBundlesParameters)(ref val2)).bundleDefinitions = (AssetBundleBuild[])(object)new AssetBundleBuild[1] { val };
			((BuildAssetBundlesParameters)(ref val2)).options = (BuildAssetBundleOptions)32768;
			((BuildAssetBundlesParameters)(ref val2)).outputPath = assetsPath;
			BuildPipeline.BuildAssetBundles(val2);
			using (StreamWriter streamWriter = new StreamWriter(Path.Combine(stagingPath, "README.md"), append: false))
			{
				streamWriter.WriteLine(((Object)(object)readMe == (Object)null) ? "" : readMe.text);
			}
			using (StreamWriter streamWriter2 = new StreamWriter(Path.Combine(stagingPath, "manifest.json"), append: false))
			{
				streamWriter2.WriteLine(createThunderstoreManifest(sanitizedModName, input, description, major, minor, patch));
			}
			File.Copy(AssetDatabase.GetAssetPath((Object)(object)icon), Path.Combine(stagingPath, "icon.png"));
			sourceCodeFilePath = Path.Combine(pluginPath, text + ".cs");
			using (StreamWriter streamWriter3 = new StreamWriter(sourceCodeFilePath, append: false))
			{
				streamWriter3.WriteLine(createSkinModSource(value, sanitizedModName, text3, major, minor, patch, text, text2, skins, configs));
			}
			assemblyFilePath = Path.Combine(pluginPath, sanitizedAssemblyName + ".asmdef");
			using (StreamWriter streamWriter4 = new StreamWriter(assemblyFilePath, append: false))
			{
				streamWriter4.WriteLine(createAssemblyDefinitionSource(sanitizedAssemblyName, text2));
			}
			AssetDatabase.ImportAsset(sourceCodeFilePath);
			AssetDatabase.ImportAsset(assemblyFilePath);
			CompilationPipeline.compilationFinished += onCompilationFinished;
			CompilationPipeline.assemblyCompilationFinished += onAssemblyCompilationFinished;
		}

		private void onAssemblyCompilationFinished(string assemblyPath, CompilerMessage[] messages)
		{
			if (assemblyPath.EndsWith(sanitizedAssemblyName + ".dll"))
			{
				AssetDatabase.DeleteAsset(sourceCodeFilePath);
				AssetDatabase.DeleteAsset(assemblyFilePath);
				File.Copy(assemblyPath, Path.Combine(pluginPath, Path.GetFileName(assemblyPath)));
				string text = Path.Combine("EnemySkinKit", sanitizedModName + ".zip");
				if (File.Exists(text))
				{
					File.Delete(text);
				}
				ZipFile.CreateFromDirectory(stagingPath, text);
				AssetDatabase.DeleteAsset(stagingPath);
			}
		}

		private void onCompilationFinished(object eventStore)
		{
			CompilationPipeline.assemblyCompilationFinished -= onAssemblyCompilationFinished;
			CompilationPipeline.compilationFinished -= onCompilationFinished;
		}

		public void BuildMod()
		{
			BuildMod(author, modName, modGUID, description, readMe, icon, major, minor, patch, skins);
		}

		private string createDefaultSkinConfigSource(DefaultSkinConfigurationView defaultConfig)
		{
			string text = "";
			for (int i = 0; i < defaultConfig.defaultEntries.Length - 1; i++)
			{
				text = text + createDefaultSkinConfigEntrySource(defaultConfig.defaultEntries[i]) + ", ";
			}
			if (defaultConfig.defaultEntries.Length != 0)
			{
				text += createDefaultSkinConfigEntrySource(defaultConfig.defaultEntries[defaultConfig.defaultEntries.Length - 1]);
			}
			return $"new DefaultSkinConfigData(new DefaultSkinConfigEntry[] {{ {text} }}, {Math.Clamp(defaultConfig.defaultFrequency, 0f, 1f)}f, {Math.Clamp(defaultConfig.vanillaFallbackFrequency, 0f, 1f)}f)";
		}

		private string createDefaultSkinConfigEntrySource(DefaultMoonFrequencyView defaultConfig)
		{
			return $"new DefaultSkinConfigEntry(\"{defaultConfig.moonId}\", {defaultConfig.frequency}f)";
		}

		private string createTemplateSkinEntrySource(BaseSkin skin, DefaultSkinConfigurationView? defaultConfig)
		{
			return "EnemySkinRegistry.RegisterSkin(bundle.LoadAsset<" + ((object)skin).GetType().Name + ">(\"" + AssetDatabase.GetAssetPath((Object)(object)skin) + "\")" + ((!defaultConfig.HasValue) ? "" : (", " + createDefaultSkinConfigSource(defaultConfig.Value))) + ");" + ((skin is BaseNestSkin) ? ("\nEnemySkinRegistry.RegisterNestSkin(bundle.LoadAsset<" + ((object)skin).GetType().Name + ">(\"" + AssetDatabase.GetAssetPath((Object)(object)skin) + "\"));") : "");
		}

		private string createSkinModSource(string modGUID, string modName, string bundleName, uint major, uint minor, uint patch, string pluginClassName, string namespaceText, BaseSkin[] skins, DefaultSkinConfigurationView[] configs)
		{
			return "//This is generated code and shouldn't be modified unless it's taken out of its original environment\nusing AntlerShed.EnemySkinKit;\nusing AntlerShed.EnemySkinKit.Vanilla;\nusing AntlerShed.SkinRegistry;\nusing BepInEx;\nusing System.Reflection;\nusing UnityEngine;\nnamespace " + namespaceText + "\n{\n" + $"\t[BepInPlugin(\"{modGUID}\", \"{modName}\", \"{major}.{minor}.{patch}\")]\n" + "\t[BepInDependency(\"AntlerShed.LethalCompany.EnemySkinKit\")]\n\tpublic class " + pluginClassName + " : BaseUnityPlugin\n\t{\n\t\tpublic const string modGUID = \"" + modGUID + "\";\n\t\tpublic const string modName = \"" + modName + "\";\n" + $"\t\tpublic const string modVersion = \"{major}.{minor}.{patch}\";\n" + "\t\tvoid Awake()\n\t\t{\n\t\t\tAssetBundle bundle = AssetBundle.LoadFromFile\n\t\t\t(\n\t\t\t\tSystem.IO.Path.Combine\n\t\t\t\t(\n\t\t\t\t\tSystem.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),\n\t\t\t\t\t\"AssetBundles/" + bundleName + "\"\n\t\t\t\t)\n\t\t\t);\n" + skins.Select((BaseSkin skin) => "\t\t\t" + createTemplateSkinEntrySource(skin, configs.Any((DefaultSkinConfigurationView cfg) => cfg.skinId.Equals(skin.Id)) ? new DefaultSkinConfigurationView?(configs.First((DefaultSkinConfigurationView cfg) => cfg.skinId.Equals(skin.Id))) : null)).Aggregate("", (string str, string line) => str + line) + "\n\t\t}\n\t}\n}";
		}

		private string createAssemblyDefinitionSource(string assemblyName, string namespaceText)
		{
			return "{\n\"name\": \"" + assemblyName + "\",\n\t\"rootNamespace\": \"" + namespaceText + "\",\n\t\"references\": [],\n\t\"includePlatforms\": [],\n\t\"excludePlatforms\": [],\n\t\"allowUnsafeCode\": false,\n\t\"overrideReferences\": true,\n\t\"precompiledReferences\": \n\t[\n\t\t\"BepInEx.dll\",\n\t\t\"EnemySkinRegistry.dll\",\n\t\t\"EnemySkinKit.dll\"\n \t],\n\t\"autoReferenced\": true,\n\t\"defineConstraints\": [],\n\t\"versionDefines\": [],\n\t\"noEngineReferences\": false\n}";
		}

		private string createThunderstoreManifest(string modName, string author, string description, uint major, uint minor, uint patch)
		{
			return "{\n\t\"name\": \"" + modName + "\",\n\t\"author\": \"" + author + "\",\n" + $"\t\"version_number\": \"{major}.{minor}.{patch}\",\n" + "\t\"website_url\": \"\",\n\t\"description\": \"" + description + "\",\n\t\"dependencies\": [\"AntlerShed-EnemySkinKit-1.2.5\"]\n}";
		}

		private string convertToValidCSharpName(string name)
		{
			string text = leadingDigits.Replace(cSharpInvalid.Replace(wordDelim.Replace(name, (Match match) => match.ToString().ToUpper()), ""), "");
			if (!validClassName.IsMatch(text))
			{
				return null;
			}
			return text;
		}
	}
	[CustomEditor(typeof(SkinModBuilder))]
	internal class SkinModBuilderEditor : Editor
	{
		public override VisualElement CreateInspectorGUI()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Expected O, but got Unknown
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Expected O, but got Unknown
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Expected O, but got Unknown
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Expected O, but got Unknown
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Expected O, but got Unknown
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Expected O, but got Unknown
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Expected O, but got Unknown
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Expected O, but got Unknown
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Expected O, but got Unknown
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Expected O, but got Unknown
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Expected O, but got Unknown
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Expected O, but got Unknown
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Expected O, but got Unknown
			VisualElement val = new VisualElement();
			Foldout val2 = new Foldout();
			val2.text = "Mod Info";
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("modName")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("author")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("modGUID")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("description")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("readMe")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("icon")));
			Foldout val3 = new Foldout();
			val3.text = "Version";
			((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("major")));
			((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("minor")));
			((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("patch")));
			((VisualElement)val2).Add((VisualElement)(object)val3);
			val.Add((VisualElement)(object)val2);
			val.Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("skins")));
			val.Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("configs")));
			Button val4 = new Button();
			((TextElement)val4).text = "Generate Mod Files";
			val4.clicked += genModFiles;
			val.Add((VisualElement)(object)val4);
			return val;
		}

		private void genModFiles()
		{
			(((Editor)this).target as SkinModBuilder).BuildMod();
		}
	}
	[BepInPlugin("AntlerShed.LethalCompany.EnemySkinKit", "Vanilla Enemy Skin Kit", "1.2.5")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public sealed class EnemySkinKit : BaseUnityPlugin
	{
		public const string modGUID = "AntlerShed.LethalCompany.EnemySkinKit";

		public const string modName = "Vanilla Enemy Skin Kit";

		public const string modVersion = "1.2.5";

		private static ConfigEntry<LogLevel> logLevel;

		internal static ManualLogSource SkinKitLogger { get; private set; } = Logger.CreateLogSource("AntlerShed.LethalCompany.EnemySkinKit");


		internal static LogLevel LogLevelSetting => logLevel.Value;

		private void Awake()
		{
			logLevel = ((BaseUnityPlugin)this).Config.Bind<LogLevel>("LogLevel", "Logging", LogLevel.ERROR, "Verbosity setting of the logger.");
		}
	}
	internal enum LogLevel
	{
		NONE,
		ERROR,
		WARN,
		INFO
	}
	[Serializable]
	public struct ArmatureAttachment
	{
		public string boneId;

		public GameObject attachment;

		public Vector3 location;

		public Vector3 rotation;

		public Vector3 scale;

		public static List<GameObject> ApplyAttachments(ArmatureAttachment[] attachments, SkinnedMeshRenderer renderer)
		{
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)renderer != (Object)null && attachments != null)
			{
				List<GameObject> list = new List<GameObject>();
				for (int i = 0; i < attachments.Length; i++)
				{
					ArmatureAttachment attachment = attachments[i];
					try
					{
						Transform val = renderer.bones.First((Transform tf) => ((Object)tf).name.Equals(attachment.boneId));
						GameObject val2 = Object.Instantiate<GameObject>(attachment.attachment, val);
						val2.transform.localPosition = attachment.location;
						val2.transform.localRotation = Quaternion.Euler(attachment.rotation);
						val2.transform.localScale = attachment.scale;
						list.Add(val2);
					}
					catch (Exception ex)
					{
						if (EnemySkinKit.LogLevelSetting >= LogLevel.ERROR)
						{
							EnemySkinKit.SkinKitLogger.LogError((object)ex.StackTrace);
						}
					}
				}
				return list;
			}
			if (attachments == null && EnemySkinKit.LogLevelSetting >= LogLevel.WARN)
			{
				EnemySkinKit.SkinKitLogger.LogWarning((object)"Armature attachments array was null. This probably either means you're running dev build or uninstalled fixplugintypesserialization for some reason. If you're manually setting your armature attachments to null when extending an enemyskinner, consider passing in an empty array instead ans save yourself the log entry.");
			}
			return new List<GameObject>();
		}

		public static void RemoveAttachments(List<GameObject> attachments)
		{
			foreach (GameObject attachment in attachments)
			{
				Object.Destroy((Object)(object)attachment);
			}
		}
	}
}
namespace AntlerShed.EnemySkinKit.Vanilla
{
	public class BaboonHawkSkinner : BaseSkinner, BaboonHawkEventHandler, EnemyEventHandler
	{
		protected const string LOD0_PATH = "BaboonBirdModel/BodyLOD0";

		protected const string LOD1_PATH = "BaboonBirdModel/BodyLOD1";

		protected const string LOD2_PATH = "BaboonBirdModel/BodyLOD2";

		protected const string ANCHOR_PATH = "BaboonBirdModel/AnimContainer/metarig";

		protected const string ANIM_EFFECTS_PATH = "BaboonBirdModel/AnimContainer";

		protected const string SECONDARY_BLOOD_PARTICLE_PATH = "BaboonBirdModel/AnimContainer/metarig/spine/spine.001/spine.003/spine.004/HeadBoneContainer/spine.005/BloodSpurtParticle (1)/BloodParticle";

		protected VanillaMaterial vanillaBodyMaterial;

		protected AudioClip[] vanillaScreamAudio;

		protected AudioClip[] vanillaLaughAudio;

		protected AudioClip vanillaIntimidateAudio;

		protected AudioClip vanillaIntimidateVoice;

		protected AudioClip vanillaEnterFightAudio;

		protected AudioClip vanillaKillPlayerAudio;

		protected AudioClip vanillaStabAudio;

		protected AudioClip vanillaDeathAudio;

		protected VanillaMaterial vanillaBloodMat;

		private VanillaMaterial vanillaSecondaryBloodMat;

		private VanillaMaterial vanillaBloodStabMat;

		protected AudioClip vanillaHitBodyAudio;

		protected AudioClip[] vanillaFootstepsAudio;

		protected List<GameObject> activeAttachments;

		protected ParticleSystem vanillaBloodParticle;

		protected GameObject skinnedMeshReplacement;

		protected AudioSource modCreatureEffects;

		protected AudioSource modCreatureVoice;

		protected AudioSource modAggressionAudio;

		protected BaboonHawkSkin SkinData { get; }

		protected bool VoiceSilenced
		{
			get
			{
				if (SkinData.IntimidateVoiceAction.actionType == AudioActionType.RETAIN)
				{
					return SkinData.KillPlayerAudioAction.actionType != AudioActionType.RETAIN;
				}
				return true;
			}
		}

		protected bool EffectsSilenced
		{
			get
			{
				if (SkinData.StabAudioAction.actionType == AudioActionType.RETAIN)
				{
					return SkinData.HitBodyAudioAction.actionType != AudioActionType.RETAIN;
				}
				return true;
			}
		}

		protected bool AggressionSilenced
		{
			get
			{
				if (SkinData.EnterFightAction.actionType == AudioActionType.RETAIN)
				{
					return SkinData.IntimidateAudioAction.actionType != AudioActionType.RETAIN;
				}
				return true;
			}
		}

		public BaboonHawkSkinner(BaboonHawkSkin skinData)
		{
			SkinData = skinData;
		}

		public override void Apply(GameObject enemy)
		{
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
			BaboonBirdAI component = enemy.GetComponent<BaboonBirdAI>();
			Transform obj = enemy.transform.Find("BaboonBirdModel/AnimContainer");
			object obj2;
			if (obj == null)
			{
				obj2 = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				obj2 = ((gameObject != null) ? gameObject.GetComponent<BaboonHawkAudioEvents>() : null);
			}
			BaboonHawkAudioEvents val = (BaboonHawkAudioEvents)obj2;
			if (VoiceSilenced)
			{
				modCreatureVoice = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureVoice, "modVoice");
				((EnemyAI)component).creatureVoice.mute = true;
			}
			if (EffectsSilenced)
			{
				modCreatureEffects = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureSFX, "modEffects");
				((EnemyAI)component).creatureSFX.mute = true;
				if ((Object)(object)val != (Object)null)
				{
					val.audioToPlay = modCreatureEffects;
				}
			}
			if (AggressionSilenced)
			{
				modAggressionAudio = BaseSkinner.CreateModdedAudioSource(component.aggressionAudio, "modAggressionAudio");
				component.aggressionAudio.mute = true;
			}
			ArmatureAttachment[] attachments = SkinData.Attachments;
			Transform obj3 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object renderer;
			if (obj3 == null)
			{
				renderer = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj3).gameObject;
				renderer = ((gameObject2 != null) ? gameObject2.GetComponent<SkinnedMeshRenderer>() : null);
			}
			activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer);
			MaterialAction bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj4 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			vanillaBodyMaterial = bodyMaterialAction.Apply((obj4 != null) ? ((Component)obj4).gameObject.GetComponent<Renderer>() : null, 0);
			bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj5 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			bodyMaterialAction.Apply((obj5 != null) ? ((Component)obj5).gameObject.GetComponent<Renderer>() : null, 0);
			bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj6 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			bodyMaterialAction.Apply((obj6 != null) ? ((Component)obj6).gameObject.GetComponent<Renderer>() : null, 0);
			vanillaScreamAudio = SkinData.ScreamAudioListAction.Apply(ref component.cawScreamSFX);
			vanillaLaughAudio = SkinData.LaughAudioListAction.Apply(ref component.cawLaughSFX);
			if ((Object)(object)val != (Object)null)
			{
				vanillaFootstepsAudio = SkinData.FootstepsAudioAction.Apply(ref val.randomClips);
			}
			vanillaIntimidateVoice = ((EnemyAI)component).enemyType.audioClips[1];
			vanillaIntimidateAudio = ((EnemyAI)component).enemyType.audioClips[2];
			vanillaEnterFightAudio = ((EnemyAI)component).enemyType.audioClips[3];
			vanillaKillPlayerAudio = ((EnemyAI)component).enemyType.audioClips[4];
			vanillaDeathAudio = ((EnemyAI)component).enemyType.audioClips[5];
			ParticleSystem component2 = ((Component)((Component)component).transform.Find("BaboonBirdModel/AnimContainer/metarig/spine/spine.001/spine.003/spine.004/HeadBoneContainer/spine.005/BloodSpurtParticle (1)/BloodParticle")).GetComponent<ParticleSystem>();
			vanillaBloodMat = SkinData.BloodMaterialAction.Apply((Renderer)(object)((Component)val.particle).GetComponent<ParticleSystemRenderer>(), 0);
			vanillaSecondaryBloodMat = SkinData.BloodMaterialAction.Apply((Renderer)(object)((component2 != null) ? ((Component)component2).GetComponent<ParticleSystemRenderer>() : null), 0);
			bodyMaterialAction = SkinData.BloodMaterialAction;
			SubEmittersModule subEmitters = val.particle.subEmitters;
			vanillaBloodStabMat = bodyMaterialAction.Apply(((Component)((SubEmittersModule)(ref subEmitters)).GetSubEmitterSystem(0)).GetComponent<Renderer>(), 0);
			vanillaBloodParticle = SkinData.BloodParticleAction.ApplyRef(ref val.particle);
			SkinnedMeshAction bodyMeshAction = SkinData.BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[3];
			Transform obj7 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object obj8;
			if (obj7 == null)
			{
				obj8 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj7).gameObject;
				obj8 = ((gameObject3 != null) ? gameObject3.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj8;
			Transform obj9 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			object obj10;
			if (obj9 == null)
			{
				obj10 = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj9).gameObject;
				obj10 = ((gameObject4 != null) ? gameObject4.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[1] = (SkinnedMeshRenderer)obj10;
			Transform obj11 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			object obj12;
			if (obj11 == null)
			{
				obj12 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj11).gameObject;
				obj12 = ((gameObject5 != null) ? gameObject5.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[2] = (SkinnedMeshRenderer)obj12;
			skinnedMeshReplacement = bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("BaboonBirdModel/AnimContainer/metarig"));
			EnemySkinRegistry.RegisterEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
		}

		public override void Remove(GameObject enemy)
		{
			//IL_0259: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
			BaboonBirdAI component = enemy.GetComponent<BaboonBirdAI>();
			Transform obj = enemy.transform.Find("BaboonBirdModel/AnimContainer");
			object obj2;
			if (obj == null)
			{
				obj2 = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				obj2 = ((gameObject != null) ? gameObject.GetComponent<BaboonHawkAudioEvents>() : null);
			}
			BaboonHawkAudioEvents val = (BaboonHawkAudioEvents)obj2;
			EnemySkinRegistry.RemoveEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
			if (VoiceSilenced)
			{
				BaseSkinner.DestroyModdedAudioSource(modCreatureVoice);
				((EnemyAI)component).creatureVoice.mute = false;
			}
			if (EffectsSilenced)
			{
				BaseSkinner.DestroyModdedAudioSource(modCreatureEffects);
				((EnemyAI)component).creatureSFX.mute = false;
				if ((Object)(object)val != (Object)null)
				{
					val.audioToPlay = ((EnemyAI)component).creatureSFX;
				}
			}
			if (AggressionSilenced)
			{
				BaseSkinner.DestroyModdedAudioSource(modAggressionAudio);
				component.aggressionAudio.mute = false;
			}
			ArmatureAttachment.RemoveAttachments(activeAttachments);
			MaterialAction bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj3 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object vanillaRenderer;
			if (obj3 == null)
			{
				vanillaRenderer = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj3).gameObject;
				vanillaRenderer = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer, 0, vanillaBodyMaterial);
			bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj4 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			object vanillaRenderer2;
			if (obj4 == null)
			{
				vanillaRenderer2 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj4).gameObject;
				vanillaRenderer2 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer2, 0, vanillaBodyMaterial);
			bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj5 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			object vanillaRenderer3;
			if (obj5 == null)
			{
				vanillaRenderer3 = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj5).gameObject;
				vanillaRenderer3 = ((gameObject4 != null) ? gameObject4.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer3, 0, vanillaBodyMaterial);
			SkinData.ScreamAudioListAction.Remove(ref enemy.GetComponent<BaboonBirdAI>().cawScreamSFX, vanillaScreamAudio);
			SkinData.LaughAudioListAction.Remove(ref enemy.GetComponent<BaboonBirdAI>().cawLaughSFX, vanillaLaughAudio);
			SkinData.BloodParticleAction.RemoveRef(ref val.particle, vanillaBloodParticle);
			ParticleSystem component2 = ((Component)((Component)component).transform.Find("BaboonBirdModel/AnimContainer/metarig/spine/spine.001/spine.003/spine.004/HeadBoneContainer/spine.005/BloodSpurtParticle (1)/BloodParticle")).GetComponent<ParticleSystem>();
			SkinData.BloodMaterialAction.Remove((Renderer)(object)((Component)val.particle).GetComponent<ParticleSystemRenderer>(), 0, vanillaBloodMat);
			SkinData.BloodMaterialAction.Remove((Renderer)(object)((component2 != null) ? ((Component)component2).GetComponent<ParticleSystemRenderer>() : null), 0, vanillaSecondaryBloodMat);
			bodyMaterialAction = SkinData.BloodMaterialAction;
			SubEmittersModule subEmitters = val.particle.subEmitters;
			bodyMaterialAction.Remove(((Component)((SubEmittersModule)(ref subEmitters)).GetSubEmitterSystem(0)).GetComponent<Renderer>(), 0, vanillaBloodStabMat);
			vanillaBloodParticle = SkinData.BloodParticleAction.ApplyRef(ref val.particle);
			bodyMaterialAction = SkinData.BloodMaterialAction;
			subEmitters = val.particle.subEmitters;
			bodyMaterialAction.Remove(((Component)((SubEmittersModule)(ref subEmitters)).GetSubEmitterSystem(0)).GetComponent<Renderer>(), 0, vanillaBloodStabMat);
			if ((Object)(object)val != (Object)null)
			{
				SkinData.FootstepsAudioAction.Remove(ref val.randomClips, vanillaFootstepsAudio);
			}
			SkinnedMeshAction bodyMeshAction = SkinData.BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[3];
			Transform obj6 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object obj7;
			if (obj6 == null)
			{
				obj7 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj6).gameObject;
				obj7 = ((gameObject5 != null) ? gameObject5.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj7;
			Transform obj8 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			object obj9;
			if (obj8 == null)
			{
				obj9 = null;
			}
			else
			{
				GameObject gameObject6 = ((Component)obj8).gameObject;
				obj9 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[1] = (SkinnedMeshRenderer)obj9;
			Transform obj10 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			object obj11;
			if (obj10 == null)
			{
				obj11 = null;
			}
			else
			{
				GameObject gameObject7 = ((Component)obj10).gameObject;
				obj11 = ((gameObject7 != null) ? gameObject7.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[2] = (SkinnedMeshRenderer)obj11;
			bodyMeshAction.Remove((SkinnedMeshRenderer[])(object)array, skinnedMeshReplacement);
		}

		public void OnEnterAttackMode(BaboonBirdAI baboonHawk)
		{
			if (AggressionSilenced)
			{
				modAggressionAudio.clip = SkinData.EnterFightAction.WorkingClip(vanillaEnterFightAudio);
				modAggressionAudio.Play();
			}
		}

		public void OnIntimidate(BaboonBirdAI baboonHawk)
		{
			if (VoiceSilenced)
			{
				RoundManager.PlayRandomClip(modCreatureVoice, SkinData.ScreamAudioListAction.WorkingClips(vanillaScreamAudio), true, 1f, 1105, 1000);
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, SkinData.IntimidateVoiceAction.WorkingClip(vanillaIntimidateVoice), 1f);
			}
			if (AggressionSilenced)
			{
				modAggressionAudio.clip = SkinData.IntimidateAudioAction.WorkingClip(vanillaIntimidateAudio);
				modAggressionAudio.Play();
			}
		}

		public void OnAttackPlayer(BaboonBirdAI baboonHawk, PlayerControllerB player)
		{
			if (EffectsSilenced)
			{
				modCreatureEffects.PlayOneShot(SkinData.StabAudioAction.WorkingClip(vanillaStabAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, SkinData.StabAudioAction.WorkingClip(vanillaStabAudio), 1f);
			}
		}

		public void OnAttackEnemy(BaboonBirdAI baboonHawk, EnemyAI enemy)
		{
			if (EffectsSilenced)
			{
				modCreatureEffects.PlayOneShot(SkinData.StabAudioAction.WorkingClip(vanillaStabAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, SkinData.StabAudioAction.WorkingClip(vanillaStabAudio), 1f);
			}
		}

		public void OnKillPlayer(BaboonBirdAI baboonHawk, PlayerControllerB player)
		{
			if (VoiceSilenced)
			{
				modCreatureVoice.PlayOneShot(SkinData.KillPlayerAudioAction.WorkingClip(vanillaKillPlayerAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, SkinData.KillPlayerAudioAction.WorkingClip(vanillaKillPlayerAudio), 1f);
			}
		}

		public void OnEnemyUpdate(EnemyAI enemy)
		{
			if (AggressionSilenced)
			{
				modAggressionAudio.volume = ((BaboonBirdAI)((enemy is BaboonBirdAI) ? enemy : null)).aggressionAudio.volume;
			}
		}

		public void OnKilled(EnemyAI enemy)
		{
			if (VoiceSilenced)
			{
				modCreatureVoice.PlayOneShot(SkinData.DeathAudioAction.WorkingClip(vanillaDeathAudio));
			}
		}

		public void OnHit(EnemyAI enemy, PlayerControllerB attackingPlayer, bool playSoundEffect)
		{
			if (EffectsSilenced && playSoundEffect)
			{
				modCreatureEffects.PlayOneShot(SkinData.HitBodyAudioAction.WorkingClip(vanillaHitBodyAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureEffects, SkinData.HitBodyAudioAction.WorkingClip(vanillaHitBodyAudio), 1f);
			}
		}
	}
	public class BarberSkinner : BaseSkinner, BarberEventHandler, EnemyEventHandler
	{
		protected const string MESH_PATH = "MeshContainer/Mesh";

		protected const string LOWER_BLADE_PATH = "MeshContainer/AnimContainer/Scissors/LowerBlade";

		protected const string UPPER_BLADE_PATH = "MeshContainer/AnimContainer/Scissors/UpperBlade";

		protected const string ANCHOR_PATH = "MeshContainer/AnimContainer/metarig";

		protected Mesh vanillaUpperBladeMesh;

		protected Mesh vanillaLowerBladeMesh;

		protected VanillaMaterial vanillaBarberMaterial;

		protected AudioClip vanillaSnipClip;

		protected AudioClip vanillaDrumrollClip;

		protected AudioClip[] vanillaParadeClips;

		protected Material[] replacementMaterials;

		protected List<GameObject> activeAttachments;

		protected GameObject skinnedMeshReplacement;

		protected BarberSkin SkinData { get; }

		public BarberSkinner(BarberSkin skinData)
		{
			SkinData = skinData;
		}

		public override void Apply(GameObject enemy)
		{
			ClaySurgeonAI component = enemy.GetComponent<ClaySurgeonAI>();
			MaterialAction bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj = enemy.transform.Find("MeshContainer/Mesh");
			object vanillaRenderer;
			if (obj == null)
			{
				vanillaRenderer = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				vanillaRenderer = ((gameObject != null) ? gameObject.GetComponent<SkinnedMeshRenderer>() : null);
			}
			vanillaBarberMaterial = bodyMaterialAction.Apply((Renderer)vanillaRenderer, 0);
			bodyMaterialAction = SkinData.UpperScissorsMaterialAction;
			Transform obj2 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanillaRenderer2;
			if (obj2 == null)
			{
				vanillaRenderer2 = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj2).gameObject;
				vanillaRenderer2 = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Apply((Renderer)vanillaRenderer2, 0);
			bodyMaterialAction = SkinData.LowerScissorsMaterialAction;
			Transform obj3 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanillaRenderer3;
			if (obj3 == null)
			{
				vanillaRenderer3 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj3).gameObject;
				vanillaRenderer3 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Apply((Renderer)vanillaRenderer3, 0);
			StaticMeshAction upperScissorsMeshAction = SkinData.UpperScissorsMeshAction;
			Transform obj4 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanilla;
			if (obj4 == null)
			{
				vanilla = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj4).gameObject;
				vanilla = ((gameObject4 != null) ? gameObject4.GetComponent<MeshFilter>() : null);
			}
			vanillaUpperBladeMesh = upperScissorsMeshAction.Apply((MeshFilter)vanilla);
			upperScissorsMeshAction = SkinData.LowerScissorsMeshAction;
			Transform obj5 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanilla2;
			if (obj5 == null)
			{
				vanilla2 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj5).gameObject;
				vanilla2 = ((gameObject5 != null) ? gameObject5.GetComponent<MeshFilter>() : null);
			}
			vanillaLowerBladeMesh = upperScissorsMeshAction.Apply((MeshFilter)vanilla2);
			vanillaDrumrollClip = SkinData.DrumRoll.Apply(ref component.snareDrum);
			vanillaParadeClips = SkinData.MoveAudioListAction.Apply(ref component.paradeClips);
			vanillaSnipClip = SkinData.SnipAudioAction.Apply(ref component.snipScissors);
			SkinnedMeshAction bodyMeshAction = SkinData.BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1];
			Transform obj6 = enemy.transform.Find("MeshContainer/Mesh");
			object obj7;
			if (obj6 == null)
			{
				obj7 = null;
			}
			else
			{
				GameObject gameObject6 = ((Component)obj6).gameObject;
				obj7 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj7;
			skinnedMeshReplacement = bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("MeshContainer/AnimContainer/metarig"));
			List<Material> list = new List<Material>();
			if ((Object)(object)skinnedMeshReplacement != (Object)null)
			{
				list.AddRange(skinnedMeshReplacement.GetComponentsInChildren<Renderer>().SelectMany((Renderer r) => r.materials));
			}
			if (SkinData.BodyMaterialAction.actionType == MaterialActionType.REPLACE)
			{
				Transform obj8 = enemy.transform.Find("MeshContainer/Mesh");
				object item;
				if (obj8 == null)
				{
					item = null;
				}
				else
				{
					GameObject gameObject7 = ((Component)obj8).gameObject;
					item = ((gameObject7 != null) ? ((Renderer)gameObject7.GetComponent<SkinnedMeshRenderer>()).material : null);
				}
				list.Add((Material)item);
			}
			if (SkinData.UpperScissorsMaterialAction.actionType == MaterialActionType.REPLACE)
			{
				Transform obj9 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
				object item2;
				if (obj9 == null)
				{
					item2 = null;
				}
				else
				{
					GameObject gameObject8 = ((Component)obj9).gameObject;
					item2 = ((gameObject8 != null) ? gameObject8.GetComponent<Renderer>().material : null);
				}
				list.Add((Material)item2);
			}
			if (SkinData.LowerScissorsMaterialAction.actionType == MaterialActionType.REPLACE)
			{
				Transform obj10 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
				object item3;
				if (obj10 == null)
				{
					item3 = null;
				}
				else
				{
					GameObject gameObject9 = ((Component)obj10).gameObject;
					item3 = ((gameObject9 != null) ? gameObject9.GetComponent<Renderer>().material : null);
				}
				list.Add((Material)item3);
			}
			ArmatureAttachment[] attachments = SkinData.Attachments;
			Transform obj11 = enemy.transform.Find("MeshContainer/Mesh");
			object renderer;
			if (obj11 == null)
			{
				renderer = null;
			}
			else
			{
				GameObject gameObject10 = ((Component)obj11).gameObject;
				renderer = ((gameObject10 != null) ? gameObject10.GetComponent<SkinnedMeshRenderer>() : null);
			}
			activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer);
			list.AddRange(activeAttachments.SelectMany((GameObject attachment) => attachment.GetComponentsInChildren<Renderer>().SelectMany((Renderer rend) => rend.materials)));
			replacementMaterials = list.ToArray();
			EnemySkinRegistry.RegisterEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
		}

		public override void Remove(GameObject enemy)
		{
			ClaySurgeonAI component = enemy.GetComponent<ClaySurgeonAI>();
			EnemySkinRegistry.RemoveEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
			MaterialAction bodyMaterialAction = SkinData.BodyMaterialAction;
			Transform obj = enemy.transform.Find("MeshContainer/Mesh");
			object vanillaRenderer;
			if (obj == null)
			{
				vanillaRenderer = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				vanillaRenderer = ((gameObject != null) ? gameObject.GetComponent<SkinnedMeshRenderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer, 0, vanillaBarberMaterial);
			bodyMaterialAction = SkinData.UpperScissorsMaterialAction;
			Transform obj2 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanillaRenderer2;
			if (obj2 == null)
			{
				vanillaRenderer2 = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj2).gameObject;
				vanillaRenderer2 = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer2, 0, vanillaBarberMaterial);
			bodyMaterialAction = SkinData.LowerScissorsMaterialAction;
			Transform obj3 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanillaRenderer3;
			if (obj3 == null)
			{
				vanillaRenderer3 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj3).gameObject;
				vanillaRenderer3 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer3, 0, vanillaBarberMaterial);
			ArmatureAttachment.RemoveAttachments(activeAttachments);
			StaticMeshAction upperScissorsMeshAction = SkinData.UpperScissorsMeshAction;
			Transform obj4 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanilla;
			if (obj4 == null)
			{
				vanilla = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj4).gameObject;
				vanilla = ((gameObject4 != null) ? gameObject4.GetComponent<MeshFilter>() : null);
			}
			upperScissorsMeshAction.Remove((MeshFilter)vanilla, vanillaUpperBladeMesh);
			upperScissorsMeshAction = SkinData.LowerScissorsMeshAction;
			Transform obj5 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanilla2;
			if (obj5 == null)
			{
				vanilla2 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj5).gameObject;
				vanilla2 = ((gameObject5 != null) ? gameObject5.GetComponent<MeshFilter>() : null);
			}
			upperScissorsMeshAction.Remove((MeshFilter)vanilla2, vanillaLowerBladeMesh);
			SkinData.DrumRoll.Remove(ref component.snareDrum, vanillaDrumrollClip);
			SkinData.MoveAudioListAction.Remove(ref component.paradeClips, vanillaParadeClips);
			SkinData.SnipAudioAction.Remove(ref component.snipScissors, vanillaSnipClip);
			SkinnedMeshAction bodyMeshAction = SkinData.BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1];
			Transform obj6 = enemy.transform.Find("MeshContainer/Mesh");
			object obj7;
			if (obj6 == null)
			{
				obj7 = null;
			}
			else
			{
				GameObject gameObject6 = ((Component)obj6).gameObject;
				obj7 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj7;
			bodyMeshAction.Remove((SkinnedMeshRenderer[])(object)array, skinnedMeshReplacement);
		}

		public void OnEnemyUpdate(EnemyAI enemy)
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			if (!SkinData.DoFade)
			{
				return;
			}
			float num = Vector3.Distance(((Component)StartOfRound.Instance.audioListener).transform.position, ((Component)enemy).transform.position + Vector3.up * 0.7f);
			ClaySurgeonAI val = (ClaySurgeonAI)(object)((enemy is ClaySurgeonAI) ? enemy : null);
			Material[] array = replacementMaterials;
			foreach (Material val2 in array)
			{
				if (val2.HasFloat("_AlphaCutoff"))
				{
					val2.SetFloat("_AlphaCutoff", (num - val.minDistance) / (val.maxDistance - val.minDistance));
				}
			}
		}
	}
	public abstract class BaseSkinner : Skinner
	{
		public abstract void Apply(GameObject enemy);

		public abstract void Remove(GameObject enemy);

		private static void CopyAudioSource(AudioSource source, AudioSource destination)
		{
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			destination.bypassEffects = source.bypassEffects;
			destination.bypassListenerEffects = source.bypassListenerEffects;
			destination.bypassReverbZones = source.bypassReverbZones;
			destination.dopplerLevel = source.dopplerLevel;
			destination.ignoreListenerPause = source.ignoreListenerPause;
			destination.ignoreListenerVolume = source.ignoreListe