Prompt: --[[Steering]]

Response:
	function Steering()
		--Mouse Steer
		if _MSteer then
			local msWidth = math.max(1,mouse.ViewSizeX*_Tune.Peripherals.MSteerWidth/200)
			local mdZone = _Tune.Peripherals.MSteerDZone/100
			local mST = ((mouse.X-mouse.ViewSizeX/2)/msWidth)
			if math.abs(mST)<=mdZone then
				_GSteerT = 0
			else
				_GSteerT = (math.max(math.min((math.abs(mST)-mdZone),(1-mdZone)),0)/(1-mdZone))^_Tune.MSteerExp * (mST / math.abs(mST))
			end
		end

		--Interpolate Steering
		if _GSteerC < _GSteerT then
			if _GSteerC<0 then
				_GSteerC = math.min(_GSteerT,_GSteerC+_Tune.ReturnSpeed)
			else
				_GSteerC = math.min(_GSteerT,_GSteerC+_Tune.SteerSpeed)
			end
		else
			if _GSteerC>0 then
				_GSteerC = math.max(_GSteerT,_GSteerC-_Tune.ReturnSpeed)
			else
				_GSteerC = math.max(_GSteerT,_GSteerC-_Tune.SteerSpeed)
			end
		end

		--Steer Decay Multiplier
		local sDecay = (1-math.min(car.Body.CarName.Value.VehicleSeat.Velocity.Magnitude/_Tune.SteerDecay,1-(_Tune.MinSteer/100)))

		--Apply Steering
		for i,v in pairs(car.Wheels:GetChildren()) do
			if v.Name=="F" then
				v.Arm.Steer.CFrame=car.Wheels.F.Base.CFrame*CFrame.Angles(0,-math.rad(_GSteerC*_Tune.SteerInner*sDecay),0)
			elseif v.Name=="FL" then
				if _GSteerC>= 0 then
					v.Arm.Steer.CFrame=car.Wheels.FL.Base.CFrame*CFrame.Angles(0,-math.rad(_GSteerC*_Tune.SteerOuter*sDecay),0)
				else
					v.Arm.Steer.CFrame=car.Wheels.FL.Base.CFrame*CFrame.Angles(0,-math.rad(_GSteerC*_Tune.SteerInner*sDecay),0)
				end
			elseif v.Name=="FR" then
				if _GSteerC>= 0 then
					v.Arm.Steer.CFrame=car.Wheels.FR.Base.CFrame*CFrame.Angles(0,-math.rad(_GSteerC*_Tune.SteerInner*sDecay),0)
				else
					v.Arm.Steer.CFrame=car.Wheels.FR.Base.CFrame*CFrame.Angles(0,-math.rad(_GSteerC*_Tune.SteerOuter*sDecay),0)
				end
			end
		end
	end


Prompt:
--[[                                           <<DO NOT DELETE THIS MODULE>>
   ___      _______                _
  / _ |____/ ___/ /  ___ ____ ___ (_)__
 / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
/_/ |_|   \___/_//_/\_,_/___/___/_/___/	Build 6.33
				SecondLogic @ Inspare

>>Manual

Basically...everything you can and would ever want to touch is in the tuning module. EVERYTHING

Installation Video [Coming Soon]
Tuning Video [Coming Soon]

Torque Curve Tune Visualizer:
https://www.desmos.com/calculator/mpkd3kxovu

Basic Tips:
--Installation
	>Everything is built-in (even the gyros), so all you have to worry about is placing the wheels and the seat.
	>Body parts go in the "Body" section.
	>Wheel parts go in the "Parts" section of the wheel. Calipers go on the "Fixed" section.
	>You can add or remove wheels. To add a wheel, simply copy one of the wheels and make sure it's named one of the following: "F","FL","FR","R","RL","RR".
	>Wheels need to be aligned with the axes of the seat. Don't rotate the seat relative to the wheels as it may cause welding problems.
	>All wheel offsets are applied in the tuning module. Do NOT manually add offset to the wheels. Steering axis is centered on the wheel part by default.
	>Seat offset can be adjusted in the "MiscWeld" module under "Initialize".
	>Use the "Misc" section for scripted/moving parts and apply welding using the "MiscWeld" module under "Initialize".

--Tuning
	>Reduce weight(density) if setup is lacking torque. Increase density if setup has too much torque.
	>Add downforce to the wheels manually if setup is lacking grip or use a downforce plugin.
	>Dialing in ratios used in real cars is an easy way to have a realisticly tuned transmission.
	>Modifying the "Drive" script may affect the integrity of the system.
	>Custom scripts should be put in the "Plugins" folder. Using plugins made by other users is encouraged.
	>When writing custom plugins, you can reference the values within the "Values" folder inside the A-Chassis Interface.
	>It is a good practice to make plugins compatible with any setup and providing a usage manual if a plugin is released.
	>Yes, you can remove/change the default plugins that come with the kit. The drive system will still work perfectly.

--Updates
	>To update, simply just replace the entire "A-Chassis Tune" module of an existing car with a newer version of the module.
	>You may want to copy the tune values and plugins from the old module, but dont simply overwrite the tune module as new values may be added.

Note: BodyAngularVelocity tends to have stability issues at high speeds when using PSGPhysicsSolver. It is recommended to turn it off for best results.

>>Changelog
	[10/31/16 : Build 6.33] - Semi-Automatic

		[Added semi-automatic transmission mode]
		-'TransModes' now accepts "Semi" value for semi-automatic.
		-Updated AC6_Stock_Gauges to include semi-automatic mode.

		[Fixed disengaging p-brake]
		-P-Brake now remains engaged if player gets into then vehicle.

		[Fixed FE Support for AC6_Stock_Sound]
		-Sounds should now work properly with Filtering Enabled.

	[8/5/16 : Build 6.32] - Differential System

		[Implemented differential system]
		-Differential controls torque distibution between wheels that are spinning at different rates
		-Added tune values 'FDiffSlipThres', 'FDiffLockThres', 'RDiffSlipThres', 'RDiffLockThres', 'CDiffSlipThres', and 'CDiffLockThres'.
		-'DiffSlipThres' determine the threshold of the speed difference between the wheels. Full lock applies at max threshold.
		-A lower slip threshold value will make the diff more aggressive.
		-'DiffLockThres' determines the bias of the differential.
		-A lock threshold value more than 50 puts more torque into the slipping wheel (moving towards an open diff).
		-A lock threshold value less than 50 puts more torque into the grounded wheel (moving towards a locked diff).

		[Fixed multiple wheel support]
		-The chassis can now use more than just the default 4 set of wheels. Just copy an existing wheel and place accordingly.
		-Differential works with auxiliary wheels.

	[7/13/16 : Build 6.31] - Peripheral Settings

		[Added peripheral adjustment values]
		-Moved controller and mouse deadzone values to the "Controls" section of the tune.
		-Split controller deadzone into left and right input.
		-Moved mouse control width to "Conrols" secton. This value now operates based off of % of screed width.

		[Updated stock Controls Module]
		-Added sliders for controller and mouse deadzone values.
		-Added slider for mouse control width.

	[6/15/16 : Build 6.3] - Motercisly

		[Better motorcycle system support]
		-Added wheel configurations "F" and "R" for single wheel settup.
		-"F" and "R" wheels will have axle parts on both sides for better balance.
		-These wheel configurations will ignore outor rotation value and will rotated based off of the inner rotation value only.
		-Camber and Toe cannot be applied to these wheel configurations. Caster will still be applied as normal.

		[Bug fixes]
		-Caster now applies after wheel part rotations so wheel parts dont rotate with caster.
		-Fixed Clutch re-engaging automatically when shifting out of neutral.

	[6/4/16 : Build 6.21] - AC6 Official Public Kit Release

		[Plugin FilteringEnabled compatability made easier]
		-System now detects if there is a RemoteEvent or RemoteFunction inside a plugin. These will be parented directly under the car.
		-The RemoteEvent/RemoteFunction needs to be a direct child of the plugin for it to be detected.
		-Scripts inside the RemoteEvent/RemoteFunction should be disabled. They will be enabled after initialization.
		-Be careful as this system is suceptible to name collisions. Name your RemoteEvents/RemoteFunctions uniquely.
		-Stock AC6 Sound plugin is now FE compatible.

		[Controls Panel now a plugin instead of integrated]
		-Separated controls panel from Drive script. The controls panel is now a plugin.
		-The "Controls" folder appears inside the interface on Drive startup. Use this folder to reference button mapping values for custom controls plugins.
		-"ControlsOpen" value added. This is a safety toggle when changing control values. This value can be manipulated by plugins.

		[New tune values]
		-Added 'AutoFlip' tune value. This determines if the car automatically flips itself over when upside down.
		-Added 'StAxisOffset' tune value. This offsets the center of the steering axis. Positive value = offset outward.
		-Added 'SteerD', 'SteerMaxTorque', and 'SteerP' values which set the steering axle gyro properties.

		[MiscWeld streamlining]
		-Added "Misc" section to the main sections. This should contain scripted/moving parts.
		-Parts in this section are NOT WELDED AUTOMATICALLY. Use the "MiscWeld" module to weld these parts. The "Misc" section is pre-referenced as 'misc'.

		[Bug fixes]
		-Fixed flip gyro not resetting when gyro is active and driver leaves car.
		-Fixed issue with switching transmission modes.
--]]

Response: return 6.33


Prompt:
----------------------------------
------------FUNCTIONS-------------
----------------------------------

Response:
function Receive(player, action, ...)
	local args = {...}
	if player == User and action == "play" then
		Connector:FireAllClients("play", User, args[1], Settings.SoundSource.Position, Settings.PianoSoundRange, Settings.PianoSounds, args[2], Settings.IsCustom)
		HighlightPianoKey((args[1] > 61 and 61) or (args[1] < 1 and 1) or args[1],args[3])
	elseif player == User and action == "abort" then
		Deactivate()
		if SeatWeld then
			SeatWeld:remove()
		end
	end
end

function Activate(player)
	Connector:FireClient(player, "activate", Settings.CameraCFrame, Settings.PianoSounds, true)
	User = player
	for i,v in pairs(Piano.Keys.Keys:GetChildren()) do
		local obj = v
		local Properties = {}
		Properties.Transparency = 0
		Tween(obj,Properties,1,false,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	end
end

function Deactivate()
	if User and User.Parent then
		Connector:FireClient(User, "deactivate")
		User.Character:SetPrimaryPartCFrame(Box.CFrame + Vector3.new(0, 5, 0))
	end
	for i,v in pairs(Piano.Keys.Keys:GetChildren()) do
		local obj = v
		local Properties = {}
		Properties.Transparency = 1
		Tween(obj,Properties,1,false,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	end
	User = nil
end


Prompt:
--[=[
	Uses the constructor to attach a class or resource to the actual object
	for the lifetime of the subscription of that object.

	```lua
	return Blend.New "Frame" {
		Parent = variables.Parent;
		[Blend.Attached(function(parent)
			local maid = Maid.new()

			print("Got", parent)

			maid:GiveTask(function()
				print("Dead!")
			end)

			return maid
		end)] = true;
	}
	```

	@param constructor T
	@return (parent: Instance) -> Observable<T>
]=]

Response:
function Blend.Attached(constructor)
	return function(parent)
		return Observable.new(function(sub)
			local maid = Maid.new()

			local resource = constructor(parent)

			if MaidTaskUtils.isValidTask(resource) then
				maid:GiveTask(resource)
			end

			sub:Fire(resource)

			return maid
		end)
	end;
end


Prompt:
--[=[
	@param object any -- Object to remove
	Removes the object from the Janitor and cleans it up.

	```lua
	local part = Instance.new("Part")
	Janitor:Add(part)
	Janitor:Remove(part)
	```
]=]

Response:
function Janitor:Remove(object: any): boolean
	local objects = self._objects
	for i,obj in ipairs(objects) do
		if obj[1] == object then
			local n = #objects
			objects[i] = objects[n]
			objects[n] = nil
			self:_cleanupObject(obj[1], obj[2])
			return true
		end
	end
	return false
end


Prompt: -- Remote Events

Response: local RE_Character_Appearance_Loaded = Remote_Events.CharacterAppearanceLoaded


Prompt: -- Uber l33t maths to calcluate the angle needed to throw a projectile a distance, given the altitude of the end point and the projectile's velocity

Response:
function AngleOfReach(distance, altitude, velocity)
	local theta = math.atan((velocity^2 + math.sqrt(velocity^4 -200*(200*distance^2 + 2*altitude*velocity^2)))/(200*distance))
	if theta ~= theta then
		theta = math.pi/4
	end
	return(theta)
end


Prompt: -- table.concat but allows booleans

Response:
local function tableConcat(t, sep)
	for i, v in t do
		if type(v) == "boolean" then
			t[i] = tostring(v)
		end
	end

	table.concat(t, sep)

	return t
end

local function dumpFormatter(dump, start, ending)
	-- "\n\n -- " .. start .. " --\n\n" .. dump .. "\n -- " .. ending .. " --"
	return `\n\n -- {start} --\n\n{dump}\n -- {ending} --\n`
end

local class = {}

function ErrorFormat(title: string, nonFatal: boolean?, traceback: string?)
	return function(errorMessage: string)
		errorMessage = `{title} {errorMessage}{dumpFormatter(traceback or debug.traceback(nil, 2), "Stack Trace", "Stack End")}`

		if nonFatal then
			task.spawn(error, errorMessage, 0)
		else
			error(errorMessage, 0)
		end
	end
end

return ErrorFormat


Prompt: --[[Susupension]]

Response:
	Tune.SusEnabled		= true		-- works only in with PGSPhysicsSolverEnabled, defaults to false when PGS is disabled

	--Front Suspension
	Tune.FSusDamping	= 500		-- Spring Dampening
	Tune.FSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 50		-- Anti-Roll (Gyro Dampening)

	Tune.FSusLength		= 2			-- Suspension length (in studs)
	Tune.FPreCompress	= .1		-- Pre-compression adds resting length force
	Tune.FExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.FCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)

	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Rear Suspension
	Tune.RSusDamping	= 500		-- Spring Dampening
	Tune.RSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 50		-- Anti-Roll (Gyro Dampening)

	Tune.RSusLength		= 2			-- Suspension length (in studs)
	Tune.RPreCompress	= .1		-- Pre-compression adds resting length force
	Tune.RExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.RCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)

	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		0		,	-- positive = outward
	 --[[Vertical]]		-1.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics
	Tune.SusVisible		= false			-- Spring Visible
	Tune.WsBVisible		= false			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Bright red"	-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness


Response:
function onClicked()
Car.BodyVelocity.velocity = Vector3.new(0, 3, 0)
end
script.Parent.ClickDetector.MouseClick:connect(onClicked)


Prompt:
--[[
	Function called upon entering the state - creates the systems, and initialises the game loop.
]]

Response:
function ServerGame.onEnter(stateMachine, event, from, to)
	SystemManager.createSystems()

	local engine = SystemManager.getSystemByName("engine")

	local function completeGame()
		stateMachine:finishGame()
	end
	connections.crashedIntoSun = engine.crashedIntoSun:Connect(completeGame)

	connections.escapedSun = engine.escapedSun:Connect(completeGame)

	spawnToolsAsync()
	tagMap()

	coroutine.wrap(
		function()
			while true do
				local waitTime = METEOR_FREQUENCY_PER_PLAYER / 1 + (#Players:GetPlayers() / 5)

				wait(math.random(waitTime / 1.5, waitTime * 1.5))
				if stateMachine.current ~= "game" then
					return
				end

				local shield = SystemManager.getSystemByName("shield")

				if shield:isOn() and math.random(1, 100) > SHIELD_DEFLECT_RATE then
					sendAlert(Constants.Alert.Success, translate("Shields have deflected a meteor!"))
				else
					spawnMeteor()
				end
			end
		end
	)()
end


Prompt: -- Decompiled with the Synapse X Luau decompiler.

Response:
local v1 = {};
local l__PlayerGui__2 = game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui");
local l__Parent__3 = script.Parent;
local v4 = {};
v4.__index = v4;
local u1 = require(game:GetService("Chat"):WaitForChild("ClientChatModules"):WaitForChild("ChatSettings"));
local u2 = require(l__Parent__3:WaitForChild("MessageSender"));
function v4.CreateGuiObjects(p1, p2)
	local v5 = Instance.new("Frame");
	v5.Selectable = false;
	v5.Size = UDim2.new(1, 0, 1, 0);
	v5.BackgroundTransparency = 1;
	v5.Parent = p2;
	local v6 = Instance.new("Frame");
	v6.Selectable = false;
	v6.Name = "ScrollingBase";
	v6.BackgroundTransparency = 1;
	v6.ClipsDescendants = true;
	v6.Size = UDim2.new(1, 0, 1, 0);
	v6.Position = UDim2.new(0, 0, 0, 0);
	v6.Parent = v5;
	local v7 = Instance.new("Frame");
	v7.Selectable = false;
	v7.Name = "ScrollerSizer";
	v7.BackgroundTransparency = 1;
	v7.Size = UDim2.new(1, 0, 1, 0);
	v7.Position = UDim2.new(0, 0, 0, 0);
	v7.Parent = v6;
	local v8 = Instance.new("Frame");
	v8.Selectable = false;
	v8.Name = "ScrollerFrame";
	v8.BackgroundTransparency = 1;
	v8.Size = UDim2.new(1, 0, 1, 0);
	v8.Position = UDim2.new(0, 0, 0, 0);
	v8.Parent = v7;
	local v9 = Instance.new("Frame");
	v9.Selectable = false;
	v9.Size = UDim2.new(1, 0, 1, 0);
	v9.Position = UDim2.new(0, 0, 0, 0);
	v9.ClipsDescendants = true;
	v9.BackgroundTransparency = 1;
	v9.Parent = v5;
	local v10 = Instance.new("Frame");
	v10.Selectable = false;
	v10.Name = "LeaveConfirmationFrame";
	v10.Size = UDim2.new(1, 0, 1, 0);
	v10.Position = UDim2.new(0, 0, 1, 0);
	v10.BackgroundTransparency = 0.6;
	v10.BorderSizePixel = 0;
	v10.BackgroundColor3 = Color3.new(0, 0, 0);
	v10.Parent = v9;
	local v11 = Instance.new("TextButton");
	v11.Selectable = false;
	v11.Size = UDim2.new(1, 0, 1, 0);
	v11.BackgroundTransparency = 1;
	v11.Text = "";
	v11.Parent = v10;
	local v12 = Instance.new("TextButton");
	v12.Selectable = false;
	v12.Size = UDim2.new(0.25, 0, 1, 0);
	v12.BackgroundTransparency = 1;
	v12.Font = u1.DefaultFont;
	v12.TextSize = 18;
	v12.TextStrokeTransparency = 0.75;
	v12.Position = UDim2.new(0, 0, 0, 0);
	v12.TextColor3 = Color3.new(0, 1, 0);
	v12.Text = "Confirm";
	v12.Parent = v10;
	local v13 = v12:Clone();
	v13.Parent = v10;
	v13.Position = UDim2.new(0.75, 0, 0, 0);
	v13.TextColor3 = Color3.new(1, 0, 0);
	v13.Text = "Cancel";
	local v14 = Instance.new("TextLabel");
	v14.Selectable = false;
	v14.Size = UDim2.new(0.5, 0, 1, 0);
	v14.Position = UDim2.new(0.25, 0, 0, 0);
	v14.BackgroundTransparency = 1;
	v14.TextColor3 = Color3.new(1, 1, 1);
	v14.TextStrokeTransparency = 0.75;
	v14.Text = "Leave channel <XX>?";
	v14.Font = u1.DefaultFont;
	v14.TextSize = 18;
	v14.Parent = v10;
	local v15 = Instance.new("StringValue");
	v15.Name = "LeaveTarget";
	v15.Parent = v10;
	local l__Position__3 = v10.Position;
	v12.MouseButton1Click:connect(function()
		u2:SendMessage(string.format("/leave %s", v15.Value), nil);
		v10:TweenPosition(l__Position__3, Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true);
	end);
	v13.MouseButton1Click:connect(function()
		v10:TweenPosition(l__Position__3, Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.2, true);
	end);
	local v16 = Instance.new("ImageButton", v5);
	v16.Selectable = u1.GamepadNavigationEnabled;
	v16.Name = "PageLeftButton";
	v16.SizeConstraint = Enum.SizeConstraint.RelativeYY;
	v16.Size = UDim2.new(0.7, 0, 0.7, 0);
	v16.BackgroundTransparency = 1;
	v16.Position = UDim2.new(0, 4, 0.15000000000000002, 0);
	v16.Visible = false;
	v16.Image = "rbxassetid://471630199";
	local v17 = Instance.new("ImageLabel", v16);
	v17.Name = "ArrowLabel";
	v17.BackgroundTransparency = 1;
	v17.Size = UDim2.new(0.4, 0, 0.4, 0);
	v17.Image = "rbxassetid://471630112";
	local v18 = Instance.new("Frame", v5);
	v18.Selectable = false;
	v18.BackgroundTransparency = 1;
	v18.Name = "PositionalHelper";
	v18.Size = v16.Size;
	v18.SizeConstraint = v16.SizeConstraint;
	v18.Position = UDim2.new(1, 0, 0.15000000000000002, 0);
	local v19 = v16:Clone();
	v19.Parent = v18;
	v19.Name = "PageRightButton";
	v19.Size = UDim2.new(1, 0, 1, 0);
	v19.SizeConstraint = Enum.SizeConstraint.RelativeXY;
	v19.Position = UDim2.new(-1, -4, 0, 0);
	local v20 = UDim2.new(0.05, 0, 0, 0);
	v19.ArrowLabel.Position = UDim2.new(0.3, 0, 0.3, 0) + v20;
	v16.ArrowLabel.Position = UDim2.new(0.3, 0, 0.3, 0) - v20;
	v16.ArrowLabel.Rotation = 180;
	p1.GuiObject = v5;
	p1.GuiObjects.BaseFrame = v5;
	p1.GuiObjects.ScrollerSizer = v7;
	p1.GuiObjects.ScrollerFrame = v8;
	p1.GuiObjects.PageLeftButton = v16;
	p1.GuiObjects.PageRightButton = v19;
	p1.GuiObjects.LeaveConfirmationFrame = v10;
	p1.GuiObjects.LeaveConfirmationNotice = v14;
	p1.GuiObjects.PageLeftButtonArrow = v16.ArrowLabel;
	p1.GuiObjects.PageRightButtonArrow = v19.ArrowLabel;
	p1:AnimGuiObjects();
	v16.MouseButton1Click:connect(function()
		p1:ScrollChannelsFrame(-1);
	end);
	v19.MouseButton1Click:connect(function()
		p1:ScrollChannelsFrame(1);
	end);
	p1:ScrollChannelsFrame(0);
end;
function v4.UpdateMessagePostedInChannel(p3, p4)
	local v21 = p3:GetChannelTab(p4);
	if v21 then
		v21:UpdateMessagePostedInChannel();
		return;
	end;
	warn("ChannelsTab '" .. p4 .. "' does not exist!");
end;
local u4 = require(l__Parent__3:WaitForChild("ChannelsTab"));
function v4.AddChannelTab(p5, p6)
	if p5:GetChannelTab(p6) then
		error("Channel tab '" .. p6 .. "'already exists!");
	end;
	local v22 = u4.new(p6);
	v22.GuiObject.Parent = p5.GuiObjects.ScrollerFrame;
	p5.ChannelTabs[p6:lower()] = v22;
	p5.NumTabs = p5.NumTabs + 1;
	p5:OrganizeChannelTabs();
	if u1.RightClickToLeaveChannelEnabled then
		v22.NameTag.MouseButton2Click:connect(function()
			p5.LeaveConfirmationNotice.Text = string.format("Leave channel %s?", v22.ChannelName);
			p5.LeaveConfirmationFrame.LeaveTarget.Value = v22.ChannelName;
			p5.LeaveConfirmationFrame:TweenPosition(UDim2.new(0, 0, 0, 0), Enum.EasingDirection.In, Enum.EasingStyle.Quad, 0.2, true);
		end);
	end;
	return v22;
end;
function v4.RemoveChannelTab(p7, p8)
	if not p7:GetChannelTab(p8) then
		error("Channel tab '" .. p8 .. "'does not exist!");
	end;
	local v23 = p8:lower();
	p7.ChannelTabs[v23]:Destroy();
	p7.ChannelTabs[v23] = nil;
	p7.NumTabs = p7.NumTabs - 1;
	p7:OrganizeChannelTabs();
end;
function v4.GetChannelTab(p9, p10)
	return p9.ChannelTabs[p10:lower()];
end;
function v4.OrganizeChannelTabs(p11)
	local v24 = {};
	table.insert(v24, p11:GetChannelTab(u1.GeneralChannelName));
	table.insert(v24, p11:GetChannelTab("System"));
	for v25, v26 in pairs(p11.ChannelTabs) do
		if v26.ChannelName ~= u1.GeneralChannelName and v26.ChannelName ~= "System" then
			table.insert(v24, v26);
		end;
	end;
	for v27, v28 in pairs(v24) do
		v28.GuiObject.Position = UDim2.new(v27 - 1, 0, 0, 0);
	end;
	p11.GuiObjects.ScrollerSizer.Size = UDim2.new(1 / math.max(1, math.min(u1.ChannelsBarFullTabSize, p11.NumTabs)), 0, 1, 0);
	p11:ScrollChannelsFrame(0);
end;
function v4.ResizeChannelTabText(p12, p13)
	for v29, v30 in pairs(p12.ChannelTabs) do
		v30:SetTextSize(p13);
	end;
end;
function v4.ScrollChannelsFrame(p14, p15)
	if p14.ScrollChannelsFrameLock then
		return;
	end;
	p14.ScrollChannelsFrameLock = true;
	local l__ChannelsBarFullTabSize__31 = u1.ChannelsBarFullTabSize;
	local v32 = p14.CurPageNum + p15;
	if v32 < 0 then
		v32 = 0;
	elseif v32 > 0 and p14.NumTabs < v32 + l__ChannelsBarFullTabSize__31 then
		v32 = p14.NumTabs - l__ChannelsBarFullTabSize__31;
	end;
	p14.CurPageNum = v32;
	local v33 = UDim2.new(-p14.CurPageNum, 0, 0, 0);
	p14.GuiObjects.PageLeftButton.Visible = p14.CurPageNum > 0;
	p14.GuiObjects.PageRightButton.Visible = p14.CurPageNum + l__ChannelsBarFullTabSize__31 < p14.NumTabs;
	if p15 == 0 then
		p14.ScrollChannelsFrameLock = false;
		return;
	end;
	p14:WaitUntilParentedCorrectly();
	p14.GuiObjects.ScrollerFrame:TweenPosition(v33, Enum.EasingDirection.InOut, Enum.EasingStyle.Quad, 0.15, true, function()
		p14.ScrollChannelsFrameLock = false;
	end);
end;
local u5 = require(l__Parent__3:WaitForChild("CurveUtil"));
function v4.FadeOutBackground(p16, p17)
	for v34, v35 in pairs(p16.ChannelTabs) do
		v35:FadeOutBackground(p17);
	end;
	p16.AnimParams.Background_TargetTransparency = 1;
	p16.AnimParams.Background_NormalizedExptValue = u5:NormalizedDefaultExptValueInSeconds(p17);
end;
function v4.FadeInBackground(p18, p19)
	for v36, v37 in pairs(p18.ChannelTabs) do
		v37:FadeInBackground(p19);
	end;
	p18.AnimParams.Background_TargetTransparency = 0.6;
	p18.AnimParams.Background_NormalizedExptValue = u5:NormalizedDefaultExptValueInSeconds(p19);
end;
function v4.FadeOutText(p20, p21)
	for v38, v39 in pairs(p20.ChannelTabs) do
		v39:FadeOutText(p21);
	end;
end;
function v4.FadeInText(p22, p23)
	for v40, v41 in pairs(p22.ChannelTabs) do
		v41:FadeInText(p23);
	end;
end;
function v4.AnimGuiObjects(p24)
	p24.GuiObjects.PageLeftButton.ImageTransparency = p24.AnimParams.Background_CurrentTransparency;
	p24.GuiObjects.PageRightButton.ImageTransparency = p24.AnimParams.Background_CurrentTransparency;
	p24.GuiObjects.PageLeftButtonArrow.ImageTransparency = p24.AnimParams.Background_CurrentTransparency;
	p24.GuiObjects.PageRightButtonArrow.ImageTransparency = p24.AnimParams.Background_CurrentTransparency;
end;
function v4.InitializeAnimParams(p25)
	p25.AnimParams.Background_TargetTransparency = 0.6;
	p25.AnimParams.Background_CurrentTransparency = 0.6;
	p25.AnimParams.Background_NormalizedExptValue = u5:NormalizedDefaultExptValueInSeconds(0);
end;
function v4.Update(p26, p27)
	for v42, v43 in pairs(p26.ChannelTabs) do
		v43:Update(p27);
	end;
	p26.AnimParams.Background_CurrentTransparency = u5:Expt(p26.AnimParams.Background_CurrentTransparency, p26.AnimParams.Background_TargetTransparency, p26.AnimParams.Background_NormalizedExptValue, p27);
	p26:AnimGuiObjects();
end;
function v4.WaitUntilParentedCorrectly(p28)
	while not p28.GuiObject:IsDescendantOf(game:GetService("Players").LocalPlayer) do
		p28.GuiObject.AncestryChanged:wait();
	end;
end;
function v1.new()
	local v44 = setmetatable({}, v4);
	v44.GuiObject = nil;
	v44.GuiObjects = {};
	v44.ChannelTabs = {};
	v44.NumTabs = 0;
	v44.CurPageNum = 0;
	v44.ScrollChannelsFrameLock = false;
	v44.AnimParams = {};
	v44:InitializeAnimParams();
	u1.SettingsChanged:connect(function(p29, p30)
		if p29 == "ChatChannelsTabTextSize" then
			v44:ResizeChannelTabText(p30);
		end;
	end);
	return v44;
end;
return v1;


Prompt:
--[[
	Utility script that holds a cache of player character appearances. Allows the game to load appearances as soon as the player enters the game, thereby reducing
	risk of lengthy Roblox server requests slowing down critial times in the game loop.
]]

Response:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local Logger = require(ReplicatedStorage.Dependencies.GameUtils.Logger)

local CharacterAppearanceCache = {}

local appearanceCache = {}


Prompt: -- Services

Response: local TweenService = game:GetService("TweenService")


Prompt: --// Functions

Response:
UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.X then
		if Chatting == true then
			Skip = true
			Sounds.Click:Play()
		end
	end
end)

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.Z then
		if Chatting == true then
			Exit = true
			Sounds.Click:Play()
		end
	end
end)

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.E then

		if Detected == true then
			local Lines = DetectedNPC:FindFirstChild("Lines")

			if Lines then
				Sounds.Click:Play()

				Chatting = true
				Detected = false

				LineLabel.Text = " "

				PromptLabel:TweenSize(UDim2.new(0, 0, 0, 0), "Out", "Linear", 0.2)
				LineLabel:TweenPosition(UDim2.new(0, 0, 0.8, 0), "In", "Linear", 0.2)

				wait(0.5)

				for i, Line in pairs(Lines:GetChildren()) do
					local Text = Line.Value

					for i = 1, #Text do
						LineLabel.Text = string.sub(Text, 1, i)
						Sounds.Talk:Play()
						if Skip == true then
							Skip = false
							LineLabel.Text = Text
							break
						end
						if Exit == true then
							break
						end
						wait(0.07)
					end
					if Exit == true then
						Exit = false
						break
					end
					repeat wait() until Skip == true or Exit == true
					Skip = false
				end

				Exit = false
				Skip = false

				PromptLabel:TweenSize(UDim2.new(0, 0, 0, 0), "Out", "Linear", 0.2)
				LineLabel:TweenPosition(UDim2.new(0, 0, 1.2, 0), "Out", "Linear", 0.2)

				wait(0.5)

				Chatting = false
				Detected = false
			end
		end
	end
end)


Prompt: --	local hit, pos = game.Workspace:FindPartOnRayWithIgnoreList(ray, ignoreList)


Prompt: ---Setting events to all buttons

Response:
ButtonsPanel.Lights.MouseButton1Click:Connect(function()
	---Checking if the player is in a vehicle
	if Char.Humanoid.SeatPart ~= nil and Char.Humanoid.SeatPart.Parent:FindFirstChild("Stats") then

		Char.Humanoid.SeatPart.Parent.VehicleSeat.ChassisMain["Lights"]:FireServer()
	end
end)

ButtonsPanel.Flip.MouseButton1Click:Connect(function()
	---Checking if the player is in a vehicle
	if Char.Humanoid.SeatPart ~= nil and Char.Humanoid.SeatPart.Parent:FindFirstChild("Stats") and FlipCD == false then
		FlipCD = true
		local Gyro = Char.Humanoid.SeatPart.Parent.Engine.Stability

		Gyro.D = 100
		Gyro.P = 2000
		Gyro.MaxTorque = Vector3.new(1800,0,1800)
		wait(3)
		Gyro.D = 11
		Gyro.P = 11
		Gyro.MaxTorque = Vector3.new(6,6,6)

		wait(5)
		FlipCD = false
	end
end)


Prompt:
-- Controls the field-of-view of the camera depending on the player's setting.
--
-- ForbiddenJ

Response:
NormalFov = 70
WideFov = 85

Camera = workspace.CurrentCamera
FovSetting = game.ReplicatedStorage.ClientConfig.WideFOV

function Update()
	Camera.FieldOfView = FovSetting.Value and WideFov or NormalFov
end

FovSetting:GetPropertyChangedSignal("Value"):Connect(Update)

Update()


Prompt: --tables

Response:
local SoundTable = {}
local AnimTable = {}

local function PickThing(ThingToPick)
	if ThingToPick == "Swing" then
		--pick anim
		local SwingA = AnimTable[R:NextInteger(1, #AnimTable)]
		local findA = Tool.Animations:findFirstChild(SwingA)
		return findA
	elseif ThingToPick == "Sound" then
		--pick sound
		local SoundA = SoundTable[R:NextInteger(1, #SoundTable)]
		local findA = Tool.Sounds:findFirstChild(SoundA)
		return findA
	end
end

 --check if trables have been filled
function CheckTables()
	if LoadedTables == false then
		local GetS = Tool.Sounds:GetChildren()
		local GetA = Tool.Animations:GetChildren()
		for i = 1, #GetS do
			if GetS[i].Name ~= "Equip" then --ignore equip sound
				table.insert(SoundTable, tostring(GetS[i].Name))
			end
		end
		for i = 1, #GetA do
			if GetA[i].Name ~= "Equip" then --ignore equip animation
				table.insert(AnimTable, tostring(GetA[i].Name))
			end
		end
		LoadedTables = true
	end
end


Prompt: --// UI Tween Info

Response:
local L_138_ = TweenInfo.new(
	1,
	Enum.EasingStyle.Sine,
	Enum.EasingDirection.Out,
	0,
	false,
	0
)

local L_139_ = {
	TextTransparency = 1
}


Prompt: --[[[Default Controls]]

Response:
	--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
		ToggleTCS				=  Enum.KeyCode.Pause				,
		ToggleABS				=  Enum.KeyCode.Pause						,
		ToggleTransMode			= Enum.KeyCode.M					,
		ToggleMouseDrive		= Enum.KeyCode.Pause				,

		--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			,
	}


Response:
function Key(key)
if key then
key = string.lower(key)
if (key=="x") then
if on == 1 then
Tool.Parent.Humanoid.WalkSpeed = CurrentWalkSpeed
on = 0
elseif on == 0 then
Tool.Parent.Humanoid.WalkSpeed = WalkSpeedWhileCrouching
on = 1
end
Crouch(on)
end
end
end
function Equip(mouse)
mouse.KeyDown:connect(Key)
end
script.Parent.Equipped:connect(Equip)


Prompt: -- Render the map at 0FPS (static since we know it doesn't change)

Response:
	for i,d in pairs(workspace:GetDescendants()) do
		local isHum = false
		if d.Parent then
			local hum = d.Parent:FindFirstChild("Humanoid")
			if hum then
				if hum:IsA("Humanoid") then
					isHum = true
				end
			end
		end
		if d:IsA("BasePart") and not d:IsA("Terrain") and not isHum then
			local mapObj_Handler = VF_Handler:RenderObject(d, 30)
		end
	end


Prompt: --	part.Anchored = true

Response: part.Position = Vector3.new(x,0.5,z)


Prompt:
--[[
	Returns a list of the keys from the given dictionary.
]]

Response:
local function keys(dictionary)
	local new = {}
	local index = 1

	for key in pairs(dictionary) do
		new[index] = key
		index = index + 1
	end

	return new
end

return keys


Prompt: --- Rainbow FX

Response:
return function(gui, property, speed)
	--- Variables
	speed = speed or 1
	--
	local running = true

	--- Main
	coroutine.wrap(function()
		local _tick = tick()
		--
		while gui and gui.Parent and running do
			--- Math
			local i = (tick() - _tick) * (1.0 / speed)
			if i >= 1 then
				_tick = tick()
				i = 0
			end

			--- Apply
			gui[property] = Color3.fromHSV(i, 1, 1)

			--- Wait
			_L.Services.RunService.Stepped:wait()
		end
	end)()

	--- Return function to cancel this behavior
	return function()
		running = false
	end
end


Prompt: -- services

Response:
local ReplicatedStorage	= game:GetService("ReplicatedStorage")
local Players			= game:GetService("Players")


Prompt: --Rescripted by Luckymaxer

Response:
Tool = script.Parent
Handle = Tool:WaitForChild("Handle")

Players = game:GetService("Players")

ServerControl = Tool:WaitForChild("ServerControl")
ClientControl = Tool:WaitForChild("ClientControl")

ClientControl.OnClientInvoke = (function(Mode, Value)
	if Mode == "PlaySound" and Value then
		Value:Play()
	end
end)

function InvokeServer(Mode, Value, arg)
	pcall(function()
		ServerControl:InvokeServer(Mode, Value, arg)
	end)
end

function Equipped(Mouse)
	Character = Tool.Parent
	Player = Players:GetPlayerFromCharacter(Character)
	Humanoid = Character:FindFirstChild("Humanoid")
	if not Player or not Humanoid or Humanoid.Health == 0 then
		return
	end
	Mouse.Button1Down:connect(function()
		InvokeServer("Click", true, Mouse.Hit.p)
	end)
end

local function Unequipped()

end

Tool.Equipped:connect(Equipped)
Tool.Unequipped:connect(Unequipped)


Prompt: --// Input Connections

Response:
L_107_.InputBegan:connect(function(L_314_arg1, L_315_arg2)
	if not L_315_arg2 and L_15_ then
		if L_314_arg1.UserInputType == (Enum.UserInputType.MouseButton2 or L_314_arg1.KeyCode == Enum.KeyCode.ButtonL2) and not L_79_ and not L_78_ and not L_77_ and L_24_.CanAim and not L_74_ and L_15_ and not L_66_ and not L_67_ then
			if not L_64_ then
				if not L_65_ then
					if L_24_.TacticalModeEnabled then
						L_154_ = 0.015
						L_155_ = 7
						L_3_:WaitForChild("Humanoid").WalkSpeed = 7
					else
						L_155_ = 10
						L_154_ = 0.008
						L_3_:WaitForChild("Humanoid").WalkSpeed = 10
					end

				end

				if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude <= 2 then
					L_97_ = L_50_
				end
				L_133_.target = L_56_.CFrame:toObjectSpace(L_44_.CFrame).p
				L_115_:FireServer(true)
				L_64_ = true
			end
		end;

		if L_314_arg1.KeyCode == Enum.KeyCode.A and L_15_ then
			L_134_ = CFrame.Angles(0, 0, 0.1)
		end;

		if L_314_arg1.KeyCode == Enum.KeyCode.D and L_15_ then
			L_134_ = CFrame.Angles(0, 0, -0.1)
		end;

		if L_314_arg1.KeyCode == Enum.KeyCode.E and L_15_ and not L_80_ and not L_81_ then
			L_80_ = true
			L_82_ = false
			L_81_ = true
			LeanRight()
		end

		if L_314_arg1.KeyCode == Enum.KeyCode.Q and L_15_ and not L_80_ and not L_82_ then
			L_80_ = true
			L_81_ = false
			L_82_ = true
			LeanLeft()
		end

		if L_314_arg1.KeyCode == L_24_.AlternateAimKey and not L_79_ and not L_78_ and not L_77_ and L_24_.CanAim and not L_74_ and L_15_ and not L_66_ and not L_67_ then
			if not L_64_ then
				if not L_65_ then
					L_3_.Humanoid.WalkSpeed = 10
					L_155_ = 10
					L_154_ = 0.008
				end
				L_97_ = L_50_
				L_133_.target = L_56_.CFrame:toObjectSpace(L_44_.CFrame).p
				L_115_:FireServer(true)
				L_64_ = true
			end
		end;

		if L_314_arg1.UserInputType == (Enum.UserInputType.MouseButton1 or L_314_arg1.KeyCode == Enum.KeyCode.ButtonR2) and not L_79_ and not L_77_ and L_69_ and L_15_ and not L_66_ and not L_67_ and not L_74_ then
			L_68_ = true
			if not Shooting and L_15_ and not L_83_ then
				if L_103_ > 0 then
					Shoot()
				end
			elseif not Shooting and L_15_ and L_83_ then
				if L_105_ > 0 then
					Shoot()
				end
			end
		end;

		if L_314_arg1.KeyCode == (L_24_.LaserKey or L_314_arg1.KeyCode == Enum.KeyCode.DPadRight) and L_15_ and L_24_.LaserAttached then
			local L_316_ = L_1_:FindFirstChild("LaserLight")
			L_122_.KeyDown[1].Plugin()
		end;

		if L_314_arg1.KeyCode == (L_24_.LightKey or L_314_arg1.KeyCode == Enum.KeyCode.ButtonR3) and L_15_ and L_24_.LightAttached then
			local L_317_ = L_1_:FindFirstChild("FlashLight"):FindFirstChild('Light')
			local L_318_ = false
			L_317_.Enabled = not L_317_.Enabled
		end;

		if L_15_ and L_314_arg1.KeyCode == (L_24_.FireSelectKey or L_314_arg1.KeyCode == Enum.KeyCode.DPadUp) and not L_79_ and not L_70_ and not L_78_ then
			L_70_ = true
			if L_92_ == 1 then
				if Shooting then
					Shooting = false
				end
				if L_24_.AutoEnabled then
					L_92_ = 2
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.AutoEnabled and L_24_.BurstEnabled then
					L_92_ = 3
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.AutoEnabled and not L_24_.BurstEnabled and L_24_.BoltAction then
					L_92_ = 4
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.AutoEnabled and not L_24_.BurstEnabled and not L_24_.BoltAction and L_24_.ExplosiveEnabled then
					L_92_ = 6
					L_83_ = true
					L_84_ = L_69_
					L_69_ = L_85_
				elseif not L_24_.AutoEnabled and not L_24_.BurstEnabled and not L_24_.BoltAction and not L_24_.ExplosiveEnabled then
					L_92_ = 1
					L_83_ = false
					L_69_ = L_84_
				end
			elseif L_92_ == 2 then
				if Shooting then
					Shooting = false
				end
				if L_24_.BurstEnabled then
					L_92_ = 3
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.BurstEnabled and L_24_.BoltAction then
					L_92_ = 4
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.BurstEnabled and not L_24_.BoltAction and L_24_.ExplosiveEnabled then
					L_92_ = 6
					L_83_ = true
					L_84_ = L_69_
					L_69_ = L_85_
				elseif not L_24_.BurstEnabled and not L_24_.BoltAction and not L_24_.ExplosiveEnabled and L_24_.SemiEnabled then
					L_92_ = 1
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.BurstEnabled and not L_24_.BoltAction and not L_24_.SemiEnabled then
					L_92_ = 2
					L_83_ = false
					L_69_ = L_84_
				end
			elseif L_92_ == 3 then
				if Shooting then
					Shooting = false
				end
				if L_24_.BoltAction then
					L_92_ = 4
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.BoltAction and L_24_.ExplosiveEnabled then
					L_92_ = 6
					L_83_ = true
					L_84_ = L_69_
					L_69_ = L_85_
				elseif not L_24_.BoltAction and not L_24_.ExplosiveEnabled and L_24_.SemiEnabled then
					L_92_ = 1
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.BoltAction and not L_24_.SemiEnabled and L_24_.AutoEnabled then
					L_92_ = 2
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.BoltAction and not L_24_.SemiEnabled and not L_24_.AutoEnabled then
					L_92_ = 3
					L_83_ = false
					L_69_ = L_84_
				end
			elseif L_92_ == 4 then
				if Shooting then
					Shooting = false
				end
				if L_24_.ExplosiveEnabled then
					L_92_ = 6
					L_83_ = true
					L_84_ = L_69_
					L_69_ = L_85_
				elseif not L_24_.ExplosiveEnabled and L_24_.SemiEnabled then
					L_92_ = 1
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.SemiEnabled and L_24_.AutoEnabled then
					L_92_ = 2
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.SemiEnabled and not L_24_.AutoEnabled and L_24_.BurstEnabled then
					L_92_ = 3
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.SemiEnabled and not L_24_.AutoEnabled and not L_24_.BurstEnabled then
					L_92_ = 4
					L_83_ = false
					L_69_ = L_84_
				end
			elseif L_92_ == 6 then
				if Shooting then
					Shooting = false
				end
				L_85_ = L_69_
				if L_24_.SemiEnabled then
					L_92_ = 1
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.SemiEnabled and L_24_.AutoEnabled then
					L_92_ = 2
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.SemiEnabled and not L_24_.AutoEnabled and L_24_.BurstEnabled then
					L_92_ = 3
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.SemiEnabled and not L_24_.AutoEnabled and not L_24_.BurstEnabled and L_24_.BoltAction then
					L_92_ = 4
					L_83_ = false
					L_69_ = L_84_
				elseif not L_24_.SemiEnabled and not L_24_.AutoEnabled and not L_24_.BurstEnabled and not L_24_.BoltAction then
					L_92_ = 6
					L_83_ = true
					L_84_ = L_69_
					L_69_ = L_85_
				end
			end
			UpdateAmmo()
			FireModeAnim()
			IdleAnim()
			L_70_ = false
		end;

		if L_314_arg1.KeyCode == (Enum.KeyCode.F or L_314_arg1.KeyCode == Enum.KeyCode.DPadDown) and not L_79_ and not L_77_ and not L_78_ and not L_67_ and not L_70_ and not L_64_ and not L_66_ and not Shooting and not L_76_ then
			if not L_73_ and not L_74_ then
				L_74_ = true
				Shooting = false
				L_69_ = false
				L_135_ = time()
				delay(0.6, function()
					if L_103_ ~= L_24_.Ammo and L_103_ > 0 then
						CreateShell()
					end
				end)
				BoltBackAnim()
				L_73_ = true
			elseif L_73_ and L_74_ then
				BoltForwardAnim()
				Shooting = false
				L_69_ = true
				if L_103_ ~= L_24_.Ammo and L_103_ > 0 then
					L_103_ = L_103_ - 1
				elseif L_103_ >= L_24_.Ammo then
					L_69_ = true
				end
				L_73_ = false
				L_74_ = false
				IdleAnim()
				L_75_ = false
			end
			UpdateAmmo()
		end;

		if L_314_arg1.KeyCode == (Enum.KeyCode.LeftShift or L_314_arg1.KeyCode == Enum.KeyCode.ButtonL3) and not L_78_ and not L_77_ and L_146_ then
			L_71_ = true
			if L_15_ and not L_70_ and not L_67_ and L_71_ and not L_65_ and not L_74_ then
				Shooting = false
				L_64_ = false
				L_67_ = true

				delay(0, function()
					if L_67_ and not L_66_ then
						L_64_ = false
						L_72_ = true
					end
				end)
				L_97_ = 80
				if L_24_.TacticalModeEnabled then
					L_154_ = 0.4
					L_155_ = 16
				else
					L_155_ = L_24_.SprintSpeed
					L_154_ = 0.4
				end
				L_3_.Humanoid.WalkSpeed = L_24_.SprintSpeed
			end
		end;

		if L_314_arg1.KeyCode == (Enum.KeyCode.R or L_314_arg1.KeyCode == Enum.KeyCode.ButtonX) and not L_79_ and not L_78_ and not L_77_ and L_15_ and not L_66_ and not L_64_ and not Shooting and not L_67_ and not L_74_ then
			if not L_83_ then
				if L_104_ > 0 and L_103_ < L_24_.Ammo then
					Shooting = false
					L_66_ = true

					for L_319_forvar1, L_320_forvar2 in pairs(game.Players:GetChildren()) do
						if L_320_forvar2 and L_320_forvar2:IsA('Player') and L_320_forvar2 ~= L_2_ and L_320_forvar2.TeamColor == L_2_.TeamColor then
							if (L_320_forvar2.Character.HumanoidRootPart.Position - L_3_.HumanoidRootPart.Position).magnitude  <= 150 then
								if L_7_:FindFirstChild('AHH') and not L_7_.AHH.IsPlaying then
									L_119_:FireServer(L_7_.AHH, L_100_[math.random(0, 23)])
								end
							end
						end
					end

					ReloadAnim()
					if L_103_ <= 0 then
						if L_24_.CanSlideLock then
							BoltBackAnim()
							BoltForwardAnim()
						end
					end

					IdleAnim()
					L_69_ = true

					if L_103_ <= 0 then
						if (L_104_ - (L_24_.Ammo - L_103_)) < 0 then
							L_103_ = L_103_ + L_104_
							L_104_ = 0
						else
							L_104_ = L_104_ - (L_24_.Ammo - L_103_)
							L_103_ = L_24_.Ammo
						end
					elseif L_103_ > 0 then
						if (L_104_ - (L_24_.Ammo - L_103_)) < 0 then
							L_103_ = L_103_ + L_104_ + 1
							L_104_ = 0
						else
							L_104_ = L_104_ - (L_24_.Ammo - L_103_)
							L_103_ = L_24_.Ammo + 0
						end
					end

					L_66_ = false
					if not L_75_ then
						L_69_ = true
					end
				end;
			elseif L_83_ then
				if L_105_ > 0 then
					Shooting = false
					L_66_ = true
					nadeReload()
					IdleAnim()
					L_66_ = false
					L_69_ = true
				end
			end;
			UpdateAmmo()
		end;

		if L_314_arg1.KeyCode == Enum.KeyCode.RightBracket and L_64_ then
			if (L_51_ < 1) then
				L_51_ = L_51_ + L_24_.SensitivityIncrement
			end
		end

		if L_314_arg1.KeyCode == Enum.KeyCode.LeftBracket and L_64_ then
			if (L_51_ > 0.1) then
				L_51_ = L_51_ - L_24_.SensitivityIncrement
			end
		end

		if L_314_arg1.KeyCode == (Enum.KeyCode.T or L_314_arg1.KeyCode == Enum.KeyCode.DPadLeft) and L_1_:FindFirstChild("AimPart2") then
			if not L_86_ then
				L_56_ = L_1_:WaitForChild("AimPart2")
				L_50_ = L_24_.CycleAimZoom
				if L_64_ then
					L_97_ = L_24_.CycleAimZoom
				end
				L_86_ = true
			else
				L_56_ = L_1_:FindFirstChild("AimPart")
				L_50_ = L_24_.AimZoom
				if L_64_ then
					L_97_ = L_24_.AimZoom
				end
				L_86_ = false
			end;
		end;

		if L_314_arg1.KeyCode == L_24_.InspectionKey and not L_79_ and not L_78_ then
			if not L_77_ then
				L_77_ = true
				InspectAnim()
				IdleAnim()
				L_77_ = false
			end
		end;

		if L_314_arg1.KeyCode == L_24_.AttachmentKey and not L_79_ and not L_77_ then
			if L_15_ then
				if not L_78_ then
					L_67_ = false
					L_64_ = false
					L_69_ = false
					L_78_ = true

					AttachAnim()
				elseif L_78_ then
					L_67_ = false
					L_64_ = false
					L_69_ = true
					L_78_ = false

					IdleAnim()
				end
			end
		end;

		if L_314_arg1.KeyCode == Enum.KeyCode.P and not L_77_ and not L_78_ and not L_64_ and not L_67_ and not L_65_ and not L_66_ and not Recoiling and not L_67_ then
			if not L_79_ then
				L_79_ = true
				L_14_:Create(L_45_, TweenInfo.new(0.2), {
					C1 = L_24_.SprintPos
				}):Play()
				wait(0.2)
				L_112_:FireServer("Patrol", L_24_.SprintPos)
			else
				L_79_ = false
				L_14_:Create(L_45_, TweenInfo.new(0.2), {
					C1 = CFrame.new()
				}):Play()
				wait(0.2)
				L_112_:FireServer("Unpatrol")
			end
		end;
	end
end)

L_107_.InputEnded:connect(function(L_321_arg1, L_322_arg2)
	if not L_322_arg2 and L_15_ then
		if L_321_arg1.UserInputType == (Enum.UserInputType.MouseButton2 or L_321_arg1.KeyCode == Enum.KeyCode.ButtonL2) and not L_77_ and L_24_.CanAim and not L_78_ then
			if L_64_ then
				if not L_65_ then
					L_3_:WaitForChild("Humanoid").WalkSpeed = 16
					if L_24_.TacticalModeEnabled then
						L_154_ = 0.09
						L_155_ = 11
					else
						L_154_ = .2
						L_155_ = 17
					end
				end
				L_97_ = 70
				L_133_.target = Vector3.new()
				L_115_:FireServer(false)
				L_64_ = false
			end
		end;

		if L_321_arg1.KeyCode == Enum.KeyCode.A and L_15_ then
			L_134_ = CFrame.Angles(0, 0, 0)
		end;

		if L_321_arg1.KeyCode == Enum.KeyCode.D and L_15_ then
			L_134_ = CFrame.Angles(0, 0, 0)
		end;

		if L_321_arg1.KeyCode == Enum.KeyCode.E and L_15_ and L_80_ then
			Unlean()
			L_80_ = false
			L_82_ = false
			L_81_ = false
		end

		if L_321_arg1.KeyCode == Enum.KeyCode.Q and L_15_ and L_80_ then
			Unlean()
			L_80_ = false
			L_82_ = false
			L_81_ = false
		end

		if L_321_arg1.KeyCode == L_24_.AlternateAimKey and not L_77_ and L_24_.CanAim then
			if L_64_ then
				if not L_65_ then
					L_3_.Humanoid.WalkSpeed = 16
					L_155_ = 17
					L_154_ = .25
				end
				L_97_ = 70
				L_133_.target = Vector3.new()
				L_115_:FireServer(false)
				L_64_ = false
			end
		end;

		if L_321_arg1.UserInputType == (Enum.UserInputType.MouseButton1 or L_321_arg1.KeyCode == Enum.KeyCode.ButtonR2) and not L_77_ then
			L_68_ = false
			if Shooting then
				Shooting = false
			end
		end;

		if L_321_arg1.KeyCode == Enum.KeyCode.E and L_15_ then
			local L_323_ = L_42_:WaitForChild('GameGui')
			if L_16_ then
				L_323_:WaitForChild('AmmoFrame').Visible = false
				L_16_ = false
			end
		end;

		if L_321_arg1.KeyCode == (Enum.KeyCode.LeftShift or L_321_arg1.KeyCode == Enum.KeyCode.ButtonL3) and not L_77_ and not L_70_ and not L_65_ then -- SPRINT
			L_71_ = false
			if L_67_ and not L_64_ and not Shooting and not L_71_ then
				L_67_ = false
				L_72_ = false
				L_97_ = 70

				L_3_.Humanoid.WalkSpeed = 16
				if L_24_.TacticalModeEnabled then
					L_154_ = 0.09
					L_155_ = 11
				else
					L_154_ = .2
					L_155_ = 17
				end
			end
		end;
	end
end)

L_107_.InputChanged:connect(function(L_324_arg1, L_325_arg2)
	if not L_325_arg2 and L_15_ and L_24_.FirstPersonOnly and L_64_ then
		if L_324_arg1.UserInputType == Enum.UserInputType.MouseWheel then
			if L_324_arg1.Position.Z == 1 and (L_51_ < 1) then
				L_51_ = L_51_ + L_24_.SensitivityIncrement
			elseif L_324_arg1.Position.Z == -1 and (L_51_ > 0.1) then
				L_51_ = L_51_ - L_24_.SensitivityIncrement
			end
		end
	end
end)

L_107_.InputChanged:connect(function(L_326_arg1, L_327_arg2)
	if not L_327_arg2 and L_15_ then
		local L_328_, L_329_ = workspace:FindPartOnRayWithIgnoreList(Ray.new(L_56_.CFrame.p, (L_56_.CFrame.lookVector).unit * 10000), IgnoreList);
		if L_328_ then
			local L_330_ = (L_329_ - L_6_.Position).magnitude
			L_33_.Text = math.ceil(L_330_) .. ' m'
		end
	end
end)


Prompt:
-- The subset of a Promise that React APIs rely on. This resolves a value.
-- This doesn't require a return value neither from the handler nor the
-- then function.
-- ROBLOX FIXME: workaround for Luau recursive type used with different parameters. delete this copy once that issue is resolved.

Response:
export type _Thenable<R> = {
	andThen: <U>(
		self: _Thenable<R>,
		onFulfill: (R) -> () | U,
		onReject: (error: any) -> () | U
	) -> (),
}

export type Thenable<R> = {
	andThen: <U>(
		self: Thenable<R>,
		onFulfill: (R) -> () | _Thenable<U> | U,
		onReject: (error: any) -> () | _Thenable<U> | U
		-- ROBLOX FIXME Luau: need union type packs to parse () | Thenable<U>: CLI-49836
	) -> nil | _Thenable<U>,
}

return exports


Prompt: --Funcion Del AutoClick

Response:
local plr = script.Parent.Parent.Parent
local timeAuto = plr.PlayerStats.timeAuto

local lea = plr:WaitForChild("leaderstats")-- Nombre De La Carpeta De Su Sistema De Dinero
local gold = lea:WaitForChild("TimesClicked")-- Nombre De Su Sistema De Dinero
local coin = lea:WaitForChild("Coins")-- Nombre De Su Sistema De Dinero
local boost = plr:WaitForChild("CoinBoost")-- Nombre De Su Sistema De Dinero
local world = plr:WaitForChild("WorldBoost")-- Nombre De Su Sistema De Dinero
local autoclick = false
local autoclickDD = false
function GetAuto()
	gold.Value = gold.Value +1 --Cambiar Por Cuanto Dinero Quieres Que Obtenga
	coin.Value = coin.Value + 1 + 1*boost.Value*world.Value
end

script.Parent.AutoClick.MouseButton1Click:Connect(function()
	if autoclick == false then
		autoclick = true
		script.Parent.AutoClick.Text = "ON"
	else
		autoclick = false
		script.Parent.AutoClick.Text = "OFF"
	end
end)

while wait()do
	if autoclick == true then
		if autoclickDD == false then
			autoclickDD = true
			GetAuto(1)-- Cambia El Tiempo De Espera Al Recargar
			wait(timeAuto.Value)-- Tambien Cambia Para El Tiempo De Espera Al Recargar
			autoclickDD = false
		end
	end
end


Prompt:
-- Given element.props.children, or subtree during recursive traversal,
-- return flattened array of children.

Response:
local function getChildren(arg: unknown, children_: Array<unknown>?)
	local children = children_ or {}
	if Array.isArray(arg) then
		Array.forEach(arg :: Array<unknown>, function(item)
			getChildren(item, children)
		end)
	elseif arg ~= nil and arg ~= false then
		table.insert(children, arg)
	end
	return children
end

local function getType(element: any)
	local type_ = element.type
	if typeof(type_) == "string" then
		return type_
	end
	-- ROBLOX deviation START: functions can't have properties in Lua
	if typeof(type_) == "function" then
		local typeName = debug.info(type_, "n")
		return if Boolean.toJSBoolean(typeName) then typeName else "Unknown"
	end
	if typeof(type_) == "table" then
		local metatable = getmetatable(type_)
		if metatable ~= nil and typeof(metatable.__call) == "function" then
			return if Boolean.toJSBoolean(type_.displayName)
				then type_.displayName
				elseif Boolean.toJSBoolean(type_.name) then type_.name
				else "Unknown"
		end
	end
	-- ROBLOX deviation END

	if ReactIs.isFragment(element) then
		return "React.Fragment"
	end
	if ReactIs.isSuspense(element) then
		return "React.Suspense"
	end
	if typeof(type_) == "table" and type_ ~= nil then
		if ReactIs.isContextProvider(element) then
			return "Context.Provider"
		end
		if ReactIs.isContextConsumer(element) then
			return "Context.Consumer"
		end

		if ReactIs.isForwardRef(element) then
			if Boolean.toJSBoolean(type_.displayName) then
				return type_.displayName
			end

			-- ROBLOX deviation START: check if type_.render is callable table
			local functionName = if typeof(type_.render) == "function"
					and Boolean.toJSBoolean(debug.info(type_.render, "n"))
				then debug.info(type_.render, "n")
				else if typeof(type_.render) == "table"
					then if Boolean.toJSBoolean(type_.render.displayName)
						then type_.render.displayName
						elseif Boolean.toJSBoolean(type_.render.name) then type_.render.name
						else ""
					else ""
			-- ROBLOX deviation END

			return if functionName ~= "" then "ForwardRef(" .. functionName .. ")" else "ForwardRef"
		end

		if ReactIs.isMemo(element) then
			local functionName = if Boolean.toJSBoolean(type_.displayName)
				then type_.displayName
				elseif
					typeof(type_.type) == "table" -- ROBLOX deviation: can't index functions in Lua
					and Boolean.toJSBoolean(type_.type.displayName)
				then type_.type.displayName
				elseif typeof(type_.type) == "function" and Boolean.toJSBoolean(debug.info(type_.type, "n")) then
					debug.info(type_.type, "n")
				else ""

			return if functionName ~= "" then "Memo(" .. functionName .. ")" else "Memo"
		end
	end
	return "UNDEFINED"
end

local function getPropKeys(element: any)
	local props = element.props

	return Array.sort(Array.filter(Object.keys(props), function(key)
		return key ~= "children" and props[key] ~= nil
	end))
end


Prompt: ---Setting IDs

Response:
for _,v in pairs(Car.Chassis:GetChildren()) do
	if v.Name == "Id" then
		if game.Players:FindFirstChild(CarStats.Owner.Value) then
			v.S.T.Text = game.Players[CarStats.Owner.Value].UserId
		end
	end
end


Prompt: ---- Script: -----

Response:
Event.OnServerEvent:Connect(function(player, Skin)

	local PlayerInventory = player.Inventory

	--Skin 1 de la caja
	if Skin == 1 then
		player.Inventory.Asphalt.Quantity.Value += 1
	elseif Skin == 2 then
		player.Inventory.Camo.Quantity.Value += 1
	elseif Skin == 3 then
		player.Inventory.Lime.Quantity.Value += 1
	elseif Skin == 4 then
		player.Inventory.Maple.Quantity.Value += 1
	elseif Skin == 5 then
		player.Inventory.Candy.Quantity.Value += 1
	elseif Skin == 6 then
		player.Inventory.Cardboard.Quantity.Value += 1
	elseif Skin == 7 then
		player.Inventory.WhiteOut.Quantity.Value += 1
	elseif Skin == 8  then
		player.Inventory.Scales.Quantity.Value += 1
	elseif Skin == 9 then
		player.Inventory.Matrix.Quantity.Value += 1
	elseif Skin == 10 then
		player.Inventory.Printstream.Quantity.Value += 1
	end
end)


Prompt:
-- Calls fn(...) in a separate thread and returns false if it errors or invoking client leaves the game.
-- Fail state is only checked every 0.5 seconds, so don't expect errors to return immediately

Response:
function SafeInvokeCallback(handler, ...)
	local finished = false
	local callbackThread
	local invokeThread
	local result

	local function finish(...)
		if not finished then
			finished = true
			result = table.pack(...)

			if invokeThread then
				ResumeThread(invokeThread)
			end
		end
	end

	FastSpawn(function(...)
		callbackThread = coroutine.running()
		finish(true, handler.Callback(...))
	end, ...)

	if not finished then
		local client = IsServer and (...)

		coroutine.wrap(function()
			while not finished and coroutine.status(callbackThread) ~= "dead" do
				if IsServer and client.Parent ~= Players then
					break
				end

				wait(0.5)
			end

			finish(false)
		end)()
	end

	if not finished then
		invokeThread = coroutine.running()
		YieldThread()
	end

	return unpack(result)
end

function SafeInvoke(timeout, handler, ...)
	local thread = coroutine.running()
	local finished = false
	local result

	coroutine.wrap(function(...)
		if IsServer then
			result = table.pack(pcall(function(...) return handler.Remote:InvokeClient(...) end, ...))
		else
			result = table.pack(pcall(function(...) return handler.Remote:InvokeServer(...) end, ...))
		end

		if not finished then
			finished = true
			ResumeThread(thread)
		end
	end)(...)

	if typeof(timeout) == "number" then
		delay(timeout, function()
			if not finished then
				finished = true
				ResumeThread(thread)
			end
		end)
	end

	YieldThread()

	if result and result[1] == true and result[2] == true then
		return true, unpack(result, 3)
	end

	return false
end

function SafeFireEvent(handler, ...)
	local callbacks = handler.Callbacks
	local index = #callbacks

	while index > 0 do
		local running = true

		FastSpawn(function(...)
			while running and index > 0 do
				local fn = callbacks[index]
				index -= 1

				fn(...)
			end
		end, ...)

		running = false
	end
end


Prompt: --Disable script if car is removed from workspace

Response:
Car.AncestryChanged:Connect(function()
	if not Car:IsDescendantOf(Workspace) then
		unbindActions()

		LocalVehicleSeating.ExitSeat()
		LocalVehicleSeating.DisconnectFromSeatExitEvent(onExitSeat)
		-- stop seated anim
		print("car removed from workspace")

		script.Disabled = true
	end
end)

local function getInputValue(keyInfo, inputObj)
	for _, keyCodeInfo in ipairs(keyInfo) do
		if inputObj.KeyCode == keyCodeInfo.KeyCode then
			if keyCodeInfo.Axis then
				local inputVector = inputObj.Position * keyCodeInfo.Axis
				local sign = math.sign(inputVector.X + inputVector.Y + inputVector.Z)
				return inputVector.magnitude * sign
			else
				return 1
			end
		end
	end
	return 0
end

local function exitVehicle(action, inputState, inputObj)
	if inputState == Enum.UserInputState.Begin then
		LocalVehicleSeating.ExitSeat()
		-- stop seated anim
	end
end

ContextActionService:BindAction(
	EXIT_ACTION_NAME,
	exitVehicle,
	false,
	Keymap.EnterVehicleGamepad,
	Keymap.EnterVehicleKeyboard
)

local function steerLeftAction(action, inputState, inputObj)
	if inputState == Enum.UserInputState.Begin or inputState == Enum.UserInputState.Change then
		SteerLeftValue = getInputValue(Keymap.SteerLeft, inputObj)
	else
		SteerLeftValue = 0
	end
	return Enum.ContextActionResult.Pass
end

ContextActionService:BindActionAtPriority(
	STEER_LEFT_ACTION_NAME,
	steerLeftAction,
	false,
	Enum.ContextActionPriority.High.Value,
	unpack(Keymap.KeysForAction("SteerLeft"))
)

local function steerRightAction(action, inputState, inputObj)
	if inputState == Enum.UserInputState.Begin or inputState == Enum.UserInputState.Change then
		SteerRightValue = getInputValue(Keymap.SteerRight, inputObj)
	else
		SteerRightValue = 0
	end
	return Enum.ContextActionResult.Pass
end

ContextActionService:BindActionAtPriority(
	STEER_RIGHT_ACTION_NAME,
	steerRightAction,
	false,
	Enum.ContextActionPriority.High.Value,
	unpack(Keymap.KeysForAction("SteerRight"))
)

local function throttleAction(action, inputState, inputObj)
	if inputState == Enum.UserInputState.Begin or inputState == Enum.UserInputState.Change then
		ThrottleValue = getInputValue(Keymap.Throttle, inputObj)
	else
		ThrottleValue = 0
	end
end

ContextActionService:BindAction(
	THROTTLE_ACTION_NAME,
	throttleAction,
	false,
	unpack(Keymap.KeysForAction("Throttle"))
)

local function brakeAction(action, inputState, inputObj)
	if inputState == Enum.UserInputState.Begin or inputState == Enum.UserInputState.Change then
		BrakeValue = getInputValue(Keymap.Brake, inputObj)
	else
		BrakeValue = 0
	end
end

ContextActionService:BindAction(
	BRAKE_ACTION_NAME,
	brakeAction,
	false,
	unpack(Keymap.KeysForAction("Brake"))
)

local function handBrakeAction(action, inputState, inputObj)
	if inputState == Enum.UserInputState.Begin then
		HandBrakeValue = 1
	else
		HandBrakeValue = 0
	end
end

ContextActionService:BindAction(
	HAND_BRAKE_ACTION_NAME,
	handBrakeAction,
	false,
	unpack(Keymap.KeysForAction("Handbrake"))
)


Prompt: --// Recoil Settings

Response:
	gunrecoil = -0.75; -- How much the gun recoils backwards when not aiming
	camrecoil = 1.06; -- How much the camera flicks when not aiming
	AimGunRecoil = -0.75; -- How much the gun recoils backwards when aiming
	AimCamRecoil = 0.83; -- How much the camera flicks when aiming

	CamShake = 7; -- THIS IS NEW!!!! CONTROLS CAMERA SHAKE WHEN FIRING
	AimCamShake = 5; -- THIS IS ALSO NEW!!!!

	Kickback = 12.2; -- Upward gun rotation when not aiming
	AimKickback = 9.11; -- Upward gun rotation when aiming


Prompt: --collect :GetFriendsOnline() calls from the clients - use the results to verify friendships between users, store them in this script so that other aspects of the game can use the IsFriendsWith BindableFunction to check


Prompt:
------------------------------------------------------------------------
--
-- * used in (lparser) luaY:whilestat(), luaY:repeatstat(), luaY:forbody()
------------------------------------------------------------------------

Response:
function luaK:patchlist(fs, list, target)
  if target == fs.pc then
    self:patchtohere(fs, list)
  else
    assert(target < fs.pc)
    self:patchlistaux(fs, list, target, luaP.NO_REG, target)
  end
end


Prompt: --[[ Constants ]]

Response:
--
local DPAD_SHEET = "rbxasset://textures/ui/DPadSheet.png"
local TOUCH_CONTROL_SHEET = "rbxasset://textures/ui/TouchControlsSheet.png"
local ZERO_VECTOR3 = Vector3.new(0,0,0)
local UNIT_Z = Vector3.new(0,0,1)
local UNIT_X = Vector3.new(1,0,0)


Prompt: -- setup emote chat hook

Response:
game:GetService("Players").LocalPlayer.Chatted:Connect(function(msg)
	local emote = ""
	if msg == "/e dance" then
		emote = dances[math.random(1, #dances)]
	elseif (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, 0.1, Humanoid)
	end

end)


Prompt:
--[[
	Check if all humanoids has completed animation for hiding/showing.
]]

Response:
modules.waitForHumanoidAnimations = function(self)
	return function()
		for _, humanoidController in pairs(self.humanoidControllers) do
			if humanoidController:isAnimating() then
				humanoidController.animationCompleted.Event:Wait()
			end
		end
	end
end

modules.getModelFace = function()
	return function(model)
		local face = model:GetAttribute(constants.Attributes.SurfaceCanvasFace)
		if not face then
			return Enum.NormalId.Front
		end

		-- Case insensitive to make it more user friendly
		face = string.lower(face)

		for _, enum in ipairs(Enum.NormalId:GetEnumItems()) do
			if string.lower(enum.Name) == string.lower(face) then
				return enum
			end
		end

		warn("[SurfaceArt] Face provided is in attributes is invalid, defaulting to Front")
		return Enum.NormalId.Front
	end
end

modules.cleanup = function(self)
	return function()
		self.userInputController:enable()
		self.guiController:enable()
		self.cameraModule:animateToHumanoidAsync()
	end
end

return modules


Prompt: --Formula secreta de don cangrejo

Response:
local RebirthFormule = game:GetService("ReplicatedStorage").GameProperties.RebirthFormule
local Formula = RebirthFormule.Value + (RebirthFormule.Value * Multiplier.Value)

if Points.Value >= Formula then
	Text.TextColor3 = Color3.new(0, 1, 0.14902)
	Text.Text = "Rebirth available!"
else
	Text.TextColor3 = Color3.new(1, 0, 0.0156863)
	Text.Text = "You dont have enough points to rebirth!"
end

Points.Changed:Connect(function()
	local FormulaUpdate = RebirthFormule.Value + (RebirthFormule.Value * Multiplier.Value)
	if Points.Value >= FormulaUpdate then
		Text.TextColor3 = Color3.new(0, 1, 0.14902)
		Text.Text = "Rebirth available!"
	else
		Text.TextColor3 = Color3.new(1, 0, 0.0156863)
		Text.Text = "You dont have enough points to rebirth!"
	end
end)


Prompt: -- SETUP ICON TEMPLATE

Response:
local topbarPlusGui = Instance.new("ScreenGui")
topbarPlusGui.Enabled = true
topbarPlusGui.DisplayOrder = 0
topbarPlusGui.IgnoreGuiInset = true
topbarPlusGui.ResetOnSpawn = false
topbarPlusGui.Name = "TopbarPlus"

local activeItems = Instance.new("Folder")
activeItems.Name = "ActiveItems"
activeItems.Parent = topbarPlusGui

local topbarContainer = Instance.new("Frame")
topbarContainer.BackgroundTransparency = 1
topbarContainer.Name = "TopbarContainer"
topbarContainer.Position = UDim2.new(0, 0, 0, 0)
topbarContainer.Size = UDim2.new(1, 0, 0, 36)
topbarContainer.Visible = true
topbarContainer.ZIndex = 1
topbarContainer.Parent = topbarPlusGui
topbarContainer.Active = false

local iconContainer = Instance.new("Frame")
iconContainer.BackgroundTransparency = 1
iconContainer.Name = "IconContainer"
iconContainer.Position = UDim2.new(0, 104, 0, 4)
iconContainer.Visible = false
iconContainer.ZIndex = 1
iconContainer.Parent = topbarContainer
iconContainer.Active = false

local iconButton = Instance.new("TextButton")
iconButton.Name = "IconButton"
iconButton.Visible = true
iconButton.Text = ""
iconButton.ZIndex = 10--2
iconButton.BorderSizePixel = 0
iconButton.AutoButtonColor = false
iconButton.Parent = iconContainer
iconButton.Active = false

local iconImage = Instance.new("ImageLabel")
iconImage.BackgroundTransparency = 1
iconImage.Name = "IconImage"
iconImage.AnchorPoint = Vector2.new(0, 0.5)
iconImage.Visible = true
iconImage.ZIndex = 11--3
iconImage.ScaleType = Enum.ScaleType.Fit
iconImage.Parent = iconButton
iconImage.Active = false

local iconLabel = Instance.new("TextLabel")
iconLabel.BackgroundTransparency = 1
iconLabel.Name = "IconLabel"
iconLabel.AnchorPoint = Vector2.new(0, 0.5)
iconLabel.Position = UDim2.new(0.5, 0, 0.5, 0)
iconLabel.Text = ""
iconLabel.RichText = true
iconLabel.TextScaled = false
iconLabel.ClipsDescendants = true
iconLabel.ZIndex = 11--3
iconLabel.Parent = iconButton
iconLabel.Active = false

local iconGradient = Instance.new("UIGradient")
iconGradient.Name = "IconGradient"
iconGradient.Enabled = true
iconGradient.Parent = iconButton

local iconCorner = Instance.new("UICorner")
iconCorner.Name = "IconCorner"
iconCorner.Parent = iconButton

local iconOverlay = Instance.new("Frame")
iconOverlay.Name = "IconOverlay"
iconOverlay.BackgroundTransparency = 1
iconOverlay.Position = iconButton.Position
iconOverlay.Size = UDim2.new(1, 0, 1, 0)
iconOverlay.Visible = true
iconOverlay.ZIndex = iconButton.ZIndex + 1
iconOverlay.BorderSizePixel = 0
iconOverlay.Parent = iconContainer
iconOverlay.Active = false

local iconOverlayCorner = iconCorner:Clone()
iconOverlayCorner.Name = "IconOverlayCorner"
iconOverlayCorner.Parent = iconOverlay


Prompt: -- ROBLOX upstream: https://github.com/facebook/jest/tree/v27.4.7/packages/jest-util/src/createDirectory.ts


Prompt: -- ROBLOX FIXME: workaround for defult generic param

Response: export type RawMatcherFn_ = RawMatcherFn<MatcherState>


Prompt: -- RIGHT HERE IS THE SETTINGS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Response:
module.BubbleChatEnabled = true
module.ClassicChatEnabled = true


Prompt: --	print("===> " .. string.sub(msg, 1, 3) .. "(" .. emote .. ")")

Response:
end)

if not script:FindFirstChild("pose") then
	local p = Instance.new("StringValue");
	p.Name = 'pose';
	p.Parent = script;
end
script.pose.Changed:connect(function()
	pose = script.pose.Value;
	playAnimation(pose, .1, Humanoid);
end)


Prompt: --------RIGHT DOOR --------

Response:
game.Workspace.doorright.l13.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l23.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l33.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l43.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l53.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l63.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l73.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)


Prompt:
---------------------------
--Seat Offset (Make copies of this block for passenger seats)

Response:
car.DriveSeat.ChildAdded:connect(function(child)
	if child.Name=="SeatWeld" and child:IsA("Weld") and game.Players:GetPlayerFromCharacter(child.Part1.Parent)~=nil then
		child.C0=CFrame.new(-1.6,-.5,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0)
	end
end)


Response:
mouse.KeyDown:connect(function (key)
    key = string.lower(key)
				if key == "k" then --Camera controls
				        if cam == ("car") then
							Camera.CameraSubject = player.Character.Humanoid
							Camera.CameraType = ("Custom")
							cam = ("freeplr")
							Camera.FieldOfView = 70
							player.Character.Humanoid.CameraOffset = Vector3.new(-0.17, 0.25, -0.2)
							limitButton.Text = "Free Camera"
							wait(3)
							limitButton.Text = ""
						elseif cam == ("freeplr") then
							Camera.CameraSubject = player.Character.Humanoid
							Camera.CameraType = ("Attach")
							cam = ("lockplr")
							Camera.FieldOfView = 70
							player.Character.Humanoid.CameraOffset = Vector3.new(-0.17, 0.25, -0.2)
							limitButton.Text = "FPV Camera"
							wait(3)
							limitButton.Text = ""
				        elseif cam == ("lockplr") then
							Camera.CameraSubject = carSeat
							Camera.CameraType = ("Custom")
							cam = ("car")
							Camera.FieldOfView = 70
							player.Character.Humanoid.CameraOffset = Vector3.new(0, 0, 0)
							limitButton.Text = "Standard Camera"
							wait(3)
							limitButton.Text = ""
				        end
			end
		end)


Prompt:
-----------------
--| Variables |--
-----------------

Response:
local DebrisService = Game:GetService('Debris')
local PlayersService = Game:GetService('Players')

local Rocket = script.Parent

local CreatorTag = Rocket:WaitForChild('creator')
local Tank = Rocket:WaitForChild('Tank').Value


Prompt: -- Require this module on the client. Use it to control the focus of the camera onto screens.


Prompt: -- Slider sizes (Max)

Response: local maxSize = UDim2.new(0.99, 0, 1, 0)


Prompt: --[[ Public API ]]

Response:
--
function MasterControl:Init()

	local renderStepFunc = function()
		if LocalPlayer and LocalPlayer.Character then
			local humanoid = getHumanoid()
			if not humanoid then return end

			if humanoid and not humanoid.PlatformStand and isJumping and _G.CanJump then
				humanoid.Jump = isJumping
			end

			_G.pMoveValue = moveValue;

			moveFunc(LocalPlayer, moveValue, true)
		end
	end

	local success = pcall(function() RunService:BindToRenderStep("MasterControlStep", Enum.RenderPriority.Input.Value, renderStepFunc) end)

	if not success then
		if RenderSteppedCon then return end
		RenderSteppedCon = RunService.RenderStepped:connect(renderStepFunc)
	end
end

function MasterControl:Disable()
	local success = pcall(function() RunService:UnbindFromRenderStep("MasterControlStep") end)
	if not success then
		if RenderSteppedCon then
			RenderSteppedCon:disconnect()
			RenderSteppedCon = nil
		end
	end

	moveValue = Vector3.new(0,0,0)
	isJumping = false
end

function MasterControl:AddToPlayerMovement(playerMoveVector)
	moveValue = Vector3.new(moveValue.X + playerMoveVector.X, moveValue.Y + playerMoveVector.Y, moveValue.Z + playerMoveVector.Z)
end

function MasterControl:GetMoveVector()
	return moveValue
end

function MasterControl:SetIsJumping(jumping)
	isJumping = jumping
end

function MasterControl:DoJump()
	local humanoid = getHumanoid()
	if humanoid and _G.CanJump then
		print(_G.CanJump);
		humanoid.Jump = true
	end
end

return MasterControl


Prompt: --[[Susupension]]

Response:
	Tune.SusEnabled		= true		-- works only in with PGSPhysicsSolverEnabled, defaults to false when PGS is disabled

	--Front Suspension
	Tune.FSusDamping	= 500		-- Spring Dampening
	Tune.FSusStiffness	= 9000		-- Spring Force
	Tune.FSusLength		= 2			-- Suspension length (in studs)
	Tune.FSusMaxExt		= .2		-- Max Extension Travel (in studs)
	Tune.FSusMaxComp	= .2		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)

	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Rear Suspension
	Tune.RSusDamping	= 500		-- Spring Dampening
	Tune.RSusStiffness	= 9000		-- Spring Force
	Tune.RSusLength		= 2			-- Suspension length (in studs)
	Tune.RSusMaxExt		= .3		-- Max Extension Travel (in studs)
	Tune.RSusMaxComp	= .1		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)

	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics
	Tune.SusVisible		= true			-- Spring Visible
	Tune.WsBVisible		= false			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Really black"	-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness


Prompt: -- Decompiled with the Synapse X Luau decompiler.

Response:
local l__Players__1 = game:GetService("Players");
local v2 = l__Players__1.LocalPlayer;
if not v2 then
	l__Players__1:GetPropertyChangedSignal("LocalPlayer"):Wait();
	v2 = l__Players__1.LocalPlayer;
end;
local u1 = false;
local u2 = nil;
local u3 = UDim2.new(0, 80, 0, 58);
local u4 = Color3.fromRGB(32, 32, 32);
local u5 = Color3.fromRGB(200, 200, 200);
local u6 = (function(p1, p2)
	local v3 = p1:FindFirstChildOfClass(p2);
	while not v3 or v3.ClassName ~= p2 do
		v3 = p1.ChildAdded:Wait();
	end;
	return v3;
end)(v2, "PlayerGui");
local u7 = nil;
local u8 = nil;
local u9 = nil;
local u10 = nil;
local v4 = {};
local function u11()
	assert(not u1, "initializeUI called when already initialized");
	local u12 = "ScreenGui";
	u12 = {
		Name = "RbxCameraUI",
		AutoLocalize = false,
		Enabled = true,
		DisplayOrder = -1,
		IgnoreGuiInset = false,
		ResetOnSpawn = false,
		ZIndexBehavior = Enum.ZIndexBehavior.Sibling
	};
	local u13 = "ImageLabel";
	u13 = {
		Name = "Toast",
		Visible = false,
		AnchorPoint = Vector2.new(0.5, 0),
		BackgroundTransparency = 1,
		BorderSizePixel = 0,
		Position = UDim2.new(0.5, 0, 0, 8),
		Size = u3,
		Image = "rbxasset://textures/ui/Camera/CameraToast9Slice.png",
		ImageColor3 = u4,
		ImageRectSize = Vector2.new(6, 6),
		ImageTransparency = 1,
		ScaleType = Enum.ScaleType.Slice,
		SliceCenter = Rect.new(3, 3, 3, 3),
		ClipsDescendants = true
	};
	local u14 = "Frame";
	u14 = {
		Name = "IconBuffer",
		BackgroundTransparency = 1,
		BorderSizePixel = 0,
		Position = UDim2.new(0, 0, 0, 0),
		Size = UDim2.new(0, 80, 1, 0)
	};
	local u15 = "ImageLabel";
	u15 = {
		Name = "Icon",
		AnchorPoint = Vector2.new(0.5, 0.5),
		BackgroundTransparency = 1,
		Position = UDim2.new(0.5, 0, 0.5, 0),
		Size = UDim2.new(0, 48, 0, 48),
		ZIndex = 2,
		Image = "rbxasset://textures/ui/Camera/CameraToastIcon.png",
		ImageColor3 = u5,
		ImageTransparency = 1
	};
	u14[1] = (function(p3)
		local v5 = Instance.new(u15);
		p3.Parent = nil;
		local v6, v7, v8 = pairs(p3);
		while true do
			local v9 = nil;
			local v10 = nil;
			v10, v9 = v6(v7, v8);
			if not v10 then
				break;
			end;
			v8 = v10;
			if type(v10) == "string" then
				v5[v10] = v9;
			else
				v9.Parent = v5;
			end;
		end;
		v5.Parent = p3.Parent;
		return v5;
	end)(u15);
	local u16 = "Frame";
	u14 = function(p4)
		local v11 = Instance.new(u16);
		p4.Parent = nil;
		local v12, v13, v14 = pairs(p4);
		while true do
			local v15 = nil;
			local v16 = nil;
			v16, v15 = v12(v13, v14);
			if not v16 then
				break;
			end;
			v14 = v16;
			if type(v16) == "string" then
				v11[v16] = v15;
			else
				v15.Parent = v11;
			end;
		end;
		v11.Parent = p4.Parent;
		return v11;
	end;
	u16 = {
		Name = "TextBuffer",
		BackgroundTransparency = 1,
		BorderSizePixel = 0,
		Position = UDim2.new(0, 80, 0, 0),
		Size = UDim2.new(1, -80, 1, 0),
		ClipsDescendants = true
	};
	local u17 = "TextLabel";
	u15 = function(p5)
		local v17 = Instance.new(u17);
		p5.Parent = nil;
		local v18, v19, v20 = pairs(p5);
		while true do
			local v21 = nil;
			local v22 = nil;
			v22, v21 = v18(v19, v20);
			if not v22 then
				break;
			end;
			v20 = v22;
			if type(v22) == "string" then
				v17[v22] = v21;
			else
				v21.Parent = v17;
			end;
		end;
		v17.Parent = p5.Parent;
		return v17;
	end;
	u17 = {
		Name = "Upper",
		AnchorPoint = Vector2.new(0, 1),
		BackgroundTransparency = 1,
		Position = UDim2.new(0, 0, 0.5, 0),
		Size = UDim2.new(1, 0, 0, 19),
		Font = Enum.Font.GothamMedium,
		Text = "Camera control enabled",
		TextColor3 = u5,
		TextTransparency = 1,
		TextSize = 19,
		TextXAlignment = Enum.TextXAlignment.Left,
		TextYAlignment = Enum.TextYAlignment.Center
	};
	u15 = u15(u17);
	local u18 = "TextLabel";
	u17 = function(p6)
		local v23 = Instance.new(u18);
		p6.Parent = nil;
		local v24, v25, v26 = pairs(p6);
		while true do
			local v27 = nil;
			local v28 = nil;
			v28, v27 = v24(v25, v26);
			if not v28 then
				break;
			end;
			v26 = v28;
			if type(v28) == "string" then
				v23[v28] = v27;
			else
				v27.Parent = v23;
			end;
		end;
		v23.Parent = p6.Parent;
		return v23;
	end;
	u18 = {
		Name = "Lower",
		AnchorPoint = Vector2.new(0, 0),
		BackgroundTransparency = 1,
		Position = UDim2.new(0, 0, 0.5, 3),
		Size = UDim2.new(1, 0, 0, 15),
		Font = Enum.Font.Gotham,
		Text = "Right mouse button to toggle",
		TextColor3 = u5,
		TextTransparency = 1,
		TextSize = 15,
		TextXAlignment = Enum.TextXAlignment.Left,
		TextYAlignment = Enum.TextYAlignment.Center
	};
	u16[1] = u15;
	u16[2] = u17(u18);
	u13[1] = (function(p7)
		local v29 = Instance.new(u14);
		p7.Parent = nil;
		local v30, v31, v32 = pairs(p7);
		while true do
			local v33 = nil;
			local v34 = nil;
			v34, v33 = v30(v31, v32);
			if not v34 then
				break;
			end;
			v32 = v34;
			if type(v34) == "string" then
				v29[v34] = v33;
			else
				v33.Parent = v29;
			end;
		end;
		v29.Parent = p7.Parent;
		return v29;
	end)(u14);
	u13[2] = u14(u16);
	u12[1] = (function(p8)
		local v35 = Instance.new(u13);
		p8.Parent = nil;
		local v36, v37, v38 = pairs(p8);
		while true do
			local v39 = nil;
			local v40 = nil;
			v40, v39 = v36(v37, v38);
			if not v40 then
				break;
			end;
			v38 = v40;
			if type(v40) == "string" then
				v35[v40] = v39;
			else
				v39.Parent = v35;
			end;
		end;
		v35.Parent = p8.Parent;
		return v35;
	end)(u13);
	u13 = u6;
	u12.Parent = u13;
	u2 = (function(p9)
		local v41 = Instance.new(u12);
		p9.Parent = nil;
		local v42, v43, v44 = pairs(p9);
		while true do
			local v45 = nil;
			local v46 = nil;
			v46, v45 = v42(v43, v44);
			if not v46 then
				break;
			end;
			v44 = v46;
			if type(v46) == "string" then
				v41[v46] = v45;
			else
				v45.Parent = v41;
			end;
		end;
		v41.Parent = p9.Parent;
		return v41;
	end)(u12);
	u12 = u2;
	u7 = u12.Toast;
	u12 = u7.IconBuffer;
	u8 = u12.Icon;
	u12 = u7.TextBuffer;
	u9 = u12.Upper;
	u12 = u7.TextBuffer;
	u10 = u12.Lower;
	u1 = true;
end;
function v4.setCameraModeToastEnabled(p10)
	if not p10 and not u1 then
		return;
	end;
	if not u1 then
		u11();
	end;
	u7.Visible = p10;
	if not p10 then
		v4.setCameraModeToastOpen(false);
	end;
end;
local l__TweenService__19 = game:GetService("TweenService");
local u20 = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out);
local u21 = UDim2.new(0, 326, 0, 58);
function v4.setCameraModeToastOpen(p11)
	assert(u1);
	local v47 = {
		Size = p11 and u21 or u3
	};
	if p11 then
		local v48 = 0.4;
	else
		v48 = 1;
	end;
	v47.ImageTransparency = v48;
	l__TweenService__19:Create(u7, u20, v47):Play();
	local v49 = {};
	if p11 then
		local v50 = 0;
	else
		v50 = 1;
	end;
	v49.ImageTransparency = v50;
	l__TweenService__19:Create(u8, u20, v49):Play();
	local v51 = {};
	if p11 then
		local v52 = 0;
	else
		v52 = 1;
	end;
	v51.TextTransparency = v52;
	l__TweenService__19:Create(u9, u20, v51):Play();
	local v53 = {};
	if p11 then
		local v54 = 0;
	else
		v54 = 1;
	end;
	v53.TextTransparency = v54;
	l__TweenService__19:Create(u10, u20, v53):Play();
end;
return v4;


Prompt:
--[[
	Remove elements from a dictionary
]]

Response:
function Immutable.RemoveFromDictionary(dictionary, ...)
	local result = {}

	for key, value in next, dictionary do
		local found = false
		for listKey = 1, select("#", ...) do
			if key == select(listKey, ...) then
				found = true
				break
			end
		end
		if not found then
			result[key] = value
		end
	end

	return result
end


Response:
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local AvatarEditor = ReplicatedStorage.AvatarEditor
local QueryMap = require(AvatarEditor.Shared.QueryMap)
local Signal = require(AvatarEditor.Shared.Util.Signal)
local Maid = require(AvatarEditor.Shared.Util.Maid)
local Settings = require(AvatarEditor.Shared.Settings)
local Cache = require(AvatarEditor.Shared.Cache)
local Theme = require(AvatarEditor.Client.Theme)

local buttonTemplate = require(AvatarEditor.Gui.ButtonTemplateToLua)()

local cache = Cache.new(Settings.CACHE_SIZE)

local Class = {}
Class.__index = Class

local function copy(array)
	local new = {}
	table.move(array, 1, #array, 1, new)
	return new
end

local function getCacheKey(pattern, assetType, wearing, uid)
	local key = string.format("%s, %s, %s, %s", QueryMap.GetOptionName("AssetType", assetType), tostring(wearing), uid, pattern)
	return key
end

local function getFromCache(pattern, assetType, wearing, uid)
	local key = getCacheKey(pattern, assetType, wearing, uid)
	return cache:Get(key)
end

local function createCache(pattern, assetType, wearing, uid, list)
	local key = getCacheKey(pattern, assetType, wearing, uid)
	list = copy(list)
	cache:Set(key, list)
end

local function sort(list)
	table.sort(list, function(a, b)
		return a._name < b._name
	end)
end

function stringMatch(str, pattern)
	local patternIndex = 1
	local patternLength = #pattern
	local strIndex = 1
	local strLength = #str

	while patternIndex <= patternLength and strIndex <= strLength do
		local patternChar = pattern:sub(patternIndex, patternIndex):lower()
		local strChar = str:sub(strIndex, strIndex):lower()

		if patternChar == strChar then
			patternIndex = patternIndex + 1
		end

		strIndex = strIndex + 1
	end

	return patternLength > 0 and strLength > 0 and (patternIndex - 1) == patternLength
end

local function createButton()
	local button = buttonTemplate:Clone()
	return button
end

local function isWearing(assets, id)
	return assets[id]
end

function Class.new(scrollingFrame, catalogData, wearingAssets, searchState)
	local self = setmetatable({}, Class)

	self.ScrollingFrame = scrollingFrame
	self.All = catalogData
	self.List = catalogData
	self.Wearing = wearingAssets
	self.PageSize = Settings.PAGE_SIZE
	self.MaxPageSize = Settings.PAGE_SIZE
	self.GridLayout = scrollingFrame.UIGridLayout
	self.Maid = Maid.new()
	self.Listeners = Maid.new()
	self.Children = {}
	self.Pool = {}
	self.State = searchState
	self.ItemSelected = Signal.new()
	self.ViewDetails = Signal.new()

	for i = 1, 50 do
		self.Pool[i] = createButton()
	end

	self.Maid:GiveTask(Theme.Changed:Connect(function()
		self:Render()
	end))

	self.Maid:GiveTask(Theme:Bind(scrollingFrame, "ScrollBarImageColor3", "Scrollbar"))

	self.Maid:GiveTask(self.ScrollingFrame:GetPropertyChangedSignal("CanvasPosition"):Connect(function()
		local currentPageSize = self.PageSize
		local uiGridLayout = self.GridLayout
		-- i think indexing AbsoluteContentSize is really intensive especially on larger AbsoluteContentSize
		local scrollEnough = scrollingFrame.CanvasPosition.Y >= uiGridLayout.AbsoluteContentSize.Y - scrollingFrame.AbsoluteSize.Y - 10
		if scrollEnough then
			local newPageSize = math.min(currentPageSize + Settings.PAGE_SIZE, self.MaxPageSize)
			if newPageSize ~= currentPageSize then
				self.PageSize = newPageSize
				self:Update()
			end
		end
	end))

	for i, v in ipairs(self.All) do
		v._name = v.name:lower()
		v._wearing = isWearing(self.Wearing, v.id)
	end

	return self
end

function Class:GetItem()
	local pool = self.Pool
	local button = table.remove(pool, #pool)
	if not button then
		button = createButton()
	end
	return button
end

function Class:Render()
	local maid = self.Listeners
	local catalogList = self.List
	local children = self.Children
	local scrollingFrame = self.ScrollingFrame
	local uiGridLayout = self.GridLayout
	local pool = self.Pool
	local newChildren = table.create(1000)

	maid:DoCleaning()

	for i, v in ipairs(catalogList) do
		local button = children[i] or self:GetItem()
		button.LayoutOrder = i
		button.ItemLabel.Text = v.name
		button.Icon.Image = "rbxthumb://type=Asset&id=" .. v.id .. "&w=150&h=150"
		button.ItemLabel.Visible = false
		button.Wearing.Visible = v._wearing
		button.More.Visible = false
		newChildren[i] = button

		maid:GiveTask(Theme:Bind(button, "BackgroundColor3", "Button"))
		maid:GiveTask(Theme:Bind(button.ItemLabel, "TextColor3", "Text"))
		maid:GiveTask(Theme:Bind(button.ItemLabel, "TextStrokeColor3", "TextStroke"))
		maid:GiveTask(Theme:Bind(button.More, "BackgroundColor3", "Details"))
		maid:GiveTask(Theme:Bind(button.More, "TextColor3", "Text"))
		maid:GiveTask(Theme:Bind(button.Wearing, "BackgroundColor3", "Wearing"))

		maid:GiveTask(button.More.Activated:Connect(function(inputObject)
			self.ViewDetails:Fire(v)
		end))

		maid:GiveTask(button.TouchLongPress:Connect(function(touchPositions, inputState)
			button.ItemLabel.Visible = false
			button.More.Visible = false
			self.ViewDetails:Fire(v)
		end))

		maid:GiveTask(button.Activated:Connect(function(inputObject)
			self.ItemSelected:Fire(v, v._wearing)
		end))

		maid:GiveTask(button.InputBegan:Connect(function(inputObject)
			if not Settings.HOVER_INPUTS[inputObject.UserInputType] then
				return
			end

			button.ItemLabel.Visible = true
			if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
				button.More.Visible = true
			end
		end))

		maid:GiveTask(button.InputEnded:Connect(function(inputObject)
			if not Settings.HOVER_INPUTS[inputObject.UserInputType] then
				return
			end

			button.ItemLabel.Visible = false
			button.More.Visible = false
		end))

		button.Parent = scrollingFrame
	end

	for i = #catalogList + 1, #children do
		local button = children[i]
		button.Parent = nil
		table.insert(pool, button)
	end

	self.Children = newChildren
	scrollingFrame.CanvasSize = UDim2.new(0, 0, 0, uiGridLayout.AbsoluteContentSize.Y)
end

function Class:Search(list, pattern, assetType, wearing, uid)
	local results = table.create(10000)
	-- umm yeaaa
	if pattern == "" then
		if wearing then
			for i, v in ipairs(list) do
				if v._wearing then
					table.insert(results, v)
				end
			end
		else
			for i, v in ipairs(list) do
				if v.assetType == assetType then
					table.insert(results, v)
				end
			end
		end
	else
		if wearing then
			for i, v in ipairs(list) do
				if stringMatch(v._name, pattern) and v._wearing then
					table.insert(results, v)
				end
			end
		else
			for i, v in ipairs(list) do
				if stringMatch(v._name, pattern) and v.assetType == assetType then
					table.insert(results, v)
				end
			end
		end
	end

	return results
end

function Class:Update(reset)
	local scrollingFrame = self.ScrollingFrame
	local state = self.State

	if reset then
		self.PageSize = Settings.PAGE_SIZE
		self.MaxPageSize = Settings.PAGE_SIZE
		scrollingFrame.CanvasPosition = Vector2.new(0, 0)
	end

	local filteredItems = {}
	local cacheResults = getFromCache(state.search, state.assetType, state.wearing, state.uid)
	if cacheResults then
		self.MaxPageSize = #cacheResults

		for i = 1, self.PageSize do
			table.insert(filteredItems, i, cacheResults[i])
		end

		createCache(state.search, state.assetType, state.wearing, state.uid, cacheResults)
	else
		local searchResults = self:Search(self.All, state.search, state.assetType, state.wearing, state.uid)
		sort(searchResults)

		self.MaxPageSize = #searchResults

		for i = 1, self.PageSize do
			table.insert(filteredItems, i, searchResults[i])
		end

		createCache(state.search, state.assetType, state.wearing, state.uid, searchResults)
	end

	self.List = filteredItems
	self:Render()
end

function Class:UpdateWearing(wearingAssets)
	self.Wearing = wearingAssets
	for i, v in ipairs(self.All) do
		v._wearing = isWearing(self.Wearing, v.id)
	end
	self:Render()
end

function Class:Destroy()
	self.ScrollingFrame.CanvasPosition = Vector2.new(0, 0)
	self.ScrollingFrame = nil
	self.All = nil
	self.List = nil
	self.Wearing = nil
	self.PageSize = nil
	self.MaxPageSize = nil
	self.GridLayout = nil
	self.Maid:DoCleaning()
	self.Maid = nil
	self.Listeners:DoCleaning()
	self.Listeners = nil
	for i, v in ipairs(self.Children) do
		v:Destroy()
	end
	table.clear(self.Children)
	for i, v in ipairs(self.Pool) do
		v:Destroy()
	end
	table.clear(self.Pool)
	self.State = nil
	self.ItemSelected:Destroy()
	self.ItemSelected = nil
	self.ViewDetails:Destroy()
	self.ViewDetails = nil
end

return Class


Prompt:
--[[
	NOTES

- CenterWeld CFrame : CFrame.new(0,1.5,-5)

- CFrame.new(-7,2,-2) SOL math.rad(45)

- CFrame.new(7,2,-2) SAG math.rad(-45)

--]]
--// Variables \\--
---(

Response:
local center 	= Instance.new("Part")
local left		= Instance.new("Part")
local right		= Instance.new("Part")


Prompt: --[[ Functions of BaseCamera that are overridden by OrbitalCamera ]]

Response:
--
function OrbitalCamera:GetCameraToSubjectDistance()
	return self.curDistance
end

function OrbitalCamera:SetCameraToSubjectDistance(desiredSubjectDistance)
	local player = PlayersService.LocalPlayer
	if player then
		self.currentSubjectDistance = math.clamp(desiredSubjectDistance, self.minDistance, self.maxDistance)

		-- OrbitalCamera is not allowed to go into the first-person range
		self.currentSubjectDistance = math.max(self.currentSubjectDistance, self.FIRST_PERSON_DISTANCE_THRESHOLD)
	end
	self.inFirstPerson = false
	self:UpdateMouseBehavior()
	return self.currentSubjectDistance
end

function OrbitalCamera:CalculateNewLookVector(suppliedLookVector: Vector3, xyRotateVector: Vector2): Vector3
	local currLookVector: Vector3 = suppliedLookVector or self:GetCameraLookVector()
	local currPitchAngle: number = math.asin(currLookVector.y)
	local yTheta: number = math.clamp(xyRotateVector.y, currPitchAngle - math.rad(MAX_ALLOWED_ELEVATION_DEG), currPitchAngle - math.rad(MIN_ALLOWED_ELEVATION_DEG))
	local constrainedRotateInput: Vector2 = Vector2.new(xyRotateVector.x, yTheta)
	local startCFrame: CFrame = CFrame.new(ZERO_VECTOR3, currLookVector)
	local newLookVector: Vector3 = (CFrame.Angles(0, -constrainedRotateInput.x, 0) * startCFrame * CFrame.Angles(-constrainedRotateInput.y,0,0)).lookVector
	return newLookVector
end


Prompt: --//Main Function

Response:
ProximityPrompt.Triggered:Connect(function(Player)
	local Character = Player.Character
	local Torso = Character:WaitForChild("Head")
	ProximityPrompt.ActionText = "Wear"
	if Character:FindFirstChild(script.Parent.Parent.Name) then
		Character[script.Parent.Parent.Name]:Destroy()
	else
		local NewArmor = Armor:Clone()
		NewArmor:SetPrimaryPartCFrame(Torso.CFrame)
		NewArmor.PrimaryPart:Destroy()
		ProximityPrompt.ActionText = "Take off"
		for _, part in pairs (NewArmor:GetChildren()) do
			if part:IsA("BasePart") then
				WeldParts(Torso, part)
				part.CanCollide = false
				part.Anchored = false
			end
		end
		NewArmor.Parent = Character
	end
end)


Prompt:
--[[**
	ensures value is NaN

	@param value The value to check against

	@returns True iff the condition is satisfied, false otherwise
**--]]

Response:
function t.nan(value)
	if value ~= value then
		return true
	else
		return false
	end
end


Prompt:
--SETUP
-- EASY
---- Simply place the StarMapScripts folder in
----  any part and run the game.  The Initializer
----  script will start the star map generation
----  automagically.  You can change configuration
----  values in the script to get the desired
----  effect [see CONFIGURATION].
-- INTERMEDIATE
---- Place the StarMapScripts inside a part.  If
----  you would like the scripts to start on their
----  own, leave the Initializer script alone.
----  Otherwise, you can delete/disable the
----  Initializer script.
---- To regenerate the starmap and pass in a new
----  configuration [see CONFIGURATION], you need
----  to require() the StarMapScript module.  The
----  module itself simply returns a function, so
----  if you load the module into a variable like so
-----  local starmap = require([StarMapScript])
----  then you only need to call it as a function
----  to regenerate the map:
-----  starmap()
----  Alternatively, you can simply do this:
-----  require([StarMapScript])()
----  to generate the starmap without a variable.
---- Of course you can pass in a configuration table
----  to generate different types of maps.
----  [see CONFIGURATION]
-- ADVANCED
---- Effectively the same as INTERMEDIATE but you can
----  disable the Initializer script, put the scripts
----  folder anywhere you like, and load any star maps
----  you would like one after the other using a custom
----  configuration table.
-----  e.g. {
-----		  Part = workspace.MyPart,
-----		  Object_Parent = workspace.MyPart
-----		{
---- WARNING:
---- If you choose to use this method, you MUST
----  specify a new Object_Parent in the configuration
----  table each time you generate a new map.  If
----  you don't any stars you generate will be
----  removed when the function is called again.
---- The StarMap function supports a callback when
----  it is finished generating a map.  Simply pass
----  in a table containing a "Callback" key that has
----  a function value, and that function will be
----  called when the generation routine has finished.
---- The callback is called using spawn() so you don't
----  have to worry about holding the script up.
---- The function itself will hold any functions
----  calling it however, unless you use spawn() to
----  call it.


Prompt: --// Return values: bool filterSuccess, bool resultIsFilterObject, variant result

Response:
function methods:InternalApplyRobloxFilterNewAPI(speakerName, message) --// USES FFLAG
	local alwaysRunFilter = false
	local runFilter = RunService:IsServer() and not RunService:IsStudio()
	if (alwaysRunFilter or runFilter) then
		local fromSpeaker = self:GetSpeaker(speakerName)
		if fromSpeaker == nil then
			return false, nil, nil
		end

		local fromPlayerObj = fromSpeaker:GetPlayer()
		if fromPlayerObj == nil then
			return true, false, message
		end

		local success, filterResult = pcall(function()
			local ts = game:GetService("TextService")
			local result = ts:FilterStringAsync(message, fromPlayerObj.UserId)
			return result
		end)
		if (success) then
			return true, true, filterResult
		else
			warn("Error filtering message:", message)
			self:InternalNotifyFilterIssue()
			return false, nil, nil
		end
	else
		--// Simulate filtering latency.
		wait(0.2)
		return true, false, message
	end

	return nil
end

function methods:InternalDoMessageFilter(speakerName, messageObj, channel)
	local filtersIterator = self.FilterMessageFunctions:GetIterator()

	for funcId, func, priority in filtersIterator do
		local success, errorMessage = pcall(function()
			func(speakerName, messageObj, channel)
		end)

		if not success then
			warn(string.format("DoMessageFilter Function '%s' failed for reason: %s", funcId, errorMessage))
		end
	end
end

function methods:InternalDoProcessCommands(speakerName, message, channel)
	local commandsIterator = self.ProcessCommandsFunctions:GetIterator()

	for funcId, func, priority in commandsIterator do
		local success, returnValue = pcall(function()
			local ret = func(speakerName, message, channel)
			if type(ret) ~= "boolean" then
				error("Process command functions must return a bool")
			end
			return ret
		end)

		if not success then
			warn(string.format("DoProcessCommands Function '%s' failed for reason: %s", funcId, returnValue))
		elseif returnValue then
			return true
		end
	end

	return false
end

function methods:InternalGetUniqueMessageId()
	local id = self.MessageIdCounter
	self.MessageIdCounter = id + 1
	return id
end

function methods:InternalAddSpeakerWithPlayerObject(speakerName, playerObj, fireSpeakerAdded)
	if (self.Speakers[speakerName:lower()]) then
		error("Speaker \"" .. speakerName .. "\" already exists!")
	end

	local speaker = Speaker.new(self, speakerName)
	speaker:InternalAssignPlayerObject(playerObj)
	self.Speakers[speakerName:lower()] = speaker

	if fireSpeakerAdded then
		local success, err = pcall(function() self.eSpeakerAdded:Fire(speakerName) end)
		if not success and err then
			print("Error adding speaker: " ..err)
		end
	end

	return speaker
end

function methods:InternalFireSpeakerAdded(speakerName)
	local success, err = pcall(function() self.eSpeakerAdded:Fire(speakerName) end)
	if not success and err then
		print("Error firing speaker added: " ..err)
	end
end