Roblox/luau_corpus huggingface dataset:
--
-- Verify that everything is where it should be
    assert(Self:FindFirstChild'Humanoid' ~= nil, 'Monster does not have a humanoid')
    assert(Settings ~= nil, 'Monster does not have a Configurations object')
	assert(Settings:FindFirstChild'MaximumDetectionDistance' ~= nil and Settings.MaximumDetectionDistance:IsA'NumberValue', 'Monster does not have a MaximumDetectionDistance (NumberValue) setting')
	assert(Settings:FindFirstChild'CanGiveUp' ~= nil and Settings.CanGiveUp:IsA'BoolValue', 'Monster does not have a CanGiveUp (BoolValue) setting')
	assert(Settings:FindFirstChild'CanRespawn' ~= nil and Settings.CanRespawn:IsA'BoolValue', 'Monster does not have a CanRespawn (BoolValue) setting')
	assert(Settings:FindFirstChild'SpawnPoint' ~= nil and Settings.SpawnPoint:IsA'Vector3Value', 'Monster does not have a SpawnPoint (Vector3Value) setting')
	assert(Settings:FindFirstChild'AutoDetectSpawnPoint' ~= nil and Settings.AutoDetectSpawnPoint:IsA'BoolValue', 'Monster does not have a AutoDetectSpawnPoint (BoolValue) setting')
	assert(Settings:FindFirstChild'FriendlyTeam' ~= nil and Settings.FriendlyTeam:IsA'BrickColorValue', 'Monster does not have a FriendlyTeam (BrickColorValue) setting')
	assert(Settings:FindFirstChild'AttackDamage' ~= nil and Settings.AttackDamage:IsA'NumberValue', 'Monster does not have a AttackDamage (NumberValue) setting')
	assert(Settings:FindFirstChild'AttackFrequency' ~= nil and Settings.AttackFrequency:IsA'NumberValue', 'Monster does not have a AttackFrequency (NumberValue) setting')
	assert(Settings:FindFirstChild'AttackRange' ~= nil and Settings.AttackRange:IsA'NumberValue', 'Monster does not have a AttackRange (NumberValue) setting')
    assert(Mind ~= nil, 'Monster does not have a Mind object')
	assert(Mind:FindFirstChild'CurrentTargetHumanoid' ~= nil and Mind.CurrentTargetHumanoid:IsA'ObjectValue', 'Monster does not have a CurrentTargetHumanoid (ObjectValue) mind setting')
assert(script:FindFirstChild'Attack' and script.Attack:IsA'Animation', 'Monster does not have a MonsterScript.Attack Animation')
--// DON'T EDIT BELOW

local target = plr.Character.HumanoidRootPart

local vel,pvel = script.Parent.Vel , script.Parent.PVel

local sensitivity = Vector3.new(sens,sens,sens)

local slurAngle = 0
local previousDesiredAngle = 0
local spinSpeed = 1 --ratio per second
local rotationOffset = -90 --in degrees
rotationOffset = math.rad(rotationOffset)

function Rotate()
	local vec = target.CFrame.lookVector
	local desiredAngle = math.atan2(vec.z, vec.x)
	if desiredAngle < -1.57 and previousDesiredAngle > 1.57 then
		slurAngle = slurAngle - math.pi*2
	elseif desiredAngle > 1.57 and previousDesiredAngle < -1.57 then
		slurAngle = slurAngle + math.pi*2
	end
	slurAngle = slurAngle*(1-spinSpeed) + desiredAngle*spinSpeed
	local a = slurAngle + rotationOffset
	previousDesiredAngle = desiredAngle
	script.Parent.F.Rotation = -math.deg(a)
end
while true do
	vel.Value = target.Velocity
	wait() --REQUIRED while loop
	pvel.Value = vel.Value
	vel.Value = target.Velocity
	
	local diff = script.Parent.Diff
	diff.Value = ((pvel.Value-vel.Value) * sensitivity)
	
	local xz = ((diff.Value.X)/20)
	xz = math.min(xz,.5) xz = math.max(xz,-.5)
	
	local yz = ((diff.Value.Z)/20)
	yz = math.min(yz,.5) yz = math.max(yz,-.5)
	Rotate()
	script.Parent.F.Dot.Position = UDim2.new(-xz+.5,-8,(-yz)+.5,-8)
	
	local mag = Vector2.new(diff.Value.X/2,diff.Value.Z/2).Magnitude
	if mag < min then mag = 0 end
	script.Parent.TL.Text = math.floor(math.min(mag,max)*100)/100 .. " G"
end
--------------------[ MATH FUNCTIONS ]------------------------------------------------

function NumLerp(A, B, Alpha)
	return (A + ((B - A) * Alpha))
end

function RAND(Min, Max, Accuracy)
	local Inverse = 1 / (Accuracy or 1)
	return (math.random(Min * Inverse, Max * Inverse) / Inverse)
end
-- ROBLOX TODO: import correct types
type AssymetricMatcherInterface = any
type MatcherState = Types.MatcherState
local Utils = require(CurrentModule.utils)
local iterableEquality = Utils.iterableEquality
local subsetEquality = Utils.subsetEquality
-- when player is added
game.Players.PlayerAdded:Connect( function(Player)
	Player.CharacterAdded:Connect( function(Char)
		-- get character geometry 
		for _,part in pairs(Char:GetChildren()) do
			if( part:IsA("BasePart") or part:IsA("MeshPart")) then
				-- set collision group
				PhysicsService:SetPartCollisionGroup(part,"Player")
			end
		end
	end)
end)
--[[*
 * Compile a regular expression from the `state` object returned by the
 * [parse()](#parse) method.
 *
 * @param {Object} `state`
 * @param {Object} `options`
 * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.
 * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.
 * @return {RegExp}
 * @api public
 ]]

picomatch.compileRe = function(state: Object, options: Object?, returnOutput_: boolean?, returnState_: boolean?): RegExp
	local returnOutput = returnOutput_ or false
	local returnState = returnState_ or false

	if returnOutput == true then
		return state.output
	end

	local opts: Object = options or {}
	local prepend = if Boolean.toJSBoolean(opts.contains) then "" else "^"
	local append = if Boolean.toJSBoolean(opts.contains) then "" else "$"

	local source = ("%s(?:%s)%s"):format(prepend, tostring(state.output), append)
	if typeof(state) == "table" and state.negated == true then
		source = ("^(?!%s).*$"):format(source)
	end

	local regex = picomatch.toRegex(source, options)
	if returnState == true then
		regex.state = state
	end

	return regex
end
-- Dependencies
local WeaponData = script.Parent:WaitForChild("WeaponData")
local WeaponsSystemFolder = script.Parent
local WeaponTypes = WeaponsSystemFolder:WaitForChild("WeaponTypes")
local Libraries = WeaponsSystemFolder:WaitForChild("Libraries")
local ShoulderCamera = require(Libraries:WaitForChild("ShoulderCamera"))
local WeaponsGui = require(Libraries:WaitForChild("WeaponsGui"))
local SpringService = require(Libraries:WaitForChild("SpringService"))
local ancestorHasTag = require(Libraries:WaitForChild("ancestorHasTag"))
ShoulderCamera.SpringService = SpringService

local Configuration = WeaponsSystemFolder:WaitForChild("Configuration")
local ConfigurationValues = {
	SprintEnabled = Configuration:WaitForChild("SprintEnabled"),
	SlowZoomWalkEnabled = Configuration:WaitForChild("SlowZoomWalkEnabled"),
}

local WEAPON_TAG = "WeaponsSystemWeapon"
local WEAPON_TYPES_LOOKUP = {}

local REMOTE_EVENT_NAMES = {
	"WeaponFired",
	"WeaponHit",
	"WeaponReloadRequest",
	"WeaponReloaded",
	"WeaponReloadCanceled",
	"WeaponActivated"
}
local REMOTE_FUNCTION_NAMES = {}
--[[
	State
]]

local startPosition = maid.instance.PrimaryPart.Position
--[[Wheel Alignment]]
	--[Don't physically apply alignment to wheels]
	--[Values are in degrees]
	Tune.FCamber		= -15
	Tune.RCamber		= -15
	Tune.FToe			= 0
	Tune.RToe			= 0
-----------------
--| Constants |--
-----------------

local BLAST_RADIUS = 50 -- Blast radius of the explosion
local BLAST_DAMAGE = 125 -- Amount of damage done to players
local BLAST_FORCE = 0 -- Amount of force applied to parts

local IGNORE_LIST = {rocket = 1, handle = 1, effect = 1, water = 1} -- Rocket will fly through things named these
--Sam
wait (1)
local larm=script.Parent:FindFirstChild("Left Arm")
local rarm=script.Parent:FindFirstChild("Right Arm")
local head=script.Parent:FindFirstChild("Head")

local health=8000 ---zombies health
local speed=14 --zombies walkspeed

local a = 0
function findNearestTorso(pos) --thanks miked for this function <3
	local list = game.Workspace:children()
	local torso = nil
	local dist = script.Range.Value
	local temp = nil
	local human = nil
	local temp2 = nil
	for x = 1, #list do
		temp2 = list[x]
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
			temp = temp2:findFirstChild("Torso")
			human = temp2:findFirstChild("Humanoid")
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0) then
				if (temp.Position - pos).magnitude < dist then
					torso = temp
					dist = (temp.Position - pos).magnitude
					a = a + 1
					if dist <= 3 and a == 10 then
						script.Parent.Torso["Right Shoulder"].MaxVelocity = 100000  ---attack anim <3
						script.Parent.Torso["Left Shoulder"].MaxVelocity = 100000
						script.Parent.Torso["Right Shoulder"].DesiredAngle = math.pi / 4 * 3
						script.Parent.Torso["Left Shoulder"].DesiredAngle = math.pi / 4 * -3
						script.Parent.Torso["Right Shoulder"].CurrentAngle = math.pi / 4 * 3
						script.Parent.Torso["Left Shoulder"].CurrentAngle = math.pi / 4 * -3
						wait()
						script.Parent.Torso["Right Shoulder"].MaxVelocity = 0.15
						script.Parent.Torso["Left Shoulder"].MaxVelocity = 0.15
					end
					if a == 10 then
					a = 0
					end
				end
			end
		end
	end
	return torso
end

function Hit(hit)
local human = hit.Parent:FindFirstChild("Humanoid")
if human and script.Parent.Zombie.Health>0 then
human.Health= human.Health-script.Damage.Value
end
end
larm.Touched:connect(Hit)
rarm.Touched:connect(Hit)
head.Touched:connect(Hit)

Spawn(function()
while wait(0.5) do
local target = findNearestTorso(script.Parent.Torso.Position)
if target then
script.Parent.Zombie:MoveTo(target.Position, target)
end
end
end)

script.Parent.Zombie.MaxHealth=health
script.Parent.Zombie.Health=script.Parent.Zombie.MaxHealth
script.Parent.Zombie.WalkSpeed=speed


script.Parent.Zombie.Died:connect(function()
--[=[
	@param instance Instance
	@return RBXScriptConnection
	Attaches the trove to a Roblox instance. Once this
	instance is removed from the game (parent or ancestor's
	parent set to `nil`), the trove will automatically
	clean up.

	:::caution
	Will throw an error if `instance` is not a descendant
	of the game hierarchy.
	:::
]=]
function Trove:AttachToInstance(instance: Instance)
	if self._cleaning then
		error("Cannot call trove:AttachToInstance() while cleaning", 2)
	elseif not instance:IsDescendantOf(game) then
		error("Instance is not a descendant of the game hierarchy", 2)
	end
	return self:Connect(instance.Destroying, function()
		self:Destroy()
	end)
end
--[[
	CameraUtils - Math utility functions shared by multiple camera scripts
	2018 Camera Update - AllYourBlox
--]]

local CameraUtils = {}

local FFlagUserCameraToggle do
	local success, result = pcall(function()
		return UserSettings():IsUserFeatureEnabled("UserCameraToggle")
	end)
	FFlagUserCameraToggle = success and result
end

local function round(num)
	return math.floor(num + 0.5)
end
--	====================
--	MINIGUN
--	Make a gun delay before/after firing
--	====================

		MinigunEnabled = false;
		DelayBeforeFiring = 1;
		DelayAfterFiring = 1;
--[[ Local Functions ]]--
function MouseLockController:OnMouseLockToggled()
	self.isMouseLocked = not self.isMouseLocked

	if self.isMouseLocked then
		local cursorImageValueObj: StringValue = script:FindFirstChild("CursorImage") :: StringValue
		if cursorImageValueObj and cursorImageValueObj:IsA("StringValue") and cursorImageValueObj.Value then
			self.savedMouseCursor = Mouse.Icon
			Mouse.Icon = cursorImageValueObj.Value
		else
			if cursorImageValueObj then
				cursorImageValueObj:Destroy()
			end
			cursorImageValueObj = Instance.new("StringValue")
			cursorImageValueObj.Name = "CursorImage"
			cursorImageValueObj.Value = DEFAULT_MOUSE_LOCK_CURSOR
			cursorImageValueObj.Parent = script
			self.savedMouseCursor = Mouse.Icon
			Mouse.Icon = DEFAULT_MOUSE_LOCK_CURSOR
		end
	else
		if self.savedMouseCursor then
			Mouse.Icon = self.savedMouseCursor
			self.savedMouseCursor = nil
		end
	end

	self.mouseLockToggledEvent:Fire()
end

function MouseLockController:DoMouseLockSwitch(name, state, input)
	if state == Enum.UserInputState.Begin then
		self:OnMouseLockToggled()
		return Enum.ContextActionResult.Sink
	end
	return Enum.ContextActionResult.Pass
end

function MouseLockController:BindContextActions()
	ContextActionService:BindActionAtPriority(CONTEXT_ACTION_NAME, function(name, state, input)
		return self:DoMouseLockSwitch(name, state, input)
	end, false, MOUSELOCK_ACTION_PRIORITY, unpack(self.boundKeys))
end

function MouseLockController:UnbindContextActions()
	ContextActionService:UnbindAction(CONTEXT_ACTION_NAME)
end

function MouseLockController:IsMouseLocked(): boolean
	return self.enabled and self.isMouseLocked
end

function MouseLockController:EnableMouseLock(enable: boolean)
	if enable ~= self.enabled then

		self.enabled = enable

		if self.enabled then
			-- Enabling the mode
			self:BindContextActions()
		else
			-- Disabling
			-- Restore mouse cursor
			if Mouse.Icon~="" then
				Mouse.Icon = ""
			end

			self:UnbindContextActions()

			-- If the mode is disabled while being used, fire the event to toggle it off
			if self.isMouseLocked then
				self.mouseLockToggledEvent:Fire()
			end

			self.isMouseLocked = false
		end

	end
end

return MouseLockController
--// All global vars will be wiped/replaced except script
--// All guis are autonamed client.Variables.CodeName..gui.Name

return function(data)
	local gui = client.UI.Prepare(script.Parent.Parent)
	local ques = gui.Frame.Main.Question
	local yes = gui.Frame.Main.Yes
	local no = gui.Frame.Main.No
	
	local question = data.Question
	local gTable = data.gTable
	local ans
	
	ques.Text = question
	
	yes.MouseButton1Click:connect(function()
		ans = "Yes"
		gui:Destroy()
	end)
	
	no.MouseButton1Click:connect(function()
		ans = "No"
		gui:Destroy()
	end)
	
	gTable:Ready()
	repeat wait(0.1) until ans
	return ans
end
-- Made by Crozur
script.Parent.BillboardGui.Enabled = false

game.Players.PlayerAdded:Connect(function(plr)
	if plr.Name == ("NAME HERE") then -- Insert your name in between the ""
		wait(3) -- waits just in case player isn't loaded
		script.Parent.BillboardGui.Enabled = true -- makes it visible
		script.Parent.BillboardGui.Parent = plr.Character.Head -- Puts the title above your head, you can change the offset under BillboardGui.StudsOffset
	end
end)
-- Checks if the player is new, otherwise will populate with saved data
Players.PlayerAdded:Connect(function(player)
	local data
	local success = pcall(function()
		data = AllPlayers:GetAsync(player.UserId)
	end)

	if success then
		local status = ""

		if not data then
			AllPlayers:SetAsync(player.UserId, true)
		else
			status = Statuses:GetAsync(player.UserId)
		end

		player:SetAttribute("status", status)
	end
end)
--[[
local ss = script.Sound:Clone()
ss.Parent = Cha.Torso
ss.Pitch = math.random(11, 13)/10
ss:Play()]]--
Torso = Cha.Torso
coroutine.resume(coroutine.create(function()
local direction = Instance.new("BodyGyro", Cha.Torso)
direction.maxTorque = Vector3.new(math.huge, math.huge, math.huge)
direction.cframe = CFrame.new(Cha.Torso.Position, mouse.Hit.p)
repeat wait()
if Cha.Torso:FindFirstChild("BodyGyro") then
direction.cframe = CFrame.new(Cha.Torso.Position, mouse.Hit.p)*CFrame.Angles(math.rad(-90),0,0)
Cha.Torso.Velocity = (direction.cframe*CFrame.Angles(math.rad(90),0,0)).lookVector.unit * 50
end
until db == false
end))
wait(15)
FlyOff()
end
-- given an Instance and a property-value table subset
-- returns true if all property-values in the subset table exist in the Instance
-- and returns false otherwise
-- returns nil for undefined behavior
local function instanceSubsetEquality(instance: any, subset: any): boolean | nil
	local function subsetEqualityWithContext(seenReferences)
		return function(localInstance, localSubset)
			seenReferences = seenReferences or {}

			if getType(localInstance) ~= "Instance" or not isObjectWithKeys(localSubset) then
				return nil
			end

			local instanceProperties = getRobloxProperties(localInstance.ClassName)
			local instanceChildren = {}
			for _, v in ipairs(localInstance:getChildren()) do
				instanceChildren[v.Name] = true
			end

			return Array.every(Object.keys(localSubset), function(prop)
				local subsetVal = localSubset[prop]
				if isObjectWithKeys(subsetVal) then
					-- return false for circular references
					if seenReferences[subsetVal] then
						return false
					end
					seenReferences[subsetVal] = true
				end
				local result = localInstance ~= nil
					and (table.find(instanceProperties, prop) ~= nil or instanceChildren[prop] ~= nil)
					and equals(localInstance[prop], subsetVal, { subsetEqualityWithContext(seenReferences) })

				seenReferences[subsetVal] = nil
				return result
			end)
		end
	end

	local inner = subsetEqualityWithContext()

	if inner then
		return inner(instance, subset)
	end
	return inner
end
-- # CODE BELOW # --
-- ^    Do not change anything else

local GoreFolder = game.ReplicatedStorage["Gore by Leveled Development"];
local Core = require(GoreFolder.Modules.Core);

local Character = script.Parent.Parent;
local Humanoid = Character:WaitForChild("Humanoid");

Humanoid.BreakJointsOnDeath = false;
Humanoid.Died:Connect(function()
	Core.Ragdoll("", Character);
end);
--[[
	[Horizontal and Vertical limits for head and body tracking.]
	[Setting to 0 negates tracking, setting to 1 is normal tracking, and setting to anything higher than 1 goes past real life head/body rotation capabilities.]
--]]
local HeadHorFactor = 1
local HeadVertFactor = 1
local BodyHorFactor = 1.5
local BodyVertFactor = 1.4
----- lock -----

lockInteractive.ClickDetector.MouseClick:Connect(function()
	if not doorOpen and not changingState then
		changingState = true
		if doorLocked then
			doorLocked = false
			interactive.ClickDetector.MaxActivationDistance = 12
			for i = 1, 5 do
				lock.CFrame = lock.CFrame * CFrame.new(0,0.02,0)
				handle.CFrame = handle.CFrame * CFrame.Angles(math.rad(-18),0,0)
				wait()
			end
		else
			doorLocked = true
			interactive.ClickDetector.MaxActivationDistance = 0
			for i = 1, 5 do
				lock.CFrame = lock.CFrame * CFrame.new(0,-0.02,0)
				handle.CFrame = handle.CFrame * CFrame.Angles(math.rad(18),0,0)
				wait()
			end
		end
		changingState = false
	end
end)
--[[
	Logging
]]

Log.Warn.testing("Starting client log pump")

spawn(function()
	while true do
		Log.ProcessQueue()
		wait(1)
	end
end)
--////////////////////////////// Methods
--//////////////////////////////////////
local methods = {}
methods.__index = methods

function methods:SendMessage(message, toChannel)
	self.SayMessageRequest:FireServer(message, toChannel)
end

function methods:RegisterSayMessageFunction(func)
	self.SayMessageRequest = func
end
---------------
--// Code
---------------
while true do
	script.Parent.Middle:PivotTo(pos)
	local tween = TweenService:Create(script.Parent.Middle, TweenInfo.new(600), {["CFrame"] = script.Parent.Target.CFrame})
	tween:Play()
	tween.Completed:Wait()
	task.wait(1)
end
-- ROBLOX deviation: static definition for StackTraceConfig
export type StackTraceConfig = {
	rootDir: string,
	testMatch: Array<string>,
}

export type StackTraceOptions = { noStackTrace: boolean, noCodeFrame: boolean? }
--[[
	Change is used to generate special prop keys that can be used to connect to
	GetPropertyChangedSignal.

	Generally, Change is indexed by a Roblox property name:

		Roact.createElement("TextBox", {
			[Roact.Change.Text] = function(rbx)
				print("The TextBox", rbx, "changed text to", rbx.Text)
			end,
		})
]]

local Type = require(script.Parent.Parent.Type)

local Change = {}

local changeMetatable = {
	__tostring = function(self)
		return ("RoactHostChangeEvent(%s)"):format(self.name)
	end,
}

setmetatable(Change, {
	__index = function(_self, propertyName)
		local changeListener = {
			[Type] = Type.HostChangeEvent,
			name = propertyName,
		}

		setmetatable(changeListener, changeMetatable)
		Change[propertyName] = changeListener

		return changeListener
	end,
})

return Change
--// Modules
local SettingsS = Seat.Parent.Parent.Settings
	local Settings = require(SettingsS)

local ExplosiveMissileScript = script.SubScripts.ExplosiveMissile
local SmokeMissileScript = script.SubScripts.SmokeMissile
local HeatMissileScript = script.SubScripts.HeatMissile
-- camera settings
player.CameraMaxZoomDistance = 0.5 -- force first person
camera.FieldOfView = 100
humanoid.CameraOffset = Vector3.new(0, 0, -1)
--(FL.RotVelocity.Magnitude+FR.RotVelocity.Magnitude+RL.RotVelocity.Magnitude+RR.RotVelocity.Magnitude+(speed/1.33034))/5

while wait() do
speed = carSeat.Velocity.Magnitude
power = 0
average = 10*((carSeat.Storage.BrakeBias.Value/100))
track = carSeat.Velocity.Unit*carSeat.CFrame.lookVector
	slipDetection = track.X+track.Z
	
	Right = (carSeat.Parent.Parent.Wheels.RR.Wheel.Velocity.Magnitude+carSeat.Parent.Parent.Wheels.FR.Wheel.Velocity.Magnitude)/2
	Left = (carSeat.Parent.Parent.Wheels.RL.Wheel.Velocity.Magnitude+carSeat.Parent.Parent.Wheels.FL.Wheel.Velocity.Magnitude)/2
	
	if Right > Left then
	left = true
	else
		left = false
	end
	
if script.OVERRIDE.Value == false then
if carSeat.Storage.ASC.Value == true then
	if carSeat.Steer ~= 0 then
		if slipDetection > 0.999 and left == true then
			script.Toggle.Value = true
		else
			script.Toggle.Value = false
		end
	else
		script.Toggle.Value = false
	end
end

if carSeat.Storage.Handbrake.Value == true then
	RLBRAKE.CanCollide = true
	RLBRAKEU.CanCollide = true
else
	if speed > 0 then
		if script.Parent.Parent.Storage.Brake.Value ~= 0 or script.Toggle.Value == true then
				if RL.RotVelocity.Magnitude + power > average then
					script.Read.Value = true
					RLBRAKE.CanCollide = true
					RLBRAKEU.CanCollide = true --print("RL")

				elseif RL.RotVelocity.Magnitude + power < average then
					 RLBRAKE.CanCollide = false script.Read.Value = false
					 RLBRAKEU.CanCollide = false	
			end
			
		elseif script.Parent.Parent.Storage.Brake.Value == 0 and script.Toggle.Value == false then
			script.Read.Value = false
			RLBRAKE.CanCollide = false
			RLBRAKEU.CanCollide = false
		end
	end
end
else
	RLBRAKE.CanCollide = true
	RLBRAKEU.CanCollide = true
	end
end
--[[[Default Controls]]
	--Peripheral Deadzones
	Tune.Peripherals = {
		MSteerWidth				= 67		,	-- Mouse steering control width	(0 - 100% of screen width)
		MSteerDZone				= 10		,	-- Mouse steering deadzone (0 - 100%)
		
		ControlLDZone			= 5			,	-- Controller steering L-deadzone (0 - 100%)
		ControlRDZone			= 5			,	-- Controller steering R-deadzone (0 - 100%)
	}
	
	--Control Mapping
	Tune.Controls = {
		
	--Keyboard Controls
		--Mode Toggles
		ToggleTransMode			= Enum.KeyCode.M					,
		--Primary Controls
		Throttle				= Enum.KeyCode.Up					,
		Brake					= Enum.KeyCode.Down					,
		SteerLeft				= Enum.KeyCode.Left					,
		SteerRight				= Enum.KeyCode.Right				,
		
		--Secondary Controls
		Throttle2				= Enum.KeyCode.W					,
		Brake2					= Enum.KeyCode.S					,
		SteerLeft2				= Enum.KeyCode.A					,
		SteerRight2				= Enum.KeyCode.D					,
		
		--Manual Transmission
		ShiftUp					= Enum.KeyCode.E					,
		ShiftDown				= Enum.KeyCode.Q					,
		Clutch					= Enum.KeyCode.LeftShift			,
		
		--Handbrake
		PBrake					= Enum.KeyCode.P					,
		
	--Mouse Controls
		MouseThrottle			= Enum.UserInputType.MouseButton1	,
		MouseBrake				= Enum.UserInputType.MouseButton2	,
		MouseClutch				= Enum.KeyCode.W					,
		MouseShiftUp			= Enum.KeyCode.E					,
		MouseShiftDown			= Enum.KeyCode.Q					,
		MousePBrake				= Enum.KeyCode.LeftShift			,
		
	--Controller Mapping
		ContlrThrottle			= Enum.KeyCode.ButtonR2				,
		ContlrBrake				= Enum.KeyCode.ButtonL2				,
		ContlrSteer				= Enum.KeyCode.Thumbstick1			,
		ContlrShiftUp			= Enum.KeyCode.ButtonY				,
		ContlrShiftDown			= Enum.KeyCode.ButtonX				,
		ContlrClutch			= Enum.KeyCode.ButtonR1				,
		ContlrPBrake			= Enum.KeyCode.ButtonL1				,
		ContlrToggleTMode		= Enum.KeyCode.DPadUp				,
		ContlrToggleTCS			= Enum.KeyCode.DPadDown				,
		ContlrToggleABS			= Enum.KeyCode.DPadRight			,
	}
------------------------------------------------------------------------
-- saves the given character into the token buffer
-- * buffer handling code removed, not used in this implementation
-- * test for maximum token buffer length not used, makes things faster
------------------------------------------------------------------------

function luaX:save(ls, c)
  local buff = ls.buff
  -- if you want to use this, please uncomment luaX.MAX_SIZET further up
  --if #buff > self.MAX_SIZET then
  --  self:lexerror(ls, "lexical element too long")
  --end
  ls.buff = buff..c
end
--[=[
	Fired when the catalog view is closed.

	@prop catalogViewClosed RBXScriptSignal
	@within MerchBooth
	@client
]=]
uiStatesEvents.catalogViewClosed = Instance.new("BindableEvent")