Roblox/luau_corpus huggingface dataset:
-- listen for jumping and landing and apply Sway and camera mvoement to the Viewmodel
Humanoid.StateChanged:Connect(function(oldstate, newstate)
	if isFirstPerson == true and IncludeJumpSway == true then -- dont apply camera/Viewmodel changes if we aren't in first person
		if newstate == Enum.HumanoidStateType.Landed then
			-- animate the camera's landing "thump"
			--
			-- tween a dummy cframe value for camera recoil
			local camedit = Instance.new("CFrameValue")
			camedit.Value = CFrame.new(0,0,0)*CFrame.Angles(math.rad(-0.75)*SwaySize,0,0)
			local landedrecoil = TweenService:Create(camedit, TweenInfo.new((0.03*6)/Sensitivity, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {Value = CFrame.new(0,0,0)}) ; landedrecoil:Play() ; game.Debris:AddItem(landedrecoil, 2)
			landedrecoil.Completed:Connect(function()
				camedit.Value = CFrame.new(0,0,0)*CFrame.Angles(math.rad(0.225)*SwaySize,0,0)
				local landedrecovery = TweenService:Create(camedit, TweenInfo.new((0.03*24)/Sensitivity, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Value = CFrame.new(0,0,0)}) ; landedrecovery:Play(); game.Debris:AddItem(landedrecovery, 3)
			end)
			-- apply the camera adjustments
			spawn(function()
				for i = 1,60 do
					Camera.CFrame = Camera.CFrame*camedit.Value
					RunService.Heartbeat:Wait()
				end
			end)
			-- animate the jump Sway to make the Viewmodel thump down on landing
			local viewmodelrecoil = TweenService:Create(JumpSwayGoal, TweenInfo.new(0.15/Sensitivity, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Value = CFrame.new(0,0,0)*CFrame.Angles(-math.rad(5)*SwaySize,0,0)}) ; viewmodelrecoil:Play(); game.Debris:AddItem(viewmodelrecoil, 2)
			viewmodelrecoil.Completed:Connect(function()
				local viewmodelrecovery = TweenService:Create(JumpSwayGoal, TweenInfo.new(0.7/Sensitivity, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Value = CFrame.new(0,0,0)}) ; viewmodelrecovery:Play() ; game.Debris:AddItem(viewmodelrecovery, 2)
			end)
		elseif newstate == Enum.HumanoidStateType.Freefall then
			-- animate jump Sway when the Character is falling or jumping
			local viewmodeljump = TweenService:Create(JumpSwayGoal, TweenInfo.new(0.5/Sensitivity, Enum.EasingStyle.Sine), {Value = CFrame.new(0,0,0)*CFrame.Angles(math.rad(7.5)*SwaySize,0,0)}) ; viewmodeljump:Play() ; game.Debris:AddItem(viewmodeljump, 2)
		end	
	end
end)

local ArmCoroutine
-- Get the policy info for the user
local success, result = pcall(PolicyService.GetPolicyInfoForPlayerAsync, PolicyService, player)
if success and result then
	if not result.AreAdsAllowed then
		-- Destroy all Main Portal Template instances on the user's client if ads are not allowed
		mainPortal:Destroy()
		mainImageAdUnit:Destroy()
	end
else
	print("Failed to get policy for player", player.Name, "Exception:", result)
end
--!strict
local PhysicsService = game:GetService("PhysicsService")

local OPT_CREATE_GROUPS = true
local OPT_GROUP_ATTRIBUTE = "CollisionGroup"
local ERR_NO_GROUP = "No %q attribute has been set on %s"

local fmt = string.format

local Util = {}

Util.__index = Util

function Util.new(instance: Instance)
	local self = setmetatable({}, Util)
	
	self._events = {}
	self._target = instance
	self._group = instance:GetAttribute(OPT_GROUP_ATTRIBUTE)
	
	if type(self._group) ~= "string" then
		error(fmt(ERR_NO_GROUP, OPT_GROUP_ATTRIBUTE, instance:GetFullName()), 2)
	end
	
	self:ApplyCollisionGroup()
	
	table.insert(self._events, self._target.DescendantAdded:Connect(function(child)
		if child:IsA("BasePart") then
			self:ApplyCollisionGroupToPart(child::BasePart)
		end
	end))
	
	return self
end

function Util:CreateCollisionGroupIfNotExists()
	if OPT_CREATE_GROUPS == false then
		return
	end
	
	if not PhysicsService:GetCollisionGroupId(self._group) then
		PhysicsService:CreateCollisionGroup(self._group)
	end
end

function Util:ApplyCollisionGroupToPart(part: BasePart)
	PhysicsService:SetPartCollisionGroup(part, self._group)
end

function Util:ApplyCollisionGroup()
	self:CreateCollisionGroupIfNotExists()
	
	if self._target:IsA("BasePart") then
		self:ApplyCollisionGroupToPart(self._target::BasePart)
	else
		for _, child: BasePart in ipairs(self._target:GetDescendants()) do
			if not child:IsA("BasePart") then
				continue
			end
			
			self:ApplyCollisionGroupToPart(child)
		end
	end
end

function Util:Destroy()
	for _, event: RBXScriptConnection in ipairs(self._events) do
		event:Disconnect()
	end
end

return Util
--[[
	Provides a client API to connect and disconnect UILayers from Zones.
	A connected UILayer opens on the local player's screen when the player enters the connected zone.
--]]

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

local UIHandler = require(script.Parent.UIHandler)
local UILayerId = require(ReplicatedStorage.Source.SharedConstants.UILayerId)
local ZoneIdTag = require(ReplicatedStorage.Source.SharedConstants.CollectionServiceTag.ZoneIdTag)

local localPlayer = Players.LocalPlayer :: Player

type ConnectionsByName = {
	-- [ConnectionName] = Connection
	[string]: RBXScriptConnection,
}

type ConnectionsByLayerId = {
	-- [UILayerId]
	[string]: ConnectionsByName,
}
type ConnectionsByZoneId = {
	-- [ZoneId]
	[string]: ConnectionsByLayerId,
}

local UIZoneHandler = {}
UIZoneHandler._uiConnectionsByZoneId = {} :: ConnectionsByZoneId

function UIZoneHandler.connectUiToZone(uiLayerId: UILayerId.EnumType, zoneId: ZoneIdTag.EnumType)
	local characterMaybe = localPlayer.Character

	if characterMaybe and CollectionService:HasTag(characterMaybe, zoneId) then
		UIHandler.show(uiLayerId)
	else
		UIHandler.hide(uiLayerId)
	end

	local connectionsByLayerId: ConnectionsByLayerId = UIZoneHandler._uiConnectionsByZoneId[zoneId] or {}
	local connectionsByName: ConnectionsByName = connectionsByLayerId[uiLayerId] or {}

	if not connectionsByName.instanceAddedSignal then
		connectionsByName.instanceAddedSignal = CollectionService:GetInstanceAddedSignal(zoneId)
			:Connect(function(instance: Instance)
				if instance ~= localPlayer.Character then
					return
				end

				UIHandler.show(uiLayerId)
			end)
	end

	if not connectionsByName.instanceRemovedSignal then
		connectionsByName.instanceRemovedSignal = CollectionService:GetInstanceRemovedSignal(zoneId)
			:Connect(function(instance: Instance)
				if instance ~= localPlayer.Character then
					return
				end

				UIHandler.hide(uiLayerId)
			end)
	end

	connectionsByLayerId[uiLayerId] = connectionsByName
	UIZoneHandler._uiConnectionsByZoneId[zoneId] = connectionsByLayerId
end

function UIZoneHandler.disconnectUiFromZone(uiLayerId: UILayerId.EnumType, zoneId: ZoneIdTag.EnumType)
	local connectionsByLayerId = UIZoneHandler._uiConnectionsByZoneId[zoneId]
	if not connectionsByLayerId then
		return
	end

	local connectionsByName = connectionsByLayerId[uiLayerId]
	if not connectionsByName then
		return
	end

	for _, connection in pairs(connectionsByName) do
		connection:Disconnect()
	end

	connectionsByLayerId[uiLayerId] = nil
end

return UIZoneHandler
-- весь интерфейс GUI размещать во фрейме frmContext
-- весьма желательно с якорем в (0.5,0.5) от центра формы
me.ramka.Size = UDim2.new(1,0,1,0)
me.Visible=false
-- ================================================================================
-- Settings - Overdrive
-- ================================================================================

local Settings = {}

Settings.DefaultSpeed = 250		-- Speed when not boosted [Studs/second, Range 50-300]
Settings.BoostSpeed = 400		-- Speed when boosted [Studs/second, Maximum: 400]
Settings.BoostAmount = 4		-- Duration of boost in seconds
Settings.Steering = 5			-- How quickly the speeder turns [Range: 1-10]
--Create the viewport camera
local Camera = instance("Camera")

local ValidClasses = {
	["MeshPart"] = true; ["Part"] = true; ["Accoutrement"] = true;
	["Pants"] = true; ["Shirt"] = true;
	["Humanoid"] = true; ["UnionOperation"] = true;
}

local function RenderHumanoid(Model, Parent, MainModel)
	local ModelParts = Model:GetDescendants()
	for i=1, #ModelParts do
		local Part		= ModelParts[i]
		
		if ValidClasses[Part.ClassName] then

			local a			= Part.Archivable
				Part.Archivable	= true
				
			local RenderClone	= Part:Clone()
				Part.Archivable	= a

			if (RenderClone.ClassName == "Part" or RenderClone.ClassName == "MeshPart") then
				RenderClone.CanCollide = false;
				--RenderClone.Anchored = true;
			end
		
			if Part.ClassName == "MeshPart" or Part.ClassName == "Part" then
				PartUpdater = RunService.Heartbeat:Connect(function()
					if Part then
						RenderClone.CFrame = Part.CFrame
					else
						RenderClone:Destroy()
						PartUpdater:Disconnect()
					end
				end)
			elseif Part:IsA("Accoutrement") then
				PartUpdater = RunService.Heartbeat:Connect(function()
					if Part then
						if RenderClone.Handle then
							RenderClone.Handle.CFrame = Part.Handle.CFrame
						end
					else
						RenderClone:Destroy()
						PartUpdater:Disconnect()
					end
				end)
			elseif Part.ClassName == "Humanoid" then
				--Disable all states. We only want it for clothing wrapping, not for stupid @$$ performance issues
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.FallingDown,			false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Running,				false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.RunningNoPhysics,	false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Climbing,			false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.StrafingNoPhysics,	false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Ragdoll,				false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.GettingUp,			false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Jumping,				false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Landed,				false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Flying,				false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Freefall,			false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Seated,				false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.PlatformStanding,	false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Dead,				false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Swimming,			false)
				RenderClone:SetStateEnabled(Enum.HumanoidStateType.Physics,				false)
			end
			
			RenderClone.Parent = Parent
		end 
	end
end
--Change sound id to the id you want to play


debounce = false

script.Parent.Touched:connect(function(hit)
if not debounce then
debounce = true
if(hit.Parent:FindFirstChild("Humanoid")~=nil)then
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
local sound = script.Parent.Sound:Clone()
sound.Parent = player.PlayerGui
sound:Play()
wait(0.1)--change to how long before the sound plays again after retouching it
end
debounce = false
end
end)
--[[ If you add more parts titled "Destination 3" or "Destination 4" etc. Then the platform will work with those new destinations.
Use Ctrl + D to duplicate a destination block while it is selected, which keeps the duplicate under the same folder.
If a destination is outside the folder, then it won't be added to the destination list.


SETTINGS - Edit the settings to change how the platform works.
------------------------------------------------------------------------------------------------------------------------------]]
moveDelay = 4 -- The delay (in seconds) for moving between destinations.

topSpeed = 30 -- The maximum speed that the platform can move at.
--[[

	signal = Signal.new([maid: Maid])
	signal = Signal.Proxy(rbxSignal: RBXScriptSignal [, maid: Maid])

	Signal.Is(object: any): boolean

	signal:Fire(...)
	signal:Wait()
	signal:WaitPromise()
	signal:Destroy()
	signal:DisconnectAll()

	connection = signal:Connect((...) -> void)

	connection:Disconnect()
	connection:IsConnected()

--]]

local Promise = require(script.Parent.Promise)

local Connection = {}
Connection.__index = Connection

function Connection.new(signal, connection)
	local self = setmetatable({
		_signal = signal;
		_conn = connection;
		Connected = true;
	}, Connection)
	return self
end

function Connection:Disconnect()
	if (self._conn) then
		self._conn:Disconnect()
		self._conn = nil
	end
	if (not self._signal) then return end
	self.Connected = false
	local connections = self._signal._connections
	local connectionIndex = table.find(connections, self)
	if (connectionIndex) then
		local n = #connections
		connections[connectionIndex] = connections[n]
		connections[n] = nil
	end
	self._signal = nil
end

function Connection:IsConnected()
	if (self._conn) then
		return self._conn.Connected
	end
	return false
end

Connection.Destroy = Connection.Disconnect
--[[
-- player.User.Id = 1266073872
-- мир в который зашёл
local lastWorld = DataStore2("lastWorld", player)	-- связывание переменной со значением в БД
local lw = lastWorld:Get("")						-- по умолчанию пустая строка
warn("lw: " .. lw)

pltmp = {}
pltmp.Character = player.Character
pltmp.UserId = string.sub(lw,35)
pltmp.Name = player.Name
]]


function meAdded(param)
	-- warn("build", param,"added")
	local creator = player.Name	
	
	local object = script.Parent:FindFirstChild(param.Name) -- ищем добавленную постройку
	if object then -- если не найдём нам тут делать не чего
		local obj_name = object:FindFirstChild("name") --WaitForChild()
		if obj_name then
			local _obj = obj_name.Value
			local _cframe =	tostring(object:GetPrimaryPartCFrame())
			if _obj and _cframe then
				local _var = _obj .. ", " .. _cframe		-- значение
				
				build[object.Name] = _var
				DataStore2.Combine(BaseName, "building")		-- совмещение базы с ключами
				local tmp = DataStore2("building", player)		-- связывание переменной со значением в БД
				-- !!!!! local tmp = DataStore2("building", lw)		-- связывание переменной со значением в БД
				local lc = tmp:Set(build)						-- сохраняем
			end
		else
			warn("build",param,"no found name")
		end
	else
		warn("build",param,"not found")
	end
	-- print("build table:",build)
end

function meRemove(param)
	-- warn("build", param,"remove")	
	build[param.Name] = nil
	-- print("build ", build)
	
	DataStore2.Combine(BaseName, "building")		-- совмещение базы с ключами
	local tmp = DataStore2("building", player)		-- связывание переменной со значением в БД
	-- !!!! local tmp = DataStore2("building", lw)		-- связывание переменной со значением в БД
	local lc = tmp:Set(build)						-- сохраняем
end

me.ChildAdded:Connect(meAdded)
me.ChildRemoved:Connect(meRemove)
-- [ LOCALS ] --

local Notification = ReplicatedStorage:WaitForChild("Notification")
--[[

	signal = Signal.new()

	signal:Fire(...)
	signal:Wait()
	signal:WaitPromise()
	signal:Destroy()
	signal:DisconnectAll()
	
	connection = signal:Connect(functionHandler)

	connection.Connected
	connection:Disconnect()
	connection:IsConnected()

--]]

local Promise

local Connection = {}
Connection.__index = Connection

function Connection.new(signal, connection)
	local self = setmetatable({
		_signal = signal;
		_conn = connection;
		Connected = true;
	}, Connection)
	return self
end

function Connection:Disconnect()
	if (self._conn) then
		self._conn:Disconnect()
		self._conn = nil
	end
	if (not self._signal) then return end
	self.Connected = false
	local connections = self._signal._connections
	local connectionIndex = table.find(connections, self)
	if (connectionIndex) then
		local n = #connections
		connections[connectionIndex] = connections[n]
		connections[n] = nil
	end
	self._signal = nil
end

function Connection:IsConnected()
	if (self._conn) then
		return self._conn.Connected
	end
	return false
end

Connection.Destroy = Connection.Disconnect
--[[
	Packages up the internals of Roact and exposes a public API for it.
]]

local GlobalConfig = require(script.GlobalConfig)
local createReconciler = require(script.createReconciler)
local createReconcilerCompat = require(script.createReconcilerCompat)
local RobloxRenderer = require(script.RobloxRenderer)
local strict = require(script.strict)
local Binding = require(script.Binding)

local robloxReconciler = createReconciler(RobloxRenderer)
local reconcilerCompat = createReconcilerCompat(robloxReconciler)

local Roact = strict {
	Component = require(script.Component),
	createElement = require(script.createElement),
	createFragment = require(script.createFragment),
	oneChild = require(script.oneChild),
	PureComponent = require(script.PureComponent),
	None = require(script.None),
	Portal = require(script.Portal),
	createRef = require(script.createRef),
	createBinding = Binding.create,
	joinBindings = Binding.join,

	Change = require(script.PropMarkers.Change),
	Children = require(script.PropMarkers.Children),
	Event = require(script.PropMarkers.Event),
	Ref = require(script.PropMarkers.Ref),

	mount = robloxReconciler.mountVirtualTree,
	unmount = robloxReconciler.unmountVirtualTree,
	update = robloxReconciler.updateVirtualTree,

	reify = reconcilerCompat.reify,
	teardown = reconcilerCompat.teardown,
	reconcile = reconcilerCompat.reconcile,

	setGlobalConfig = GlobalConfig.set,

	-- APIs that may change in the future without warning
	UNSTABLE = {
	},
}

return Roact
--// # key, ManOn
mouse.KeyDown:connect(function(key)
	if key=="h" then 
		veh.Lightbar.middle.Man:Play()
		veh.Lightbar.middle.Wail.Volume = 0
		veh.Lightbar.middle.Yelp.Volume = 0
		veh.Lightbar.middle.Priority.Volume = 0
		script.Parent.Parent.Sirens.Man.BackgroundColor3 = Color3.fromRGB(215, 135, 110)
	end
end)
-- Camera mod

local Camera = require(cameraModule)

Camera.UpVector = Vector3.new(0, 1, 0)
Camera.TransitionRate = 0.15
Camera.UpCFrame = IDENTITYCF

function Camera:GetUpVector(oldUpVector)
	return oldUpVector
end

function Camera:CalculateUpCFrame()
	local oldUpVector = self.UpVector
	local newUpVector = self:GetUpVector(oldUpVector)
	
	local backup = game.Workspace.CurrentCamera.CFrame.RightVector
	local transitionCF = getRotationBetween(oldUpVector, newUpVector, backup)
	local vecSlerpCF = IDENTITYCF:Lerp(transitionCF, self.TransitionRate)
	
	self.UpVector = vecSlerpCF * oldUpVector
	self.UpCFrame = vecSlerpCF * self.UpCFrame
end

function Camera:Update(dt)
	if self.activeCameraController then	
		local newCameraCFrame, newCameraFocus = self.activeCameraController:Update(dt)
		self.activeCameraController:ApplyVRTransform()
		
		self:CalculateUpCFrame()
		self.activeCameraController:UpdateUpCFrame(self.UpCFrame)
		
		local offset = newCameraFocus:Inverse() * newCameraCFrame
		newCameraCFrame = newCameraFocus * self.UpCFrame * offset
		
		if self.activeOcclusionModule then
			newCameraCFrame, newCameraFocus = self.activeOcclusionModule:Update(dt, newCameraCFrame, newCameraFocus)
		end
		
		game.Workspace.CurrentCamera.CFrame = newCameraCFrame
		game.Workspace.CurrentCamera.Focus = newCameraFocus
		
		if self.activeTransparencyController then
			self.activeTransparencyController:Update()
		end
	end
end
--------------------------------------------------------------------

mouse.KeyDown:connect(function(key)
	if key == camkey and enabled == false then
		enabled = true
		local character = char.Parent
		local descendants = character:GetDescendants()
		
		for index, descendant in pairs(descendants) do
			if descendant:IsA("Accessory") then
				descendant.Handle.Transparency = 1
			end
		end
			
	elseif key == camkey and enabled == true then
		enabled = false
		local character = char.Parent
		local descendants = character:GetDescendants()

		for index, descendant in pairs(descendants) do
			if descendant:IsA("Accessory") then
				descendant.Handle.Transparency = 0
			end
		end
	end
end)
car.DriveSeat.ChildRemoved:Connect(function(child)
	
	if child.Name == "SeatWeld" then
		local character = child.Part1.Parent
		local descendants = character:GetDescendants()

		for index, descendant in pairs(descendants) do
			if descendant:IsA("Accessory") then
				descendant.Handle.Transparency = 0
			end
		end
	end
end)
--// Handling Settings		
	Firerate = 60 / 1100; -- 60 = 1 Minute, 700 = Rounds per that 60 seconds. DO NOT TOUCH THE 60!
	
	FireMode = 2; -- 1 = Semi, 2 = Auto, 3 = Burst, 4 = Bolt Action, 5 = Shot, 6 = Explosive
--[[
	
	TouchThumbpad
	
--]]

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local GuiService = game:GetService("GuiService")
--[[Weight and CG]]
	Tune.Weight			= 2000		-- Total weight (in pounds)
	Tune.WeightBSize	= {			-- Size of weight brick (dimmensions in studs ; larger = more stable)
	 --[[Width]]		6		,
	 --[[Height]]		3.5		,
	 --[[Length]]		14		}
	Tune.WeightDist		= 50		-- Weight distribution (0 - on rear wheels, 100 - on front wheels, can be <0 or >100)
	Tune.CGHeight		= .8		-- Center of gravity height (studs relative to median of all wheels)
	Tune.WBVisible		= false		-- Makes the weight brick visible
	
	--Unsprung Weight
	Tune.FWheelDensity	= .1		-- Front Wheel Density
	Tune.RWheelDensity	= .1		-- Rear Wheel Density
	Tune.FWLgcyDensity	= 1			-- Front Wheel Density [PGS OFF]
	Tune.RWLgcyDensity	= 1			-- Rear Wheel Density [PGS OFF]
	
	Tune.AxleSize		= 2			-- Size of structural members (larger = more stable/carry more weight)
	Tune.AxleDensity	= .1		-- Density of structural members
--========================CAMERA========================--
input.InputBegan:connect(function(inp,CanWork)
	if inp.KeyCode == Settings.CameraKey and CanWork == false then
		if CamV == ("second") then
			cam.CameraType = "Custom"
			cam.FieldOfView = 70
			cam.CameraSubject = plane.PilotSeat
			CamV = ("third")
			script.Parent.HUD.Visible = false
			run=false
		elseif CamV == ("third") then
			run=true
			CamV = ("first")
			cam.FieldOfView = 100
			script.Parent.HUD.Visible = true
		elseif CamV == ("first") then
			run=true
			CamV = ("second")
			cam.FieldOfView = 100
		end
	end
end)
-- Ring3 ascending
for l = 1,#lifts3 do
	if (lifts3[l].className == "Part") then
	lifts3[l].BodyPosition.position = Vector3.new((lifts3[l].BodyPosition.position.x),(lifts3[l].BodyPosition.position.y+4),(lifts3[l].BodyPosition.position.z))
	end
end
wait(0.1)
for p = 1,#parts3 do
	parts3[p].CanCollide = true
end
wait(0.5)
-- Protected!
function DataStoreStage:_afterLoadGetAndApplyStagedData(name, data, defaultValue)
	if self._dataToSave and self._dataToSave[name] ~= nil then
		if self._dataToSave[name] == DataStoreDeleteToken then
			return defaultValue
		else
			return self._dataToSave[name]
		end
	elseif self._stores[name] then
		if self._stores[name]:HasWritableData() then
			local writer = self._stores[name]:GetNewWriter()
			local original = Table.deepCopy(data[name] or {})
			writer:WriteMerge(original)
			return original
		end
	end

	if data[name] == nil then
		return defaultValue
	else
		return data[name]
	end
end
--[=[
	Whenever the ValueObject changes, stores the resulting value in that entry.
	@param name string
	@param valueObj Instance -- ValueBase object to store on
	@return MaidTask
]=]
function DataStoreStage:StoreOnValueChange(name, valueObj)
	assert(type(name) == "string", "Bad name")
	assert(typeof(valueObj) == "Instance", "Bad valueObj")

	if self._takenKeys[name] then
		error(("[DataStoreStage] - Already have a writer for %q"):format(name))
	end

	self._takenKeys[name] = true
	local conn = valueObj.Changed:Connect(function()
		self:_doStore(name, valueObj.Value)
	end)
	self._maid:GiveTask(conn)
	return conn
end
--Link to online Chat Voice code - not for editing.
if game:findFirstChild("NetworkServer") == nil then
	error("Chat Voice 2.0 can only work in online mode!")
else
	require(294547006)(script, Chat_Voice_Settings)
end
--Math
function Util.normalize(normMin, normMax, value, realMin, realMax)
	if realMin == nil then
		realMin = 0
	end
	if realMax == nil then
		realMax  = 1
	end
	local value = (value - realMin)/(realMax - realMin) * (normMax - normMin) + normMin
	return value
end

function Util.denormalize(min, max, value)
	return (value * (max - (min)) + (min))
end

function Util.invertValue(value, largestValue, smallestValue)
	return (largestValue - value) + smallestValue
end
-- Game Services
local Configurations = require(game.ServerStorage.Configurations)
local Events = game.ReplicatedStorage.Events
local ResetMouseIcon = Events.ResetMouseIcon
local TeamManager = require(script.Parent.TeamManager)
local DisplayManager = require(script.Parent.DisplayManager)
--		Hold:Play()
--		HoldClose:Stop()
	elseif not PlayIdle then