Pinkstack/roblox-luau-corpus-text huggingface dataset:
-- Feel free to use however you want
-- Credit is appreciated but not necessary 




return function(SlotsFolder,overflowCollapse)
	
	overflowCollapse = overflowCollapse or true
	
	-- Define some values
	local UserInputService = game:GetService("UserInputService")
	local Players = game:GetService('Players')
	local Player = Players.LocalPlayer
	local EquippedVal = Instance.new('ObjectValue')
	EquippedVal.Name = 'Equipped'
	if not Player.Character then -- Ensure the charater has loaded
		Player.CharacterAdded:Wait()
	end	
	local Char = Player.Character
	local Backpack = Player:FindFirstChildOfClass('Backpack')
	
	
	local function getSlotFromTool(tool)
		for i,v in pairs(SlotsFolder:GetChildren()) do
			if v.Value == tool then
				return v
			end
		end
		return false
	end
	
	-- returns every tool the user owns
	local function getAllTools()
		local tools = {}
		for i,v in pairs(Backpack:GetChildren()) do
			if v:IsA('Tool') then
				table.insert(tools,v)
			end
		end
		for i,v in pairs(Char:GetChildren()) do
			if v:IsA('Tool') then
				table.insert(tools,v)
			end
		end
		return tools
	end
	
	-- returns tools not being displayed
	local function getOverflowedTools()
		local tools = {}
		for i,v in pairs(getAllTools()) do
			if not getSlotFromTool(v) then
				table.insert(tools,v)
			end
		end
		return tools
	end
	
	-- Removes tool from the slots folder's records
	local function removeToolFromSlots(tool)
		for i,v in pairs(SlotsFolder:GetChildren()) do
			if v.Value == tool then
				v.Value = nil
				if overflowCollapse then
					for i,v in pairs(getOverflowedTools()) do
						v.Parent = script
						v.Parent = Backpack
					end
				end
				return true
			end
		end
		return false
	end
	
	-- Returns true if tool is assigned to a slot
	local function checkIfToolInSlots(tool)
		for i,v in pairs(SlotsFolder:GetChildren()) do
			if v.Value == tool then
				return true
			end
		end
		return false
	end
	
	-- Adds tool to slots folder's records
	local function addToolToSlots(tool)
		if not tool:IsA('Tool') then -- failsafe
			return nil
		end
		if checkIfToolInSlots(tool) then -- prevents resorting
			return true
		end
		-- If user drops tool, remove from slots folder's records
		tool.AncestryChanged:Connect(function()
			if (tool.Parent ~= Char) and (tool.Parent ~= Backpack) then
				removeToolFromSlots(tool)
			end
		end)
		for i,v in pairs(SlotsFolder:GetChildren()) do
			if v.Value == nil then
				v.Value = tool
				if tool.Parent == Char then
					EquippedVal.Value = v
				end
				return true
			end
		end
		return false
	end
	
	-- Make sure stuff inside backpack gets added to slots folder
	for i,v in pairs(Backpack:GetChildren()) do
		addToolToSlots(v)
	end
	Backpack.ChildAdded:Connect(addToolToSlots)
	
	-- Make sure stuff inside character gets added to slots folder
	for i,v in pairs(Char:GetChildren()) do
		addToolToSlots(v)
	end
	Char.ChildAdded:Connect(addToolToSlots)
	
	-- Equips given tool or unequips everything if given nil
	local function equip(tool)
--[[**
	ensures value matches string pattern

	@param string pattern to check against

	@returns A function that will return true iff the condition is passed
**--]]


function t.match(pattern)
	assert(t.string(pattern))
	return function(value)
		local stringSuccess, stringErrMsg = t.string(value)
		if not stringSuccess then
			return false, stringErrMsg
		end

		if string.match(value, pattern) == nil then
			return false, string.format("%q failed to match pattern %q", value, pattern)
		end

		return true
	end
end
---RandFade SCRIPT, DO NOT EDIT!---







for i,v in pairs(game.workspace.PLights:GetChildren()) do

	spawn(function()
		while true do
			wait(math.random())
v.Body.Head.Lens.Transparency = 0.2
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 5
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.2))
wait(.05)
v.Body.Head.Lens.Transparency = 0.3
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 4
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.3))
wait(.05)
v.Body.Head.Lens.Transparency = 0.4
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 3
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.4))
wait(.05)
v.Body.Head.Lens.Transparency = 0.5
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 3
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.5))
wait(.05)
v.Body.Head.Lens.Transparency = 0.6
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 2
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.6))
wait(.05)
v.Body.Head.Lens.Transparency = 0.7
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 2
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.7))
wait(.05)
v.Body.Head.Lens.Transparency = 0.8
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 1
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.8))
wait(.05)
v.Body.Head.Lens.Transparency = 0.9
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 1
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(0.9))
wait(.05)
v.Body.Head.Lens.Transparency = 1
v.Body.Head.Lens.SurfaceLgt.PointLight.Brightness = 0
v.Body.Head.Lens.Beam.Transparency = (NumberSequence.new(1))
			
			

		end
	end)
end
------------------------------------------------------------------------------------



local item = game.Lighting:findFirstChild(tostring(itemname))
local trigger = script.Parent

enabled = true

function onClick(plyr)

	if plyr.Backpack:findFirstChild(tostring(itemname)) == nil and enabled == true then

		enabled = false

		trigger.BrickColor = BrickColor.new("Black")

		local itemclone = item:clone()
		itemclone.Parent = plyr.Backpack
		
		wait(9)

		enabled = true
		trigger.BrickColor = BrickColor.new("Black")

	end
end

script.Parent.ClickDetector.MouseClick:connect(onClick)
-- definimos la posicion inicial


musicGui.Position = UDim2.new(2,0,0.69,0)

function showMusic(gui, name)
	gui.Text = name -- aqui mostramos el nombre de la cancion
	
	gui:TweenPosition(UDim2.new(0.818,0,0.69,0),
		Enum.EasingDirection.In,
		Enum.EasingStyle.Linear,
		1,
		true
	)
	
	delay(5, function()
		gui:TweenPosition(UDim2.new(2,0,0.69,0),
			Enum.EasingDirection.In,
			Enum.EasingStyle.Linear,
			1,
			true
		)		
	end)
end
-- Recusively parses folders only and makes a table tree.
---@param rootFolder instance
---@param data table


function Database._Parse_R(dataRoot,rootFolder,data,_id)
	
	_id = _id and _id or 0
	local initialTable = {}
	
	-- Ignore the first folder which is our root
	if _id > 0 then
		initialTable = { ["id"] = _id + 1 }
		dataRoot[rootFolder.name] = initialTable -- Store by Name
	end

    -- Store attributes
    local attributes = rootFolder:GetAttributes()
    for name, value in pairs(attributes) do
		initialTable[name] = value
	end

    -- Recursively parse every child that is a folder
    for _, child in ipairs(rootFolder:GetChildren()) do
        -- Recursively parse the folders only
		if child.ClassName == "Folder" then
			_id = _id + 1
			Database._Parse_R(dataRoot,child,initialTable,_id)
        else
            -- If it's not a folder then store it as a reference
			initialTable[child.name] = child
        end
	end
	

end

return Database
--["Walk"] = "rbxassetid://1136173829",


["Walk"] = "http://www.roblox.com/asset/?id=507767714",
["Idle"] = "http://www.roblox.com/asset/?id=507766666",
["SwingTool"] = "rbxassetid://1262318281"
}
local anims = {}
for animName,animId in next,preAnims do
local anim = Instance.new("Animation")
anim.AnimationId = animId
game:GetService("ContentProvider"):PreloadAsync({anim})
anims[animName] = animController:LoadAnimation(anim)
end


local fallConstant = -2
run.Heartbeat:connect(function()
	local part,pos,norm,mat = workspace:FindPartOnRay(Ray.new(root.Position,Vector3.new(0,-2.8,0)),char)
	if target.Value then
	local facingCFrame = CFrame.new(Vector3.new(root.CFrame.X,pos.Y+6.8,root.CFrame.Z),CFrame.new(target.Value.CFrame.X,pos.Y+3,target.Value.CFrame.Z).p)
	bg.CFrame = facingCFrame
	else
	--bg.CFrame = CFrame.new(root.CFrame.X,pos.Y+3,root.CFrame.Z)
	end
	if target.Value then
		bv.P = 100000
		bv.Velocity = root.CFrame.lookVector*14
		if not part then
			bv.Velocity = bv.Velocity+Vector3.new(0,fallConstant,0)
			fallConstant = fallConstant-1
		else
			fallConstant = -2
		end
		if not anims["Walk"].IsPlaying then
		anims["Walk"]:Play()
		end
	else
		bv.P = 0
		bv.Velocity = Vector3.new(0,0,0)
		anims["Walk"]:Stop()
anims["Idle"]:Play()
	end
end)

while wait(1) do
	local thresh,nearest = 120,nil
	for _,player in next,game.Players:GetPlayers() do
		if player.Character and player.Character.PrimaryPart then
			local dist = (player.Character.PrimaryPart.Position-root.Position).magnitude
			if dist < thresh then
				thresh = dist
				nearest = player.Character.PrimaryPart
			end
		end		
	end
	if nearest then
if thresh < 8 then
anims["SwingTool"]:Play()
nearest.Parent.Humanoid:TakeDamage(24)
target.Value = nil
wait(1)
end
		target.Value = nearest
	else
		target.Value = nil
	end
end
--[[
	Constructs a new computed state object, which follows the value of another
	state object using a spring simulation.
]]



local Package = script.Parent.Parent

local Dependencies = require(Package.Dependencies)
local xtypeof = require(Package.ObjectUtility).xtypeof
local unwrap = require(Package.States.unwrap)

local SpringScheduler = require(script.SpringScheduler)
local unpackType = require(script.unpackType)

local parseError = Dependencies.utility.parseError

local class = {}

local CLASS_METATABLE = {__index = class}
local WEAK_KEYS_METATABLE = {__mode = "k"}
------------------------------------------------------------------------



do
	local enabled = false

	local function ToggleFreecam()
		if enabled then
			StopFreecam()
		else
			StartFreecam()
		end
		enabled = not enabled
	end

	local function CheckMacro(macro)
		for i = 1, #macro - 1 do
			if not UserInputService:IsKeyDown(macro[i]) then
				return
			end
		end
		ToggleFreecam()
	end

	local function HandleActivationInput(action, state, input)
		if state == Enum.UserInputState.Begin then
			if input.KeyCode == FREECAM_MACRO_KB[#FREECAM_MACRO_KB] then
				CheckMacro(FREECAM_MACRO_KB)
			end
		end
		return Enum.ContextActionResult.Pass
	end

	ContextActionService:BindActionAtPriority("FreecamToggle", HandleActivationInput, false, TOGGLE_INPUT_PRIORITY, FREECAM_MACRO_KB[#FREECAM_MACRO_KB])
end
-- setup emote chat hook
--[[game:GetService("Players").LocalPlayer.Chatted:connect(function(msg)
	local emote = ""
	if (string.sub(msg, 1, 3) == "/e ") then
		emote = string.sub(msg, 4)
	elseif (string.sub(msg, 1, 7) == "/emote ") then
		emote = string.sub(msg, 8)
	end
	
	if (pose == "Standing" and emoteNames[emote] ~= nil) then
		playAnimation(emote, EMOTE_TRANSITION_TIME, Humanoid)
	end
end)--]]
-- Ego's version



local region = {};

function region.new(cframe, size)
	local self = setmetatable({}, {__index = region});
	
	self.CFrame = cframe;
	self.Planes = {
		{n = cframe:vectorToWorldSpace(Vector3.FromNormalId(Enum.NormalId.Top)), d = -size.y / 2};
		{n = cframe:vectorToWorldSpace(Vector3.FromNormalId(Enum.NormalId.Bottom)), d = -size.y / 2};
		{n = cframe:vectorToWorldSpace(Vector3.FromNormalId(Enum.NormalId.Left)), d = -size.x / 2};
		{n = cframe:vectorToWorldSpace(Vector3.FromNormalId(Enum.NormalId.Right)), d = -size.x / 2};
		{n = cframe:vectorToWorldSpace(Vector3.FromNormalId(Enum.NormalId.Front)), d = -size.z / 2};
		{n = cframe:vectorToWorldSpace(Vector3.FromNormalId(Enum.NormalId.Back)), d = -size.z / 2};
	};
	
	return self;
end;

function getCorners(part)
	local size, corners = part.Size / 2, {};
	for x = -1, 1, 2 do
		for y = -1, 1, 2 do
			for z = -1, 1, 2 do
				table.insert(corners, (part.CFrame * CFrame.new(size * Vector3.new(x, y, z))).p);
			end;
		end;
	end;
	return corners;
end;

function region:CastPart(part)
	local corners = getCorners(part);
	for _, corner in next, corners do
		local position = corner - self.CFrame.p;
		local isInRegion = true;
		for _, plane in next, self.Planes do
			if (position:Dot(plane.n) + plane.d) >= 0 then
				isInRegion = false;
				break;
			end;
		end;
		if isInRegion then
			return true;
		end;
	end;
	return false;
end;

return region;
-- Local private variables and constants


local ZERO_VECTOR2 = Vector2.new(0,0)

local tweenAcceleration = math.rad(220)		--Radians/Second^2
local tweenSpeed = math.rad(0)				--Radians/Second
local tweenMaxSpeed = math.rad(250)			--Radians/Second
local TIME_BEFORE_AUTO_ROTATE = 2.0 		--Seconds, used when auto-aligning camera with vehicles
local PORTRAIT_OFFSET = Vector3.new(0, 2, 0) 
local MOBILE_OFFSET = Vector3.new(0, 1, 0)

local INITIAL_CAMERA_ANGLE = CFrame.fromOrientation(math.rad(-15), 0, 0)
--- Skill


local UIS = game:GetService("UserInputService")
local plr = game.Players.LocalPlayer
local Mouse = plr:GetMouse()
local Debounce = true
Player = game.Players.LocalPlayer

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.Z and Debounce == true and Tool.Equip.Value == true and Tool.Active.Value == "None" then
		Debounce = false
		Tool.Active.Value = "LightBarrage"
		Track1 = Player.Character.Humanoid:LoadAnimation(script.Anim01)
		Track1:Play()
		wait(0.3)
		script.Fire:FireServer(plr)
	local hum =  Player.Character.Humanoid
	for i = 1,30 do
		wait()
		hum.CameraOffset = Vector3.new(
			math.random(0.1,0.1),
			math.random(0.1,0.1),
			math.random(0.1,0.1)
		)
	end
	hum.CameraOffset = Vector3.new(0,0,0)
		Tool.Active.Value = "None"
		wait(2)
		Debounce = true
	end
end)
--// # key, ManOff


mouse.KeyUp:connect(function(key)
	if key=="f" then 
		veh.Lightbar.middle.Man:Stop()
		veh.Lightbar.middle.Wail.Volume = 10
		veh.Lightbar.middle.Yelp.Volume = 10
		veh.Lightbar.middle.Priority.Volume = 10
		script.Parent.Parent.Sirens.Man.BackgroundColor3 = Color3.fromRGB(62, 62, 62)
		veh.Lightbar.MANUAL.Transparency = 1
	end
end)
------------------------------------------


gui.Track.Text = radio.TName.Value
radio.TName.Changed:connect(function()
	gui.Track.Text = radio.TName.Value
	seat.Parent.Body.Dash.S.G.Song.Text = radio.TName.Value
end)
gui.Stop.MouseButton1Click:connect(function()
	if radio.Stopped.Value == false then
		radio.Stopped.Value = true
	end
end)
gui.Pause.MouseButton1Click:connect(function()
	if radio.Paused.Value == false and radio.Stopped.Value == false then
		radio.Paused.Value = true
	end
end)
gui.Play.MouseButton1Click:connect(function()
	if radio.Stopped.Value == true then
		radio.Play.Value = not radio.Play.Value
	else
		if radio.Paused.Value == true then
			radio.Paused.Value = false
		end
	end
end)
gui.Forward.MouseButton1Click:connect(function()
	local n = radio.Track.Value+1
	if n>#radio.Songs:GetChildren() then
		n = 1
	end
	radio.Track.Value = n
end)
gui.Back.MouseButton1Click:connect(function()
	local n = radio.Track.Value-1
	if n<=0 then
		n = #radio.Songs:GetChildren()
	end
	radio.Track.Value = n
end)
gui.AutoplayOn.MouseButton1Click:connect(function()
	if radio.Autoplay.Value == true then
		radio.Autoplay.Value = false
	end
end)
gui.AutoplayOff.MouseButton1Click:connect(function()
	if radio.Autoplay.Value == false then
		radio.Autoplay.Value = true
	end
end)
gui.List.MouseButton1Click:connect(function()
	gui.Menu.Visible=not gui.Menu.Visible
end)
gui.Id.MouseButton1Click:connect(function()
	gui.IdPlayer.Visible=not gui.IdPlayer.Visible
	if gui.IdPlayer.Visible then gui.Id.Rotation=180 else gui.Id.Rotation=0 end
end)
gui.IdPlayer.Play.MouseButton1Click:connect(function()
	if radio.IdPlay.Value==gui.IdPlayer.TextBox.Text then
		radio.IdPlay.Value=""
	wait()
	end
	radio.IdPlay.Value=gui.IdPlayer.TextBox.Text
end)
for i,v in pairs(gui.Menu:GetChildren()) do
	v.MouseButton1Click:connect(function()
		radio.Track.Value = i
	end)
end
function Stopped()
	if radio.Stopped.Value == true then
		gui.Pause.Visible = false
		gui.Play.Visible = true
	else
		gui.Play.Visible = false
		gui.Pause.Visible = true
	end
end
function Paused()
	if radio.Paused.Value == true then
		gui.Pause.Visible = false
		gui.Play.Visible = true
	else
		if radio.Stopped.Value == false then
			gui.Play.Visible = false
			gui.Pause.Visible = true
		end
	end
end
function Autoplay()
	if radio.Autoplay.Value == true then
		gui.AutoplayOff.Visible = false
		gui.AutoplayOn.Visible = true
	else
		gui.AutoplayOn.Visible = false
		gui.AutoplayOff.Visible = true
	end
end
radio.Stopped.Changed:connect(Stopped)
radio.Paused.Changed:connect(Paused)
radio.Autoplay.Changed:connect(Autoplay)
Stopped()
Paused()
Autoplay()
while wait(.5) do
	if seat:FindFirstChild("SeatWeld") == nil then
		script.Parent:Destroy()
	end
end
-- Display assertion for the report when a test fails.
-- New format: rejects/resolves, not, and matcher name have black color
-- Old format: matcher name has dim color


function matcherHint(matcherName: string, received: string?, expected: string?, options: MatcherHintOptions?): string
	received = received or "received"
	expected = expected or "expected"
	options = options or {}

	--[[
		ROBLOX TODO: Remove the "if options" check once it can pass through
		Luau cleanly and define all of the variables in-line i.e.
		local comment = options.comment or ""
	]]
	local comment, expectedColor, isDirectExpectCall, isNot, promise, receivedColor, secondArgument, secondArgumentColor
	if options then
		comment = options.comment or ""
		expectedColor = options.expectedColor or EXPECTED_COLOR
		isDirectExpectCall = options.isDirectExpectCall or false
		isNot = options.isNot or false
		promise = options.promise or ""
		receivedColor = options.receivedColor or RECEIVED_COLOR
		secondArgument = options.secondArgument or ""
		secondArgumentColor = options.secondArgumentColor or EXPECTED_COLOR
	end

	local hint = ""
	local dimString = "expect" -- concatenate adjacent dim substrings

	if not isDirectExpectCall and received ~= "" then
		hint = hint .. DIM_COLOR(dimString .. "(") .. receivedColor(received)
		dimString = ")"
	end

	if promise ~= "" then
		hint = hint .. DIM_COLOR(dimString .. ".") .. promise
		dimString = ""
	end

	if isNot then
		hint = hint .. DIM_COLOR(dimString .. ".") .. "never"
		dimString = ""
	end

	if string.find(matcherName, "%.") then
		-- Old format: for backward compatibility,
		-- especially without promise or isNot options
		dimString = dimString .. matcherName
	else
		-- New format: omit period from matcherName arg
		hint = hint .. DIM_COLOR(dimString .. ".") .. matcherName
		dimString = ""
	end

	if expected == "" then
		dimString = dimString .. "()"
	else
		hint = hint .. DIM_COLOR(dimString .. "(") .. expectedColor(expected)
		if secondArgument ~= "" then
			hint = hint .. DIM_COLOR(", ") .. secondArgumentColor(secondArgument)
		end
		dimString = ")"
	end

	if comment ~= "" then
		dimString = dimString .. " -- " .. comment
	end

	if dimString ~= "" then
		hint = hint .. DIM_COLOR(dimString)
	end

	return hint
end

return {
	EXPECTED_COLOR = EXPECTED_COLOR,
	RECEIVED_COLOR = RECEIVED_COLOR,
	INVERTED_COLOR = INVERTED_COLOR,
	BOLD_WEIGHT = BOLD_WEIGHT,
	DIM_COLOR = DIM_COLOR,

	SUGGEST_TO_CONTAIN_EQUAL = SUGGEST_TO_CONTAIN_EQUAL,

	stringify = stringify,
	highlightTrailingWhitespace = highlightTrailingWhitespace,
	printReceived = printReceived,
	printExpected = printExpected,
	printWithType = printWithType,
	ensureNoExpected = ensureNoExpected,
	ensureActualIsNumber = ensureActualIsNumber,
	ensureExpectedIsNumber = ensureExpectedIsNumber,
	ensureNumbers = ensureNumbers,
	ensureExpectedIsNonNegativeInteger = ensureExpectedIsNonNegativeInteger,
	printDiffOrStringify = printDiffOrStringify,
	diff = diff,
	pluralize = pluralize,
	getLabelPrinter = getLabelPrinter,
	matcherErrorMessage = matcherErrorMessage,
	matcherHint = matcherHint,
}
--[[ Script Variables ]]

--
while not Players.LocalPlayer do
	wait()
end

local lastInputType = nil
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild('PlayerGui')
local IsTouchDevice = UserInputService.TouchEnabled
local UserMovementMode = IsTouchDevice and GameSettings.TouchMovementMode or GameSettings.ComputerMovementMode
local DevMovementMode = IsTouchDevice and LocalPlayer.DevTouchMovementMode or LocalPlayer.DevComputerMovementMode
local IsUserChoice = (IsTouchDevice and DevMovementMode == Enum.DevTouchMovementMode.UserChoice) or (DevMovementMode == Enum.DevComputerMovementMode.UserChoice)
local TouchGui = nil
local TouchControlFrame = nil
local IsModalEnabled = UserInputService.ModalEnabled
local BindableEvent_OnFailStateChanged = nil
local isJumpEnabled = false
-- Public




function Utility.fastRemove(tbl: {number: any}, index: number) -- would use {any}, but it makes the linter angry
    local n = #tbl
    tbl[index] = tbl[n]
    tbl[n] = nil
end


function Utility.ser(...)
	local str = ''
	for _, num in next, {...} do
		str = str..math.floor(num)
	end

	return tonumber(str)
end


function Utility.toScale(scale: number, offset: number, parentSize: number): number
	return (offset / parentSize) + scale
end


function Utility.toOffset(scale: number, offset: number, parentSize: number): number
	return (scale * parentSize) + offset
end


function Utility.convert(obj: GuiObject | UILayout, prop: string, T: string): UDim2 | UDim
	local parentSize = obj.Parent.AbsoluteSize
	local ud = obj[prop]

	local to = T == 'Scale' and Utility.toScale or Utility.toOffset
	if typeof(obj[prop]) == 'UDim2' then
		return UDim2['from'..T](to(ud.X.Scale, ud.X.Offset, parentSize.X), to(ud.Y.Scale, ud.Y.Offset, parentSize.Y))
	else
		local axis = 'X'
		if obj:IsA('UIListLayout') then
			axis = obj.FillDirection == Enum.FillDirection.Horizontal and 'X' or 'Y'
		end

		local data = {
			[T] = to(ud.Scale, ud.Offset, parentSize[axis])
		}

		return UDim.new(data.Scale, data.Offset)
	end
end
--[[Brakes]]


	Tune.ABSEnabled		= true		-- Implements ABS
	Tune.ABSThreshold	= 20		-- Slip speed allowed before ABS starts working (in SPS) 

	Tune.FBrakeForce	= 300		-- Front brake force
	Tune.RBrakeForce	= 350		-- Rear brake force
	Tune.PBrakeForce	= 4000		-- Handbrake force
	
	Tune.FLgcyBForce	= 15000		-- Front brake force [PGS OFF]
	Tune.RLgcyBForce	= 10000		-- Rear brake force [PGS OFF]
	Tune.LgcyPBForce	= 25000		-- Handbrake force [PGS OFF]