Decompiled source of BetterDistanceEstimation v0.2.6

plugins/com.github.LyricLy.BetterDistanceEstimation.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using Brimstone.BallDistanceJobs;
using Md.PlayerGolfer;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoDetour;
using MonoDetour.Cil;
using MonoDetour.DetourTypes;
using MonoDetour.HookGen;
using MonoMod.Cil;
using Unity.Collections;
using Unity.Jobs;
using Unity.Mathematics;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: IgnoresAccessChecksTo("GameAssembly")]
[assembly: IgnoresAccessChecksTo("SharedAssembly")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("com.github.LyricLy.BetterDistanceEstimation")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("0.2.6.0")]
[assembly: AssemblyInformationalVersion("0.2.6+527e26c16e717b61586357281712658d57410f36")]
[assembly: AssemblyProduct("com.github.LyricLy.BetterDistanceEstimation")]
[assembly: AssemblyTitle("BetterDistanceEstimation")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.2.6.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
public struct LyricLyFirstGroundHitDistancesJob : IJobParallelFor
{
	public NativeArray<float> normalizedInitialSpeeds;

	public NativeHashMap<int2, JobsTerrain> spatiallyHashedTerrains;

	public NativeHashMap<int, int> globalTerrainLayerIndicesPerLevelTerrainLayer;

	public NativeArray<float> allTerrainLayerWeights;

	public NativeArray<float> allTerrainHeights;

	public NativeList<SecondaryOutOfBoundsHazardInstance> secondaryOutOfBoundsHazards;

	public NativeList<LevelHazardInstance> levelHazards;

	public NativeArray<SwingDistanceEstimation> estimatedDistances;

	public float mainOutOfBoundsHazardHeight;

	public OutOfBoundsHazard mainOutOfBoundsHazardType;

	public float2 terrainSize;

	public float2 initialWorldPosition2d;

	public float yawRad;

	public float fullInitialSpeed;

	public float baseInitialSpeed;

	public float verticalGravity;

	public float pitchRad;

	public float airDragCoefficient;

	public float deltaTime;

	public float3 flagPosition;

	public LyricLyFirstGroundHitDistancesJob(CalculateFirstGroundHitDistancesJob origJob, float3 flagPosition)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: 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)
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0062: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_008c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0098: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b0: 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_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		mainOutOfBoundsHazardType = (OutOfBoundsHazard)0;
		normalizedInitialSpeeds = origJob.normalizedInitialSpeeds;
		spatiallyHashedTerrains = origJob.spatiallyHashedTerrains;
		globalTerrainLayerIndicesPerLevelTerrainLayer = origJob.globalTerrainLayerIndicesPerLevelTerrainLayer;
		allTerrainLayerWeights = origJob.allTerrainLayerWeights;
		allTerrainHeights = origJob.allTerrainHeights;
		secondaryOutOfBoundsHazards = origJob.secondaryOutOfBoundsHazards;
		levelHazards = origJob.levelHazards;
		estimatedDistances = origJob.estimatedDistances;
		mainOutOfBoundsHazardHeight = origJob.mainOutOfBoundsHazardHeight;
		terrainSize = origJob.terrainSize;
		initialWorldPosition2d = origJob.initialWorldPosition2d;
		yawRad = origJob.yawRad;
		fullInitialSpeed = origJob.fullInitialSpeed;
		baseInitialSpeed = origJob.baseInitialSpeed;
		verticalGravity = origJob.verticalGravity;
		pitchRad = origJob.pitchRad;
		airDragCoefficient = origJob.airDragCoefficient;
		deltaTime = origJob.deltaTime;
		this.flagPosition = flagPosition;
	}

	public void Execute(int initialSpeedIndex)
	{
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: 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_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
		//IL_0195: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_011f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0124: Unknown result type (might be due to invalid IL or missing references)
		//IL_0129: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Unknown result type (might be due to invalid IL or missing references)
		//IL_015c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0161: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_016e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_0185: Unknown result type (might be due to invalid IL or missing references)
		//IL_018a: Unknown result type (might be due to invalid IL or missing references)
		//IL_018f: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01df: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_020d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0214: Unknown result type (might be due to invalid IL or missing references)
		//IL_0215: Unknown result type (might be due to invalid IL or missing references)
		//IL_021a: Unknown result type (might be due to invalid IL or missing references)
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0221: Unknown result type (might be due to invalid IL or missing references)
		//IL_0224: Unknown result type (might be due to invalid IL or missing references)
		//IL_0229: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0231: Unknown result type (might be due to invalid IL or missing references)
		//IL_0234: Unknown result type (might be due to invalid IL or missing references)
		//IL_0237: Unknown result type (might be due to invalid IL or missing references)
		//IL_023f: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_024f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0252: Unknown result type (might be due to invalid IL or missing references)
		//IL_0260: Unknown result type (might be due to invalid IL or missing references)
		//IL_0269: Unknown result type (might be due to invalid IL or missing references)
		//IL_0275: Unknown result type (might be due to invalid IL or missing references)
		//IL_0278: Unknown result type (might be due to invalid IL or missing references)
		//IL_0296: Unknown result type (might be due to invalid IL or missing references)
		//IL_0299: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b9: Invalid comparison between Unknown and I4
		//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0290: Unknown result type (might be due to invalid IL or missing references)
		//IL_0292: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e5: Unknown result type (might be due to invalid IL or missing references)
		float num = default(float);
		float num2 = default(float);
		math.sincos(yawRad, ref num, ref num2);
		float2 val = default(float2);
		((float2)(ref val))..ctor(num, num2);
		float num3 = baseInitialSpeed + normalizedInitialSpeeds[initialSpeedIndex] * (fullInitialSpeed - baseInitialSpeed);
		float num4 = default(float);
		float num5 = default(float);
		math.sincos(pitchRad, ref num4, ref num5);
		float2 val2 = new float2(num5, num4) * num3;
		LyricLyFirstGroundHitDistancesJob us = this;
		float2 val3 = default(float2);
		((float2)(ref val3))..ctor(0f, verticalGravity);
		Vector2 val4 = Vector2.zero;
		float2 simPos = float2.zero;
		float2 val5 = ((float3)(ref flagPosition)).xz / 2f;
		float2 val6 = default(float2);
		((float2)(ref val6))..ctor(0f - flagPosition.z, flagPosition.x);
		float num6 = val6.y * val.x - val6.x * val.y;
		float ledgeX = (val6.y * val5.x - val6.x * val5.y) / num6;
		while (simPos.y >= Floor())
		{
			val2 += val3 * us.deltaTime;
			val2 *= math.max(0f, 1f - us.airDragCoefficient * math.lengthsq(val2) * us.deltaTime);
			val4 = float2.op_Implicit(simPos);
			simPos += val2 * us.deltaTime;
		}
		float num7 = ((val4.x <= ledgeX && simPos.x > ledgeX) ? ledgeX : math.lerp(val4.x, simPos.x, BMath.InverseLerp(val4.y, simPos.y, Floor())));
		float2 val7 = initialWorldPosition2d + num7 * val;
		int2 spatialHash = TerrainManager.GetSpatialHash(val7, terrainSize);
		TerrainLayer val8 = (TerrainLayer)(-1);
		LevelHazardType val9 = (LevelHazardType)(-1);
		OutOfBoundsHazard val10 = (OutOfBoundsHazard)(-1);
		JobsTerrain val11 = default(JobsTerrain);
		if (spatiallyHashedTerrains.TryGetValue(spatialHash, ref val11))
		{
			float heightAt = ((JobsTerrain)(ref val11)).GetHeightAt(val7, allTerrainHeights);
			float3 val12 = default(float3);
			((float3)(ref val12))..ctor(val7.x, heightAt, val7.y);
			bool flag = default(bool);
			float num8 = default(float);
			LevelHazardType val13 = default(LevelHazardType);
			int num9 = default(int);
			if (BoundsJobHelper.IsInOrOverLevelHazard(val12, levelHazards, ref flag, ref num8, ref val13, ref num9) && !flag)
			{
				val9 = val13;
			}
			else
			{
				OutOfBoundsHazard val14 = default(OutOfBoundsHazard);
				BoundsJobHelper.IsInOutOfBoundsHazard(val12, secondaryOutOfBoundsHazards, mainOutOfBoundsHazardHeight, mainOutOfBoundsHazardType, ref num8, ref val14, ref num9);
				if ((int)val14 >= 0)
				{
					val10 = val14;
				}
				else
				{
					int dominantLayerIndexAt = ((JobsTerrain)(ref val11)).GetDominantLayerIndexAt(val7, allTerrainLayerWeights);
					int num10 = default(int);
					if (globalTerrainLayerIndicesPerLevelTerrainLayer.TryGetValue(dominantLayerIndexAt, ref num10))
					{
						val8 = (TerrainLayer)num10;
					}
				}
			}
		}
		estimatedDistances[initialSpeedIndex] = new SwingDistanceEstimation(num7, val8, val9, val10);
		float Floor()
		{
			if (!(ledgeX > 0f) || !(simPos.x > ledgeX))
			{
				return 0f;
			}
			return us.flagPosition.y;
		}
	}
}
namespace Md.PlayerGolfer
{
	internal static class _OnBUpdate_g__UpdateHoleDistanceEstimationForOwnBall_176_4
	{
		public delegate void PrefixSignature(PlayerGolfer self);

		public delegate void PostfixSignature(PlayerGolfer self);

		public static MonoDetourHook Prefix(PrefixSignature hook, MonoDetourConfig? config = null, bool applyByDefault = true, MonoDetourManager? manager = null)
		{
			return (manager ?? DefaultMonoDetourManager.Instance).Hook<PrefixDetour>(Target(), (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(), (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()
		{
			Type typeFromHandle = typeof(PlayerGolfer);
			MethodInfo method = typeFromHandle.GetMethod("<OnBUpdate>g__UpdateHoleDistanceEstimationForOwnBall|176_4", (BindingFlags)(-1), null, Array.Empty<Type>(), null);
			if ((object)method == null)
			{
				throw new MissingMethodException("PlayerGolfer", "<OnBUpdate>g__UpdateHoleDistanceEstimationForOwnBall|176_4");
			}
			return method;
		}
	}
	internal static class get_PlayerInfo
	{
	}
	internal static class set_PlayerInfo
	{
	}
	internal static class get_IsInitialized
	{
	}
	internal static class get_OwnBall
	{
	}
	internal static class get_LocalPlayerLatestImmediateEliminationReason
	{
	}
	internal static class set_LocalPlayerLatestImmediateEliminationReason
	{
	}
	internal static class get_LocalPlayerLatestEliminationPosition
	{
	}
	internal static class set_LocalPlayerLatestEliminationPosition
	{
	}
	internal static class get_LocalPlayerEliminationTimestamp
	{
	}
	internal static class set_LocalPlayerEliminationTimestamp
	{
	}
	internal static class get_SwingNormalizedPower
	{
	}
	internal static class set_SwingNormalizedPower
	{
	}
	internal static class get_SwingNormalizedCharge
	{
	}
	internal static class set_SwingNormalizedCharge
	{
	}
	internal static class get_SwingPitch
	{
	}
	internal static class set_SwingPitch
	{
	}
	internal static class get_ServerOutOfBoundsTimerEliminationTimestamp
	{
	}
	internal static class set_ServerOutOfBoundsTimerEliminationTimestamp
	{
	}
	internal static class get_IsAimingSwing
	{
	}
	internal static class set_IsAimingSwing
	{
	}
	internal static class get_IsChargingSwing
	{
	}
	internal static class set_IsChargingSwing
	{
	}
	internal static class get_IsSwinging
	{
	}
	internal static class set_IsSwinging
	{
	}
	internal static class get_LastSwingChargeCancelFromInputFrame
	{
	}
	internal static class set_LastSwingChargeCancelFromInputFrame
	{
	}
	internal static class get_LockOnTarget
	{
	}
	internal static class set_LockOnTarget
	{
	}
	internal static class get_IsActiveOnGreen
	{
	}
	internal static class set_IsActiveOnGreen
	{
	}
	internal static class get_IsAheadOfBall
	{
	}
	internal static class get_MatchResolution
	{
	}
	internal static class get_IsMatchResolved
	{
	}
	internal static class get_ClubVfxSettings
	{
	}
	internal static class add_Initialized
	{
	}
	internal static class remove_Initialized
	{
	}
	internal static class add_MatchResolutionChanged
	{
	}
	internal static class remove_MatchResolutionChanged
	{
	}
	internal static class add_IsAheadOfBallChanged
	{
	}
	internal static class remove_IsAheadOfBallChanged
	{
	}
	internal static class add_IsAimingSwingChanged
	{
	}
	internal static class remove_IsAimingSwingChanged
	{
	}
	internal static class add_IsChargingSwingChanged
	{
	}
	internal static class remove_IsChargingSwingChanged
	{
	}
	internal static class add_IsSwingingChanged
	{
	}
	internal static class remove_IsSwingingChanged
	{
	}
	internal static class add_LocalPlayerOwnBallChanged
	{
	}
	internal static class remove_LocalPlayerOwnBallChanged
	{
	}
	internal static class add_LocalPlayerIsAimingSwingChanged
	{
	}
	internal static class remove_LocalPlayerIsAimingSwingChanged
	{
	}
	internal static class add_LocalPlayerStartedChargingSwing
	{
	}
	internal static class remove_LocalPlayerStartedChargingSwing
	{
	}
	internal static class add_LocalPlayerStoppedChargingSwing
	{
	}
	internal static class remove_LocalPlayerStoppedChargingSwing
	{
	}
	internal static class add_LocalPlayerMatchResolutionChanged
	{
	}
	internal static class remove_LocalPlayerMatchResolutionChanged
	{
	}
	internal static class add_PlayerHitOwnBall
	{
	}
	internal static class remove_PlayerHitOwnBall
	{
	}
	internal static class add_AnyPlayerMatchResolutionChanged
	{
	}
	internal static class remove_AnyPlayerMatchResolutionChanged
	{
	}
	internal static class add_AnyPlayerEliminated
	{
	}
	internal static class remove_AnyPlayerEliminated
	{
	}
	internal static class add_LocalPlayerAheadOfBallChanged
	{
	}
	internal static class remove_LocalPlayerAheadOfBallChanged
	{
	}
	internal static class ReturnBallToPlayer
	{
	}
	internal static class FinishHole
	{
	}
	internal static class CmdReturnBallToPlayerFromConsole
	{
	}
	internal static class CmdRestartBall
	{
	}
	internal static class ServerReturnBallToPlayer
	{
	}
	internal static class CmdFinishHole
	{
	}
	internal static class InitializeStatics
	{
	}
	internal static class Awake
	{
	}
	internal static class OnWillBeDestroyed
	{
	}
	internal static class OnStartServer
	{
	}
	internal static class OnStopServer
	{
	}
	internal static class OnStartLocalPlayer
	{
	}
	internal static class OnStopLocalPlayer
	{
	}
	internal static class OnBUpdate
	{
	}
	internal static class ServerInitializeAsParticipant
	{
	}
	internal static class ServerInitializeAsSpectator
	{
	}
	internal static class ServerSpawnBall
	{
	}
	internal static class InformIsSpectatingChanged
	{
	}
	internal static class InformEnteredGolfCart
	{
	}
	internal static class TryReactToBlownAirhorn
	{
	}
	internal static class InformScored
	{
	}
	internal static class InformCourseStateChanged
	{
	}
	internal static class InformLocalPlayerIsHoldingAimChanged
	{
	}
	internal static class InformLocalPlayerIsRespawningChanged
	{
	}
	internal static class InformLocalPlayerKnockedOut
	{
	}
	internal static class InformLocalPlayerStartedDiving
	{
	}
	internal static class ServerEliminate
	{
	}
	internal static class RpcInformWillBeEliminated
	{
	}
	internal static class OnLocalPlayerWillBeEliminated
	{
	}
	internal static class GetEliminationReason
	{
	}
	internal static class CmdSetPotentialEliminationReason
	{
	}
	internal static class ServerSetPotentialEliminationReason
	{
	}
	internal static class ServerClearPotentialEliminationResponsibility
	{
	}
	internal static class SetPitch
	{
	}
	internal static class ApplySwingPitchPreset
	{
	}
	internal static class GetSwingPreset
	{
	}
	internal static class CycleSwingPitchPreset
	{
	}
	internal static class TryStartChargingSwing
	{
	}
	internal static class ReleaseSwingCharge
	{
	}
	internal static class ReleaseSwingChargeInternal
	{
	}
	internal static class SwingRoutine
	{
	}
	internal static class CmdPlaySwingVfxForAllClients
	{
	}
	internal static class RpcPlaySwingVfx
	{
	}
	internal static class PlaySwingVfxInternal
	{
	}
	internal static class CmdPlayRocketDriverPostHitSpinEffectsForAllClients
	{
	}
	internal static class RpcPlayRocketDriverPostHitSpinEffects
	{
	}
	internal static class PlayRocketDriverPostHitSpinEffectsInternal
	{
	}
	internal static class CmdPlayRocketDriverMissVfxForAllClients
	{
	}
	internal static class RpcPlayRocketDriverMissVfx
	{
	}
	internal static class PlayRocketDriverMissVfxInternal
	{
	}
	internal static class CancelAllActions
	{
	}
	internal static class TryCancelSwingCharge
	{
	}
	internal static class CancelSwing
	{
	}
	internal static class SetIsSwinging
	{
	}
	internal static class OnFinishedSwinging
	{
	}
	internal static class CmdInformHitOwnBall
	{
	}
	internal static class OnPlayerHitOwnBall
	{
	}
	internal static class TryGetBestLockOnTarget
	{
	}
	internal static class CanHitCollider
	{
	}
	internal static class SetPitchInternal
	{
	}
	internal static class GetPitchPresetIndex
	{
	}
	internal static class UpdateIsAimingSwing
	{
	}
	internal static class CanAimSwing
	{
	}
	internal static class SetIsChargingSwing
	{
	}
	internal static class SetLockOnTarget
	{
	}
	internal static class ServerTrySetMatchResolution
	{
	}
	internal static class UpdateSwingNormalizedPower
	{
	}
	internal static class GetSwingHitBox
	{
	}
	internal static class GetSwingDirection
	{
	}
	internal static class GetSwingHittablePriority
	{
	}
	internal static class UpdateOverchargedVfx
	{
	}
	internal static class SetIsPlayingOverchargedVfx
	{
	}
	internal static class ClearOverchargedVfx
	{
	}
	internal static class ServerUpdateIsActiveOnGreen
	{
	}
	internal static class IsAimingSwingNetworked
	{
	}
	internal static class CanRotate
	{
	}
	internal static class CanMove
	{
	}
	internal static class CanInterruptSwing
	{
	}
	internal static class OnServerWasHitByItem
	{
	}
	internal static class OnServerWasHitByRocketLauncherBackBlast
	{
	}
	internal static class OnServerWasHitByRocketDriverSwingPostHitSpin
	{
	}
	internal static class OnServerWasHitByDive
	{
	}
	internal static class OnServerIsOnGreenChanged
	{
	}
	internal static class OnServerBoundsStateChanged
	{
	}
	internal static class OnServerMatchStateChanged
	{
	}
	internal static class OnLocalPlayerIsGroundedChanged
	{
	}
	internal static class OnLocalPlayerIsKnockedOutChanged
	{
	}
	internal static class OnLocalPlayerIsFrozenChanged
	{
	}
	internal static class OnLocalPlayerEquippedItemChanged
	{
	}
	internal static class OnLockOnTargetWillBeDestroyed
	{
	}
	internal static class OnLockOnTargetPlayerIsVisibleChanged
	{
	}
	internal static class OnLockOnTargetPlayerHasKnockoutImmunityChanged
	{
	}
	internal static class OnLockOnTargetPlayerMatchResolutionChanged
	{
	}
	internal static class OnIsInitializedChanged
	{
	}
	internal static class OnOwnBallChanged
	{
	}
	internal static class OnMatchResolutionChanged
	{
	}
	internal static class UpdateSwingStanceButtonPrompt
	{
	}
	internal static class UpdateAdjustAnglePrompt
	{
	}
	internal static class OnIsAheadOfBallChanged
	{
	}
	internal static class _ctor
	{
	}
	internal static class _cctor
	{
	}
	internal static class _OnWillBeDestroyed_g__ReturnButtonPrompts_171_0
	{
	}
	internal static class _OnBUpdate_g__ServerUpdatePotentialEliminationReason_176_0
	{
	}
	internal static class _OnBUpdate_g__IsAheadOfBall_176_1
	{
	}
	internal static class _OnBUpdate_g__UpdateSwingTrajectoryPreview_176_2
	{
	}
	internal static class _OnBUpdate_g__UpdateLockOn_176_3
	{
	}
	internal static class _ServerInitializeAsParticipant_g__ClaimTee_177_0
	{
	}
	internal static class _ServerInitializeAsParticipant_g__SpawnBallOnTee_177_1
	{
	}
	internal static class _ServerEliminate_g__CanRespawn_189_0
	{
	}
	internal static class _ServerEliminate_g__ReportElimination_189_1
	{
	}
	internal static class _TryStartChargingSwing_g__CanStartSwing_200_0
	{
	}
	internal static class _ReleaseSwingChargeInternal_g__CanReleaseSwingCharge_202_0
	{
	}
	internal static class _SwingRoutine_g__GetEffectiveLockOnTargetSwingPitchFor_203_0
	{
	}
	internal static class _SwingRoutine_g__ShouldInterruptSwing_203_1
	{
	}
	internal static class _SwingRoutine_g__TryPlaySwingVfx_203_2
	{
	}
	internal static class _SwingRoutine_g__PlaySwingVfxForAllClients_203_3
	{
	}
	internal static class _SwingRoutine_g__ApplyRocketDriverSwingPostHitSpin_203_4
	{
	}
	internal static class _PlaySwingVfxInternal_g__PlayRegularSwing_206_0
	{
	}
	internal static class _PlaySwingVfxInternal_g__PlayRocketDriverSwing_206_1
	{
	}
	internal static class _UpdateIsAimingSwing_g__ShouldAimSwing_224_0
	{
	}
	internal static class _ServerTrySetMatchResolution_g__CanSetResolution_228_0
	{
	}
	internal static class _UpdateOverchargedVfx_g__ShouldPlay_233_0
	{
	}
	internal static class _SetIsPlayingOverchargedVfx_g__PlayOverchargedVfx_234_0
	{
	}
	internal static class _ServerUpdateIsActiveOnGreen_g__IsActiveOnGreen_236_0
	{
	}
	internal static class _OnMatchResolutionChanged_g__OnLocalPlayerMatchResolved_258_0
	{
	}
	internal static class _UpdateAdjustAnglePrompt_g__ReturnPrompt_260_0
	{
	}
	internal static class Weaved
	{
	}
	internal static class get_NetworkisInitialized
	{
	}
	internal static class set_NetworkisInitialized
	{
	}
	internal static class get_NetworkownTee
	{
	}
	internal static class set_NetworkownTee
	{
	}
	internal static class get_NetworkownBall
	{
	}
	internal static class set_NetworkownBall
	{
	}
	internal static class get_NetworkmatchResolution
	{
	}
	internal static class set_NetworkmatchResolution
	{
	}
	internal static class get_NetworkisAheadOfBall
	{
	}
	internal static class set_NetworkisAheadOfBall
	{
	}
	internal static class UserCode_CmdReturnBallToPlayerFromConsole
	{
	}
	internal static class InvokeUserCode_CmdReturnBallToPlayerFromConsole
	{
	}
	internal static class UserCode_CmdRestartBall
	{
	}
	internal static class InvokeUserCode_CmdRestartBall
	{
	}
	internal static class UserCode_CmdFinishHole
	{
	}
	internal static class InvokeUserCode_CmdFinishHole
	{
	}
	internal static class UserCode_RpcInformWillBeEliminated__EliminationReason__Vector3
	{
	}
	internal static class InvokeUserCode_RpcInformWillBeEliminated__EliminationReason__Vector3
	{
	}
	internal static class UserCode_CmdSetPotentialEliminationReason__PlayerGolfer__EliminationReason
	{
	}
	internal static class InvokeUserCode_CmdSetPotentialEliminationReason__PlayerGolfer__EliminationReason
	{
	}
	internal static class UserCode_CmdPlaySwingVfxForAllClients__Single__Boolean__Boolean__Boolean__NetworkConnectionToClient
	{
	}
	internal static class InvokeUserCode_CmdPlaySwingVfxForAllClients__Single__Boolean__Boolean__Boolean__NetworkConnectionToClient
	{
	}
	internal static class UserCode_RpcPlaySwingVfx__NetworkConnectionToClient__Single__Boolean__Boolean__Boolean
	{
	}
	internal static class InvokeUserCode_RpcPlaySwingVfx__NetworkConnectionToClient__Single__Boolean__Boolean__Boolean
	{
	}
	internal static class UserCode_CmdPlayRocketDriverPostHitSpinEffectsForAllClients__NetworkConnectionToClient
	{
	}
	internal static class InvokeUserCode_CmdPlayRocketDriverPostHitSpinEffectsForAllClients__NetworkConnectionToClient
	{
	}
	internal static class UserCode_RpcPlayRocketDriverPostHitSpinEffects__NetworkConnectionToClient
	{
	}
	internal static class InvokeUserCode_RpcPlayRocketDriverPostHitSpinEffects__NetworkConnectionToClient
	{
	}
	internal static class UserCode_CmdPlayRocketDriverMissVfxForAllClients__Vector3__NetworkConnectionToClient
	{
	}
	internal static class InvokeUserCode_CmdPlayRocketDriverMissVfxForAllClients__Vector3__NetworkConnectionToClient
	{
	}
	internal static class UserCode_RpcPlayRocketDriverMissVfx__NetworkConnectionToClient__Vector3
	{
	}
	internal static class InvokeUserCode_RpcPlayRocketDriverMissVfx__NetworkConnectionToClient__Vector3
	{
	}
	internal static class UserCode_CmdInformHitOwnBall
	{
	}
	internal static class InvokeUserCode_CmdInformHitOwnBall
	{
	}
	internal static class SerializeSyncVars
	{
	}
	internal static class DeserializeSyncVars
	{
	}
	internal static class SwingDistanceEstimation
	{
		internal static class _ctor
		{
		}

		internal static class _ctor_System_Single_TerrainLayer_LevelHazardType_OutOfBoundsHazard
		{
		}
	}
	internal static class TerrainLayerNormalizedSwingPower
	{
		internal static class _ctor
		{
		}

		internal static class get_Invalid
		{
		}

		internal static class IsInvalid
		{
		}
	}
	internal static class TerrainLayerNormalizedSwingPowerComparer
	{
		internal static class _ctor
		{
		}

		internal static class Compare
		{
		}
	}
	internal static class __c__DisplayClass189_0
	{
		internal static class _ctor
		{
		}
	}
	internal static class __c__DisplayClass203_0
	{
		internal static class _ctor
		{
		}
	}
	internal static class __c__DisplayClass206_0
	{
		internal static class _ctor
		{
		}
	}
	internal static class __c__DisplayClass228_0
	{
		internal static class _ctor
		{
		}
	}
	internal static class _SwingRoutine_d__203
	{
		internal static class _ctor
		{
		}

		internal static class System_IDisposable_Dispose
		{
		}

		internal static class MoveNext
		{
		}

		internal static class System_Collections_Generic_IEnumerator_System_Object__get_Current
		{
		}

		internal static class System_Collections_IEnumerator_Reset
		{
		}

		internal static class System_Collections_IEnumerator_get_Current
		{
		}
	}
}
namespace MonoDetour.HookGen
{
	internal static class DefaultMonoDetourManager
	{
		internal static MonoDetourManager Instance { 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(AttributeTargets.Assembly | AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
	internal class MonoDetourTargetsAttribute : Attribute, IMonoDetourTargets
	{
		public Type? TargetType { get; }

		public bool IncludeNestedTypes { get; set; }

		public string[]? Members { get; set; }

		public string[]? MemberNamePrefixes { get; set; }

		public string[]? MemberNameSuffixes { get; set; }

		public bool GenerateControlFlowVariants { get; set; }

		public MonoDetourTargetsAttribute(Type? targetType = null)
		{
			TargetType = targetType;
			IncludeNestedTypes = true;
			base..ctor();
		}
	}
}
namespace BepInEx
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class BepInAutoPluginAttribute : Attribute
	{
		public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace BepInEx.Preloader.Core.Patching
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class PatcherAutoPluginAttribute : Attribute
	{
		public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace Microsoft.CodeAnalysis
{
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace BetterDistanceEstimation
{
	[MonoDetourTargets(typeof(PlayerGolfer))]
	public class PlayerGolferHooks
	{
		[CompilerGenerated]
		private static class <>O
		{
			public static Manipulator <0>__ILHook_CallOurJob;

			public static Func<CalculateFirstGroundHitDistancesJob, int, int, JobHandle, JobHandle> <1>__Schedule;
		}

		[MonoDetourHookInitialize]
		private static void Init()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			object obj = <>O.<0>__ILHook_CallOurJob;
			if (obj == null)
			{
				Manipulator val = ILHook_CallOurJob;
				<>O.<0>__ILHook_CallOurJob = val;
				obj = (object)val;
			}
			_OnBUpdate_g__UpdateHoleDistanceEstimationForOwnBall_176_4.ILHook((Manipulator)obj);
		}

		private static void ILHook_CallOurJob(ILManipulationInfo info)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			ILWeaver w = new ILWeaver(info);
			Instruction start = null;
			TypeReference val2 = default(TypeReference);
			w.MatchRelaxed(new Predicate<Instruction>[6]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 301) && w.SetInstructionTo(ref start, x),
				(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1),
				(Instruction x) => ILPatternMatchingExt.MatchLdloca(x, 15),
				(Instruction x) => ILPatternMatchingExt.MatchInitobj(x, ref val2),
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 15),
				(Instruction x) => ILPatternMatchingExt.MatchCall(x, (MethodBase)new Func<CalculateFirstGroundHitDistancesJob, int, int, JobHandle, JobHandle>(IJobParallelForExtensions.Schedule<CalculateFirstGroundHitDistancesJob>).Method) && w.SetCurrentTo(x)
			}).ThrowIfFailure();
			w.RemoveRangeAndShiftLabels(start, w.Current);
			w.InsertBeforeCurrent((IEnumerable<InstructionOrEnumerable>)new <>z__ReadOnlyArray<InstructionOrEnumerable>((InstructionOrEnumerable[])(object)new InstructionOrEnumerable[2]
			{
				InstructionOrEnumerable.op_Implicit(w.Create(OpCodes.Ldarg, 0)),
				InstructionOrEnumerable.op_Implicit(w.CreateDelegateCall<Func<CalculateFirstGroundHitDistancesJob, PlayerGolfer, JobHandle>>((Func<CalculateFirstGroundHitDistancesJob, PlayerGolfer, JobHandle>)delegate(CalculateFirstGroundHitDistancesJob origJob, PlayerGolfer that)
				{
					//IL_000a: Unknown result type (might be due to invalid IL or missing references)
					//IL_001a: Unknown result type (might be due to invalid IL or missing references)
					//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_0025: Unknown result type (might be due to invalid IL or missing references)
					//IL_0026: Unknown result type (might be due to invalid IL or missing references)
					//IL_0027: 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_003f: Unknown result type (might be due to invalid IL or missing references)
					//IL_0040: Unknown result type (might be due to invalid IL or missing references)
					Vector3 val = ((Component)GolfHoleManager.MainHole).transform.position - ((Component)that.NetworkownBall).transform.position;
					return IJobParallelForExtensions.Schedule<LyricLyFirstGroundHitDistancesJob>(new LyricLyFirstGroundHitDistancesJob(origJob, float3.op_Implicit(val)), 301, 1, default(JobHandle));
				}))
			}));
		}
	}
	[BepInPlugin("com.github.LyricLy.BetterDistanceEstimation", "BetterDistanceEstimation", "0.2.6")]
	public class Plugin : BaseUnityPlugin
	{
		public const string Id = "com.github.LyricLy.BetterDistanceEstimation";

		public static string Name => "BetterDistanceEstimation";

		public static string Version => "0.2.6";

		private void Awake()
		{
			MonoDetourManager.InvokeHookInitializers(Assembly.GetExecutingAssembly());
		}
	}
}
namespace System.Diagnostics.CodeAnalysis
{
	[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class ConstantExpectedAttribute : Attribute
	{
		public object? Min { get; set; }

		public object? Max { get; set; }
	}
	[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class ExperimentalAttribute : Attribute
	{
		public string DiagnosticId { get; }

		public string? UrlFormat { get; set; }

		public ExperimentalAttribute(string diagnosticId)
		{
			DiagnosticId = diagnosticId;
		}
	}
	[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)]
	[ExcludeFromCodeCoverage]
	internal sealed class MemberNotNullAttribute : Attribute
	{
		public string[] Members { get; }

		public MemberNotNullAttribute(string member)
		{
			Members = new string[1] { member };
		}

		public MemberNotNullAttribute(params string[] members)
		{
			Members = members;
		}
	}
	[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)]
	[ExcludeFromCodeCoverage]
	internal sealed class MemberNotNullWhenAttribute : Attribute
	{
		public bool ReturnValue { get; }

		public string[] Members { get; }

		public MemberNotNullWhenAttribute(bool returnValue, string member)
		{
			ReturnValue = returnValue;
			Members = new string[1] { member };
		}

		public MemberNotNullWhenAttribute(bool returnValue, params string[] members)
		{
			ReturnValue = returnValue;
			Members = members;
		}
	}
	[AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class SetsRequiredMembersAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class StringSyntaxAttribute : Attribute
	{
		public const string CompositeFormat = "CompositeFormat";

		public const string DateOnlyFormat = "DateOnlyFormat";

		public const string DateTimeFormat = "DateTimeFormat";

		public const string EnumFormat = "EnumFormat";

		public const string GuidFormat = "GuidFormat";

		public const string Json = "Json";

		public const string NumericFormat = "NumericFormat";

		public const string Regex = "Regex";

		public const string TimeOnlyFormat = "TimeOnlyFormat";

		public const string TimeSpanFormat = "TimeSpanFormat";

		public const string Uri = "Uri";

		public const string Xml = "Xml";

		public string Syntax { get; }

		public object?[] Arguments { get; }

		public StringSyntaxAttribute(string syntax)
		{
			Syntax = syntax;
			Arguments = new object[0];
		}

		public StringSyntaxAttribute(string syntax, params object?[] arguments)
		{
			Syntax = syntax;
			Arguments = arguments;
		}
	}
	[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class UnscopedRefAttribute : Attribute
	{
	}
}
namespace System.Runtime.Versioning
{
	[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class RequiresPreviewFeaturesAttribute : Attribute
	{
		public string? Message { get; }

		public string? Url { get; set; }

		public RequiresPreviewFeaturesAttribute()
		{
		}

		public RequiresPreviewFeaturesAttribute(string? message)
		{
			Message = message;
		}
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
	[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class CallerArgumentExpressionAttribute : Attribute
	{
		public string ParameterName { get; }

		public CallerArgumentExpressionAttribute(string parameterName)
		{
			ParameterName = parameterName;
		}
	}
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class CollectionBuilderAttribute : Attribute
	{
		public Type BuilderType { get; }

		public string MethodName { get; }

		public CollectionBuilderAttribute(Type builderType, string methodName)
		{
			BuilderType = builderType;
			MethodName = methodName;
		}
	}
	[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class CompilerFeatureRequiredAttribute : Attribute
	{
		public const string RefStructs = "RefStructs";

		public const string RequiredMembers = "RequiredMembers";

		public string FeatureName { get; }

		public bool IsOptional { get; set; }

		public CompilerFeatureRequiredAttribute(string featureName)
		{
			FeatureName = featureName;
		}
	}
	[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class InterpolatedStringHandlerArgumentAttribute : Attribute
	{
		public string[] Arguments { get; }

		public InterpolatedStringHandlerArgumentAttribute(string argument)
		{
			Arguments = new string[1] { argument };
		}

		public InterpolatedStringHandlerArgumentAttribute(params string[] arguments)
		{
			Arguments = arguments;
		}
	}
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class InterpolatedStringHandlerAttribute : Attribute
	{
	}
	[EditorBrowsable(EditorBrowsableState.Never)]
	[ExcludeFromCodeCoverage]
	internal static class IsExternalInit
	{
	}
	[AttributeUsage(AttributeTargets.Method, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class ModuleInitializerAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class OverloadResolutionPriorityAttribute : Attribute
	{
		public int Priority { get; }

		public OverloadResolutionPriorityAttribute(int priority)
		{
			Priority = priority;
		}
	}
	[AttributeUsage(AttributeTargets.Parameter, Inherited = true, AllowMultiple = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class ParamCollectionAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class RequiredMemberAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
	[EditorBrowsable(EditorBrowsableState.Never)]
	[ExcludeFromCodeCoverage]
	internal sealed class RequiresLocationAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event | AttributeTargets.Interface, Inherited = false)]
	[ExcludeFromCodeCoverage]
	internal sealed class SkipLocalsInitAttribute : Attribute
	{
	}
}
[CompilerGenerated]
internal sealed class <>z__ReadOnlyArray<T> : IEnumerable, ICollection, IList, IEnumerable<T>, IReadOnlyCollection<T>, IReadOnlyList<T>, ICollection<T>, IList<T>
{
	int ICollection.Count => _items.Length;

	bool ICollection.IsSynchronized => false;

	object ICollection.SyncRoot => this;

	object IList.this[int index]
	{
		get
		{
			return _items[index];
		}
		set
		{
			throw new NotSupportedException();
		}
	}

	bool IList.IsFixedSize => true;

	bool IList.IsReadOnly => true;

	int IReadOnlyCollection<T>.Count => _items.Length;

	T IReadOnlyList<T>.this[int index] => _items[index];

	int ICollection<T>.Count => _items.Length;

	bool ICollection<T>.IsReadOnly => true;

	T IList<T>.this[int index]
	{
		get
		{
			return _items[index];
		}
		set
		{
			throw new NotSupportedException();
		}
	}

	public <>z__ReadOnlyArray(T[] items)
	{
		_items = items;
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		return ((IEnumerable)_items).GetEnumerator();
	}

	void ICollection.CopyTo(Array array, int index)
	{
		((ICollection)_items).CopyTo(array, index);
	}

	int IList.Add(object value)
	{
		throw new NotSupportedException();
	}

	void IList.Clear()
	{
		throw new NotSupportedException();
	}

	bool IList.Contains(object value)
	{
		return ((IList)_items).Contains(value);
	}

	int IList.IndexOf(object value)
	{
		return ((IList)_items).IndexOf(value);
	}

	void IList.Insert(int index, object value)
	{
		throw new NotSupportedException();
	}

	void IList.Remove(object value)
	{
		throw new NotSupportedException();
	}

	void IList.RemoveAt(int index)
	{
		throw new NotSupportedException();
	}

	IEnumerator<T> IEnumerable<T>.GetEnumerator()
	{
		return ((IEnumerable<T>)_items).GetEnumerator();
	}

	void ICollection<T>.Add(T item)
	{
		throw new NotSupportedException();
	}

	void ICollection<T>.Clear()
	{
		throw new NotSupportedException();
	}

	bool ICollection<T>.Contains(T item)
	{
		return ((ICollection<T>)_items).Contains(item);
	}

	void ICollection<T>.CopyTo(T[] array, int arrayIndex)
	{
		((ICollection<T>)_items).CopyTo(array, arrayIndex);
	}

	bool ICollection<T>.Remove(T item)
	{
		throw new NotSupportedException();
	}

	int IList<T>.IndexOf(T item)
	{
		return ((IList<T>)_items).IndexOf(item);
	}

	void IList<T>.Insert(int index, T item)
	{
		throw new NotSupportedException();
	}

	void IList<T>.RemoveAt(int index)
	{
		throw new NotSupportedException();
	}
}