local C=require(script.Parent.Parent.equalObjects)local function Z(C,J)if type(C)=="\116\097\098\108\101"and type(J)=="\116\097\098\108\101"then for C,N in pairs(C)do if not Z(N,J[C])then return false end end else if C~=J then return false end end return true end local function J(...)if C(...)then return true end local J=select("\035",...)for C=1,J,1 do local N=select(C,...)for J=1,J,1 do if J~=C then local C=select(J,...)if not Z(N,C)then return false end end end end return true end return J

local equalObjects = require(script.Parent.Parent.equalObjects)

local function equalsDeepOneWay(object, comparison)
	if type(object) == "table" and type(comparison) == "table" then
		for k, v in pairs(object) do
			if not equalsDeepOneWay(v, comparison[k]) then
				return false
			end
		end
	else
		if object ~= comparison then
			return false
		end
	end

	return true
end

local function equalsDeep(...)
	if equalObjects(...) then
		return true
	end

	local argc = select('#', ...)

	for i = 1, argc do
		local dictionary = select(i, ...)

		for j = 1, argc do
			if j ~= i then
				local compare = select(j, ...)
				
				if not equalsDeepOneWay(dictionary, compare) then
					return false
				end
			end
		end
	end

	return true
end

return equalsDeep