Decompiled source of ResoniteLinkPlus v1.0.1

plugins/ResoniteLinkPlus/ResoniteLinkPlus.dll

Decompiled 3 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.NET.Common;
using BepInExResoniteShim;
using BepisLocaleLoader;
using Elements.Core;
using FrooxEngine;
using FrooxEngine.Store;
using FrooxEngine.UIX;
using Md.FrooxEngine.NewWorldDialog;
using Md.FrooxEngine.ResoniteLinkHost;
using Md.FrooxEngine.World;
using Microsoft.CodeAnalysis;
using MonoDetour;
using MonoDetour.Cil;
using MonoDetour.DetourTypes;
using MonoDetour.HookGen;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: TargetFramework(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
[assembly: IgnoresAccessChecksTo("FrooxEngine")]
[assembly: AssemblyCompany("hazre")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.1.0")]
[assembly: AssemblyInformationalVersion("1.0.1+b0cbfaa562d125a46ae02d843ee6a339dbdb59ca")]
[assembly: AssemblyProduct("ResoniteLinkPlus")]
[assembly: AssemblyTitle("ResoniteLinkPlus")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/hazre/ResoniteLinkPlus")]
[assembly: SecurityPermission((SecurityAction)8, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Md.FrooxEngine.ResoniteLinkHost
{
	internal static class Start
	{
		public delegate void PrefixSignature(ResoniteLinkHost self, ref int? port);

		public delegate void PostfixSignature(ResoniteLinkHost self, ref int? port, ref bool returnValue);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(ResoniteLinkHost).GetMethod("Start", (BindingFlags)(-1), (Binder)null, new System.Type[1] { typeof(int?) }, (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.ResoniteLinkHost", "Start"));
		}
	}
	internal static class Dispose
	{
		public delegate void PrefixSignature(ResoniteLinkHost self);

		public delegate void PostfixSignature(ResoniteLinkHost self);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(ResoniteLinkHost).GetMethod("Dispose", (BindingFlags)(-1), (Binder)null, System.Array.Empty<System.Type>(), (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.ResoniteLinkHost", "Dispose"));
		}
	}
	internal static class get_World
	{
	}
	internal static class set_World
	{
	}
	internal static class get_Port
	{
	}
	internal static class set_Port
	{
	}
	internal static class get_References
	{
	}
	internal static class set_References
	{
	}
	internal static class get_Translator
	{
	}
	internal static class set_Translator
	{
	}
	internal static class get_AssetImporter
	{
	}
	internal static class set_AssetImporter
	{
	}
	internal static class get_Reflection
	{
	}
	internal static class set_Reflection
	{
	}
	internal static class get_CanRead
	{
	}
	internal static class get_CanWrite
	{
	}
	internal static class _ctor
	{
	}
	internal static class Update
	{
	}
	internal static class MessageReceived
	{
	}
	internal static class ClientDisconnected
	{
	}
	internal static class ClientConnected
	{
	}
	internal static class Send
	{
	}
	internal static class _Start_b__37_0
	{
	}
	internal static class OutgoingMessage
	{
		internal static class _ctor
		{
		}

		internal static class _ctor_WatsonWebsocket_ClientMetadata_System_String
		{
		}
	}
	internal static class __Start_b__37_0_d
	{
		internal static class _ctor
		{
		}

		internal static class MoveNext
		{
		}

		internal static class SetStateMachine
		{
		}
	}
}
namespace Md.FrooxEngine.World
{
	internal static class RunInUpdates
	{
		public delegate void PrefixSignature(World self, ref int updates, ref Action action);

		public delegate void PostfixSignature(World self, ref int updates, ref Action action, ref Coroutine returnValue);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(World).GetMethod("RunInUpdates", (BindingFlags)(-1), (Binder)null, new System.Type[2]
			{
				typeof(int),
				typeof(Action)
			}, (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.World", "RunInUpdates"));
		}
	}
	internal static class ToString
	{
		public delegate void PrefixSignature(World self);

		public delegate void PostfixSignature(World self, ref string returnValue);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(World).GetMethod("ToString", (BindingFlags)(-1), (Binder)null, System.Array.Empty<System.Type>(), (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.World", "ToString"));
		}
	}
	internal static class StartSession
	{
		public delegate void PrefixSignature(ref WorldManager manager, ref WorldAction init, ref Dictionary<string, ushort> ports, ref string forceSessionId, ref DataTreeNode load, ref Record record, ref bool unsafeMode, ref System.Collections.Generic.IEnumerable<AssemblyTypeRegistry> assemblies);

		public delegate void PostfixSignature(ref WorldManager manager, ref WorldAction init, ref Dictionary<string, ushort> ports, ref string forceSessionId, ref DataTreeNode load, ref Record record, ref bool unsafeMode, ref System.Collections.Generic.IEnumerable<AssemblyTypeRegistry> assemblies, ref World returnValue);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(World).GetMethod("StartSession", (BindingFlags)(-1), (Binder)null, new System.Type[8]
			{
				typeof(WorldManager),
				typeof(WorldAction),
				typeof(Dictionary<string, ushort>),
				typeof(string),
				typeof(DataTreeNode),
				typeof(Record),
				typeof(bool),
				typeof(System.Collections.Generic.IEnumerable<AssemblyTypeRegistry>)
			}, (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.World", "StartSession"));
		}
	}
	internal static class Destroy
	{
		public delegate void PrefixSignature(World self);

		public delegate void PostfixSignature(World self);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(World).GetMethod("Destroy", (BindingFlags)(-1), (Binder)null, System.Array.Empty<System.Type>(), (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.World", "Destroy"));
		}
	}
	internal static class StartResoniteLink
	{
		public delegate void PrefixSignature(World self, ref int? port);

		public delegate void PostfixSignature(World self, ref int? port, ref bool returnValue);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(World).GetMethod("StartResoniteLink", (BindingFlags)(-1), (Binder)null, new System.Type[1] { typeof(int?) }, (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.World", "StartResoniteLink"));
		}
	}
	internal static class Dispose
	{
		public delegate void PrefixSignature(World self);

		public delegate void PostfixSignature(World self);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(World).GetMethod("Dispose", (BindingFlags)(-1), (Binder)null, System.Array.Empty<System.Type>(), (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.World", "Dispose"));
		}
	}
	internal static class get_Engine
	{
	}
	internal static class get_RandomizationSeed
	{
	}
	internal static class set_RandomizationSeed
	{
	}
	internal static class get_Obfuscation_KEY
	{
	}
	internal static class set_Obfuscation_KEY
	{
	}
	internal static class get_Obfuscation_IV
	{
	}
	internal static class set_Obfuscation_IV
	{
	}
	internal static class GetRandomizationTable
	{
	}
	internal static class InitializeRandomizationTables
	{
	}
	internal static class get_AccessLevel
	{
	}
	internal static class set_AccessLevel
	{
	}
	internal static class get_HideFromListing
	{
	}
	internal static class set_HideFromListing
	{
	}
	internal static class get_UseCustomJoinVerifier
	{
	}
	internal static class set_UseCustomJoinVerifier
	{
	}
	internal static class get_AnnounceOnWAN
	{
	}
	internal static class get_AwayKickEnabled
	{
	}
	internal static class set_AwayKickEnabled
	{
	}
	internal static class get_AwayKickMinutes
	{
	}
	internal static class set_AwayKickMinutes
	{
	}
	internal static class get_AwayKickInterval
	{
	}
	internal static class set_AwayKickInterval
	{
	}
	internal static class get_IsPublic
	{
	}
	internal static class get_AnnounceOnLAN
	{
	}
	internal static class AllowUserToJoin
	{
	}
	internal static class RemoveAllowedUser
	{
	}
	internal static class IsUserAllowed
	{
	}
	internal static class GetAllowedUserList
	{
	}
	internal static class AddInviteRequestHandler
	{
	}
	internal static class RemoveInviteRequestHandler
	{
	}
	internal static class GetInviteHandlerUsers
	{
	}
	internal static class get_Focus
	{
	}
	internal static class set_Focus
	{
	}
	internal static class get_LastFocusChange
	{
	}
	internal static class set_LastFocusChange
	{
	}
	internal static class get_Parent
	{
	}
	internal static class set_Parent
	{
	}
	internal static class get_SourceLink
	{
	}
	internal static class set_SourceLink
	{
	}
	internal static class get_RecordURL
	{
	}
	internal static class get_RecordWebURL
	{
	}
	internal static class get_CorrespondingRecord
	{
	}
	internal static class set_CorrespondingRecord
	{
	}
	internal static class get_SourceURLs
	{
	}
	internal static class set_SourceURLs
	{
	}
	internal static class set_SourceURL
	{
	}
	internal static class get_SessionURLs
	{
	}
	internal static class get_AllGlobalUrisRegistered
	{
	}
	internal static class set_AllGlobalUrisRegistered
	{
	}
	internal static class CreateNewRecord_System_String_System_String
	{
	}
	internal static class CreateNewRecord_System_String
	{
	}
	internal static class AssignNewRecord
	{
	}
	internal static class GetRecordOrCreate
	{
	}
	internal static class GetCorrespondingOwnerId
	{
	}
	internal static class get_State
	{
	}
	internal static class set_State
	{
	}
	internal static class get_IsInitializingOrLoading
	{
	}
	internal static class set_IsInitializingOrLoading
	{
	}
	internal static class add_FinalUserPoseUpdated
	{
	}
	internal static class remove_FinalUserPoseUpdated
	{
	}
	internal static class add__worldRunning
	{
	}
	internal static class remove__worldRunning
	{
	}
	internal static class add_WorldRunning
	{
	}
	internal static class remove_WorldRunning
	{
	}
	internal static class add__worldDestroyed
	{
	}
	internal static class remove__worldDestroyed
	{
	}
	internal static class add_WorldDestroyed
	{
	}
	internal static class remove_WorldDestroyed
	{
	}
	internal static class get_RefreshRunning
	{
	}
	internal static class set_RefreshRunning
	{
	}
	internal static class get_InitState
	{
	}
	internal static class set_InitState
	{
	}
	internal static class get_FailState
	{
	}
	internal static class set_FailState
	{
	}
	internal static class get_FailReasonDescription
	{
	}
	internal static class set_FailReasonDescription
	{
	}
	internal static class get_IsDestroyed
	{
	}
	internal static class set_IsDestroyed
	{
	}
	internal static class get_IsAuthority
	{
	}
	internal static class set_IsAuthority
	{
	}
	internal static class get_SyncTick
	{
	}
	internal static class set_SyncTick
	{
	}
	internal static class get_StateVersion
	{
	}
	internal static class set_StateVersion
	{
	}
	internal static class get_GenerateDeltaSyncData
	{
	}
	internal static class set_GenerateDeltaSyncData
	{
	}
	internal static class get_LocalUser
	{
	}
	internal static class set_LocalUser
	{
	}
	internal static class get_MaxUsers
	{
	}
	internal static class set_MaxUsers
	{
	}
	internal static class get_LocalUserSpace
	{
	}
	internal static class get_LocalUserGlobalPosition
	{
	}
	internal static class set_LocalUserGlobalPosition
	{
	}
	internal static class get_LocalUserGlobalRotation
	{
	}
	internal static class set_LocalUserGlobalRotation
	{
	}
	internal static class get_LocalUserGlobalScale
	{
	}
	internal static class set_LocalUserGlobalScale
	{
	}
	internal static class get_LocalUserTransform
	{
	}
	internal static class get_OverrideViewPosition
	{
	}
	internal static class set_OverrideViewPosition
	{
	}
	internal static class get_LocalUserViewPosition
	{
	}
	internal static class set_LocalUserViewPosition
	{
	}
	internal static class get_LocalUserViewRotation
	{
	}
	internal static class set_LocalUserViewRotation
	{
	}
	internal static class get_LocalUserViewScale
	{
	}
	internal static class set_LocalUserViewScale
	{
	}
	internal static class get_LocalUserViewTransform
	{
	}
	internal static class get_ViewPositionIsExternal
	{
	}
	internal static class set_ViewPositionIsExternal
	{
	}
	internal static class get_LocalUserDesktopFOV
	{
	}
	internal static class set_LocalUserDesktopFOV
	{
	}
	internal static class get_ActiveSkyboxMaterial
	{
	}
	internal static class set_ActiveSkyboxMaterial
	{
	}
	internal static class get_AmbientLight
	{
	}
	internal static class set_AmbientLight
	{
	}
	internal static class get_LocalUserRenderSettings
	{
	}
	internal static class set_LocalUserRenderSettings
	{
	}
	internal static class get_SyncController
	{
	}
	internal static class set_SyncController
	{
	}
	internal static class get_ReferenceController
	{
	}
	internal static class set_ReferenceController
	{
	}
	internal static class get_AssetManager
	{
	}
	internal static class set_AssetManager
	{
	}
	internal static class get_ConnectorManager
	{
	}
	internal static class set_ConnectorManager
	{
	}
	internal static class get_Session
	{
	}
	internal static class set_Session
	{
	}
	internal static class get_UpdateManager
	{
	}
	internal static class set_UpdateManager
	{
	}
	internal static class get_LinkManager
	{
	}
	internal static class set_LinkManager
	{
	}
	internal static class get_Time
	{
	}
	internal static class set_Time
	{
	}
	internal static class get_Input
	{
	}
	internal static class set_Input
	{
	}
	internal static class get_Physics
	{
	}
	internal static class set_Physics
	{
	}
	internal static class get_Culling
	{
	}
	internal static class set_Culling
	{
	}
	internal static class get_Render
	{
	}
	internal static class set_Render
	{
	}
	internal static class get_Coroutines
	{
	}
	internal static class set_Coroutines
	{
	}
	internal static class get_Debug
	{
	}
	internal static class set_Debug
	{
	}
	internal static class get_ProtoFlux
	{
	}
	internal static class set_ProtoFlux
	{
	}
	internal static class get_Permissions
	{
	}
	internal static class set_Permissions
	{
	}
	internal static class get_DynamicBones
	{
	}
	internal static class set_DynamicBones
	{
	}
	internal static class get_ParticleSystems
	{
	}
	internal static class set_ParticleSystems
	{
	}
	internal static class get_SpatialVariables
	{
	}
	internal static class set_SpatialVariables
	{
	}
	internal static class get_Types
	{
	}
	internal static class set_Types
	{
	}
	internal static class get_InputInterface
	{
	}
	internal static class get_Audio
	{
	}
	internal static class set_Audio
	{
	}
	internal static class get_ChangedHierarchyEvents
	{
	}
	internal static class set_ChangedHierarchyEvents
	{
	}
	internal static class get_GeneralMovedHierarchyEvents
	{
	}
	internal static class set_GeneralMovedHierarchyEvents
	{
	}
	internal static class get_PhysicsMovedHierarchyEvents
	{
	}
	internal static class set_PhysicsMovedHierarchyEvents
	{
	}
	internal static class get_ResoniteLink
	{
	}
	internal static class set_ResoniteLink
	{
	}
	internal static class get_Name
	{
	}
	internal static class set_Name
	{
	}
	internal static class get_RawName
	{
	}
	internal static class get_Description
	{
	}
	internal static class set_Description
	{
	}
	internal static class get_Tags
	{
	}
	internal static class set_Tags
	{
	}
	internal static class get_AllTags
	{
	}
	internal static class get_AutomaticTags
	{
	}
	internal static class get_ParentSessionIds
	{
	}
	internal static class set_ParentSessionIds
	{
	}
	internal static class get_SessionId
	{
	}
	internal static class get_NormalizedSessionId
	{
	}
	internal static class get_CorrespondingWorldId
	{
	}
	internal static class set_CorrespondingWorldId
	{
	}
	internal static class get_UniverseId
	{
	}
	internal static class set_UniverseId
	{
	}
	internal static class get_MobileFriendly
	{
	}
	internal static class set_MobileFriendly
	{
	}
	internal static class get_RootSlot
	{
	}
	internal static class set_RootSlot
	{
	}
	internal static class get_LocalSlot
	{
	}
	internal static class set_LocalSlot
	{
	}
	internal static class get_RunFullUpdateCycle
	{
	}
	internal static class get_ShouldRunFullUpdateCycle
	{
	}
	internal static class get_LastUpdateTime
	{
	}
	internal static class set_LastUpdateTime
	{
	}
	internal static class get_MinUpdateTime
	{
	}
	internal static class set_MinUpdateTime
	{
	}
	internal static class get_MaxUpdateTime
	{
	}
	internal static class set_MaxUpdateTime
	{
	}
	internal static class get_StageUpdateTime
	{
	}
	internal static class set_StageUpdateTime
	{
	}
	internal static class get_AudioUpdateTime
	{
	}
	internal static class set_AudioUpdateTime
	{
	}
	internal static class get_MinStageUpdateTime
	{
	}
	internal static class set_MinStageUpdateTime
	{
	}
	internal static class get_MaxStageUpdateTime
	{
	}
	internal static class set_MaxStageUpdateTime
	{
	}
	internal static class get_AvgStageUpdateTime
	{
	}
	internal static class set_AvgStageUpdateTime
	{
	}
	internal static class get_LastCoroutines
	{
	}
	internal static class set_LastCoroutines
	{
	}
	internal static class get_LastCommonUpdates
	{
	}
	internal static class set_LastCommonUpdates
	{
	}
	internal static class get_LastChanges
	{
	}
	internal static class set_LastChanges
	{
	}
	internal static class get_LastConnectorUpdates
	{
	}
	internal static class set_LastConnectorUpdates
	{
	}
	internal static class get_LastMovedSlots
	{
	}
	internal static class set_LastMovedSlots
	{
	}
	internal static class get_LastSynchronousActions
	{
	}
	internal static class set_LastSynchronousActions
	{
	}
	internal static class get_LastColliderUpdates
	{
	}
	internal static class set_LastColliderUpdates
	{
	}
	internal static class get_LastPhysicsActiveBodies
	{
	}
	internal static class set_LastPhysicsActiveBodies
	{
	}
	internal static class get_LastPhysicsStatics
	{
	}
	internal static class set_LastPhysicsStatics
	{
	}
	internal static class get_LastRebuiltNodeGroups
	{
	}
	internal static class set_LastRebuiltNodeGroups
	{
	}
	internal static class get_LastDirtyNodes
	{
	}
	internal static class set_LastDirtyNodes
	{
	}
	internal static class get_LastUpdatedNodeGroups
	{
	}
	internal static class set_LastUpdatedNodeGroups
	{
	}
	internal static class get_LastContinuousChangeNodeGroups
	{
	}
	internal static class set_LastContinuousChangeNodeGroups
	{
	}
	internal static class get_LastChangedNodeGroups
	{
	}
	internal static class set_LastChangedNodeGroups
	{
	}
	internal static class get_LastUpdatedNodes
	{
	}
	internal static class set_LastUpdatedNodes
	{
	}
	internal static class get_LastChangedNodes
	{
	}
	internal static class set_LastChangedNodes
	{
	}
	internal static class get_LastNodeEvents
	{
	}
	internal static class set_LastNodeEvents
	{
	}
	internal static class get_LastUpdatedDriveNodes
	{
	}
	internal static class set_LastUpdatedDriveNodes
	{
	}
	internal static class get_LastAudioStreamUnderruns
	{
	}
	internal static class set_LastAudioStreamUnderruns
	{
	}
	internal static class AudioStreamUnderrun
	{
	}
	internal static class get_LastTotalSlots
	{
	}
	internal static class set_LastTotalSlots
	{
	}
	internal static class get_TotalUpdates
	{
	}
	internal static class set_TotalUpdates
	{
	}
	internal static class get_AverageUpdateTime
	{
	}
	internal static class ColliderUpdated
	{
	}
	internal static class UpdateUpdateTime
	{
	}
	internal static class LocalWorld
	{
	}
	internal static class JoinSession
	{
	}
	internal static class _ctor
	{
	}
	internal static class ObfuscateString
	{
	}
	internal static class DeobfuscateString
	{
	}
	internal static class InitializeRandomization
	{
	}
	internal static class InputInterface_DefaultAudioInputChanged
	{
	}
	internal static class AudioSystem_GlobalVolumesChanged
	{
	}
	internal static class NetworkInitStart
	{
	}
	internal static class WaitForJoinGrant
	{
	}
	internal static class StartDataModelInit
	{
	}
	internal static class InitializeAllocationForLocalUser
	{
	}
	internal static class StartRunning
	{
	}
	internal static class NotifySessionURLsChanged
	{
	}
	internal static class UpdateSessionURLs
	{
	}
	internal static class Cloud_OnUserMuted
	{
	}
	internal static class Cloud_OnUserSpectatorBanned
	{
	}
	internal static class Cloud_OnUserPublicBanned
	{
	}
	internal static class RunBanAction
	{
	}
	internal static class InitializationFailed
	{
	}
	internal static class IncrementStateVersion
	{
	}
	internal static class UpdateStateVersion
	{
	}
	internal static class get_StageDEBUG
	{
	}
	internal static class get_Stage
	{
	}
	internal static class set_Stage
	{
	}
	internal static class Refresh
	{
	}
	internal static class RunAudioUpdates
	{
	}
	internal static class RunSynchronousActions
	{
	}
	internal static class NextRefreshStage
	{
	}
	internal static class HandleAwayKick
	{
	}
	internal static class RefreshStep
	{
	}
	internal static class UpdateLocalUserOutputPositions
	{
	}
	internal static class FinishRefresh
	{
	}
	internal static class FinishSyncCycle
	{
	}
	internal static class IncrementSyncTick
	{
	}
	internal static class get_CanMakeSynchronousChanges
	{
	}
	internal static class get_CanCurrentThreadModify
	{
	}
	internal static class RunSynchronously
	{
	}
	internal static class RunInBackground
	{
	}
	internal static class RunAfterValidations
	{
	}
	internal static class get_Keys
	{
	}
	internal static class KeyOwner
	{
	}
	internal static class KeyVersion
	{
	}
	internal static class IsKeyInUse
	{
	}
	internal static class RequestKey
	{
	}
	internal static class RemoveKey
	{
	}
	internal static class InformOfKeyAssignment
	{
	}
	internal static class InformOfKeyRemoval
	{
	}
	internal static class KeyRemoved
	{
	}
	internal static class KeyAdded
	{
	}
	internal static class KeysBeforeClear
	{
	}
	internal static class get_SlotCount
	{
	}
	internal static class get_AllSlots
	{
	}
	internal static class AddSlot_System_String_System_Boolean
	{
	}
	internal static class AddSlot_FrooxEngine_Slot_System_String_System_Boolean
	{
	}
	internal static class AddLocalSlot_System_String_System_Boolean
	{
	}
	internal static class AddLocalSlot_FrooxEngine_Slot_System_String_System_Boolean
	{
	}
	internal static class RemoveSlot
	{
	}
	internal static class InternalAddLocalSlot
	{
	}
	internal static class InternalAddSlot
	{
	}
	internal static class InternalRemoveLocalSlot
	{
	}
	internal static class InternalRemoveSlot
	{
	}
	internal static class OnSlotAdded
	{
	}
	internal static class OnSlotRemoved
	{
	}
	internal static class ReplaceReferenceTargets_System_Collections_Generic_Dictionary_2_System_Boolean_FrooxEngine_Slot_System_Collections_Generic_HashSet_1
	{
	}
	internal static class ReplaceReferenceTargets_FrooxEngine_IWorldElement_FrooxEngine_IWorldElement_System_Boolean_FrooxEngine_Slot
	{
	}
	internal static class ReplaceInvalidReferenceTargets
	{
	}
	internal static class MoveToTrash
	{
	}
	internal static class TryRetrieveFromTrash
	{
	}
	internal static class IsInTrash
	{
	}
	internal static class DestroyTrash
	{
	}
	internal static class add_SlotAdded
	{
	}
	internal static class remove_SlotAdded
	{
	}
	internal static class add_SlotRemoved
	{
	}
	internal static class remove_SlotRemoved
	{
	}
	internal static class add_ComponentAdded
	{
	}
	internal static class remove_ComponentAdded
	{
	}
	internal static class add_ComponentRemoved
	{
	}
	internal static class remove_ComponentRemoved
	{
	}
	internal static class add_UserJoined
	{
	}
	internal static class remove_UserJoined
	{
	}
	internal static class add_UserSpawn
	{
	}
	internal static class remove_UserSpawn
	{
	}
	internal static class add_UserLeft
	{
	}
	internal static class remove_UserLeft
	{
	}
	internal static class RunSlotAdded
	{
	}
	internal static class RunSlotRemoved
	{
	}
	internal static class RunComponentAdded
	{
	}
	internal static class RunComponentRemoved
	{
	}
	internal static class RunUserJoined
	{
	}
	internal static class RunUserSpawn
	{
	}
	internal static class RunUserLeft
	{
	}
	internal static class RegisterGlobalWorker
	{
	}
	internal static class UnregisterGlobalWorker
	{
	}
	internal static class RequestSpawn
	{
	}
	internal static class RegisterEventReceiver
	{
	}
	internal static class UnregisterEventReceiver
	{
	}
	internal static class SortReceivers
	{
	}
	internal static class RunWorldEvents
	{
	}
	internal static class FrooxEngine_IWorldElement_get_Parent
	{
	}
	internal static class FrooxEngine_IWorldElement_get_World
	{
	}
	internal static class FrooxEngine_IWorldElement_get_IsPersistent
	{
	}
	internal static class FrooxEngine_IWorldElement_get_IsRemoved
	{
	}
	internal static class FrooxEngine_IWorldElement_get_IsLocalElement
	{
	}
	internal static class FrooxEngine_IWorldElement_ChildChanged
	{
	}
	internal static class FrooxEngine_IWorldElement_get_ReferenceID
	{
	}
	internal static class GetSyncMemberName
	{
	}
	internal static class SaveWorld
	{
	}
	internal static class Save
	{
	}
	internal static class Load
	{
	}
	internal static class CollectNonpersistentAssetRefs
	{
	}
	internal static class get_UserCount
	{
	}
	internal static class get_ActiveUserCount
	{
	}
	internal static class get_HostUser
	{
	}
	internal static class GetUser
	{
	}
	internal static class FindUser
	{
	}
	internal static class FindUsers
	{
	}
	internal static class TryGetUser_Elements_Core_RefID
	{
	}
	internal static class GetUserByAllocationID
	{
	}
	internal static class GetUserByMachineId
	{
	}
	internal static class GetUserByUserId
	{
	}
	internal static class TryGetUser_System_Predicate_1
	{
	}
	internal static class GetUsers
	{
	}
	internal static class get_AllUsers
	{
	}
	internal static class GetHost
	{
	}
	internal static class SwapForOthers
	{
	}
	internal static class GetOthers
	{
	}
	internal static class CreateHostUser
	{
	}
	internal static class ProcessExtraIds
	{
	}
	internal static class ProcessExtraId
	{
	}
	internal static class SetLocalUser
	{
	}
	internal static class get_HasFreeUserCapacity
	{
	}
	internal static class get_HasFreeUserSpots
	{
	}
	internal static class CreateGuestUser
	{
	}
	internal static class RemoveUser
	{
	}
	internal static class HostConnectionClosed
	{
	}
	internal static class FindFreeUserAllocationID
	{
	}
	internal static class InternalCreateUser
	{
	}
	internal static class UserAdded
	{
	}
	internal static class UserRemoved
	{
	}
	internal static class DisposeUser
	{
	}
	internal static class VerifyJoinRequest
	{
	}
	internal static class RunInSeconds
	{
	}
	internal static class get_AssetsSlot
	{
	}
	internal static class get_LocalAssetsSlot
	{
	}
	internal static class get_IsDisposed
	{
	}
	internal static class FatalError
	{
	}
	internal static class get_LastUserUpdate
	{
	}
	internal static class set_LastUserUpdate
	{
	}
	internal static class get_LastInviteListUpdate
	{
	}
	internal static class set_LastInviteListUpdate
	{
	}
	internal static class GenerateSessionInfo
	{
	}
	internal static class UpdateSessionInfo
	{
	}
	internal static class EmergencyDump
	{
	}
	internal static class _cctor
	{
	}
	internal static class _set_CorrespondingRecord_b__96_0
	{
	}
	internal static class _StartRunning_b__532_0
	{
	}
	internal static class _StartRunning_b__532_1
	{
	}
	internal static class _UpdateSessionURLs_g__RegisterUrl_534_0
	{
	}
	internal static class _Cloud_OnUserSpectatorBanned_b__536_0
	{
	}
	internal static class _FinishRefresh_b__561_0
	{
	}
	internal static class _FinishRefresh_b__561_1
	{
	}
	internal static class _Load_b__680_0
	{
	}
	internal static class _Dispose_g__DisposeSystem_736_0
	{
	}
	internal static class WorldFocus
	{
		internal static class _ctor
		{
		}
	}
	internal static class WorldState
	{
		internal static class _ctor
		{
		}
	}
	internal static class InitializationState
	{
		internal static class _ctor
		{
		}
	}
	internal static class FailReason
	{
		internal static class _ctor
		{
		}
	}
	internal static class WorldEvent
	{
		internal static class _ctor
		{
		}
	}
	internal static class SynchronousAction
	{
		internal static class _ctor
		{
		}

		internal static class _ctor_System_Action_FrooxEngine_IUpdatable_System_Boolean
		{
		}
	}
	internal static class RefreshStage
	{
		internal static class _ctor
		{
		}
	}
	internal static class __FinishRefresh_b__561_1_d
	{
		internal static class _ctor
		{
		}

		internal static class MoveNext
		{
		}

		internal static class SetStateMachine
		{
		}
	}
	internal static class __c
	{
		internal static class _cctor
		{
		}

		internal static class _ctor
		{
		}

		internal static class _LocalWorld_b__519_0
		{
		}

		internal static class _Cloud_OnUserMuted_b__535_0
		{
		}

		internal static class _Cloud_OnUserPublicBanned_b__537_0
		{
		}

		internal static class _get_AllSlots_b__588_0
		{
		}

		internal static class _SortReceivers_b__662_0
		{
		}

		internal static class _get_ActiveUserCount_b__688_0
		{
		}

		internal static class _get_ActiveUserCount_b__688_1
		{
		}

		internal static class _FindUsers_b__694_1
		{
		}

		internal static class _GetHost_b__703_0
		{
		}

		internal static class _UpdateSessionInfo_b__748_0
		{
		}

		internal static class _UpdateSessionInfo_b__748_1
		{
		}
	}
	internal static class __c__DisplayClass178_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_MaxUsers_b__0
		{
		}
	}
	internal static class __c__DisplayClass32_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_AccessLevel_b__0
		{
		}
	}
	internal static class __c__DisplayClass341_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_Name_b__0
		{
		}
	}
	internal static class __c__DisplayClass346_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_Description_b__0
		{
		}
	}
	internal static class __c__DisplayClass349_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_Tags_b__0
		{
		}
	}
	internal static class __c__DisplayClass349_1
	{
		internal static class _ctor
		{
		}

		internal static class _set_Tags_b__1
		{
		}
	}
	internal static class __c__DisplayClass356_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_ParentSessionIds_b__0
		{
		}
	}
	internal static class __c__DisplayClass35_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_HideFromListing_b__0
		{
		}
	}
	internal static class __c__DisplayClass363_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_CorrespondingWorldId_b__0
		{
		}
	}
	internal static class __c__DisplayClass366_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_UniverseId_b__0
		{
		}
	}
	internal static class __c__DisplayClass369_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_MobileFriendly_b__0
		{
		}
	}
	internal static class __c__DisplayClass38_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_UseCustomJoinVerifier_b__0
		{
		}
	}
	internal static class __c__DisplayClass43_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_AwayKickEnabled_b__0
		{
		}
	}
	internal static class __c__DisplayClass46_0
	{
		internal static class _ctor
		{
		}

		internal static class _set_AwayKickMinutes_b__0
		{
		}
	}
	internal static class __c__DisplayClass534_0
	{
		internal static class _ctor
		{
		}
	}
	internal static class __c__DisplayClass538_0
	{
		internal static class _ctor
		{
		}

		internal static class _RunBanAction_b__0
		{
		}
	}
	internal static class __c__DisplayClass581_0
	{
		internal static class _ctor
		{
		}

		internal static class _KeyAdded_b__0
		{
		}
	}
	internal static class __c__DisplayClass602_0
	{
		internal static class _ctor
		{
		}

		internal static class _ReplaceReferenceTargets_b__0
		{
		}
	}
	internal static class __c__DisplayClass603_0
	{
		internal static class _ctor
		{
		}

		internal static class _ReplaceReferenceTargets_b__0
		{
		}
	}
	internal static class __c__DisplayClass604_0
	{
		internal static class _ctor
		{
		}

		internal static class _ReplaceInvalidReferenceTargets_b__0
		{
		}
	}
	internal static class __c__DisplayClass67_0
	{
		internal static class _ctor
		{
		}

		internal static class _GetInviteHandlerUsers_b__0
		{
		}
	}
	internal static class __c__DisplayClass693_0
	{
		internal static class _ctor
		{
		}

		internal static class _FindUser_b__0
		{
		}
	}
	internal static class __c__DisplayClass694_0
	{
		internal static class _ctor
		{
		}

		internal static class _FindUsers_b__0
		{
		}
	}
	internal static class __c__DisplayClass696_0
	{
		internal static class _ctor
		{
		}

		internal static class _GetUserByAllocationID_b__0
		{
		}
	}
	internal static class __c__DisplayClass697_0
	{
		internal static class _ctor
		{
		}

		internal static class _GetUserByMachineId_b__0
		{
		}
	}
	internal static class __c__DisplayClass698_0
	{
		internal static class _ctor
		{
		}

		internal static class _GetUserByUserId_b__0
		{
		}
	}
	internal static class __c__DisplayClass699_0
	{
		internal static class _ctor
		{
		}

		internal static class _TryGetUser_b__0
		{
		}
	}
	internal static class __c__DisplayClass706_0
	{
		internal static class _ctor
		{
		}

		internal static class _CreateHostUser_b__0
		{
		}
	}
	internal static class __c__DisplayClass717_0
	{
		internal static class _ctor
		{
		}

		internal static class _FindFreeUserAllocationID_b__0
		{
		}
	}
	internal static class _VerifyJoinRequest_d__722
	{
		internal static class _ctor
		{
		}

		internal static class MoveNext
		{
		}

		internal static class SetStateMachine
		{
		}
	}
	internal static class _get_AllTags_d__351
	{
		internal static class _ctor
		{
		}

		internal static class System_IDisposable_Dispose
		{
		}

		internal static class MoveNext
		{
		}

		internal static class __m__Finally1
		{
		}

		internal static class __m__Finally2
		{
		}

		internal static class System_Collections_Generic_IEnumerator_System_String__get_Current
		{
		}

		internal static class System_Collections_IEnumerator_Reset
		{
		}

		internal static class System_Collections_IEnumerator_get_Current
		{
		}

		internal static class System_Collections_Generic_IEnumerable_System_String__GetEnumerator
		{
		}

		internal static class System_Collections_IEnumerable_GetEnumerator
		{
		}
	}
	internal static class _get_AutomaticTags_d__353
	{
		internal static class _ctor
		{
		}

		internal static class System_IDisposable_Dispose
		{
		}

		internal static class MoveNext
		{
		}

		internal static class __m__Finally1
		{
		}

		internal static class __m__Finally2
		{
		}

		internal static class System_Collections_Generic_IEnumerator_System_String__get_Current
		{
		}

		internal static class System_Collections_IEnumerator_Reset
		{
		}

		internal static class System_Collections_IEnumerator_get_Current
		{
		}

		internal static class System_Collections_Generic_IEnumerable_System_String__GetEnumerator
		{
		}

		internal static class System_Collections_IEnumerable_GetEnumerator
		{
		}
	}
}
namespace Md.FrooxEngine.NewWorldDialog
{
	internal static class BuildUI
	{
		public delegate void PrefixSignature(NewWorldDialog self, ref Action<NewWorldDialog> customStart, ref Action<UIBuilder> customPresetUI);

		public delegate void PostfixSignature(NewWorldDialog self, ref Action<NewWorldDialog> customStart, ref Action<UIBuilder> customPresetUI);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(NewWorldDialog).GetMethod("BuildUI", (BindingFlags)(-1), (Binder)null, new System.Type[2]
			{
				typeof(Action<NewWorldDialog>),
				typeof(Action<UIBuilder>)
			}, (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.NewWorldDialog", "BuildUI"));
		}
	}
	internal static class OnCommonUpdate
	{
		public delegate void PrefixSignature(NewWorldDialog self);

		public delegate void PostfixSignature(NewWorldDialog self);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(NewWorldDialog).GetMethod("OnCommonUpdate", (BindingFlags)(-1), (Binder)null, System.Array.Empty<System.Type>(), (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.NewWorldDialog", "OnCommonUpdate"));
		}
	}
	internal static class OnStartSession
	{
		public delegate void PrefixSignature(NewWorldDialog self, ref IButton button, ref ButtonEventData eventData);

		public delegate void PostfixSignature(NewWorldDialog self, ref IButton button, ref ButtonEventData eventData);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook Postfix(PostfixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PostfixDetour>(Target(), (System.Delegate)hook, config, applyByDefault);
		}

		public static MonoDetourHook ILHook(Manipulator manipulator, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).ILHook(Target(), manipulator, config, applyByDefault);
		}

		public static MethodBase Target()
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			return (MethodBase)(object)(typeof(NewWorldDialog).GetMethod("OnStartSession", (BindingFlags)(-1), (Binder)null, new System.Type[2]
			{
				typeof(IButton),
				typeof(ButtonEventData)
			}, (ParameterModifier[])null) ?? throw new MissingMethodException("FrooxEngine.NewWorldDialog", "OnStartSession"));
		}
	}
	internal static class OpenDialogWindow
	{
	}
	internal static class get_WorldName
	{
	}
	internal static class set_WorldName
	{
	}
	internal static class get_MobileFriendly
	{
	}
	internal static class set_MobileFriendly
	{
	}
	internal static class get_AutoPort
	{
	}
	internal static class set_AutoPort
	{
	}
	internal static class get_PortSelectionEnabled
	{
	}
	internal static class get_Port
	{
	}
	internal static class set_Port
	{
	}
	internal static class get_AccessLevel
	{
	}
	internal static class set_AccessLevel
	{
	}
	internal static class get_UnsafeMode
	{
	}
	internal static class set_UnsafeMode
	{
	}
	internal static class BuildUI_Async
	{
	}
	internal static class OnStart
	{
	}
	internal static class Close
	{
	}
	internal static class _ctor
	{
	}
	internal static class InitializeSyncMembers
	{
	}
	internal static class GetSyncMember
	{
	}
	internal static class __New
	{
	}
	internal static class __c__DisplayClass33_0
	{
		internal static class _ctor
		{
		}

		internal static class _BuildUI_b__0
		{
		}

		internal static class __BuildUI_b__0_d
		{
			internal static class _ctor
			{
			}

			internal static class MoveNext
			{
			}

			internal static class SetStateMachine
			{
			}
		}
	}
	internal static class __c__DisplayClass34_0
	{
		internal static class _ctor
		{
		}

		internal static class _BuildUI_Async_b__0
		{
		}

		internal static class _BuildUI_Async_b__1
		{
		}
	}
	internal static class _BuildUI_Async_d__34
	{
		internal static class _ctor
		{
		}

		internal static class MoveNext
		{
		}

		internal static class SetStateMachine
		{
		}
	}
}
namespace MonoDetour.HookGen
{
	internal static class DefaultMonoDetourManager
	{
		[field: CompilerGenerated]
		internal static MonoDetourManager Instance
		{
			[CompilerGenerated]
			get;
		} = New();

		internal static MonoDetourManager New()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			return new MonoDetourManager(typeof(DefaultMonoDetourManager).Assembly.GetName().Name);
		}
	}
	[AttributeUsage(/*Could not decode attribute arguments.*/)]
	internal class MonoDetourTargetsAttribute(System.Type? targetType = null) : System.Attribute(), IMonoDetourTargets
	{
		[field: CompilerGenerated]
		public System.Type? TargetType
		{
			[CompilerGenerated]
			get;
		} = targetType;

		[field: CompilerGenerated]
		public bool IncludeNestedTypes
		{
			[CompilerGenerated]
			get;
			[CompilerGenerated]
			set;
		} = true;

		[field: CompilerGenerated]
		public string[]? Members
		{
			[CompilerGenerated]
			get;
			[CompilerGenerated]
			set;
		}

		[field: CompilerGenerated]
		public string[]? MemberNamePrefixes
		{
			[CompilerGenerated]
			get;
			[CompilerGenerated]
			set;
		}

		[field: CompilerGenerated]
		public string[]? MemberNameSuffixes
		{
			[CompilerGenerated]
			get;
			[CompilerGenerated]
			set;
		}

		[field: CompilerGenerated]
		public bool GenerateControlFlowVariants
		{
			[CompilerGenerated]
			get;
			[CompilerGenerated]
			set;
		}
	}
}
namespace BepInEx
{
	[AttributeUsage(/*Could not decode attribute arguments.*/)]
	[Conditional("CodeGeneration")]
	[Embedded]
	internal sealed class BepInAutoPluginAttribute : System.Attribute
	{
		public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null, string? authors = null, string? link = null)
		{
		}
	}
}
namespace BepInEx.Preloader.Core.Patching
{
	[AttributeUsage(/*Could not decode attribute arguments.*/)]
	[Conditional("CodeGeneration")]
	[Embedded]
	internal sealed class PatcherAutoPluginAttribute : System.Attribute
	{
		public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace Microsoft.CodeAnalysis
{
	[Embedded]
	internal sealed class EmbeddedAttribute : System.Attribute
	{
	}
}
namespace ResoniteLinkPlus
{
	[MonoDetourTargets(typeof(NewWorldDialog))]
	internal static class NewWorldDialogPatches
	{
		[MonoDetourHookInitialize]
		private static void Init()
		{
			BuildUI.Postfix(Postfix_BuildUI);
			OnCommonUpdate.Postfix(Postfix_OnCommonUpdate);
			OnStartSession.Prefix(Prefix_OnStartSession);
		}

		private static void Postfix_BuildUI(NewWorldDialog self, ref Action<NewWorldDialog> customStart, ref Action<UIBuilder> customPresetUI)
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			if (!Plugin.Enabled.Value)
			{
				return;
			}
			((ComponentBase<Component>)(object)self).RunInUpdates(3, (Action)delegate
			{
				//IL_001f: 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_002b: Expected O, but got Unknown
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0063: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0083: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00af: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
				//IL_010e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0117: Unknown result type (might be due to invalid IL or missing references)
				//IL_011c: Unknown result type (might be due to invalid IL or missing references)
				//IL_012d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0138: Unknown result type (might be due to invalid IL or missing references)
				//IL_013e: Unknown result type (might be due to invalid IL or missing references)
				if (WorldElementExtensions.FilterWorldElement<Slot>(((Component)self).Slot) != null)
				{
					UIBuilder val = new UIBuilder(((Component)self).Slot, (Slot)null);
					RadiantUI_Constants.SetupDefaultStyle(val, false);
					val.VerticalLayout(4f, 0f, (Alignment?)null, (bool?)null, (bool?)null);
					val.FitContent((SizeFit)0, (SizeFit)2);
					val.Style.MinHeight = 32f;
					val.Style.PreferredHeight = 32f;
					val.NestInto(((Component)self).Slot[2][1][0]);
					LocaleString val2 = LocaleHelper.AsLocaleKey("World.Config.ResoniteLinkHeader", (string)null, true, (Dictionary<string, object>)null);
					Checkbox autoStart = val.Checkbox(ref val2, Plugin.LinkAutoEnabledNewWorld.Value, true, 4f);
					val.HorizontalLayout(4f, 0f, (Alignment?)null);
					val2 = LocaleHelper.AsLocaleKey("NewWorld.Port", (string)null, true, (Dictionary<string, object>)null);
					val.Text(ref val2, true, (Alignment?)null, true, (string)null);
					val2 = LocaleHelper.AsLocaleKey("NewWorld.AutoPort", (string)null, true, (Dictionary<string, object>)null);
					Checkbox autoPort = val.Checkbox(ref val2, true, true, 4f);
					TextField val3 = val.TextField("", false, (string)null, true, default(LocaleString));
					val3.TargetString = LinkPlus.GetAvailablePort(Plugin.LinkStartingPort.Value).ToString();
					val.NestOut();
					LinkPlus.Dialogs.GetOrCreateValue(self).AutoStart = autoStart;
					LinkPlus.Dialogs.GetOrCreateValue(self).AutoPort = autoPort;
					LinkPlus.Dialogs.GetOrCreateValue(self).PortField = val3;
					Plugin.Log.LogDebug((object)"NewWorldDialog: Added ResoniteLinkPlus UI controls");
				}
			});
		}

		private static void Postfix_OnCommonUpdate(NewWorldDialog self)
		{
			LinkPlus.DialogControls dialogControls = default(LinkPlus.DialogControls);
			if (Plugin.Enabled.Value && LinkPlus.Dialogs.TryGetValue(self, ref dialogControls) && dialogControls.AutoPort != null && dialogControls.PortField != null)
			{
				Button component = ((ContainerWorker<Component>)(object)((Component)dialogControls.PortField).Slot).GetComponent<Button>((Predicate<Button>)null, false);
				if (component != null)
				{
					((ComponentBase<Component>)(object)component).Enabled = !dialogControls.AutoPort.IsChecked;
				}
			}
		}

		private static void Prefix_OnStartSession(NewWorldDialog self, ref IButton button, ref ButtonEventData eventData)
		{
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			if (!Plugin.Enabled.Value)
			{
				return;
			}
			LinkPlus.DialogControls dialogControls = default(LinkPlus.DialogControls);
			if (!LinkPlus.Dialogs.TryGetValue(self, ref dialogControls) || dialogControls.AutoStart == null || !dialogControls.AutoStart.IsChecked)
			{
				Plugin.Log.LogDebug((object)"NewWorldDialog: ResoniteLink auto-start disabled, skipping");
				return;
			}
			if (dialogControls.AutoPort == null || dialogControls.PortField == null)
			{
				Plugin.Log.LogWarning((object)"NewWorldDialog: Port controls not found, cannot auto-start ResoniteLink");
				return;
			}
			int? num = null;
			if (!dialogControls.AutoPort.IsChecked)
			{
				int num2 = default(int);
				if (int.TryParse(dialogControls.PortField.TargetString, ref num2))
				{
					num = num2;
				}
				else
				{
					Plugin.Log.LogWarning((object)"NewWorldDialog: Invalid port specified, using auto-assignment");
				}
			}
			LinkPlus.AutoStartInfo = new ValueTuple<bool, int?>(true, num);
		}
	}
	[MonoDetourTargets(typeof(ResoniteLinkHost))]
	internal static class ResoniteLinkHostStartPatch
	{
		[MonoDetourHookInitialize]
		private static void Init()
		{
			Start.Prefix(Prefix_Start);
			Start.Postfix(Postfix_Start);
		}

		private static void Prefix_Start(ResoniteLinkHost self, ref int? port)
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Expected O, but got Unknown
			if (Plugin.Enabled.Value && !port.HasValue)
			{
				int availablePort = LinkPlus.GetAvailablePort(Plugin.LinkStartingPort.Value);
				port = availablePort;
				ManualLogSource log = Plugin.Log;
				bool flag = default(bool);
				BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(43, 2, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("World '");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(self.World.Name);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("': No port specified, assigned port ");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(availablePort);
				}
				log.LogInfo(val);
			}
		}

		private static void Postfix_Start(ResoniteLinkHost self, ref int? port, ref bool returnValue)
		{
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			bool flag = default(bool);
			if (returnValue)
			{
				if (self != null)
				{
					_ = self.Port;
					ManualLogSource log = Plugin.Log;
					BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(35, 2, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("World '");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(self.World.Name);
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("': ResoniteLink port set to ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(self.Port);
					}
					log.LogInfo(val);
				}
			}
			else
			{
				ManualLogSource log2 = Plugin.Log;
				BepInExWarningLogInterpolatedStringHandler val2 = new BepInExWarningLogInterpolatedStringHandler(45, 2, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("World '");
					((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<string>(self.World.Name);
					((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("': Failed to set ResoniteLink port to ");
					((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<int?>(port);
				}
				log2.LogWarning(val2);
			}
		}
	}
	[MonoDetourTargets(typeof(World))]
	internal static class WorldPatches
	{
		[MonoDetourHookInitialize]
		private static void Init()
		{
			StartSession.Postfix(Postfix_StartSession);
			Destroy.Prefix(Prefix_Destroy);
		}

		private static void Postfix_StartSession(ref WorldManager manager, ref WorldAction init, ref Dictionary<string, ushort> ports, ref string forceSessionId, ref DataTreeNode load, ref Record record, ref bool unsafeMode, ref System.Collections.Generic.IEnumerable<AssemblyTypeRegistry> assemblies, ref World returnValue)
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Expected O, but got Unknown
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			if (!Plugin.Enabled.Value || returnValue == null)
			{
				return;
			}
			ValueTuple<bool, int?> autoStartInfo = LinkPlus.AutoStartInfo;
			bool item = autoStartInfo.Item1;
			int? requestedPort = autoStartInfo.Item2;
			LinkPlus.AutoStartInfo = new ValueTuple<bool, int?>(false, (int?)null);
			if (!item)
			{
				return;
			}
			World world = returnValue;
			world.RunInUpdates(3, (Action)delegate
			{
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c6: Expected O, but got Unknown
				//IL_0050: Unknown result type (might be due to invalid IL or missing references)
				//IL_0056: Expected O, but got Unknown
				if (world.IsDestroyed)
				{
					return;
				}
				bool flag = default(bool);
				try
				{
					world.StartResoniteLink(requestedPort);
					ResoniteLinkHost resoniteLink = world.ResoniteLink;
					int? num = ((resoniteLink != null) ? new int?(resoniteLink.Port) : ((int?)null));
					ManualLogSource log = Plugin.Log;
					BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(39, 2, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("World '");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(world.Name);
						((BepInExLogInterpolatedStringHandler)val).AppendLiteral("': Started ResoniteLink on port ");
						((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(num?.ToString() ?? "auto");
					}
					log.LogInfo(val);
				}
				catch (System.Exception ex)
				{
					ManualLogSource log2 = Plugin.Log;
					BepInExErrorLogInterpolatedStringHandler val2 = new BepInExErrorLogInterpolatedStringHandler(41, 2, ref flag);
					if (flag)
					{
						((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("World '");
						((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<string>(world.Name);
						((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("': Failed to start ResoniteLink - ");
						((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<System.Exception>(ex);
					}
					log2.LogError(val2);
				}
			});
		}

		private static void Prefix_Destroy(World self)
		{
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			if (!Plugin.Enabled.Value || self == null)
			{
				return;
			}
			bool flag = default(bool);
			if (self.ResoniteLink == null)
			{
				ManualLogSource log = Plugin.Log;
				BepInExErrorLogInterpolatedStringHandler val = new BepInExErrorLogInterpolatedStringHandler(41, 1, ref flag);
				if (flag)
				{
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("World '");
					((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(self.Name);
					((BepInExLogInterpolatedStringHandler)val).AppendLiteral("': ResoniteLink property not found");
				}
				log.LogError(val);
				return;
			}
			ResoniteLinkHost resoniteLink = self.ResoniteLink;
			int port = resoniteLink.Port;
			resoniteLink.Dispose();
			ManualLogSource log2 = Plugin.Log;
			BepInExInfoLogInterpolatedStringHandler val2 = new BepInExInfoLogInterpolatedStringHandler(39, 2, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("World '");
				((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<string>(self.Name);
				((BepInExLogInterpolatedStringHandler)val2).AppendLiteral("': Stopped ResoniteLink on port ");
				((BepInExLogInterpolatedStringHandler)val2).AppendFormatted<int>(port);
			}
			log2.LogInfo(val2);
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[ResonitePlugin("dev.hazre.resonitelinkplus", "ResoniteLinkPlus", "1.0.1+b0cbfaa562d125a46ae02d843ee6a339dbdb59ca", "hazre", "https://github.com/hazre/ResoniteLinkPlus")]
	public class Plugin : BasePlugin
	{
		internal static ManualLogSource Log;

		internal static ConfigEntry<bool> Enabled;

		internal static ConfigEntry<int> LinkStartingPort;

		internal static ConfigEntry<bool> LinkAutoEnabledNewWorld;

		public const string GUID = "dev.hazre.resonitelinkplus";

		public const string NAME = "ResoniteLinkPlus";

		public const string VERSION = "1.0.1+b0cbfaa562d125a46ae02d843ee6a339dbdb59ca";

		public const string AUTHORS = "hazre";

		public const string REPOSITORY_URL = "https://github.com/hazre/ResoniteLinkPlus";

		public override void Load()
		{
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Expected O, but got Unknown
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			Log = ((BasePlugin)this).Log;
			Enabled = ConfigLocaleHelper.BindLocalized<bool>(((BasePlugin)this).Config, "dev.hazre.resonitelinkplus", "General", "Enabled", true, "Enables the ResoniteLinkPlus functionality, requires a restart to take effect");
			LinkStartingPort = ConfigLocaleHelper.BindLocalized<int>(((BasePlugin)this).Config, "dev.hazre.resonitelinkplus", "General", "LinkStartingPort", 2000, new ConfigDescription("Resonite Link port starts from this number and increments for each session", (AcceptableValueBase)(object)new AcceptableValueRange<int>(2000, 65535), System.Array.Empty<object>()));
			LinkAutoEnabledNewWorld = ConfigLocaleHelper.BindLocalized<bool>(((BasePlugin)this).Config, "dev.hazre.resonitelinkplus", "General", "LinkAutoEnabledNewWorld", false, "Automatically enables ResoniteLink when creating a new world, Not recommended for public worlds");
			MonoDetourManager.InvokeHookInitializers(typeof(Plugin).Assembly);
			ManualLogSource log = Log;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(14, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Plugin ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("dev.hazre.resonitelinkplus");
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" loaded");
			}
			log.LogInfo(val);
		}
	}
	internal static class LinkPlus
	{
		public class DialogControls
		{
			public Checkbox? AutoStart;

			public Checkbox? AutoPort;

			public TextField? PortField;
		}

		public static readonly ConditionalWeakTable<NewWorldDialog, DialogControls> Dialogs = new ConditionalWeakTable<NewWorldDialog, DialogControls>();

		public static ValueTuple<bool, int?> AutoStartInfo = new ValueTuple<bool, int?>(false, (int?)null);

		public static int GetAvailablePort(int startingPort, int maxAttempts = 1000)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			for (int i = startingPort; i < startingPort + maxAttempts; i++)
			{
				try
				{
					Socket val = new Socket((AddressFamily)2, (SocketType)1, (ProtocolType)6);
					try
					{
						val.Bind((EndPoint)new IPEndPoint(IPAddress.Any, i));
						return i;
					}
					finally
					{
						((System.IDisposable)val)?.Dispose();
					}
				}
				catch (SocketException)
				{
				}
			}
			throw new System.Exception($"No available port found in range {startingPort}-{startingPort + maxAttempts - 1}");
		}
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(/*Could not decode attribute arguments.*/)]
	internal sealed class IgnoresAccessChecksToAttribute : System.Attribute
	{
		internal IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}