text:
	Game File
	- File for the creation and modification of lobby games
]]
CitadelShock.Game = (CitadelShock.Game or {})
CitadelShock.Game.Disabled = {}
CitadelShock.Game.Resources = {}
CitadelShock.Game.Structures = {}
CitadelShock.Game.Bombs = {}

CitadelShock.Game.Phases = {}

--[[-----------
	SHARED
-------------]]
-- [[Resource creation/removal]]
function CitadelShock.Game:CreateNewResource(nm, val, icon, func)
	table.insert(CitadelShock.Game.Resources, {name = nm, val = val, genRes = func, icon = (icon or false)})
	print("\t --> Registered game resource: " .. nm)
end

function CitadelShock.Game:RemoveResource(nm)
	if !(CitadelShock.Game.Resources[nm]) then return false end

	CitadelShock.Game.Resources[nm] = nil
	print("\t --> Removed game resource: " .. nm)
end

-- [[Structure creation/removal]]
function CitadelShock.Game:CreateNewStructure(class, tbl)
	local overRode = false
	if (CitadelShock.Game.Structures[class]) then overRode = true
	else CitadelShock.Game.Structures[class] = {} end

	table.Merge(CitadelShock.Game.Structures[class], tbl)
	if (overRode) then print("\t --> Overrode game structure: " .. class)
	else print("\t --> Registered game structure: " .. class)
	end
end

function CitadelShock.Game:RemoveStructure(class)
	if !(CitadelShock.Game.Structures[class]) then return false end

	CitadelShock.Game.Structures[class] = nil
	print("\t --> Removed game structure: " .. class)
end

-- [[Bomb creation/removal]]
function CitadelShock.Game:CreateNewBomb(name, tbl)
	CitadelShock.Game.Bombs[name] = tbl
	print("\t --> Registered game bomb: " .. name)
end

function CitadelShock.Game:RemoveBomb(name)
	if !(CitadelShock.Game.Bombs[name]) then return false end

	CitadelShock.Game.Bombs[name] = nil
	print("\t --> Removed game bomb: " .. name)
end

-- [[Phase stuff]]
function CShockGame_GetPhases(val)
	return (val && CitadelShock.Game.Phases[val] || CitadelShock.Game.Phases)
end

--[[-----------
	SERVER
-------------]]
if (SERVER) then

function CitadelShock.Game:SpawnBomb(tp, pos)
	local bombs = CitadelShock.Game.Bombs

	local b = ents.Create((tp or "cis_basebomb"))
	if (bombs[tp]) then
		for k,v in pairs(bombs[tp]) do
			b[k] = v
		end
	end

	b:SetPos(pos)
	b:Spawn()

	return b
end

--[[
	Name: CitadelShock.Game:GameVerifier()
	- Checks & Verifies open games and handles them.
	- This shouldn't be called manually unless debugging.
]]
CitadelShock.Game.nextCheck = os.time() + 1
function CitadelShock.Game:GameVerifier()
	if (os.time() >= CitadelShock.Game.nextCheck) then
		CitadelShock.Game.nextCheck = os.time() + 1

		for k,v in pairs(CitadelShock.Lobby.lobbies) do
			if not (v.GetGameInfo) then
				CitadelShock.Lobby.lobbies[k] = nil
			elseif (v:GetGameInfo().active) then
				local gameInfo = v:GetGameInfo()
				local curPhase = v:GetCurrentPhase()
				local curPhaseInf = CShockGame_GetPhases(gameInfo.currentPhase)

				if (!curPhase or !curPhaseInf) then return false end
				if (curPhaseInf.custCheck) then if !(curPhaseInf.custCheck(v)) then return false end  end -- Custom phase checks

				if (!curPhaseInf.divider) then
					for i=1,#ents.GetAll() do
						local ent = ents.GetAll()[i]
						if (ent:GetName() == "cis_refractwall" && ent:GetInstance() == k) then
							ent:Remove() -- Remove the refractory walls
						end
					end
				end

				if (curPhase.endtime <= os.time()) then
					local nPhase = v:NextPhase() -- Move to the next phase

					if not (nPhase) then v:EndGame() end
				end
			end
		end
	end
end
hook.Add("Think", "CIS.Hook.GameVerifier", CitadelShock.Game.GameVerifier)

--[[
	Name: CIS.Game.GiveResource
	- Hook that's called to reward a lobby with resources.
]]
hook.Add("CIS.Game.GiveResource", "CIS.Game.GiveResource", function(ent)
	if (!ent.GetIDLobby or !ent.GetIDSide) then ent:Remove() return false end
	if not (CitadelShock.Lobby:FindByID(ent:GetIDLobby())) then ent:Remove() return false end
	local lobby = CitadelShock.Lobby:FindByID(ent:GetIDLobby())

	if not (lobby:GetGameInfo().active) then return false end
	if not (ent.ResourceSize) then ent.ResourceSize = 1 end

	lobby:GiveResource(ent.ResourceType, math.Round(ent.ResourceSize * 100, 0), ent:GetIDSide())
end)

--[[
	Name: CIS.Game.PreStructurePlace
	- Hook that's called when a player is about to place a structure.
]]
hook.Add("CIS.Game.PreStructurePlace", "CIS.Game.PreStructurePlace", function(ply, struc, ent)
	if (!IsValid(ply) or !struc) then return false, "Invalid player/cost, please contact an administrator." end
	local lobby = CitadelShock.Lobby:FindByID(ply:GetIDLobby())
	local lobbySides = lobby:GetGameSides()
	local gameInfo = lobby:GetGameInfo()
	local curPhase = lobby:GetCurrentPhase()
	local curPhaseInfo = CShockGame_GetPhases(gameInfo.currentPhase)
	local side = ply:GetSide()

	if (!lobby or !lobbySides[side]) then return false, "You're not in a lobby/in-game!" end
	if (!curPhaseInfo.canBuild) then return false, "You can't build while fighting!" end
	if (struc.reqLevel && ply:GetLevel() < struc.reqLevel) then return false, "You don't have the required level to build this structure! (Level " .. struc.reqLevel .. ")" end

	-- [[Check spawns]]
	local defSideInfo = CitadelShock.Game.Sides

	if (defSideInfo) then
		for i=1,#defSideInfo do
			if (ent:IsValid() && defSideInfo[i] && defSideInfo[i].spos) then
				if (defSideInfo[i].spos:Distance(ent:GetPos()) <= 250) then
					return false, "You can't build that close to the spawn!"
				end
			end
		end
	end

	-- [[Check available resources]]
	local resources = lobbySides[side].resources

	for k,v in pairs(struc.cost) do
		if (resources[k] && resources[k] > v) then
			lobby:GiveResource(k, (-v), side)
		else
			return false, "Your side doesn't have enough resources!"
		end
	end

	return true, "Structure placed"
end)

--[[
	Name: CIS.Game.PreBombSpawn
	- Hook that's called when a player is about to purchase a bomb.
]]
hook.Add("CIS.Game.PreBombSpawn", "CIS.Game.PreBombSpawn", function(ply, btype)
	local bomb = CitadelShock.Game.Bombs[btype]

	if !(ply) then return false, "No player specified!" end
	if !(btype) then return false, "No bomb type specified!" end
	if !(bomb) then return false, "Invalid bomb specified!" end

	local lobby = CitadelShock.Lobby:FindByID(ply:GetIDLobby())
	local lobbySides = lobby:GetGameSides()
	local gameInfo = lobby:GetGameInfo()
	local curPhase = lobby:GetCurrentPhase()
	local curPhaseInfo = CShockGame_GetPhases(gameInfo.currentPhase)
	local side = ply:GetSide()
	if (!lobby or !lobbySides[side]) then return false, "You aren't in a lobby and/or game!" end
	if (!bomb.BombCost) then return false, "Bomb cost isn't valid!" end
	if (bomb.reqLevel && ply:GetLevel() < bomb.reqLevel) then return false, "You don't have the required level to purchase this bomb! (Level " .. bomb.reqLevel .. ")" end

	if (bomb.custCheck) then bomb.custCheck(bomb) end

	if (!curPhaseInfo.canFight) then return false, "You can't buy bombs in the building phase!" end

	if (ply.NextBombBuy && ply.NextBombBuy > os.time()) then
		return false, "You can buy a bomb in " .. ply.NextBombBuy - os.time() .. " seconds."
	end

	local resources = lobbySides[side].resources

	for k,v in pairs(bomb.BombCost) do
		if (resources[k] && resources[k] > v) then
			lobby:GiveResource(k, (-v), side)

			ply.NextBombBuy = os.time()+CitadelShock.Game.BombPurchaseDelay -- Set delay
		else
			return false, "Your side doesn't have enough resources!"
		end
	end

	return true, "Bomb (" .. bomb.BombName .. ") purchased!"
end)

--[[
	Name: CIS.Game.PlayerInitSpawn
	- Hook that's called when a player is (initially) spawning.
	- Sets their game-based information.
]]
hook.Add("CIS.PlayerInitialSpawn", "CIS.Game.PlayerInitSpawn", function(ply)
	for k,v in pairs(CitadelShock.Game.Resources) do
		ply:SetNW2Int("CitadelShock.Game.res." .. v.name, v.val)
	end
end)

--[[
	Name: CIS.Game.PostPlayerDeath
	- Hook that's called after a player has been killed.
	- Sets their status to "respawning".
]]
hook.Add("PostPlayerDeath", "CIS.Game.PostPlayerDeath", function(v, i, a)
	if (v:IsInLobby() && v:IsInGame()) then
		v:SetStatus(2)
	end
end)

--[[
	Name: CIS.Game.PlayerDeath
	- Hook that's called when a player is killed
	- Used to reward a player for kills
]]
hook.Add("PlayerDeath", "CIS.Game.PlayerDeath", function(v, i, a)
	if (v:IsPlayer() && a:IsPlayer()) then
		if (v:IsInLobby() && v:IsInGame() && a:IsInLobby() && a:IsInGame()) then a:GiveRewards(CitadelShock.Game.KillRewards) end
	end
end)

end

--[[-----------
	CLIENT
-------------]]
if (CLIENT) then
CitadelShock.Game.Results = (CitadelShock.Game.Results or false)
end

--[[-----------
	Game Configuration Setup
-------------]]
hook.Add("CIS.Hook.GM_Setup", "CIS.Hook.Game_Setup",
function()
	--[[------------------
		RESOURCES
	--------------------]]
	CitadelShock:Message("Game resource setup: ", " --> ")

	-- [[MONEY]]
	CitadelShock.Game:CreateNewResource("money", (CitadelShock.Game.StartResources["money"] or 0), "icon16/money_dollar.png", function(l, s, sid) end)

	-- [[TREES]]
	CitadelShock.Game:CreateNewResource("wood", (CitadelShock.Game.StartResources["wood"] or 0), "icon16/house.png",
	function(l, s, sid)
		local id = l:GetID()

		-- [[TREES]]
		local resBoxB = s.resArea
		local claimedPos = {}

		for tree=1,math.random(2,3) do
			local spawnPos, cPos = l:GenerateSpawnPos(resBoxB, claimedPos)
			if (cPos) then claimedPos = cPos end
			local t = ents.Create( "cis_baseresource" )
			if ( !IsValid( t ) ) then return end
			t:SetPos(spawnPos - Vector(0,0,5))

			-- [[TREE INFO]]
			t.ResourceType = "wood"
			t.Models = {
				harvested = {model = "models/zerochain/props_foliage/tree01_stump.mdl", collide = COLLISION_GROUP_WORLD},
				notharvested = {model = "models/zerochain/props_foliage/tree01.mdl", collide = COLLISION_GROUP_WORLD},
			}

			t:Spawn()

			t:SetIDLobby(id)
			t:SetIDSide(sid)
			t:SetHarvestParticles("cis_collect_rock_effect")
			t:SetHarvestSounds("wood")
		end
	end)

	-- [[STONE]]
	CitadelShock.Game:CreateNewResource("stone", (CitadelShock.Game.StartResources["stone"] or 0), "icon16/database.png",
	function(l, s, sid)
		local id = l:GetID()

		-- [[ROCKS]]
		local resBoxB = s.resArea
		local claimedPos = {}

		for rock=1,math.random(2,3) do
			local spawnPos, cPos = l:GenerateSpawnPos(resBoxB, claimedPos)
			if (cPos) then claimedPos = cPos end
			local r = ents.Create( "cis_baseresource" )
			if ( !IsValid( r ) ) then return end
			r:SetPos(spawnPos - Vector(0,0,5))

			-- [[STONE INFO]]
			r.ResourceType = "stone"
			r.Models = {
				harvested = {model = "models/zerochain/props_foliage/rock02_ore01_reduced.mdl", collide = COLLISION_GROUP_WORLD},
				notharvested = {model = "models/zerochain/props_foliage/rock02_ore01.mdl", collide = COLLISION_GROUP_WORLD},
			}

			r:Spawn()

			r:SetIDLobby(id)
			r:SetIDSide(sid)
			r:SetHarvestParticles("cis_collect_rock_effect")
			r:SetHarvestSounds("rock")
		end
	end)

	-- [[METAL]]
	CitadelShock.Game:CreateNewResource("metal", (CitadelShock.Game.StartResources["metal"] or 0), "icon16/bullet_black.png",
	function(l, s, sid)
		local id = l:GetID()

		-- [[METAL]]
		local resBoxB = s.resArea
		local claimedPos = {}

		for metal=1,math.random(2,3) do
			local spawnPos, cPos = l:GenerateSpawnPos(resBoxB, claimedPos)
			if (cPos) then claimedPos = cPos end
			local m = ents.Create( "cis_baseresource" )
			if ( !IsValid( m ) ) then return end
			m:SetPos(spawnPos - Vector(0,0,5))
			m:SetColor(Color(25,25,25,255))

			-- [[METAL INFO]]
			m.ResourceType = "metal"
			m.Models = {
				harvested = {model = "models/zerochain/props_foliage/rock01_ore01_reduced.mdl", collide = COLLISION_GROUP_WORLD},
				notharvested = {model = "models/zerochain/props_foliage/rock01_ore01.mdl", collide = COLLISION_GROUP_WORLD},
			}

			m:Spawn()

			m:SetIDLobby(id)
			m:SetIDSide(sid)
			m:SetHarvestParticles("cis_collect_rock_effect")
			m:SetHarvestSounds("rock")
		end
	end)

	--[[------------------
		STRUCTURES
	--------------------]]
	local sInfo = CitadelShock.Game.StructureInfo
	CitadelShock:Message("Game structure setup: ", " --> ")

	CitadelShock.Game:CreateNewStructure("cis_struc_foundation", {
		-- The types of structures that are available for this structure base.
		types = {
			[1] = {
				name = "Wood Foundation",
				model = "models/zerochain/props_structure/wood_foundation.mdl",
				health = (sInfo["cis_struc_foundation"][1].health or 200),
				cost = (sInfo["cis_struc_foundation"][1].cost or {["wood"] = 100}),
				reqLevel = (sInfo["cis_struc_foundation"][1].reqLevel or 1),
			},
			[2] = {
				name = "Stone Foundation",
				model = "models/zerochain/props_structure/stone_foundation.mdl",
				health = (sInfo["cis_struc_foundation"][2].health or 500),
				cost = (sInfo["cis_struc_foundation"][2].cost or {["stone"] = 100}),
				reqLevel = (sInfo["cis_struc_foundation"][2].reqLevel or 1),
			},
			[3] = {
				name = "Metal Foundation",
				model = "models/zerochain/props_structure/metal_foundation.mdl",
				health = (sInfo["cis_struc_foundation"][3].health or 1000),
				cost = (sInfo["cis_struc_foundation"][3].cost or {["metal"] = 100}),
				reqLevel = (sInfo["cis_struc_foundation"][3].reqLevel or 1),
			},
		},

		-- The entities this structure can snap to/be placed on
		atpts = {
			["cis_struc_foundation"] = {7,8,9,10}, -- The attachment points this structure can snap to
			["worldspawn"] = {}, -- No attachment points means it can be placed anywhere on the entity
		},

		-- Custom Positioning Check - arguments are New Structure, Parent/Trace Structure or entity, always return a vector
		custPosCheck = function(ns, ps)
			local nsp, psp = ns:GetPos(), ps:GetPos()

			return nsp - (psp - nsp) - Vector(0,0,39)
		end,

		-- Custom valid position check - ne = to-be-placed entity, tr = player trace, always return true or false
		validPosCheck = function(ne, tr)
			local validPosBypasses = {
				"keyframe_rope",
				"move_rope",
			}

			local validPos = true
			local c1, c2 = ne:GetModelBounds()
			c1, c2 = c1*0.9, c2*0.9
			c1, c2 = ne:LocalToWorld(c1), ne:LocalToWorld(c2)

			for k,v in pairs(ents.FindInBox( c1, c2 )) do
				if !(table.HasValue(validPosBypasses, v:GetClass())) then
					if (!v:IsWorld() && !v:IsWeapon() && v != tr.Entity && v != ne) then
						validPos = false
					end
				end
			end

			return validPos
		end,
	})

	CitadelShock.Game:CreateNewStructure("cis_struc_wall", {
		types = {
			[1] = {
				name = "Wood Wall",
				model = "models/zerochain/props_structure/wood_wall.mdl",
				health = (sInfo["cis_struc_wall"][1].health or 200),
				cost = (sInfo["cis_struc_wall"][1].cost or {["wood"] = 100}),
				reqLevel = (sInfo["cis_struc_wall"][1].reqLevel or 1),
			},
			[2] = {
				name = "Stone Wall",
				model = "models/zerochain/props_structure/stone_wall.mdl",
				health = (sInfo["cis_struc_wall"][2].health or 500),
				cost = (sInfo["cis_struc_wall"][2].cost or {["stone"] = 100}),
				reqLevel = (sInfo["cis_struc_wall"][2].reqLevel or 1),
			},
			[3] = {
				name = "Metal Wall",
				model = "models/zerochain/props_structure/metal_wall.mdl",
				health = (sInfo["cis_struc_wall"][3].health or 1000),
				cost = (sInfo["cis_struc_wall"][3].cost or {["metal"] = 100}),
				reqLevel = (sInfo["cis_struc_wall"][3].reqLevel or 1),
			},
		},
		atpts = {
			["cis_struc_foundation"] = {7,8,9,10},
			["cis_struc_wall"] = {2},
		},
	})

	CitadelShock.Game:CreateNewStructure("cis_struc_beam", {
		types = {
			[1] = {
				name = "Wood Beam",
				model = "models/zerochain/props_structure/wood_beam.mdl",
				health = (sInfo["cis_struc_beam"][1].health or 200),
				cost = (sInfo["cis_struc_beam"][1].cost or {["wood"] = 100}),
				reqLevel = (sInfo["cis_struc_beam"][1].reqLevel or 1),
			},
			[2] = {
				name = "Stone Beam",
				model = "models/zerochain/props_structure/stone_beam.mdl",
				health = (sInfo["cis_struc_beam"][2].health or 500),
				cost = (sInfo["cis_struc_beam"][2].cost or {["stone"] = 100}),
				reqLevel = (sInfo["cis_struc_beam"][2].reqLevel or 1),
			},
			[3] = {
				name = "Metal Beam",
				model = "models/zerochain/props_structure/metal_beam.mdl",
				health = (sInfo["cis_struc_beam"][3].health or 1000),
				cost = (sInfo["cis_struc_beam"][3].cost or {["metal"] = 100}),
				reqLevel = (sInfo["cis_struc_beam"][3].reqLevel or 1),
			},
		},
		atpts = {
			["cis_struc_foundation"] = {2,3,4,5,6},
			["cis_struc_beam"] = {2},
		},
	})

	CitadelShock.Game:CreateNewStructure("cis_struc_roof", {
		types = {
			[1] = {
				name = "Wood Roof",
				model = "models/zerochain/props_structure/wood_roof.mdl",
				health = (sInfo["cis_struc_roof"][1].health or 200),
				cost = (sInfo["cis_struc_roof"][1].cost or {["wood"] = 100}),
				reqLevel = (sInfo["cis_struc_roof"][1].reqLevel or 1),
			},
			[2] = {
				name = "Stone Roof",
				model = "models/zerochain/props_structure/stone_roof.mdl",
				health = (sInfo["cis_struc_roof"][2].health or 500),
				cost = (sInfo["cis_struc_roof"][2].cost or {["stone"] = 100}),
				reqLevel = (sInfo["cis_struc_roof"][2].reqLevel or 1),
			},
			[3] = {
				name = "Metal Roof",
				model = "models/zerochain/props_structure/metal_roof.mdl",
				health = (sInfo["cis_struc_roof"][3].health or 1000),
				cost = (sInfo["cis_struc_roof"][3].cost or {["metal"] = 100}),
				reqLevel = (sInfo["cis_struc_roof"][3].reqLevel or 1),
			},
		},
		atpts = {
			["cis_struc_beam"] = {2},
		},
	})

	CitadelShock.Game:CreateNewStructure("cis_struc_stairs", {
		types = {
			[1] = {
				name = "Wood Stairs",
				model = "models/zerochain/props_structure/wood_stair.mdl",
				health = (sInfo["cis_struc_stairs"][1].health or 200),
				cost = (sInfo["cis_struc_stairs"][1].cost or {["wood"] = 100}),
				reqLevel = (sInfo["cis_struc_stairs"][1].reqLevel or 1),
			},
			[2] = {
				name = "Stone Stairs",
				model = "models/zerochain/props_structure/stone_stair.mdl",
				health = (sInfo["cis_struc_stairs"][2].health or 500),
				cost = (sInfo["cis_struc_stairs"][2].cost or {["stone"] = 100}),
				reqLevel = (sInfo["cis_struc_stairs"][2].reqLevel or 1),
			},
			[3] = {
				name = "Metal Stairs",
				model = "models/zerochain/props_structure/metal_stair.mdl",
				health = (sInfo["cis_struc_stairs"][3].health or 1000),
				cost = (sInfo["cis_struc_stairs"][3].cost or {["metal"] = 100}),
				reqLevel = (sInfo["cis_struc_stairs"][3].reqLevel or 1),
			},
		},
		atpts = {
			["worldspawn"] = {},
		},
	})

	--[[------------------
		BOMBS
	--------------------]]
	CitadelShock:Message("Game bomb setup: ", " --> ")

	local bInfo = CitadelShock.Game.BombInfo

	CitadelShock.Game:CreateNewBomb("cis_bomb_logs", {
		reqLevel = (bInfo["cis_bomb_logs"].reqLevel or 1),
		BombName = (bInfo["cis_bomb_logs"].BombName or "Log Bomb"),
		BombCost = (bInfo["cis_bomb_logs"].BombCost or {["money"] = 25, ["wood"] = 100, ["stone"] = 25}),
		BlastRadius = (bInfo["cis_bomb_logs"].BlastRadius or 350),
		BlastDamageMultiplier = 10,
		ExplodeTime = 2.5,
		BombMass = (bInfo["cis_bomb_logs"].BombMass or 15),
		BombDrag = 0.2,
		Model = "models/zerochain/props_mystic/bomb_logs.mdl",
	})

	CitadelShock.Game:CreateNewBomb("cis_bomb_small",
	{
		reqLevel = (bInfo["cis_bomb_small"].reqLevel or 1),
		BombName = (bInfo["cis_bomb_small"].BombName or "Small Bomb"),
		BombCost = (bInfo["cis_bomb_small"].BombCost or {["money"] = 250, ["wood"] = 5, ["stone"] = 5}),
		BlastRadius = (bInfo["cis_bomb_small"].BlastRadius or 350),
		BlastDamageMultiplier = 10,
		ExplodeTime = 5,
		BombMass = (bInfo["cis_bomb_small"].BombMass or 15),
		BombDrag = 0.2,
		Model = "models/zerochain/props_mystic/bomb_small.mdl",
	})

	CitadelShock.Game:CreateNewBomb("cis_bomb_medium",
	{
		reqLevel = (bInfo["cis_bomb_medium"].reqLevel or 1),
		BombName = (bInfo["cis_bomb_medium"].BombName or "Medium Bomb"),
		BombCost = (bInfo["cis_bomb_medium"].BombCost or {["money"] = 350, ["wood"] = 15, ["stone"] = 15}),
		BlastRadius = (bInfo["cis_bomb_medium"].BlastRadius or 600),
		BlastDamageMultiplier = 12,
		ExplodeTime = 8,
		BombMass = (bInfo["cis_bomb_medium"].BombMass or 19),
		BombDrag = 0.3,
		Model = "models/zerochain/props_mystic/bomb_medium.mdl",
	})

	CitadelShock.Game:CreateNewBomb("cis_bomb_big",
	{
		reqLevel = (bInfo["cis_bomb_big"].reqLevel or 1),
		BombName = (bInfo["cis_bomb_big"].BombName or "Big Bomb"),
		BombCost = (bInfo["cis_bomb_big"].BombCost or {["money"] = 475, ["wood"] = 25, ["stone"] = 25}),
		BlastRadius = (bInfo["cis_bomb_big"].BlastRadius or 800),
		BlastDamageMultiplier = 14,
		ExplodeTime = 10,
		BombMass = (bInfo["cis_bomb_big"].BombMass or 23),
		BombDrag = 0.4,
		Model = "models/zerochain/props_mystic/bomb_big.mdl",
	})

	CitadelShock.Game:CreateNewBomb("cis_bomb_proximity",
	{
		reqLevel = (bInfo["cis_bomb_proximity"].reqLevel or 1),
		BombName = (bInfo["cis_bomb_proximity"].BombName or "Proximity Bomb"),
		BombCost = (bInfo["cis_bomb_proximity"].BombCost or {["money"] = 475, ["wood"] = 25, ["stone"] = 25, ["metal"] = 20}),
		BlastRadius = (bInfo["cis_bomb_proximity"].BlastRadius or 800),
		BlastDamageMultiplier = 14,
		ExplodeTime = 10,
		BombMass = (bInfo["cis_bomb_proximity"].BombMass or 23),
		BombDrag = 0.4,
		Model = "models/zerochain/props_mystic/bomb_proximity.mdl",
	})

	-- Check for disabled hard-coded resources/structures
	for nm,bool in pairs(CitadelShock.Game.Disabled.resources) do
		if (bool) then
			CitadelShock.Game:RemoveResource(nm)
		end
	end

	for class,bool in pairs(CitadelShock.Game.Disabled.structures) do
		if (bool) then
			CitadelShock.Game:RemoveStructure(class)
		end
	end

	for class,bool in pairs(CitadelShock.Game.Disabled.bombs) do
		if (bool) then
			CitadelShock.Game:RemoveBomb(class)
		end
	end
end)

redpajama_set_name: RedPajamaGithub


text:
Loyola University Chicago: Richard J. Klarchek Information Commons
Located on Loyola University's Lake Shore Campus, this 4-story, 72,000 square foot Information Commons was awarded the 2007 Leaf Award for Best Use of Technology at the Fourth Annual Leading European Architects Forum in London, England. The building is LEED Silver certified, largely from its advanced facade systems that create an environment maximizing comfort while reducing energy consumption. The project is designed to use approximately 50 percent less energy than code-compliant buildings.
The commons is essentially a 4-story box incorporating limestone elevations to the south and north, with transparent full-elevation facades to the east and west. Under normal conditions one can stand to the west of the building and see through the library with an unobstructed view of the lake.
A key component of the green design is the advanced facade technology used to achieve the east and west glass walls. The west face uses a double-skin facade to manage heat flow and natural ventilation through the year. The facade features two layers of glass separated by an air space roughly three feet between the inner and outer layer. Air circulates in the cavities between the facades, while 4˝ horizontal blinds inside the outer glass layer track the sun's movement throughout the day. These blinds reflect away the heat of excess radiant energy when closed, while allowing natural daylight into the building when opened. Transsolar was brought on as a climate consultant to oversee the project.
West Facade: Double-Skin
The primary entrance from the campus' quad is a 150´ transparent skin. The outer layer of the double-skin (DSF) is a cable net glass wall. 36˝ inward is the inner layer of the dual-skin, a point-fixed system that uses cast fixings to clamp insulated glass panels to vertical extrusions. The DSF provides a sealed cavity between the two layers that is used as an acoustic and thermal buffer between inside and out, and as a source of ventilated air under controlled conditions.
Cast Attachments
The inner skin of the west facade as well as the entire east facade utilize a VS-1 point-clamped attachment strategy. This offset creates an air gap between nearly all of the vertical silicone joint and the aluminum mullion. The cast stainless steel clamp retains the insulated glass units, controls their deflection, and transfers forces to the vertical mullion. The elegant, airy effect adds another dimension of transparency to both facades.
The east facade is also a 150´ transparent skin, in this case with a strong visual connection to Lake Michigan. The single skin captures insulated glass units with the VS-1 point-clamp. Additional bands of building-integrated photovoltaics (BIPV) glass exist above the vision zones. These zones also function as operable vents to encourage cross ventilation when the climate permits. The vents work in conjunction with intake dampers at the double-skin to fine-tune airflow in the Commons.
Enclos is a leader in the United States in double-skin facade technology, having also delivered a box-window double-skin at New Stanford Hospital, a multi-story configuration at Columbia University: Greene Science Center, a multi-story cavity at Comcast Center, and the unitized box-window of Riverhouse.
Education, Research
Loyola University
Pepper Construction
Solomon Cordwell Buenz
Halvorson and Partners
Curtainwall Design Consulting
Leaf Award: Best Use of Technology
Fourth Annual Leading European Architects Forum in London, England, 2007

redpajama_set_name: RedPajamaCommonCrawl


Eddie Papa's American Hangout is a family friendly, American-style bar and grill featuring signature regional dishes from around the country along with handcrafted artisan beverages. The food is made from scratch and the menu, which features local organic produce, changes with the seasons. Check out their delicious appetizers, soups, salads, sandwiches, entrees, meat and poultry, sustainable seafood, pasta and fun, house-made desserts.
Hacienda has enabled our affiliates to participate in a discount program designed to save you money and provide you with a great value. The Eddie Papa's discount allows employees and residents to receive 10% off your entire purchase, excluding alcohol.


This 6 way ATC/ATO blade fuse holder box is compact, yet rugged in construction. LED illuminated, the red LED indicator light allows you to quickly diagnose which of the fuse has "popped". This fuse panel has a 6mm stud for power feed, .6mm male quick disconnect terminals, can take an input voltage of 10 - 32 V DC, can handle a maximum of 30 Amp per circuit with a maximum of 100 Amp per panel, and has a cover for additional protection.
Will work on all cars / bikes / ATV's and devices equipped with a 10-32 Volt DC power source.


text:
Q: Spring Controller method being called again with the own method result This is my controller:
@Controller
@RequestMapping("/area")
public class AreaController {

    @RequestMapping("/{id}")
    public String getPage(@PathVariable("id") int id){
        return "asd3333";
    }

}

and this is what I get when I access http://localhost:8080/area/1:

*

*Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "asd3333"]
I tested this random return just to show what is happening...
The method is beeing called first with the @PathVariable = 1 from the request, and then right after that, is called again with the whethever the method resulsts, in this case, it tries to pass the @PathVariable = "asd3333".
I have NO IDEA of what tha heck is happening, pls help

A: Sounds very strange indeed. I will start with a question
@RequestMapping("/{id}")
public String getPage(@PathVariable("id") int id){
    return "asd3333";
}

Does this method need to be called for all method types (Get, Post, Delete, ...). If no try to restrict with a specific method call.
ex
 @RequestMapping(value = "/{id}", method = POST)

GOTCHA.
Also add this to the method because you return a simple string
@RequestMapping("/{id}")
@ResponseBody
public String getPage(@PathVariable("id") int id)

Also if you don't plan to use this API as a web MVC application but instead as a rest API backend switch from @Controller to @RestController.

redpajama_set_name: RedPajamaStackExchange


text:
const GraphQL = require('graphql')
const GraphQLRelaySubscription = require('graphql-relay-subscription')

const UserType = require('./user-type')

module.exports = (userSubscribe) => GraphQLRelaySubscription.subscriptionWithClientId({
  name: 'UserChanges',
  inputFields: {
    id: {
      type: new GraphQL.GraphQLNonNull(GraphQL.GraphQLString)
    }
  },
  outputFields: {
    user: {
      type: UserType
    }
  },
  subscribe: userSubscribe
})


text:
Wildlife artist Bonnie Marris' fascination with animals began at an early age. At the age of two, she would spend hours in front of the wolf cage at the zoo, enraptured by the animals within. The attention to detail evident in her work is a consequence of long hours studying her subjects in the field and her background in illustration. Bonnie Marris has taken an unusual path into art; she developed her talent by portraying animals "from the inside out. "While she was a student at Michigan State University, Bonnie illustrated several major books. One volume she worked on was a leading expert's mammalogy text that contained several hundred drawings and detail studies. This massive project attracted the attention of noted zoologist George Schaller, who invited Bonnie to prepare the art for posters that would support his worldwide rare animal relief programs. Marris' painting requires frequent and substantive field experience. Each year, Bonnie makes two major trips, and countless smaller ones, to observe and learn about the wildlife she loves. In 1980, one such voyage took her to Alaska, where she lived in the wilderness for six months. She recounts, "To get into a natural environment and see the animals on their own terms is as important as knowing the animals themselves. For instance, gray wolves on the tundra—the vast, vast tundra with the wind and other forces of nature at their most extreme—that's what makes them what they are. To stand not far from a grizzly that is so overpowering, so beautiful and so large . . . to watch it pull up a small tree with a swipe of its paw and just a few minutes later see it delicately picking blueberries with its black lips." "Alaska changed me; it gave me the biggest incentive to paint and increased my interest in the predators: the cats, bears, coyotes, wolves, and foxes. They exist on so many levels. Their moods show in their eyes, and we can learn so much from them." Marris' works were selected for the 2002-2005 Gene Autry Museum of Western Heritage Shows.
The Terrible Twos
Her Power and Her Glory
THE ALL AMERICAN
Out Foxed
THE GIFTS OF SPRING
BIG GRAY´S BARN AND BISTRO


text:
RACP
If you're an RACP member
ask them to advocate
to replace coal with renewables
Ask AGL to go renewable
RACP members: Ask the RACP to advocate to replace coal with renewables
Ask the RACP to advocate to replace coal with renewables
Coal-fired electricity is Australia's single biggest contributor to climate change (ref: "Emissions" tab on this page) and kills nearly 800 Australians every year through toxic air pollution (ref).
We have written an open letter from health organisations, healthcare workers and health science students requesting that Australia's biggest climate polluter, AGL, replace its coal assets with renewable energy by 2030. In July 2021 the RACP Policy and Advocacy Team declined to support this letter and they have not replied to our request for an explanation. This seems incongruent with the RACP's own acknowledgment of climate change as a health emergency and recommendations from the International Energy Agency that developed countries need to phase out coal by 2030. If you're an RACP member, please use the form below to email the RACP requesting that they reconsider (we've created a template email for you but feel free to edit it before sending).
Are you an RACP member?
Dear RACP,
My name is [first_name] [middle_name] [last_name]. I am a member of the RACP.
Firstly I would like to thank the RACP for acknowledging climate change as a health emergency.
However I was surprised and disappointed to learn recently that the RACP Policy and Advocacy Team declined to sign an open letter from health organisations calling on Australia's biggest climate polluter, AGL, to replace its coal fired power stations with renewable energy by 2030. This open letter is at www.healthyfutures.net.au/agl.
The burning of coal for electricity is Australia's single biggest contributor to climate change (1). Toxic air pollution from coal fired electricity generation also contributes to cardiovascular, respiratory and other illnesses and has been estimated to kill nearly 800 Australians every year (2). Australia currently lags far behind the rest of the world in reducing pollution from coal. The International Energy Agency recently advised that all developed countries need to phase out coal by 2030 in order to reach net zero global emissions by 2050 (3), and the UK plans to phase out coal by 2025 (4).
Given the above, it is crucial that the RACP join with other health organisations in advocating to reduce these harms. Can the RACP Policy and Advocacy Team please reconsider signing the open letter to AGL at www.healthyfutures.net.au/agl?
1. https://data.beyondcoal.org.au/, "Emissions" tab
2. https://www.greenpeace.org.au/research/lethal-power-how-coal-is-killing-people-in-australia/
3. https://www.climateworksaustralia.org/news/international-energy-agency-report-calls-for-an-end-to-new-fossil-fuel-investment-adding-pressure-for-australia-to-raise-ambition/
4. https://www.carbonbrief.org/countdown-to-2025-tracking-the-uk-coal-phase-out


text:
Parents Parents
Explore Parents
22 Chore Ideas for Every Type of Kid
Find a chore your kid loves to do, and start a habit of wanting to help out that'll last a lifetime. Read More Next
Top 5 Mom Friend Problems—And How to Fix Them
Parenting is so much easier with good pals. Learn to overcome friendship hurdles and bond with women who get you. Read More Next
How to Sleep Train Toddlers and Big Kids
I'm a pediatric sleep specialist who has seen it all, and I'm here to tell you that it's not too late to get your child to (happily) stay in his own bed all night long. Read More Next
See all PREGNANCY
See all BIG KID
See all FUN
See all HEALTH
See all PARENTING
See all HOLIDAY
See all MORE
See all OUR MAGAZINES
Baby Care Basics
A Head-to-Toe Guide on Your Newborn's Physical Features
Red marks, coneheads and crossed eyes are just some of the features infants may be born with. But don't worry; they aren't permanent.
By Kate Jackson Kelly
Sally Anscombe/Getty Images
When you first lay eyes on your baby, chances are you'll think he's absolutely perfect, but you can't help noticing that his body has a few blemishes. So what's normal? Here, a head-to-toe guide to your newborn's birthday suit.
If you gave birth vaginally, your baby's head may be elongated or misshapen. "The odd shape of the head is the result of the baby passing through the birth canal," explains Richard L. Saphir, M.D., clinical professor of pediatrics at Mt. Sinai School of Medicine in New York City. The two soft spots on your baby's head, called fontanels, aren't fused yet in order to make delivery easier. The head should take on a more normal shape within two weeks.
Babies born by Cesarean section are more likely to enter the world with picture-perfect round heads, though not always: The tops of C-section babies' skulls can appear flat, mimicking the shape of the womb. Flat-tops, which are more common in breech babies, change more gradually, Saphir says, sometimes taking a full year.
RELATED: 10 Things to Know About Newborns
You also may notice your baby has a recessed chin; it's just nature's temporary way of making it easier for him to breastfeed.
Some babies are born bald; others arrive with a full head of hair. The texture and color may be equally surprising – fair-haired couple may leave the hospital with a raven-haired infant, while dark-haired parents are often surprised to bring home a blond. Babies who are born late may have especially large amounts of coarse hair.
Either way, don't be alarmed. A newborn's hair is a terrible predictor of what it will look like in a few months. "By four to six months, most newborn hair will be gone," Saphir says. That's because hormonal changes after birth cause a baby's hair follicles to enter a period of rest, followed by regrowth.
Some babies are born with a substantial coating of fine hair over most of their bodies. This soft, downy hair, called lanugo, covers all babies in the womb, but most of it usually sheds several weeks before birth. Although most babies are born with some lanugo, preterm babies are likely to have more of it at birth than full-term babies; within a few weeks the hair will naturally shed.
You'll never forget the first time your eyes meet your newborn's. Yet that tender moment can be quickly supplanted by alarm: Why is my baby cross-eyed? "Almost all newborn babies will have somewhat crossed eyes," Saphir says. "Just as a newborn doesn't have the muscle strength and coordination to crawl, newborns don't have the eye-muscle strength and coordination to synchronize eye movements."
Most Caucasian babies are born with blue eyes that may go through several color changes in the first few months. They usually darken to their final color between 6 and 12 months. Darker-skinned babies are usually born with brown eyes, which tend to stay brown or turn another dark color, such as a deep green.
Babies delivered vaginally also may have some blood spots in the whites of their eyes (from the pressure of being pushed through the birth canal). These will disappear within a few days.
RELATED: Newborn Baby Bootcamp: Taking Care of a Newborn
Your baby's skin will be a telltale sign of gestational age: Babies born early have thin, almost translucent skin and may still be covered in vernix – the white, greasy coating that protects the fetus' skin from amniotic fluid. Babies who arrive past their due dates, on the other hand, may have almost no lanugo and a wrinkly appearance, as if they've been lolling in the bath a little too long.
Your newborn will be wrinkly because she's just spent nine months in fluid – and now she's exposed to dry air, plus she's a little dehydrated right after birth. Her circulatory system isn't quite up to speed yet, so when she sleeps, her hands and feet may look bluish. If you're worried, pick her up and watch her skin return to a normal color.
It's common for babies to be born with some form of skin rash, and the most common in newborns is milia—flat, minuscule white dots that resemble pimples and often pop up on the face. These may look like acne, but are merely blocked sweat and oil glands. Milia disappears within two to three weeks, Saphir says. In the meantime, it's fine to gently wash the area with mild soap and water. True "baby acne" can appear after the first month, but it's harmless and disappears on its own.
Fair-skinned babies often have a hemangioma, a cluster of red blood vessels close to the surface of the skin that go by the name "stork bites" or "salmon patches." They tend to disappear over several months; those that appear on the back of the neck are more likely to persist. "Strawberry hemangiomas" are more raised and last longer, but they, too, are most likely temporary: 30 percent disappear within three months; 60 percent within six months; and 90 percent within nine months.
RELATED: What Will My Baby Look Like?
Asian, African and other dark-skinned babies may be born with "Mongolian spots," deeply pigmented birthmarks usually found on the lower back or buttocks. "Mongolian spots can persist, but they become less noticeable because they get lighter while the rest of the skin becomes darker," Stratbucker says.
Something you never see on TV is the little plastic clamp that will be placed on your baby's umbilical cord stump, which will shrivel and come off in an average of 10 days (though this can take up to three weeks). In the meantime, you don't have to compulsively swab the stump with alcohol. "It's an open wound and you want to keep it clean and dry," says Bill Stratbucker, M.D., assistant professor of pediatrics at Rush University Medical Center in Chicago, adding that washing the stump with gentle soap and water is sufficient.
Some babies have a noticeably puffy appearance around the umbilical cord, where the abdominal muscles are still weak. These "umbilical hernias" usually resolve on their own in nine months to a year, says Stratbucker, as the surrounding muscles get stronger. (Steer clear of "belly bands" and old wives' tales that advise taping a silver dollar to your baby's belly—neither is necessary and can be potentially harmful.)
Don't worry if Baby's feet look pigeon-toed. They've rotated inward because he was curled up snugly in the womb for nine months. After about 6 months, they'll relax into a straighter position. He may also appear to have flat feet, but his arch is there – it's just hidden by a pad of fat.
The key is to remember that no two babies are alike, which is, after all, what makes each infant so special. "A baby will come out looking different from her sibling or her neighbor in the nursery," Saphir says. So relax, and savor your baby's uniqueness.
Popular in Baby Care Basics
The Best Baby Care Products
How to Have a Happy Baby
Your Baby from Birth to 3 Months
Test Your Newborn Care Knowledge
23 Ways to Calm a Fussy Newborn
10 Newborn Worries (Not to Worry About)
Bathing With Your Baby
Newborn Novelties
Guide to Your Newborn's Senses
What's Normal for Your Newborn?
12 Things No One Ever Tells You About Babies
A Typical Day For Your Newborn
10 Newborn Worries (Not to Fret About)
Newborn Body Basics
What the First Week With a Newborn is Really Like
8 Basic Baby Skills You'll Master the First Month
10 Things to Know About Newborns
Your Newborn's Eating Habits
Newborns' Belly Buttons
Why Are Babies So Cute? (And Other Burning Newborn Questions!)
All Topics in Baby Care Basics
Pediatricians and Medicine
Back to story Close
Comment on this project
Rate Review Comment on this story
Shop | Parents
Parents may receive compensation when you click through and purchase from links contained on this website.
From Our Sponsors this link opens in a new tab
Affiliate Program this link opens in a new tab
Parents.com is part of the Parents Network. © Copyright 2019 Meredith Corporation. All Rights Reserved. Privacy Policy | Data Policy | Terms of Service | Ad Choices | EU Data Subject Requests


text:
Canadian Envoys to Kenya & Tanzania: Uninformed or Arrogant?
WE HEAR YOU: Mines Ministers, representatives from mineral ministries, chamber of minerals and civil society organisations listening to the speakers at the African Mining Partnership in Cape Town – February 2010. PHOTO/ER
BADLY-INFORMED Diplomats! This is the only word – compound word I could find to describe ho w I felt when I read the press statement issued by the two Canadian High Commissioners in Kenya and Tanzania respectively.
The press release was issued to counter the article that appeared on the East African, 1st to 7th March 2010 issue. The article in question addressed a number of issues that have been reported in the past with relations to Canadian extractive industry operating abroad.
Diplomatic ignorance on issues
Titled, "Canadian firms dominate mining activities in Africa – and have a bad human rights record" and quoting issues on the ground in British Columbia, Zambia, DRC, Kenya and Tanzania highlighting the escalating levels of gross human rights violations.
The critics of this excellent article said, "We feel that the article drew some erroneous conclusions based on false or partial information. We would like to make it clear that Canada's commercial priority is to attract investors into the country through a number of fiscal measures.
There is, however, no specific policy that encourages Canadian mining companies to invest abroad as the article insinuated. Further, the Canadian government supports transparency and welcomes independent investigations of mining companies' activities."
Focusing on the highlights of some of the atrocities that have been named after the Canadian Extractive Industry abroad particularly in East and Central Africa; I would add my voice on the same on even more serious cases in Papua New Guinea, Honduras, Guatemala and other countries which I will not mention to save the space!
Canada have for decades now been spitting right on the face of local communities under the same old facade of "Canadian mining activities in Africa (are) a force for good."
This statement in itself shows how misinformed the two diplomats sent to the East African countries are to the specific social, economic and environmental needs of community members where multinational investments in the mining sector from Canada are hosted in African countries.
Diplomatic arrogance
The 'force for good' being talked about here does not take into consideration the containers belonging to Barrick Gold Corporation that were held for days at the Mwanza Airport – Tanzania after being found to carry illegal weapons being transported to the embattled North Mara Mines. This dies a forced death as usual and I do not fear speculating that the same tactics that have stalled the discussions on the new mining legislation in the parliament were used.
In their statement they stated in 'crystal' letters that, "As a country founded on the strength of its natural resources, we are proud to see Canadian expertise, technology and investment dollars at work in communities around the world.
Should Canadian companies decide to invest abroad, the government encourages them to work in a positive manner that will help all stakeholders prosper from the projects.
In Africa, you can find many examples of Canada's extractive sector playing a positive role: They are creating employment for local people, sharing and transferring Canadian expertise, respecting local law and regulations and helping communities develop natural resources in their own backyards."
This leaves a lot of communication and understanding gap as to whether the blood of the innocent in rural communities in Tanzania (where Canadian Barrick Gold) has five mining sites with a trail of gross human rights violations, economic and environmental injustices, DRC, Kenya, Zambia, Papua New Guinea, Honduras and Guatemala is anything to stand tall on and declare pride?
This is a sorry state in the standings of two diplomats and evidences how arrogant and insensitive Canadian envoys to Kenya and Tanzania are.
Canadian Government & Transparency
It is an irony for the two diplomats to concur and put in black and white that,"The Canadian government also strongly supports the International Extractive Industries Transparency Initiative.
Our government will continue to support efforts of Canadian companies to make a positive difference in the communities in which they operate and encourage all governments to be transparent in their management of the extractive sector."
A community in Bulyanhulu where a 'planned' massacre was reported in 1996 where 72 souls were reported lost. To me this was going to be a landmark to the Canadian facelift on how transparent they are. The relatives of the 'alleged' deaths are still haggling to get justice. The calls for an independent inquiry into the matter has fell on the deaf ears and I believe that the diplomats went through a series of trainings on how to give a totally deaf ears to these pending issues that are deemed as 'tarnishing the reputation of Canada.'
Manipulations from Canada
Early February the world's top personalities gathered in Cape Town in South Africa for the African Mining Indaba which was followed by the high profile gathering at the Southern Cape Hotel for the ministers of Mines, Chamber of mines from different African countries and of course a few representatives from the civil society camp.
One of the most interesting this is the fact that a number of representatives from the Mines ministries in over 35 African states unanimously state that, "human rights abuses reported in the extractive industry have not received a good handling while the participation of communities around the mines and equity in general were in books only."
The African Mining Partnership (AMP) meeting was seasoned with a mixture of people, some who were pro-mining while the majority were cautiously tackling the issues that has taken the economies of their countries in the 'drains' with respect to the mining sectors in their respective countries. It also came out clearly that "Canada dominates extractive activities in Africa with a reputation which does not befits a country that boasts of constructive engagement in transparency and accountability."
When all these criticism was on the floor, a senior international Policy advisor, at Natural Resources Canada, Andre Bourassa 'forced' his way to address the gathering and complained bitterly of the "bad reports that has been posted on one of UN's webpage concerning the trend of the mining/Extractive Industry.
"All reports that I have read on the UN's webpage about mining in Africa is all negative. Mining in Africa is not all bad and these kinds of reports only make the UN to see a state of emergency and may stop its engagement in the mining sector even though in the recent past they have been gradually getting some interest."
Bourassa went ahead to put forward a solemn plea to the minister to "produce positive reports on the progress made in the mining industry in Africa!"
This is something that threw a number of stakeholders off board and many asked, "if there is no good coming from the mining industry in Africa where are we going to get the good to write?"
This is the overbearing attitude which must stop. There has been far too much interference with all the interventions that African governments have introduced to make the most out of the natural wealth within individual countries' borders.
New strategies announced
Messrs Ross Hynes and Roert Orr state in their statement that, " Earlier this year, we (Canada) announced a new strategy that will help Canadian companies abroad go even further to meet and exceed their corporate social responsibility goals."
If I am not mistaken this refers to the recent establishment of the office of the corporate social responsibility counsellor. This is being headed by the former Munk Centre's Director, Dr. Marketa Evans who is the new counsellor of the extractive sector's CSR.
Canada has over the years realised a backlog of unresolved disputes from the host countries where foreign direct investment in the mining sector/extractive industry from Canada has had adverse effects in the social, economic and environmental areas.
"The mandate of the Counsellor will relate exclusively to the activities of Canadian extractive sector companies operating abroad. The Counsellor will:
Review the corporate social responsibility practices of Canadian extractive sector companies operating outside Canada; and
Advice stakeholders on the implementation of endorsed CSR performance guidelines.
The Counsellor will only undertake reviews with the consent of the involved parties. The five stages of the review process are: initial assessment; informal mediation; fact-finding; access to formal mediation; and, reporting.
Requests for review may originate from an individual, group or community that reasonably believes that it is being or may be adversely affected by the activities of a Canadian extractive sector company in its operations outside Canada. A request could also originate from a Canadian extractive sector company that believes it is the subject of unfounded allegations concerning its corporate conduct outside Canada in relation to the endorsed CSR performance guidelines."
But with all that said on foreign affairs and international trade Canada website; a number of questions still linger in the minds of key players and those who follow closely on how far reaching and effective the office of the CSR counsellor will be? Does this office have the teeth to bite the Peter Munk's of the Canadian Mining Empire? …and how is this office prepared to deal with the unresolved disputes in Tanzania, Zambia, DRC, PNG, Guatemala, Honduras and other parts of the world where Canadian Extractive industry operates abroad?
http://www.theeastafrican.co.ke/opOrEd/letters/Canadian%20mining%20activities%20in%20Africa%20a%20force%20for%20good%20/-/434756/883262/-/vb0hin/-/index.html
http://www.theeastafrican.co.ke/news/-/2558/870374/-/item/3/-/15rlhth/-/index.html
http://www.international.gc.ca/trade-agreements-accords-commerciaux/ds/csr-strategy-rse-stategie.aspx
This entry was posted on Mar 23, 2011 by AfrikaYetu in Politics & Democracy.
https://wp.me/p1rucC-3S


text:
Q: Let $\ k,n\in\mathbb{N};\ kFor example, when $\ n=5\ $ and $\ k=3\ $ we get
$$\ f(5,3) = (1)(2)(3) + (1)(2)(4) + (1)(2)(5) + (1)(3)(4) + (1)(3)(5) + (1)(4)(5) + (2)(3)(4) + (2)(3)(5) + (2)(4)(5) + (3)(4)(5) = 225.$$
But is there an nice, easy formula that spits out $\ 225\ $ if we give it $\ n=5\ $ and $\ k=3\ ?$ A formula that would be helpful for larger $\ n,k\ $ also.
This may or may not have to do with Newton's identities, which I saw mentioned in a vaguely related question.

A: These are the (unsigned) Stirling numbers of the first kind: https://en.wikipedia.org/wiki/Stirling_numbers_of_the_first_kind .  One definition of those is as the coefficients of the "rising factorial" polynomial $(x+1)(x+2) \cdots (x+n)$.  There's not a nice closed formula but there are nice recurrences.

A: It would be the coefficient of $x^{n-k}$ of polynomial $p(x)=\prod_1^n(x+i)$, and we know the coefficient of polynomial is defined by $m$-th derivative of polynomial.
So there can be a form as...
$$
\frac1{(n-k)!}\frac {d^{n-k}}{dx^{n-k}}\prod_{i=1}^n(x+i)\Bigg|_{x=0}
$$
I'm not sure it is closed form, but it is a form, at least.


Basic Volatyl comes with two built-in sidebars. They go by sidebar one and sidebar two. Volatyl also comes with the ability to override these sidebars on a post-by-post or page-by-page basis.
Sometimes that's not enough, though. What if you want to build a custom sidebar that appears on a number of pages? That takes custom work and is going to be a just a little bit different for everyone.
In this tutorial, I'll show you how to create your own custom sidebars in the Volatyl environment that will seamlessly override the default sidebars while inheriting their functionality. Let's get started.
As I'm sure you already know, Volatyl is an extremely flexible WordPress framework. That's what allows for the layout selector, unlimited sidebars, and other structure related features.
With that kind of flexibility, modularity of code is an absolute must. Volatyl's codebase has been written in movable blocks of functionality that can be placed where you need based on your chosen settings.
Because of this, integrating Volatyl with other software scripts that were written for basic WordPress themes can be a challenge. In this article, I'll show you how to integrate Volatyl with the popular forum software bbPress so you don't have to face any development limitations.
You are currently viewing content from the members-only "Advanced Development" archive. The content shared in this exclusive group is for advanced users who'd like to take their Volatyl installations to the next level.
The Advanced Development subscription also includes the Priority Support subscription which comes with one-on-one assistance covering the topics discussed here as well as the unique needs of each individual subscriber.
For subscription plan information or to log into your subscriber account, visit the subscribers area.


On Saturday, my wife and I watched the live stream of City Councilman Greg Brockhouse announcing that he was running for Mayor of San Antonio. He made the announcement to a crowd of around 150 on the westside, along Old Highway 90.
I like Greg. He grew up on the southside, and, during his comments, he spoke at length about representing all of the neighborhoods of the Alamo City. He spoke about transparency, as well. Honestly, I dig his riff.
I endorse Greg Brockhouse for Mayor. I will be supporting him as much as I am able to.
Rev. Sean's Notebook: No collusion, no obstruction. Rev. Sean's Notebook: On Faith and Fire. San Antonio city council to reconsider Chick-fil-A airport vote Rev. Sean's Notebook: Sundays on the Porch. Mayor accuses Brockhouse of failing to pay taxes on company assets Sean Rima: Brand New Poems, Hot Off The Griddle!


text:
Miguel Gonzalez Begins Rehab with Threshers
May 15, 2014 Game ReportsAndrew Knapp, Art Charles, brian pointer, Harold Martinez, logan moore, malquin canelo, Miguel Gonzalez, nick ferdinand, Pete Lavinjimpeyton19
Miguel Gonzalez was activated today and began his Major League Rehab Assignment. He started for the Threshers and was less than impressive. I went down to the bullpen to watch his pre-game warmups. It wasn't pretty. He was consistently high with most of his pitches. At one point, the pitching coach (Bob Milacki, I think) stopped him to pantomine a delivery and release. A few pitches later, Gonzalez launched a wild pitch that Logan Moore could barely get leather on. The ball rattled around in the walkway and eventually rolled through the open door into left field.
When the game started, Gonzalez' control problems continued. He struck out the first batter he faced, but fell behind all three 1st inning batters 1-0, in an 11-pitch inning where he threw only 6 strikes.
In the 2nd inning, he continued to deliver pitches that were high out of the strike zone. And he continued to pitch behind in the count to most batters. Gonzalez loaded the bases with nobody out on two singles and a walk. The Hammerheads only managed one run on a sacrifice fly. Gonzalez threw 20 pitches, only 10 were strikes.
Gonzalez' 3rd inning was a little easier thanks to his defense. With a runner on first and one out, a ball was hit deep into the right-center field gap. Pete Lavin chased down the ball and made a run-saving, running, leaping catch. After crashing off the wall, he threw the ball back into the infield to easily double the runner off first for his 8th outfield assist of the season. This was a 10-pitch inning, 6 strikes. By now the Jupiter squad was hitting him hard.
Gonzalez pitched himself into trouble again in the 4th inning. Two singles and his second walk sandwiched another diving catch by Lavin. He looked like he was going to escape the inning unscathed when a ball was hit sharply to Art Charles at first base. He stabbed at the bag with his foot and threw home to Logan Moore who applied the inning ending tag. The base umpire ruled no force at first. A subsequent single plated 2 runs. Gonzalez threw 20 pitches and 13 strikes.
The Threshers' rallied to score 3 runs in the bottom of the 4th inning, so Gonzalez took the mound in the 5th in a 3-3 tie. He breezed through it with an 8-pitch, 5 strike inning. His evening was over after that. His line on his 69 pitch, 40 strike night was –
5.0 IP, 6 H, 3 R, 3 ER, 2 BB, 1 K
Gonzalez did not look sharp tonight. His last outing was against XST batters. Against Advanced A players, he was consistently high with his pitches. He showed a nice off speed pitch that froze a few hitters early in the count, but wasn't in a position to put a hitter away very often. Frankly, it appeared that they didn't respect his fast ball. The batters were swinging early and often at his pitches. If it hadn't been for 2 great catches by Lavin, Gonzalez' line would have been uglier.
The game ended as so many Threshers' games have ended this season, with a loss. However, tonight they battled back twice to tie the game and actually taking the lead in the 8th inning. But the bullpen coudn't preserve the game.
Nick Ferdinand drove in two runs with a single.
Malquin Canelo drove in 1 run with a single but commited a costly error that allowed an unearned run.
Harold Martinez put the Threshers ahead with a 2-run single.
Andrew Knapp lined a single to center in his first at bat, he finished 2-4.
Brian Pointer, Art Charles, Harold Martinez, and Logan Moore also had 2-hit nights.
Threshers are on the road for the next 10 days.
← Box Score Recap – 5/14/2014	Box Score Recap – 5/15/2014 →
11 thoughts on "Miguel Gonzalez Begins Rehab with Threshers"
Any info about the fastball velocity?
jimpeyton19 says:
Sorry, no radar gun at Bright House.
No problem. I see reports in the papers this AM that he was 92-94 and is still working on some mechanical issues.
Philsphan says:
Yeah. What was the velocity? The reports were that he was hitting 94 last week. If the velocity was there and he struggled with control I'll give him the benefit of being a little rusty. If not then there's really nothing good to take out of this outing.
Because of the late change in the starting pitcher and the questionable weather in the area all day, I didn't see any of the scouts who would have normally covered a rehab start like this. So there were no radar guns available to look over someone's sholuder. In fact, I didn't see any Phillies people in the stands where they would normally be to watch a player.
Romus says:
Apparently, MAG is a WIP….work in progress.
Agreed, I can live with high fastballs if he was throwing hard. I'm sure he was pretty amped up. The next start might tell us more.
Wes Chamberlain - ugg says:
This is his first game action in roughly 2 years, right? From yesterday's game, I would be most interested in:
1) velocity
2) how does his arm feel today
If the above are okay, I don't put too much into his first appearance results (or his second and third for that matter). Of course we would all like to see better results, but it is good to see him finally out there.
Actually, his first game action occured Saturday in a GCL game. In that game he maintained his 92-94 velo into the 5th inning before being lifted after 53 pitches. He was leaving his pitches up that day, too. That was against younger players than he faced last night. I don't know his velo last night, but A level players didn't seem to have a problem making solid contact against it. HIs next two starts will probably occur in St. Lucie and Daytona before he returns back to Clearwater for a start on May 30th or 31st. Hopefully, he'll have improved by then and be in Reading or Lehigh Valley.
Thanks Jim. I either missed his earlier start or forgot it – I don't remember which one.
I agree that we should give him the benefit of the doubt and wait for velocity reports (frustratingly, Clearwater doesn't have a stadium gun) but I do have to say, Jim's description of this latest start sounds eerily similar to the game where I saw him pitch against the Orioles in spring training. I'm not a scout and don't pretend to be, but even a casual fan can tell its a bad thing when a pitcher is struggling even in his bullpen warmup.
catch22hman on Threshers Recap – 7/16/2019


text:
Editorial: Safe Florida schools need to be our priority. Period.
The Daytona Beach News-
Journal Editorial Board
It remains the second-deadliest school shooting in U.S. history, after Newtown. The slaughter of 17 students and teachers at Marjorie Stoneman Douglas High School in Parkland on Feb. 14, 2018, cast an overwhelming shadow over the Florida legislative session that started a few weeks later. Shamed, shocked and deeply saddened, lawmakers passed the state's first restrictions on sales and use of firearms in decades. They also carved out hundreds of millions of dollars for school security .
Lawmakers deserve full credit for their determination to make sure Floridians never endure such a tragedy again. But by the end of the 2018 session, politics had crept into the process. Lawmakers siphoned the cost of the required security enhancements from funding that would otherwise probably have gone to classrooms, and attempted to strong-arm school districts into controversial (and almost certainly ineffective) measures such as arming classroom teachers.
Most district officials across the state were conflicted in their responses. They didn't want to appear indifferent to the safety of their students, but many criticized the legislative mandates as unworkable and expensive.
>>>Related content: Editorial: Our kids return to school under a shadow of fear. It's crazy we don't change that.
Palm Beach County School District officials issued a flat "no" to allowing teachers and others school staff to carry guns on campuses for example. The school district, which garnered millions of dollars in a 2018 voter-approved referendum for additional school security, also pushed back against providing security officers to privately-run charter schools -- a position they were forced to reverse last month by an administrative law judge.
Our county school board is not alone. A grand jury report released last month blasted local school districts for failing to comply with the new laws. Lawmakers should pay attention to the findings, but it's also important to recognize, now that the panicked trauma of the Parkland massacre has faded, that some criticisms of the 2018 laws are justified. Before lawmakers follow the grand jury's recommendation of harsher punishments for districts that don't comply with state rules, state and local officials should collaborate on a sober evaluation of school-security policies and make adjustments where necessary.
There is one area where local and state officials should find rapid agreement: In many counties, communication is the real Achilles' heel — not just in response to school shootings. Many counties operate with a ragged patchwork of county and city communication technology, with radio systems that don't interconnect and dispatch centers that don't communicate across city and county lines.
>>>Related content: Editorial: Florida Senate's first shot at addressing 'mass shootings' misses the target
Everyone needs to be on the same page. And state lawmakers can't continue to side-step their responsibility to make that a priority.
Grants to counties could encourage adoption of centralized communications and dispatch. The Florida Legislature should try that first, before moving to the more punitive and forceful approach the grand jury recommends.
The same goes for other recommendations in the report. Grand jurors were appalled to find that many schools — including newly built ones — don't allow for efficient communication across the campus. On any given school day in any given Florida county, a person can walk onto a campus, into a classroom and sit down. They can still pass numerous security checkpoints and not be stopped.
The grand jury makes one other point lawmakers should consider: Many suspect that violent incidents are under-reported by many districts. Giving the state Department of Education greater authority to mandate these reports — including potential sanctions — makes sense.
Finally, we're concerned about one recommendation that didn't make the grand jury's report. Physical barriers — fences or walls — can be one of the most effective tools for securing school premises. While it may seem expensive to retrofit older, more open campuses, that cost is probably far less than some of the measures the grand jury has called for. Certainly, all new schools should be constructed in ways that limit entrances and exits.
Lawmakers understand that no solution can protect students from every threat, and they'll never know for sure if any of these measures prevent mass slaughters. But student safety is too important for complacency, and deserves ongoing attention that comes with the highest priority.
An earlier version of this editorial appeared in the Daytona Beach News-Journal.


text:
Michael Wade Simpson Aug 8, 2009
Also in Film
Trainspotting Tom Trinchera
Deterrence Tom Block
For Love of the Game Douglas Konecky
Summer Hours (2009)
Written and Directed by Olivier Assayas
Starring: Charles Berling, Juliette Binoche, Jérémie Renier, Edith Scob, Dominique Reymond, Valérie Bonneton, Isabelle Sadoyan
www.ifcfilms.com
Summer Hours is as perfectly formed as the objets d'art that figure so heavily in its story. Olivier Assayas has written a film with the grace and precision of a true artist. The actors embody their roles with an air of complete understanding, and the themes addressed are deeply resonating, as timely as they are universal. This is grand moviemaking. Assayas has made a masterpiece with the restrained strokes of a contemplative and intelligent artist, and it's that restraint and intelligence that allows the film to exude its power over us.
The film's richness hinges on an otherwise quite common, though momentous, phase of everyone's life—the death of an aging parent, and the practical matter of how the heirs should divvy up the estate. Assayas chooses to keep close to the surface of these events, concentrating on the practicalities—the nuts and bolts of burying the dead, like cemetery plots, appraisals, meetings with lawyers, the wording of the obituary—and letting the concurrent emotional and thematic elements flow out of these otherwise mundane activities on their own. And flow they do, all the more poignantly in their discretion.
The film is divided into three parts, with a brilliantly discordant coda at the end. In the first, Assayas presents us with the linchpin of a bourgeois French family, its matriarch Hélene (Edith Scob), who lives alone on her country estate. On the occasion of her 75th birthday, her three grown children and their families come to celebrate, a rare family reunion now that her children have moved away and built lives of their own. Frédéric (Charles Berling), the oldest, still lives nearby in Paris, but Jérémie (Jérémie Renier) the youngest, has relocated with his family to China for business, and her only daughter Adrienne (Juliette Binoche) has chosen an expatriate's life as an artist in New York. The reunion reveals a family already long dismantled, though the vestiges of its existence are still evident in the exchanges around the opening of presents, the subtle rivalries and intimacies between the three siblings, and the mother's dogged insistence on keeping the artifacts of her life—the house and the substantial art collection she herself inherited—intact while she is still alive. You wonder why Hélene has so much emotional investment in all the objects around her, until you realize that's all she has left. Hélene understands that her role as the keeper of memories will be over after she dies, and therefore the symbolic value of the objects she holds dear—what she calls "the residue" of a life—will also disappear. "A lot will die with me—memories, secrets," she tells her eldest son. She knows Frédéric will be the one who will find it hardest to let go of the past, and she discourages him with some unsentimental advice. Sell it all, she tells him. She has seen the inevitability of change herself, and will not stand in its way.
A year later, the mother has died, and the film's second part once again concentrates on material concerns. After a brief, and rather awkward, acknowledgement of the sadness of their mother's sudden passing, the siblings get down to the business of their inheritance that evening over dinner. The scene is an incredible piece of ensemble acting. The conversations are extremely realistic, even banal in their lack of overly dramatic buildup and tension. The siblings talk of practicalities—the resemblance to real life conversation is deadly accurate—but underneath, Assayas is showing us so much more. We are witnesses to a family dirge; in effect, the dissolution of centuries of accumulated history. Frédéric is there to remind us with the sole expression of regret over the decision to sell the house. He understands what is at stake. However subtle and lacking in pathos, the emotion is painted within the scene. Frédéric is the conduit of the nostalgia we all experience when the last parent finally dies, and we see our childhood die with them.
The last part of Summer Hours is the dispersal of the estate, and the transfer of the mother's art collection to the Musée d'Orsay, the Paris museum that has become another kind of cemetery, where the residue of French culture has found its own final resting place. It is through these scenes meticulously detailing the transmission of the family's treasured artifacts that we realize that Summer Hours is about much more than the death of a mother, or the end of a family. It's about a whole society, a nation, dying off. Globalization, in its attempt to merge economies, is also transforming societies, and this not only effects family traditions, but national cultures as well. Here in the U.S., a country of immigrants and constant relocation, we may not feel the effects so much, but France, and Europe in general, is different. The ramifications present a more complicated transformation, and, in some way, a more noticeable sense of loss.
After all the acknowledgement of the end of things, Assayas leaves us with a scene brimming with life. Frederic's teenage children have planned a weekend bacchanal at their grandmother's country house before the family has to relinquish it to the new owners. We see young people descending on a home that had been in stasis for so long. It's a scene of renewal; Assayas is not one to regret inevitable change. It may not be the way it was before, but it's the flow of life, and being reminded of that helps to assuage our melancholy for the past.
I found Summer Hours an uplifting film in the end. Just as I did of last year's other film commissioned by the Musée d'Orsay to celebrate its 20th anniversary. Hou Hsiao-Hsien's Flight of the Red Balloon also addresses the effects of globalization and contemporary life on French society, but in a different way. In that film, a Taiwanese director came to France to bask in its culture. In Summer Hours, a wandering Frenchman—Assayas often works outside of France—comes home to say goodbye. Both films share a certain quiet (though not somber) tone, where darkness and light commingle.
I'm about the same age as Olivier Assayas, a few years younger, and my dad still lives in the same house I grew up in. The house is like a member of our family, and I know the day will come, sooner than I care to admit, when my sister and I will have the same conversation as Frédéric, Jérémie and Adrienne. I already know that my sister's sentimental attachment is like Frédéric's (I am more like Adrienne), but I, too, will have a hard time letting go. Summer Hours speaks eloquently and profoundly of an experience I know will be a difficult one for us. Beyond what it says of the world at large, it's still an intimate film. I know that I'll think of it when we empty my father's house of its half century of accumulated things, and that it will comfort me with a sense of understanding. That is, after all, what the best art is for.
Beverly Berning�
Michael Wade Simpson Santa Fe ,
Mr. Simpson has a BA in Journalism from the University of Southern California and worked as an advertising writer in Los Angeles before moving to New York to pursue a different passion: dance. He danced professionally in New York and Boston before founding a community-based modern dance company, Small City Dance Project, in Newburyport, MA. His fiction has appeared in literary journals and anthologies. He was a teaching fellow at Smith College, where he received his MFA in choreography. While living in the Bay Area for 15 years, he wrote about dance for the San Francisco Chronicle and other periodicals. In 2005, he was a NEA Fellow at the Dance Critics Institute, American Dance Festival. For culturevulture.net, he reviews dance, theatre and film. He moved to Santa Fe in October, 2008. He writes for "Pasatiempo," the Arts magazine of the "Santa Fe New Mexican."
More posts Email
Back to Burgundy (2017) Paula Farmer
Appropriate Los Angeles,
Karen Weinstein
Seaside (Bord de mer) Les Wright
The Hours Arthur Lazere


Before you throw out things from your attic, you might want to ask an antique appraiser in Phoenix to check them out for you. At Morton Appraisals, you can even request for an online evaluation depending on the item. Just visit our website to find out how or call us at 480-326-6885 for inquiries.
• Accreditation – Legitimate antique appraisers have all the accreditations necessary and follow ethical and professional standards. Aside from being licensed and certified appraisers, they should also be insured.
• Experience - It helps if the appraiser has been in the business for many years. Only a trained eye can spot an antique right away and distinguish it from a fake.
• Services - Each appraiser has a specialty. If you have antique paintings or art pieces, make sure the appraiser is highly trained in that specific category.
If you are looking for a reliable and trustworthy antique in appraiser Phoenix, contact Morton Appraisals LLC. Owner Sean Morton is a member of the Antique Appraisal Association of America and is also the director of the Houston & Minneapolis galleries of C.G. Rein Galleries. For detailed information on all of our services, just browse our website. You may also reach Morton Appraisals LLC at 480 – 326 – 6885 or send an email through this website.


To this cave, there is a very considerable ascent up the rock by means of steps. Like the last two Buddhist caves, the whole court had been hewn out of the solid rock, leaving a curtain wall across in front of it, and a sacrificial hall in the middle, with a number of small shrines and a water cistern in the surrounding walls. This hall has had a porch to the left supported by two square pillars in front of a perforated window, over which is a long Sanskrit inscription too much obliterated for translation. This goes fourteen long lines and twenty nine and a half verses. It contains the genealogy of the Rashtrakuta dynasty, which ruled over the Deccan from 600 A.D till the end of the tenth Century. Dantidurga is mentioned at the end, which clearly points that either the temples was completely finished or at least in an advanced stage of construction when Dantidurga visited Ellora. The insc ription breaks off at the thirtieth verse and has never been finished.
The entrance faces the cave to the back, and inside it has four pillars on a raised platform in the floor. In the back aisle is a single round fire pit. The outer walls have a good deal of carving, and the flat roof is surmounted outside by lions at the corners and fat human figures between along the edges.
The cave is of two stories, the lower being a few feet above the level of the court, and supported by fourteen square pillars and measuring 95 feet in length. In the left end of the front ais le, the stair ascends, and is lighted by a window at the landing, where it turns to the right. On the wall of this landing are eleven compartments, each about two feet in height, with bas-reliefs.
Another flight of steps leads to the end of the front aisle of the great hall above, 95 feet wide and 110 feet deep inclusive of the vestibule of the shrine, supported by 44 square columns, including the two in front of the vestibule. Those in front are richly carved with floral ornamentations, in which dwarfs, snakes etc. are introduced. Outside at the end of the balcony, is a four armed Rudra in a state of frantic excitement, but a leg and one of the arms are broken off. Like in the last cave, the sculptures on the side are mostly Vaishnava and, and on the other entirely Saiva.
Beginning from the right side with the Saiva sculptures – the first from the door is Mahadeva or Bhairava in his terrible form. The gigantic figure lounges forward holding up his elephant hide, with a necklace of skulls depending below is loins. Round him a cobra is knotted; his open mouth showing his large teeth, while with his trisula he has transfixed one victim. To add to the elements of horror, Kali, gaunt and grim, stretches her skeleton length below, with huge mouth, having a crooked knife in her right hand, and stretching out the other with a bowl as if wanting a share of the victim's blood.
The seco nd chapel contains Siva dancing the tandava. The third contains an altar probably for Bhavani but never finished; fourth is Siva and Parvati playing the dice game, with Nandi and the ganas below; fifth contains the marriage scene of Siva and Parvati, in which, contrary to the usual representations, she is at his left side. Brahma with his triple face performs the priestly functions, while various gods on their vehicles are witnesses to the scene. The sixth chapel contains a usual representation of Ravana lifting the Kailasa mountain.
On the back wall, we have Siva springing out of the linga to protect his worshipper Markandeya, whom Yama, has noosed and about to drag off to his dark abode. The second has Siva and Parvati. We now come to the ante-chamber or vestibule of the shrine. On the left end of it is a huge Ganapati. On the floor at the back corner are lions, carved with consid erable spirit. Inside the sanctum is a Siva Linga which seems to have been recently installed (as when this cave was discovered, the pedestal was empty). To the right of the shrine door is Lakshmi, flanked by four elephants pouring water upon her.
In the left side of the back wall is Siva inside a linga with flames issuing from the sides of it. Vishnu in the Varaha (boar) form is digging down to see if he can reach the base of the great linga; having failed to do so is shown worshipping. On the other side Brahma is also shown worshipping it. In this panel, Siva is shown superior to the others in the triad. Second panel shows Siva, having seized the horses of the Sun, made the four Vedas his horses, and Brahma his charioteer.
We now come to the South wall, and starting from the front we first have Vishnu, six armed, his left foot on a dwarf holding up the hill Govardhan to protect his people. Second, Vishnu resting on Sesha, the great serpent with a human head and five hoods; while out of Vishnu's navel springs a lotus on which Brahma is seated. Lakshmi rubs her lord's feet and seven figures are represented below. Third, Vishnu riding Garuda; Fourth, an altar protected by a high screen in front. Fifth, Varaha holding the Prithvi on his hand, with three other snake figures below. Sixth is Vishnu in the incarnation of Vamana turning into a giant presses his foot over the head of the demon King Bali. Next is Narasimha, or the man lion form of Vishnu, wrestling with his enemy who looks defeated before the four armed Vishnu.
Now it is time to move towards the masterpiece in Ellora, Cave 16 also know as the Kailas Temple.


After coming back from MWC 2013 in Barcelona where we've launched the PowerVR G6100 – our most smallest PowerVR Series6 GPU to date -, we're dedicating this entry to a 'behind the scenes' look at the other important announcement made during the show. We've stated in a recent press release that power efficiency is now the dominant factor in mobile design. This also applies to our PowerVR video cores, especially since our partners have now shipped 500m devices cumulatively incorporating our video SoC IP cores out of over 1 billion devices which have integrated Imagination's IP, many of these containing multiple cores from Imagination.
The growth in devices using Imagination's video technologies shows the momentum that continues to build in the mobile and embedded market for new full-HD video technologies. The PowerVR video hardware IP cores are able to form the backbone of many new broadcast standards like Miracast, the wireless display protocol from the Wi-Fi Alliance. According to IHS iSuppli, Miracast-enabled devices would top 1.5bn units in 2016 alone. To address this we've designed our PowerVR Series3 and Series4 video decoders and encoders to deliver multi-stream, multi-standard video transcoding, supporting high definition resolutions like 4K and beyond as well as increased image quality with 4:4:4 colour resolutions and 10-bit colour depth.
Video codec requirements usually vary from standard to standard, therefore we've made sure all of Imagination's video cores support all major video and imaging specifications including H.264 (Base to High profile), MPEG4, MPEG2, VC-1/WMV, AVS, Sorenson and JPEG. Many of our decoder cores also offer hardware rotation and scaling, delivering significant reductions in bandwidth and power consumption. By combining them with our PowerVR graphics cores, developers can write more efficient software that takes advantage of our heterogeneous processing capabilities. Scaling can thus be done by the graphics core, making the combination of VPUs and GPUs extremely powerful for a wide range of multimedia applications.
We've built a dynamic and complete roadmap to address all multimedia processing needs, offering the best hardware IP technologies for all wireless display applications. Configurable multi-pipe and multi-core implementations allow system designers to choose the right combination of performance, features and area while always keeping the power consumption at a minimum. Here's a brief list of the mandatory features each system for transmitting video wirelessly should have.
Notice how we've optimized our encoder lineup to sustain high bitrates and framerates, improved image quality and futureproofed our cores for upcoming trends like 4K @ 60fps.
High quality encoding is essential. Most consumers can get confused by advanced technical terms like flexible bitrate control and colour subsampling but will be able to spot any loss in quality very quickly. By integrating Imagination's video cores, any platform can offer improved video quality at lower bitrates. Features such as 8×8 blocks for reference frames and CABAC encoding enable video transmission at the highest possible quality, whilst maintaining the low data rates essential for network transmissions.
Furthermore, any encoder needs to have all its elements implemented efficiently so that they all work together in harmony. It is not enough to have a "spec sheet" encoder simply stating H.264 compliance, where performance and features are treated separately. We instead have taken the path of building an efficient architecture based on a combination of optimized hardware, firmware and software for power efficiency and performance. For example, Imagination's advanced search algorithms allow a 'no-compromise' approach for large, bandwidth efficient and accurate searches, implementing most of the functionality in hardware and requiring minimum CPU involvement, keeping the central processor usage typically under one MIPS.
Thanks to a long and successful collaboration with numerous customers, we've developed a flexible, scalable design deployed in hundreds of millions of devices that are used daily instead of just theoretical systems tested under laboratory conditions and carefully controlled code. We've also made drivers available for several operating systems as well as low level APIs for easy porting to any new or existing OS.
4K resolutions increase the requirement for efficient compression, as wireless displays demand compression when used over limited channel. The same principles apply for our PowerVR decode technologies, where we have been the only IP provider able to offer 4K @ 60fps working at the required high bitrates demanded by wireless displays. Even in extreme bitrate conditions of 230 Mbps for 4096 x 1744 (2.35:1), our cores still deliver superior image quality without sacrificing the frame rate. We've also integrated advanced error handling and concealment algorithms to optimize our solutions especially for displays which are sensitive to transmit issues. Not only that, but this rapidly growing market area will need cores that support multiple standard, multiple stream capabilities as device manufacturers will always want to have the latest and greatest bundle of multimedia options integrated in their products.
The most recent additions to the PowerVR video family, the D4500MP and E4500MP, maintain quality throughout the processing chain and support 4:4:4 and 4:2:2 colour resolutions which are essential for high quality wireless displays as most of them require conversion from RGB to YCbCr. A simple case of mixing video and graphics like in OSD (on-screen display) will lead to poor results without 4:4:4 encoding, therefore increasing colour depth and resolution for the Series4 video cores was not only a matter of offering our partners a path to differentiation but also of further increasing efficiency, as most internal video processing is typically 10bit.
The benefits above are mostly related to picture quality but perhaps the biggest gain from using our cores is seen in the overall system power consumption. By offloading the more intensive multimedia processing to the PowerVR video decode/encode cores, the host CPU can refocus on other tasks or even enter its idle state, thus reducing power consumption, maximizing battery life and increasing the responsiveness of the computing platform.
Imagination naturally becomes the best choice for wireless displays. Our PowerVR video cores exceed the performance and power requirements for wireless display, providing leading transcoding solutions which ensure platforms using our IP deliver the best quality for high resolutions at superior bitrates.
Stay up-to-date with the latest announcements from the PowerVR video team, follow us on Twitter (@ImaginationTech) and keep coming back to our blog.
I am software developer, and for me the main question is how to distinguish what VXD decoder model my SoC has? Is VXD shipped inside the PowerVR GPU, or SoC vendor can combine PowerVR GPU IP with any VXD IP?
The PowerVR video IP is independent of the GPU. Although there might be tight(er) integration between them, you will find chipsets that have a PowerVR GPU + VPU combo (Intel Z2460/Z2480 or Z2520/Z2560/Z2580 are such examples) but also SoCs that use another GPU (Mali, Intel HD Graphics, etc.) and still have a PowerVR VPU.
It begs the question. Is low power not a dominant factor in Mobile design video encoding, which would be amazing given the compulsory hi res rear camera fitted to mobiles today, and the emphasis placed on video recording opportunities, or was it left out of the table due to IMG not being class leading in this area ?
That's a very interesting point. All our technologies, including PowerVR graphics and video cores, are intrinsically low power. On mobile platforms, decoding is typically used more often than encoding, but this does not mean that all our PowerVR hardware encode IP has not been optimized for low power.
When encoding video streams, maintaining high compression ratios without reduced visual quality is a key element for most users.
However, providing the industry's best encoder is a balance between high quality (we are talking Full or Ultra HD resolutions) at low bandwidths and optimized power consumption. All our encoder cores have an automatic hardware power management system that uniquely allows them to provide a flexibile way of controlling parameters like bitrate or header generation. What this esentially means for mobile platforms (smartphones, tablets) is that you can still capture 1080p video at the best possible quality while also expecting the lowest battery usage.
For example, Intel has been integrating both our PowerVR VXD and VXE cores across all their mobile-oriented Atom platforms (Lexington, Medfield, Clover Trail, Clover Trail+). In their keynote at CES 2013, one of the main points of their presentation was how, by adding our low-power, hardware video cores to their Atom SoCs, they have been able to offer smartphone and tablet users an extended multimedia experience, by prolonging the battery life of all platforms that include PowerVR video cores. This is an esential point especially for emerging markets where people rely on their mobile devices as their main computing device.


text:
Random Thoughts from Your Friendly Neighborhood Law Student
No Duty to Watch
Game Talk
Inferno Review
Inferno is the latest film based off the novel by Dan Brown, directed by Ron Howard, and starring Tom Hanks as Robert Langdon. Following the Da Vinci Code and Angels and Demons, Inferno hopes to cash in on the success of both its film predecessors and best selling novels. So does it? Let's find out…!
Story: The film opens with Langdon waking up in a hospital after nearly being shot and he doesn't know or remember what's going on. Then an assassin comes and he and his doctor have to escape, only to find out that they have to help save the world from a deadly plague. Despite being very predictable, the story is pretty fast paced moving from one scene to the next and roles along nicely, however everything comes to a screeching halt as they have to not only explain the relationship between the villain and his partner but also between Langdon and a random lover from his past. It breaks any sense of excitement it had going for it and when the action picked back up, I just didn't care anymore.
Acting: In my review of Sully, I thought that Tom Hanks did have a great performance when compared to his previous roles, such as Captain Phillips or Bridge of Spies. HOWEVER. When you compare those roles to the one here, it's absurd how bad it is. It's like he knew he had to be in this film but he didn't want to put in the effort. It's not horrible but it's not really good either. Additionally, Felicity Jones, who plays his partner, is kind lazy and not memorable at all. Omar Sy and Ben Foster round out the cast and they too are just dull and uninteresting.
Presentation: A majority of the movie features flashbacks and visions of an apocalypse and they're done very poorly, especially in the beginning of the film. The shots in these scenes are so janky and wobbly that it's hard to focus or even make out what's going on. There are a hundred different ways the Ron Howard could've done instead we got this lazy and disorientating thing that really adds nothing to the movie. Additionally, the music is inconsistent; some points we get orchestral music and elsewhere we get weird techno music. Overall, it's just poorly made.
Effect: As I mentioned in the story section, all motion in the story stops about 30 minutes from the end and I never felt like it got back on track. However, my biggest problem with here is the ending. The story is about stopping this plague and in the end (spoiler alert) they stop it in the most cliched manner possible. I was hoping that they wouldn't be able to stop it and the whole time our heroes were on a path with the intention of distracting them. It would have been awesome, but instead what we got is so cliched its boring.
Other: I'm taking points off here not only for being boring but also being very repetitive. The opening credits has a character giving a speech and that speech is repeated 5 different times throughout. If the director thinks that we the audience cannot what remember what happened in the beginning of a two hour movie and thinks that they need to repeat information for us, then something is wrong.
At the end of this, I'm kind of sad. I really like Angels and Demons (and the Da Vinci Code to a lesser extent) and was hoping this film would be similar. Unfortunately, we ended up with something that feels nothing like it's predecessors.
Acting: 6
Presentation: 4
Effect: 4
Other: 5
Movie Reviws
wselfridge
Quick Review: Jack Reacher Never Go Back
Doctor Strange Review
One thought on "Inferno Review"
Pingback: The 10 WORST Movies of 2016 – Fridge Logic
View wcselfridge's profile on Twitter
View william-cullen-selfridge's profile on LinkedIn
Click below to stay updated on all the must know information in the world!! Please? Do it for the kids!
CLICK ME!!!!
Discovery: