Roblox/luau_corpus huggingface dataset:
-- ANimation
local Sound = script:WaitForChild("Haoshoku Sound")

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.B and Debounce == 1 and Tool.Equip.Value == true and Tool.Active.Value == "None" and energy.Value > 35 then
		Debounce = 2
		Track1 = plr.Character.Humanoid:LoadAnimation(script.AnimationCharge)
		Track1:Play()
		script.RemoteEventS:FireServer()
		for i = 1,math.huge do
			if Debounce == 2 then
				
				plr.Character.HumanoidRootPart.Anchored = true
			else
				
				break
				end
	     wait()
	  end
	end
end)

UIS.InputEnded:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.B and Debounce == 2 and Tool.Equip.Value == true and Tool.Active.Value == "None" then
		Debounce = 3
		local Track2 = plr.Character.Humanoid:LoadAnimation(script.AnimationRelease)
		Track2:Play()
		Track1:Stop()
		Sound:Play()
		local mousepos = Mouse.Hit
		script.RemoteEvent:FireServer(mousepos,Mouse.Hit.p)
		wait(1)
		plr.Character.LeftHand.EFhand:Destroy()
		plr.Character.RightHand.EFhand:Destroy()
		Track2:Stop()
		wait(.5)
		Tool.Active.Value = "None"
		wait(1.5)
		plr.Character.HumanoidRootPart.Anchored = false
		wait(5)
		Debounce = 1
	end
end)
--cam.FieldOfView = 80
local part = Instance.new("Part")
part.Anchored = true
part.CanCollide = false
part.Transparency = 0.5
part.BrickColor = BrickColor.new("Pastel light blue")
part.TopSurface = "Smooth"
part.BottomSurface = "Smooth"
part.formFactor = "Custom"
part.Size = Vector3.new(.2,1.2,.2)
local mesh = Instance.new("BlockMesh")
mesh.Scale = Vector3.new(.4,2,.4)
mesh.Parent = part
wait()

while true do
for i = 1, amount do
	wait(0.001)
	local drop = part:Clone()
-- Function Freeway
local function onTouch(player)
	local h = player.Parent.Humanoid
	if player and h then
		if h.JumpPower < JumpHeight.Value then
			h.JumpPower = JumpHeight.Value
		end
		h.Jump = true
	end
end
--------------------) Settings
Damage = 0 -- the ammout of health the player or mob will take

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

ZoneModelName = "Homing scythe" -- name the zone model

MobHumanoidName = "Humanoid"-- the name of player or mob u want to damage
-- We take currentWord, then add an ! to the beginning of it. 
-- The ! is a character that will not be used in the words in this typing test.
-- Then we add a ! to the beginning of the user input, then we find if it is a substring of currentWord2.
-- For example, we find if "!tes" is a substring of the current word, "!testing ".
-- If we did not have have the ! at the beginning of the word, "ting" would register as correct, as it is a substring of "testing".
-- The ! ensures that the substring is at the beginning of the word.

local colourWrong = Color3.new(1, 0, 0) -- red, #ff0000
local colourCorrect = Color3.new(0, 1, 0) -- green, #00ff00
-------- OMG HAX

r = game:service("RunService")


local damage = 0


local slash_damage = 0


sword = script.Parent.Handle
Tool = script.Parent



function attack()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end


function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,-1,0)
	Tool.GripUp = Vector3.new(-1,0,0)
end



Tool.Enabled = true

function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		
		return 
	end

	

	attack()

	wait(1)

	Tool.Enabled = true
end


function onEquipped()
end


script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)
--[=[
	Returns true if the queue is empty
	@return boolean
]=]
function Queue:IsEmpty()
	return self._first > self._last
end

return Queue
--edit the function below to return true when you want this response/prompt to be valid
--player is the player speaking to the dialogue, and dialogueFolder is the object containing the dialogue data
return function(player, dialogueFolder)
	local plrData = require(game.ReplicatedStorage.Source.Modules.Util):GetPlayerData(player)
	return plrData.Character.Purity.Value <= -10
end
--Mobile control
function CheckMobile()
	if UserInputService.TouchEnabled == true and UseGyroSteering.Value == false then -- Won't show mobile guis if gyro is enabled
		UserInputService.ModalEnabled = true
		GuiControls.Parent = PlayerGui
	end
end

function CheckVR()
	if UserInputService.VREnabled then
		UpdateVRPos()
		
		-- Hide tool UI using VR
		if PlayerGui and PlayerGui:FindFirstChild("DisplayGui") and PlayerGui:FindFirstChild("ColorGui") then
			PlayerGui:FindFirstChild("DisplayGui").Enabled = false
			PlayerGui:FindFirstChild("ColorGui").Enabled = false
		end
		UpdateCharTrans(1,0)	
	end
end
-- Other
local FerrisMotor = script.Parent:WaitForChild("FerrisMotor")
local IsMoving = false
local StartUpTime = 10
-- declarations

local Figure = script.Parent
local Torso = waitForChild(Figure, "Torso")
local RightShoulder = waitForChild(Torso, "Right Shoulder")
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
local RightHip = waitForChild(Torso, "Right Hip")
local LeftHip = waitForChild(Torso, "Left Hip")
local Neck = waitForChild(Torso, "Neck")
local Humanoid = waitForChild(Figure, "Zombie")
local pose = "Standing"

local toolAnim = "None"
local toolAnimTime = 0
-- Sample assumes a Main Portal Template and Image Ad Unit 1 model exists under Workspace
local mainPortal = Workspace:WaitForChild("Main Portal Template ")
local mainImageAdUnit = Workspace:WaitForChild("Image Ad Unit 21")
--- Runs all pending auto exec commands in Registry.AutoExecBuffer
function Registry:FlushAutoExecBuffer()
	for _, commandGroup in ipairs(self.AutoExecBuffer) do
		for _, command in ipairs(commandGroup) do
			self.Cmdr.Dispatcher:EvaluateAndRun(command)
		end
	end

	self.AutoExecBuffer = {}
end

return function (cmdr)
	Registry.Cmdr = cmdr

	return Registry
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)
--!strict
type Object = { [string]: any }

local function seal<T>(t: Object): T
	return (table.freeze(t) :: any) :: T
end

return seal
-- Modules
local Engine = require(script:WaitForChild("Engine"))
local ReplicatedModuleScripts = ReplicatedStorage:FindFirstChild("ModuleScripts")
local PlayerConverter = require(ReplicatedModuleScripts:FindFirstChild("PlayerConverter"))
--[[Brakes]]
	Tune.ABSEnabled		= true		-- Implements ABS
	Tune.ABSThreshold	= 20		-- Slip speed allowed before ABS starts working (in SPS) 

	Tune.FBrakeForce	= 1500		-- Front brake force
	Tune.RBrakeForce	= 500		-- Rear brake force
	Tune.PBrakeForce	= 5000		-- Handbrake force
	
	Tune.FLgcyBForce	= 15000		-- Front brake force [PGS OFF]
	Tune.RLgcyBForce	= 10000		-- Rear brake force [PGS OFF]
	Tune.LgcyPBForce	= 25000		-- Handbrake force [PGS OFF]
-- Get the Textboxes
local DevNameTextBox = script.Parent.Parent.DevName
local AppNameTextBox = script.Parent.Parent.AppName
local AppIconTextBox = script.Parent.Parent.AppIcon
local AppCodeTextBox = script.Parent.Parent.AppCode

local SubmitButton = script.Parent

SubmitButton.MouseButton1Click:Connect(function()
	local devName = DevNameTextBox.Text
	local appName = AppNameTextBox.Text
	local appIcon = AppIconTextBox.Text
	local appCode = AppCodeTextBox.Text

	game:GetService("ReplicatedStorage").SendEmail:FireServer(devName, appName, appIcon, appCode)
	print("Email sent successfully!")
end)
--Made by Stickmasterluke



function onHumanoidDied(humanoid,player)
	local stats=player:findFirstChild("leaderstats")
	if stats~=nil then
		local deaths=stats:findFirstChild("Wipeouts")
		deaths.Value=deaths.Value + 1
		local killer=getKillerOfHumanoidIfStillInGame(humanoid)
		handleKillCount(humanoid,player)
	end
end

function onPlayerRespawn(property,player)
	if property=="Character" and player.Character~=nil then
		local humanoid=player.Character.Humanoid
		local p=player
		humanoid.Died:connect(function()
			onHumanoidDied(humanoid,p)
		end)
	end
end

function getKillerOfHumanoidIfStillInGame(humanoid)
	local tag=humanoid:findFirstChild("creator")
	if tag~=nil then
		local killer=tag.Value
		if killer.Parent~=nil then
			return killer
		end
	end
	return nil
end

function handleKillCount(humanoid,player)
	local killer=getKillerOfHumanoidIfStillInGame(humanoid)
	if killer~=nil then
		local stats=killer:findFirstChild("leaderstats")
		if stats~=nil then
			local kills=stats:findFirstChild("KOs")
			if killer~=player then
				kills.Value=kills.Value+1
			else
				kills.Value=kills.Value-1
			end
		end
	end
end

function onPlayerEntered(newPlayer)
	local stats=Instance.new("IntValue")
	stats.Name="leaderstats"
	local kills=Instance.new("IntValue")
	kills.Name="KOs"
	kills.Value=0
	local deaths=Instance.new("IntValue")
	deaths.Name="Wipeouts"
	deaths.Value=0
	kills.Parent=stats
	deaths.Parent=stats

	while true do
		if newPlayer.Character~=nil then break end
		wait(5)
	end

	local humanoid=newPlayer.Character.Humanoid
	humanoid.Died:connect(function()
		onHumanoidDied(humanoid,newPlayer)
	end)

	newPlayer.Changed:connect(function(property)
		onPlayerRespawn(property,newPlayer)
	end)

	stats.Parent=newPlayer
end

game.Players.ChildAdded:connect(onPlayerEntered)
-- Decompiled with the Synapse X Luau decompiler.

return function(p1)
	local u1 = false;
	local u2 = false;
	p1:WaitForChild("ClickDetector").MouseClick:Connect(function(p2)
		if u1 then
			return;
		end;
		u1 = true;
		if u2 then
			local v1 = Vector3.new(0, 0.6, 0);
		else
			v1 = Vector3.new(0, -0.6, 0);
		end;
		for v2, v3 in pairs(p1:GetChildren()) do
			if v3:IsA("BasePart") then
				v3.CFrame = v3.CFrame + v1;
			end;
		end;
		u2 = not u2;
		u1 = false;
	end);
end;
-- Returns the relative path from 'from' to 'to'
-- If no relative path can be solved, then 'to' is returned
function Path:relative(from: string, to: string)
	local from_root, from_dir, from_basename = self:_splitPath(from)
	local to_root, to_dir, to_basename = self:_splitPath(to)

	if not self:pathsEqual(from_root, to_root) then
		return to
	end

	local from_path, to_path = from_dir .. from_basename, to_dir .. to_basename
	local common_parts = self:_commonParts(from_path, to_path)
	local from_parts = self:_splitBySeparators(from_path)
	local to_parts = self:_splitBySeparators(to_path)

	local relative_parts = {}
	if #common_parts > 0 then
		for i = #common_parts, #from_parts - 1 do
			table.insert(relative_parts, "..")
		end
	end
	for i = #common_parts + 1, #to_parts do
		table.insert(relative_parts, to_parts[i])
	end

	return self:_rawjoin(relative_parts)
end

function Path:dirname(filepath: string)
	filepath = self:normalizeSeparators(filepath)
	if filepath:sub(filepath:len()) == self.sep then
		filepath = filepath:sub(1, -2)
	end

	local root, dir = self:_splitPath(filepath)

	if #dir > 0 then
		dir = dir:sub(1, #dir - 1)
		return root .. dir
	end
	if #root > 0 then
		return root
	end
	return "."
end

function Path:basename(filepath: string, expected_ext: string)
	local _, _, base = self:_splitPath(filepath)
	if expected_ext then
		local ext_pos = base:find(expected_ext:gsub(".", ".") .. "$")
		if ext_pos then
			base = base:sub(1, ext_pos - 1)
		end
	end
	return base
end

function Path:extname(filepath: string)
	local basename = self:basename(filepath)
	if basename == ".." then
		return ""
	else
		return basename:match(".(%.[^.]*)$") or ""
	end
end

function Path:isDriveRelative()
	return false
end

function Path:isAbsolute(filepath: string)
	return filepath:sub(1, self.root:len()) == self.root
end

function Path:normalizeSeparators(filepath: string)
	return filepath
end

return {
	Path = Path,
}
--//Controller//--
while task.wait(Configuration.Time.Value) do
	if Humanoid then
		Humanoid:TakeDamage(Configuration.Damage.Value)
	end
end
--[[
	Controller that sets different user interface views for the client. Listens to player state updates, creating and
	destructing views as necessary.
]]
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")

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

local userInterfaceFolder = ReplicatedStorage.Source.UserInterface

local views = {
	pregame = require(userInterfaceFolder.PreGame),
	pregameready = require(userInterfaceFolder.PreGameReady),
	game = require(userInterfaceFolder.Game),
	camera = require(userInterfaceFolder.Camera),
	postgame = require(userInterfaceFolder.PostGame)
}
local currentView

local UIController = {}
--used by checkTeams
function sameTeam(otherHuman)
	local player = Tag.Value
	local otherPlayer = game:GetService("Players"):GetPlayerFromCharacter(otherHuman.Parent)
	if player and otherPlayer then
		if player == otherPlayer then
			return true
		end
		if otherPlayer.Neutral then
			return false
		end
		return player.TeamColor == otherPlayer.TeamColor
	end
	return false
end

function tagHuman(human)
	local tag = Tag:Clone()
	tag.Parent = human
	game:GetService("Debris"):AddItem(tag)
end
--edit the below function to execute code when this response is chosen OR this prompt is shown
--player is the player speaking to the dialogue, and dialogueFolder is the object containing the dialogue data
return function(player, dialogueFolder)
	local Money = require(game.ReplicatedStorage.Source.SystemModules.Money)
	Money.SellPiece(player)
end
--[=[
	@return string
	Metamethod to transform the option into a string.
	```lua
	local optA = Option.Some(64)
	local optB = Option.None
	print(optA) --> Option<number>
	print(optB) --> Option<None>
	```
]=]
function Option:__tostring()
	if self:IsSome() then
		return ("Option<" .. typeof(self._v) .. ">")
	else
		return "Option<None>"
	end
end
--Made by Luckymaxer

Model = script.Parent

Debris = game:GetService("Debris")

FadeRate = 0.025
Rate = (1 / 15)

Removing = false

function RemoveModel()
	if Removing then
		return
	end
	local Parts = {}
	for i, v in pairs(Model:GetChildren()) do
		if v:IsA("BasePart") then
			table.insert(Parts, v)
		end
	end
	if #Parts == 0 then
		Removing = true
		Model.Name = ""
		Debris:AddItem(Model, 0.5)
	end
end

Model.ChildRemoved:connect(function(Child)
	RemoveModel()
end)

wait(1)

RemoveModel()
-- 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:GetService("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:GetService("Debris"):AddItem(landedrecovery, 3)
			end)
			-- apply the camera adjustments
			task.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:GetService("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:GetService("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:GetService("Debris"):AddItem(viewmodeljump, 2)
		end	
	end
end)
--Settings--
local mySettings = script.Parent.Settings
local debugOption = mySettings.Debug.Value
-- The optional property of matcher context is true if undefined.
-- ROBLOX deviation: upstream injects expand: false by default so we actually set to true if undefined
local function isExpand(expand: boolean?): boolean
	return not not expand
end
-- Update the TextLabel with the current date
function updateDate()
	local currentDate = getCurrentDate()
	TextLabelSht.Text = currentDate
	TextLabel.Text = currentDate
end
-- Clear any existing animation tracks
-- Fixes issue with characters that are moved in and out of the Workspace accumulating tracks
local animator = if Humanoid then Humanoid:FindFirstChildOfClass("Animator") else nil
if animator then
	local animTracks = animator:GetPlayingAnimationTracks()
	for i,track in ipairs(animTracks) do
		track:Stop(0)
		track:Destroy()
	end
end

for name, fileList in pairs(animNames) do
	configureAnimationSet(name, fileList)
end
for _,child in script:GetChildren() do
	if child.isA("StringValue") and not animNames[child.name] then
		animNames[child.Name] = {}
		configureAnimationSet(child.Name, animNames[child.Name])
	end
end
--[[
	Fired when PreGame is entered, throwing out a player state update, as well as transitioning the player state
]]
function Transitions.onEnterPreGame(stateMachine, event, from, to, playerComponent)
	Logger.trace(playerComponent.player.Name, " state change: ", from, " -> ", to)
	playerComponent:updateStatus("currentState", to)
	PlayerPreGame.enter(stateMachine, playerComponent)
end
--[[Drivetrain]]	
	Tune.Config			= "RWD"		--"FWD" , "RWD" , "AWD"
	
	--Differential Settings	
	Tune.FDiffSlipThres	= 50		-- 1 - 100%				(Max threshold of applying full lock determined by deviation from avg speed)
	Tune.FDiffLockThres	= 50		-- 0 - 100%				(0 - Bias toward slower wheel, 100 - Bias toward faster wheel)
	Tune.RDiffSlipThres	= 50		-- 1 - 100%
	Tune.RDiffLockThres	= 50		-- 0 - 100%
	Tune.CDiffSlipThres	= 50		-- 1 - 100%				[AWD Only]
	Tune.CDiffLockThres	= 50		-- 0 - 100%				[AWD Only]
	
	--Traction Control Settings
	Tune.TCSEnabled		= true		-- Implements TCS
	Tune.TCSThreshold	= 0	    	-- Slip speed allowed before TCS starts working (in SPS)
	Tune.TCSGradient	= 10      	-- Slip speed gradient between 0 to max reduction (in SPS)
	Tune.TCSLimit		= 10		-- Minimum amount of torque at max reduction (in percent)
--| Main |--
Remote.PhongDev.OnServerEvent:Connect(function(LocalPlayer)
	
	--| Clone |--
	local Emit_VFX = Access.VFX.In_Transform.Emit_VFX:Clone()
	Emit_VFX.Parent = LocalPlayer.Character.PrimaryPart
	Debris:AddItem(Emit_VFX, 5)
	
	local Emit_VFX2 = Access.VFX.In_Transform.Emit_VFX2:Clone()
	Emit_VFX2.Parent = LocalPlayer.Character.PrimaryPart
	Debris:AddItem(Emit_VFX2, 4)
	
	local Enabled_VFX = Access.VFX.In_Transform.Enabled_VFX:Clone()
	Enabled_VFX.Parent = LocalPlayer.Character.PrimaryPart
	Debris:AddItem(Enabled_VFX, 4)
	
	spawn(function()
		for i,v in pairs(Enabled_VFX:GetChildren()) do
			v.Enabled = true
		end
	end)
	
	
	delay(0.2,function()
	for i,v in pairs(Emit_VFX:GetChildren()) do
		v:Emit(v:GetAttribute("EmitCount"))
	end
	wait(2.05)
	for i,v in pairs(Emit_VFX2:GetChildren()) do
		v:Emit(v:GetAttribute("EmitCount"))
		end
	end)
	
	delay(2.05,function()
		local Transform = Access.VFX.Transform:Clone()
		Transform.Parent = LocalPlayer.Character.PrimaryPart
		Debris:AddItem(Transform, 4)
		
		local WeldPart = Instance.new("Weld", LocalPlayer.Character.PrimaryPart)
		WeldPart.Part0 = LocalPlayer.Character.PrimaryPart
		WeldPart.Part1 = Transform
		WeldPart.C0 = WeldPart.Part0.CFrame:ToObjectSpace(WeldPart.Part1.CFrame * CFrame.new(0,0,0))
		Debris:AddItem(WeldPart,4)
		
		for i,v in pairs(Transform.Emit_VFX:GetChildren()) do
			v:Emit(v:GetAttribute("EmitCount"))
		end
		wait(0.7)
		
		Transform.Bone:Destroy()
		
		for i,v in pairs(Transform.Enabled_VFX:GetChildren()) do
			v.Enabled = false
		end
	end)
	
	delay(4,function()
		local Body = Access.VFX.Body.VFX:Clone()
		Body.Parent = LocalPlayer.Character.PrimaryPart
		Debris:AddItem(Body, Cooldown.Value)
		
		wait(Cooldown.Value - 0.5)
		
		for i,v in pairs(Body:GetChildren()) do
			v.Enabled = false
		end
	end)
	
end)
--[=[
	Constructs a new service.

	:::caution
	Services must be created _before_ calling `Knit.Start()`.
	:::
	```lua
	-- Create a service
	local MyService = Knit.CreateService {
		Name = "MyService",
		Client = {},
	}

	-- Expose a ToAllCaps remote function to the clients
	function MyService.Client:ToAllCaps(player, msg)
		return msg:upper()
	end

	-- Knit will call KnitStart after all services have been initialized
	function MyService:KnitStart()
		print("MyService started")
	end

	-- Knit will call KnitInit when Knit is first started
	function MyService:KnitInit()
		print("MyService initialize")
	end
	```
]=]
function KnitServer.CreateService(serviceDef: ServiceDef): Service
	assert(type(serviceDef) == "table", "Service must be a table; got " .. type(serviceDef))
	assert(type(serviceDef.Name) == "string", "Service.Name must be a string; got " .. type(serviceDef.Name))
	assert(#serviceDef.Name > 0, "Service.Name must be a non-empty string")
	assert(not DoesServiceExist(serviceDef.Name), "Service \"" .. serviceDef.Name .. "\" already exists")
	local service = serviceDef
	service.KnitComm = ServerComm.new(knitRepServiceFolder, serviceDef.Name)
	if type(service.Client) ~= "table" then
		service.Client = {Server = service}
	else
		if service.Client.Server ~= service then
			service.Client.Server = service
		end
	end
	services[service.Name] = service
	return service
end
-- ROBLOX TODO: ADO-1633 fix Jest Types imports
-- local Config = require(Packages.JestTypes).Config
type ConfigPath = string

local JestMatcherUtils = require(Packages.JestMatcherUtils)
local BOLD_WEIGHT = JestMatcherUtils.BOLD_WEIGHT
local EXPECTED_COLOR = JestMatcherUtils.EXPECTED_COLOR
--local function GetSameItem(instance)
--	for i,v in pairs(Main) do
--		if v==instance then 
--			return v
--		end
--	end
--end

local function HideAllFrames()
	for i,v in pairs(Main) do
		v.Visible=false
	end
end

local function ToggleVisibility(Element)
	local vis=Element.Visible
	HideAllFrames()
	if vis==true then return end
	if Element.Visible==true then
		Element.Visible=false
	elseif Element.Visible==false then
		Element.Visible=true
	end
end

for i,v in pairs(SettingsOpener:GetDescendants()) do
	if v:IsA("GuiButton") then
		local folder=v:FindFirstAncestorWhichIsA("Folder")
		v.Activated:Connect(function()
			ToggleVisibility(Main[folder])
		end)
	end
end

for i,v in pairs(ShopOpener:GetDescendants()) do
	if v:IsA("GuiButton") then
		local folder=v:FindFirstAncestorWhichIsA("Folder")
		v.Activated:Connect(function()
			ToggleVisibility(Main[folder])
		end)
	end
end

ToggleButton.Activated:Connect(function()
	ToggleVisibility(ToggleButton)
	for i,v in pairs(Main) do
		if type(i)=="userdata" then
			for s,a in pairs(i:GetDescendants()) do
				if a:IsA("GuiButton") then
					local vis=a.Visible
					if vis==true then
						a.Visible=false
					elseif vis==false then
						a.Visible=true
					end
				end
			end
		end
	end
	local caret=ToggleButton.Text
	if caret=="<" then
		ToggleButton.Text=">"
	elseif caret==">" then
		ToggleButton.Text="<"
	end
	HideAllFrames()
end)