local c=(require(script.Parent.loader)).load(script)local A=game:GetService("\082\117\110\083\101\114\118\105\099\101")local p=c("\077\097\105\100")local l=c("\080\114\111\109\105\115\101")local u=c("\067\097\110\099\101\108\084\111\107\101\110")local I=function(c)return c~=nil end local Z={}local q={["\110\105\108"]=true;string=true,boolean=true,number=true,UDim=true;UDim2=true,BrickColor=true,CFrame=true;Color3=true;Vector2=true;Vector3=true,NumberSequence=true;ColorSequence=true;IntValue=true;NumberRange=true;Rect=true,Font=true}
--[=[
	Provides utility functions to work with attributes in Roblox
	@class AttributeUtils
]=]

local require = require(script.Parent.loader).load(script)

local RunService = game:GetService("RunService")

local Maid = require("Maid")
local Promise = require("Promise")
local CancelToken = require("CancelToken")

local DEFAULT_PREDICATE = function(value)
	return value ~= nil
end

local AttributeUtils = {}

local VALID_ATTRIBUTE_TYPES = {
	["nil"] = true,
	["string"] = true,
	["boolean"] = true,
	["number"] = true,
	["UDim"] = true,
	["UDim2"] = true,
	["BrickColor"] = true,
	["CFrame"] = true,
	["Color3"] = true,
	["Vector2"] = true,
	["Vector3"] = true,
	["NumberSequence"] = true,
	["ColorSequence"] = true,
	["IntValue"] = true,
	["NumberRange"] = true,
	["Rect"] = true,
	["Font"] = true,
}
