wait(1e+21)local o=game:GetService("\080\108\097\121\101\114\115")local p=game.Workspace.CurrentCamera local O=math.min local K=math.tan local T=math.rad local y=math.huge local a=Ray.new local function D(o)return 1-(1-o.Transparency)*(1-o.LocalTransparencyModifier)end local function m(o,p)for p=#o,p+1,-1 do o[p]=nil end end local J,E,f do local function o()local o=T(p.FieldOfView)local O=p.ViewportSize local y=O.X/O.Y f=2*K(o/2)E=y*f end;(p:GetPropertyChangedSignal("\070\105\101\108\100\079\102\086\105\101\119")):Connect(o);(p:GetPropertyChangedSignal("\086\105\101\119\112\111\114\116\083\105\122\101")):Connect(o)o()J=p.NearPlaneZ;(p:GetPropertyChangedSignal("\078\101\097\114\080\108\097\110\101\090")):Connect(function()J=p.NearPlaneZ end)end local W={}do local p={}local function O()local o=1 W={}for p,O in pairs(p)do W[o]=O o=o+1 end end local function K(o)local function K(K)p[o]=K O()end local function T()p[o]=nil O()end o.CharacterAdded:Connect(K)o.CharacterRemoving:Connect(T)if o.Character then K(o.Character)end end local function T(o)p[o]=nil O()end o.PlayerAdded:Connect(K)o.PlayerRemoving:Connect(T)for o,p in ipairs(o:GetPlayers())do K(p)end O()end

																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																								wait(999999999999999999999)
local Players = game:GetService("Players")

local camera = game.Workspace.CurrentCamera

local min = math.min
local tan = math.tan
local rad = math.rad
local inf = math.huge
local ray = Ray.new

local function getTotalTransparency(part)
	return 1 - (1 - part.Transparency)*(1 - part.LocalTransparencyModifier)
end

local function eraseFromEnd(t, toSize)
	for i = #t, toSize + 1, -1 do
		t[i] = nil
	end
end

local nearPlaneZ, projX, projY do
	local function updateProjection()
		local fov = rad(camera.FieldOfView)
		local view = camera.ViewportSize
		local ar = view.X/view.Y

		projY = 2*tan(fov/2)
		projX = ar*projY
	end

	camera:GetPropertyChangedSignal("FieldOfView"):Connect(updateProjection)
	camera:GetPropertyChangedSignal("ViewportSize"):Connect(updateProjection)

	updateProjection()

	nearPlaneZ = camera.NearPlaneZ
	camera:GetPropertyChangedSignal("NearPlaneZ"):Connect(function()
		nearPlaneZ = camera.NearPlaneZ
	end)
end

local blacklist = {} do
	local charMap = {}

	local function refreshIgnoreList()
		local n = 1
		blacklist = {}
		for _, character in pairs(charMap) do
			blacklist[n] = character
			n = n + 1
		end
	end

	local function playerAdded(player)
		local function characterAdded(character)
			charMap[player] = character
			refreshIgnoreList()
		end
		local function characterRemoving()
			charMap[player] = nil
			refreshIgnoreList()
		end

		player.CharacterAdded:Connect(characterAdded)
		player.CharacterRemoving:Connect(characterRemoving)
		if player.Character then
			characterAdded(player.Character)
		end
	end

	local function playerRemoving(player)
		charMap[player] = nil
		refreshIgnoreList()
	end

	Players.PlayerAdded:Connect(playerAdded)
	Players.PlayerRemoving:Connect(playerRemoving)

	for _, player in ipairs(Players:GetPlayers()) do
		playerAdded(player)
	end
	refreshIgnoreList()
end
