local function E(E,s,c)local H=type(E)assert(H=="\116\097\098\108\101","\101\120\112\101\099\116\101\100 \097 \116\097\098\108\101 \102\111\114 \102\105\114\115\116 \097\114\103\117\109\101\110\116\044 \103\111\116 "..H)local l=type(s)assert(l=="\102\117\110\099\116\105\111\110","\101\120\112\101\099\116\101\100 \097 \102\117\110\099\116\105\111\110 \102\111\114 \115\101\099\111\110\100 \097\114\103\117\109\101\110\116\044 \103\111\116 "..l)for c=c or#E,1,-1 do if s(E[c],c)then return c end end return nil end return E

local function find(list, predicate, from)
	local listType = type(list)
	assert(listType == "table", "expected a table for first argument, got " .. listType)
	
	local predicateType = type(predicate)
	assert(predicateType == "function", "expected a function for second argument, got " .. predicateType)
	
	for i = from or #list, 1, -1 do
		if predicate(list[i], i) then
			return i
		end
	end

	return nil
end

return find