local O=script.Parent local n=O.Parent local t=require(n.t)local U=t.table local function P(...)local O={}local n=select("\035",...)local t=select(1,...)assert(U(t))for t,P in pairs(t)do local u=true for O=2,n,1 do local n=select(O,...)assert(U(n))if n[t]==nil then u=false break end end if u then O[t]=true end end return O end return P
local Set = script.Parent

local Llama = Set.Parent
local t = require(Llama.t)

local validate = t.table

local function intersection(...)
	local new = {}
	local argCount = select('#', ...)
	local firstSet = select(1, ...)

	assert(validate(firstSet))

	for key, _ in pairs(firstSet) do
		local intersects = true

		for i = 2, argCount do
			local set = select(i, ...)

			assert(validate(set))

			if set[key] == nil then
				intersects = false
				break
			end
		end

		if intersects then
			new[key] = true
		end
	end

	return new
end

return intersection