Browse Source

Allow selection of modules

--HG--
branch : minor
Bart van Strien 14 years ago
parent
commit
22e75f72f1
3 changed files with 153 additions and 111 deletions
  1. 10 10
      src/love.cpp
  2. 21 2
      src/scripts/boot.lua
  3. 122 99
      src/scripts/boot.lua.h

+ 10 - 10
src/love.cpp

@@ -67,18 +67,18 @@
 
 static const luaL_Reg modules[] = {
 	{ "love.audio", love::audio::luaopen_love_audio },
-	{ "love.event", love::event::sdl::luaopen_love_event },
-	{ "love.filesystem", love::filesystem::physfs::luaopen_love_filesystem },
-	{ "love.font", love::font::freetype::luaopen_love_font },
-	{ "love.graphics", love::graphics::opengl::luaopen_love_graphics },
+	{ "love.event.sdl", love::event::sdl::luaopen_love_event },
+	{ "love.filesystem.physfs", love::filesystem::physfs::luaopen_love_filesystem },
+	{ "love.font.freetype", love::font::freetype::luaopen_love_font },
+	{ "love.graphics.opengl", love::graphics::opengl::luaopen_love_graphics },
 	{ "love.image", love::image::luaopen_love_image },
-	{ "love.joystick", love::joystick::sdl::luaopen_love_joystick },
-	{ "love.keyboard", love::keyboard::sdl::luaopen_love_keyboard },
-	{ "love.mouse", love::mouse::sdl::luaopen_love_mouse },
-	{ "love.physics", love::physics::box2d::luaopen_love_physics },
+	{ "love.joystick.sdl", love::joystick::sdl::luaopen_love_joystick },
+	{ "love.keyboard.sdl", love::keyboard::sdl::luaopen_love_keyboard },
+	{ "love.mouse.sdl", love::mouse::sdl::luaopen_love_mouse },
+	{ "love.physics.box2d", love::physics::box2d::luaopen_love_physics },
 	{ "love.sound", love::sound::luaopen_love_sound },
-	{ "love.timer", love::timer::sdl::luaopen_love_timer },
-	{ "love.thread", love::thread::sdl::luaopen_love_thread },
+	{ "love.timer.sdl", love::timer::sdl::luaopen_love_timer },
+	{ "love.thread.sdl", love::thread::sdl::luaopen_love_thread },
 	{ 0, 0 }
 };
 

+ 21 - 2
src/scripts/boot.lua

@@ -187,7 +187,7 @@ function love.boot()
 
 	-- This is absolutely needed.
 	require("love")
-	require("love.filesystem")
+	require("love.filesystem.physfs")
 
 	love.arg.parse_options()
 
@@ -275,10 +275,29 @@ function love.init()
 		c.console = true
 	end
 
+	local defaultmodules = {
+		audio = false,
+		event = "sdl",
+		filesystem = "physfs",
+		font = "freetype",
+		graphics = "opengl",
+		image = false,
+		joystick = "sdl",
+		keyboard = "sdl",
+		mouse = "sdl",
+		physics = "box2d",
+		sound = false,
+		timer = "sdl",
+		thread = "sdl"
+	}
+
 	-- Gets desired modules.
 	for k,v in pairs(c.modules) do
 		if v then
-			require("love." .. k)
+			if type(v) ~= "string" then
+				v = defaultmodules[k]
+			end
+			require((v and "love.%s.%s" or "love.%s"):format(k, v))
 		end
 	end
 

+ 122 - 99
src/scripts/boot.lua.h

@@ -174,106 +174,129 @@ const unsigned char boot_lua[] =
 	0x74,0x69,0x6F,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x62,0x6F,0x6F,0x74,0x28,
 	0x29,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x6C,0x6F,0x76,0x65,
 	0x22,0x29,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x6C,0x6F,0x76,
-	0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x22,0x29,0x20,
-	0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x70,0x61,0x72,0x73,0x65,0x5F,
-	0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x28,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,
-	0x20,0x6F,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x6F,
-	0x70,0x74,0x69,0x6F,0x6E,0x73,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x61,0x72,
-	0x67,0x30,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x67,
-	0x65,0x74,0x4C,0x6F,0x77,0x28,0x61,0x72,0x67,0x29,0x20,0x6C,0x6F,0x76,0x65,
-	0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x69,0x6E,0x69,
-	0x74,0x28,0x61,0x72,0x67,0x30,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x63,
-	0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x3D,0x20,0x70,
-	0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,
-	0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,0x74,0x53,0x6F,0x75,0x72,0x63,0x65,
-	0x2C,0x20,0x61,0x72,0x67,0x30,0x29,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,
-	0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x61,0x6E,
-	0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65,0x2E,0x73,0x65,0x74,0x20,0x61,0x6E,
-	0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65,0x2E,0x61,0x72,0x67,0x5B,0x31,0x5D,
-	0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x66,0x75,0x6C,
-	0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,
-	0x2E,0x70,0x61,0x74,0x68,0x2E,0x67,0x65,0x74,0x66,0x75,0x6C,0x6C,0x28,0x6F,
-	0x2E,0x67,0x61,0x6D,0x65,0x2E,0x61,0x72,0x67,0x5B,0x31,0x5D,0x29,0x20,0x6C,
-	0x6F,0x63,0x61,0x6C,0x20,0x6C,0x65,0x61,0x66,0x20,0x3D,0x20,0x6C,0x6F,0x76,
-	0x65,0x2E,0x70,0x61,0x74,0x68,0x2E,0x6C,0x65,0x61,0x66,0x28,0x66,0x75,0x6C,
-	0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E,
-	0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,0x74,0x49,
-	0x64,0x65,0x6E,0x74,0x69,0x74,0x79,0x28,0x6C,0x65,0x61,0x66,0x29,0x20,0x63,
-	0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x3D,0x20,0x70,
-	0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,
-	0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,0x74,0x53,0x6F,0x75,0x72,0x63,0x65,
-	0x2C,0x20,0x66,0x75,0x6C,0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,0x29,0x20,
-	0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,
-	0x67,0x61,0x6D,0x65,0x20,0x61,0x6E,0x64,0x20,0x6E,0x6F,0x74,0x20,0x28,0x6C,
+	0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x70,0x68,
+	0x79,0x73,0x66,0x73,0x22,0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,
+	0x2E,0x70,0x61,0x72,0x73,0x65,0x5F,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x28,
+	0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6F,0x20,0x3D,0x20,0x6C,0x6F,0x76,
+	0x65,0x2E,0x61,0x72,0x67,0x2E,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x20,0x6C,
+	0x6F,0x63,0x61,0x6C,0x20,0x61,0x72,0x67,0x30,0x20,0x3D,0x20,0x6C,0x6F,0x76,
+	0x65,0x2E,0x61,0x72,0x67,0x2E,0x67,0x65,0x74,0x4C,0x6F,0x77,0x28,0x61,0x72,
+	0x67,0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,
+	0x74,0x65,0x6D,0x2E,0x69,0x6E,0x69,0x74,0x28,0x61,0x72,0x67,0x30,0x29,0x20,
+	0x6C,0x6F,0x63,0x61,0x6C,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,
+	0x61,0x6D,0x65,0x20,0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,
+	0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,
+	0x74,0x53,0x6F,0x75,0x72,0x63,0x65,0x2C,0x20,0x61,0x72,0x67,0x30,0x29,0x20,
+	0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,
+	0x67,0x61,0x6D,0x65,0x20,0x61,0x6E,0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65,
+	0x2E,0x73,0x65,0x74,0x20,0x61,0x6E,0x64,0x20,0x6F,0x2E,0x67,0x61,0x6D,0x65,
+	0x2E,0x61,0x72,0x67,0x5B,0x31,0x5D,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,
+	0x63,0x61,0x6C,0x20,0x66,0x75,0x6C,0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,
+	0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x70,0x61,0x74,0x68,0x2E,0x67,0x65,
+	0x74,0x66,0x75,0x6C,0x6C,0x28,0x6F,0x2E,0x67,0x61,0x6D,0x65,0x2E,0x61,0x72,
+	0x67,0x5B,0x31,0x5D,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6C,0x65,0x61,
+	0x66,0x20,0x3D,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x70,0x61,0x74,0x68,0x2E,0x6C,
+	0x65,0x61,0x66,0x28,0x66,0x75,0x6C,0x6C,0x5F,0x73,0x6F,0x75,0x72,0x63,0x65,
+	0x29,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,
+	0x65,0x6D,0x2E,0x73,0x65,0x74,0x49,0x64,0x65,0x6E,0x74,0x69,0x74,0x79,0x28,
+	0x6C,0x65,0x61,0x66,0x29,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,
+	0x61,0x6D,0x65,0x20,0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,
+	0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x73,0x65,
+	0x74,0x53,0x6F,0x75,0x72,0x63,0x65,0x2C,0x20,0x66,0x75,0x6C,0x6C,0x5F,0x73,
+	0x6F,0x75,0x72,0x63,0x65,0x29,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x63,
+	0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x61,0x6E,0x64,
+	0x20,0x6E,0x6F,0x74,0x20,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,
+	0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22,
+	0x6D,0x61,0x69,0x6E,0x2E,0x6C,0x75,0x61,0x22,0x29,0x20,0x6F,0x72,0x20,0x6C,
 	0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,
-	0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22,0x6D,0x61,0x69,0x6E,0x2E,0x6C,0x75,
-	0x61,0x22,0x29,0x20,0x6F,0x72,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,
-	0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x65,0x78,0x69,0x73,0x74,0x73,0x28,
-	0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29,0x29,0x20,0x74,0x68,
-	0x65,0x6E,0x20,0x6E,0x6F,0x5F,0x67,0x61,0x6D,0x65,0x5F,0x63,0x6F,0x64,0x65,
-	0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,
-	0x6E,0x6F,0x74,0x20,0x63,0x61,0x6E,0x5F,0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,
-	0x65,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x6E,0x6F,0x67,
-	0x61,0x6D,0x65,0x28,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x66,
-	0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x69,0x6E,
-	0x69,0x74,0x28,0x29,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x63,0x20,0x3D,0x20,
-	0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20,0x3D,0x20,0x22,0x55,0x6E,0x74,0x69,
-	0x74,0x6C,0x65,0x64,0x22,0x2C,0x20,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x3D,
-	0x20,0x22,0x55,0x6E,0x6E,0x61,0x6D,0x65,0x64,0x22,0x2C,0x20,0x76,0x65,0x72,
-	0x73,0x69,0x6F,0x6E,0x20,0x3D,0x20,0x30,0x2C,0x20,0x73,0x63,0x72,0x65,0x65,
-	0x6E,0x20,0x3D,0x20,0x7B,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3D,0x20,0x38,
-	0x30,0x30,0x2C,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3D,0x20,0x36,0x30,
-	0x30,0x2C,0x20,0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x3D,
-	0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x76,0x73,0x79,0x6E,0x63,0x20,0x3D,
-	0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x66,0x73,0x61,0x61,0x20,0x3D,0x20,0x30,
-	0x2C,0x20,0x7D,0x2C,0x20,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73,0x20,0x3D,0x20,
-	0x7B,0x20,0x65,0x76,0x65,0x6E,0x74,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,
-	0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x20,0x3D,0x20,0x74,0x72,0x75,
-	0x65,0x2C,0x20,0x6D,0x6F,0x75,0x73,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,
-	0x2C,0x20,0x74,0x69,0x6D,0x65,0x72,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,
-	0x20,0x6A,0x6F,0x79,0x73,0x74,0x69,0x63,0x6B,0x20,0x3D,0x20,0x74,0x72,0x75,
-	0x65,0x2C,0x20,0x69,0x6D,0x61,0x67,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,
-	0x2C,0x20,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x20,0x3D,0x20,0x74,0x72,
-	0x75,0x65,0x2C,0x20,0x61,0x75,0x64,0x69,0x6F,0x20,0x3D,0x20,0x74,0x72,0x75,
-	0x65,0x2C,0x20,0x70,0x68,0x79,0x73,0x69,0x63,0x73,0x20,0x3D,0x20,0x74,0x72,
-	0x75,0x65,0x2C,0x20,0x73,0x6F,0x75,0x6E,0x64,0x20,0x3D,0x20,0x74,0x72,0x75,
-	0x65,0x2C,0x20,0x66,0x6F,0x6E,0x74,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,
-	0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,
-	0x20,0x7D,0x2C,0x20,0x63,0x6F,0x6E,0x73,0x6F,0x6C,0x65,0x20,0x3D,0x20,0x66,
-	0x61,0x6C,0x73,0x65,0x2C,0x20,0x69,0x64,0x65,0x6E,0x74,0x69,0x74,0x79,0x20,
-	0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x72,0x65,0x6C,0x65,0x61,0x73,
-	0x65,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x7D,0x20,0x69,0x66,
-	0x20,0x6E,0x6F,0x74,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,0x6E,0x66,0x20,
-	0x61,0x6E,0x64,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,
-	0x73,0x74,0x65,0x6D,0x20,0x61,0x6E,0x64,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,
-	0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x65,0x78,0x69,0x73,0x74,
-	0x73,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29,0x20,0x74,
-	0x68,0x65,0x6E,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x63,0x6F,
-	0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,
-	0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,0x6E,0x66,0x20,0x74,0x68,0x65,0x6E,
-	0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6F,0x6B,0x2C,0x20,0x65,0x72,0x72,0x20,
-	0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,
-	0x6E,0x66,0x2C,0x20,0x63,0x29,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x6F,
-	0x6B,0x20,0x74,0x68,0x65,0x6E,0x20,0x70,0x72,0x69,0x6E,0x74,0x28,0x65,0x72,
-	0x72,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x63,
-	0x2E,0x72,0x65,0x6C,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,
-	0x6F,0x76,0x65,0x2E,0x5F,0x72,0x65,0x6C,0x65,0x61,0x73,0x65,0x20,0x3D,0x20,
-	0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20,0x3D,0x20,0x63,0x2E,0x74,0x69,0x74,
-	0x6C,0x65,0x20,0x7E,0x3D,0x20,0x22,0x55,0x6E,0x74,0x69,0x74,0x6C,0x65,0x64,
-	0x22,0x20,0x61,0x6E,0x64,0x20,0x63,0x2E,0x74,0x69,0x74,0x6C,0x65,0x20,0x6F,
-	0x72,0x20,0x6E,0x69,0x6C,0x2C,0x20,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x3D,
-	0x20,0x63,0x2E,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x7E,0x3D,0x20,0x22,0x55,
-	0x6E,0x6E,0x61,0x6D,0x65,0x64,0x22,0x20,0x61,0x6E,0x64,0x20,0x63,0x2E,0x61,
-	0x75,0x74,0x68,0x6F,0x72,0x20,0x6F,0x72,0x20,0x6E,0x69,0x6C,0x20,0x7D,0x20,
-	0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,
-	0x2E,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,0x2E,0x63,0x6F,0x6E,0x73,0x6F,0x6C,
-	0x65,0x2E,0x73,0x65,0x74,0x20,0x74,0x68,0x65,0x6E,0x20,0x63,0x2E,0x63,0x6F,
-	0x6E,0x73,0x6F,0x6C,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x20,0x65,0x6E,
-	0x64,0x20,0x66,0x6F,0x72,0x20,0x6B,0x2C,0x76,0x20,0x69,0x6E,0x20,0x70,0x61,
-	0x69,0x72,0x73,0x28,0x63,0x2E,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73,0x29,0x20,
-	0x64,0x6F,0x20,0x69,0x66,0x20,0x76,0x20,0x74,0x68,0x65,0x6E,0x20,0x72,0x65,
-	0x71,0x75,0x69,0x72,0x65,0x28,0x22,0x6C,0x6F,0x76,0x65,0x2E,0x22,0x20,0x2E,
-	0x2E,0x20,0x6B,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,
+	0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75,
+	0x61,0x22,0x29,0x29,0x20,0x74,0x68,0x65,0x6E,0x20,0x6E,0x6F,0x5F,0x67,0x61,
+	0x6D,0x65,0x5F,0x63,0x6F,0x64,0x65,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x20,
+	0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x63,0x61,0x6E,0x5F,
+	0x68,0x61,0x73,0x5F,0x67,0x61,0x6D,0x65,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,
+	0x6F,0x76,0x65,0x2E,0x6E,0x6F,0x67,0x61,0x6D,0x65,0x28,0x29,0x20,0x65,0x6E,
+	0x64,0x20,0x65,0x6E,0x64,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,
+	0x6C,0x6F,0x76,0x65,0x2E,0x69,0x6E,0x69,0x74,0x28,0x29,0x20,0x6C,0x6F,0x63,
+	0x61,0x6C,0x20,0x63,0x20,0x3D,0x20,0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20,
+	0x3D,0x20,0x22,0x55,0x6E,0x74,0x69,0x74,0x6C,0x65,0x64,0x22,0x2C,0x20,0x61,
+	0x75,0x74,0x68,0x6F,0x72,0x20,0x3D,0x20,0x22,0x55,0x6E,0x6E,0x61,0x6D,0x65,
+	0x64,0x22,0x2C,0x20,0x76,0x65,0x72,0x73,0x69,0x6F,0x6E,0x20,0x3D,0x20,0x30,
+	0x2C,0x20,0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x3D,0x20,0x7B,0x20,0x77,0x69,
+	0x64,0x74,0x68,0x20,0x3D,0x20,0x38,0x30,0x30,0x2C,0x20,0x68,0x65,0x69,0x67,
+	0x68,0x74,0x20,0x3D,0x20,0x36,0x30,0x30,0x2C,0x20,0x66,0x75,0x6C,0x6C,0x73,
+	0x63,0x72,0x65,0x65,0x6E,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,
+	0x76,0x73,0x79,0x6E,0x63,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x66,
+	0x73,0x61,0x61,0x20,0x3D,0x20,0x30,0x2C,0x20,0x7D,0x2C,0x20,0x6D,0x6F,0x64,
+	0x75,0x6C,0x65,0x73,0x20,0x3D,0x20,0x7B,0x20,0x65,0x76,0x65,0x6E,0x74,0x20,
+	0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,
+	0x64,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x6D,0x6F,0x75,0x73,0x65,
+	0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x74,0x69,0x6D,0x65,0x72,0x20,
+	0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x6A,0x6F,0x79,0x73,0x74,0x69,0x63,
+	0x6B,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x69,0x6D,0x61,0x67,0x65,
+	0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x67,0x72,0x61,0x70,0x68,0x69,
+	0x63,0x73,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x61,0x75,0x64,0x69,
+	0x6F,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x70,0x68,0x79,0x73,0x69,
+	0x63,0x73,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x73,0x6F,0x75,0x6E,
+	0x64,0x20,0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x66,0x6F,0x6E,0x74,0x20,
+	0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,
+	0x3D,0x20,0x74,0x72,0x75,0x65,0x2C,0x20,0x7D,0x2C,0x20,0x63,0x6F,0x6E,0x73,
+	0x6F,0x6C,0x65,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x69,0x64,
+	0x65,0x6E,0x74,0x69,0x74,0x79,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,0x2C,
+	0x20,0x72,0x65,0x6C,0x65,0x61,0x73,0x65,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,
+	0x65,0x2C,0x20,0x7D,0x20,0x69,0x66,0x20,0x6E,0x6F,0x74,0x20,0x6C,0x6F,0x76,
+	0x65,0x2E,0x63,0x6F,0x6E,0x66,0x20,0x61,0x6E,0x64,0x20,0x6C,0x6F,0x76,0x65,
+	0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x20,0x61,0x6E,0x64,
+	0x20,0x6C,0x6F,0x76,0x65,0x2E,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,
+	0x6D,0x2E,0x65,0x78,0x69,0x73,0x74,0x73,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E,
+	0x6C,0x75,0x61,0x22,0x29,0x20,0x74,0x68,0x65,0x6E,0x20,0x72,0x65,0x71,0x75,
+	0x69,0x72,0x65,0x28,0x22,0x63,0x6F,0x6E,0x66,0x2E,0x6C,0x75,0x61,0x22,0x29,
+	0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,
+	0x6E,0x66,0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,0x6F,
+	0x6B,0x2C,0x20,0x65,0x72,0x72,0x20,0x3D,0x20,0x70,0x63,0x61,0x6C,0x6C,0x28,
+	0x6C,0x6F,0x76,0x65,0x2E,0x63,0x6F,0x6E,0x66,0x2C,0x20,0x63,0x29,0x20,0x69,
+	0x66,0x20,0x6E,0x6F,0x74,0x20,0x6F,0x6B,0x20,0x74,0x68,0x65,0x6E,0x20,0x70,
+	0x72,0x69,0x6E,0x74,0x28,0x65,0x72,0x72,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,
+	0x6E,0x64,0x20,0x69,0x66,0x20,0x63,0x2E,0x72,0x65,0x6C,0x65,0x61,0x73,0x65,
+	0x20,0x74,0x68,0x65,0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x5F,0x72,0x65,0x6C,
+	0x65,0x61,0x73,0x65,0x20,0x3D,0x20,0x7B,0x20,0x74,0x69,0x74,0x6C,0x65,0x20,
+	0x3D,0x20,0x63,0x2E,0x74,0x69,0x74,0x6C,0x65,0x20,0x7E,0x3D,0x20,0x22,0x55,
+	0x6E,0x74,0x69,0x74,0x6C,0x65,0x64,0x22,0x20,0x61,0x6E,0x64,0x20,0x63,0x2E,
+	0x74,0x69,0x74,0x6C,0x65,0x20,0x6F,0x72,0x20,0x6E,0x69,0x6C,0x2C,0x20,0x61,
+	0x75,0x74,0x68,0x6F,0x72,0x20,0x3D,0x20,0x63,0x2E,0x61,0x75,0x74,0x68,0x6F,
+	0x72,0x20,0x7E,0x3D,0x20,0x22,0x55,0x6E,0x6E,0x61,0x6D,0x65,0x64,0x22,0x20,
+	0x61,0x6E,0x64,0x20,0x63,0x2E,0x61,0x75,0x74,0x68,0x6F,0x72,0x20,0x6F,0x72,
+	0x20,0x6E,0x69,0x6C,0x20,0x7D,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,0x20,0x6C,
+	0x6F,0x76,0x65,0x2E,0x61,0x72,0x67,0x2E,0x6F,0x70,0x74,0x69,0x6F,0x6E,0x73,
+	0x2E,0x63,0x6F,0x6E,0x73,0x6F,0x6C,0x65,0x2E,0x73,0x65,0x74,0x20,0x74,0x68,
+	0x65,0x6E,0x20,0x63,0x2E,0x63,0x6F,0x6E,0x73,0x6F,0x6C,0x65,0x20,0x3D,0x20,
+	0x74,0x72,0x75,0x65,0x20,0x65,0x6E,0x64,0x20,0x6C,0x6F,0x63,0x61,0x6C,0x20,
+	0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73,0x20,
+	0x3D,0x20,0x7B,0x20,0x61,0x75,0x64,0x69,0x6F,0x20,0x3D,0x20,0x66,0x61,0x6C,
+	0x73,0x65,0x2C,0x20,0x65,0x76,0x65,0x6E,0x74,0x20,0x3D,0x20,0x22,0x73,0x64,
+	0x6C,0x22,0x2C,0x20,0x66,0x69,0x6C,0x65,0x73,0x79,0x73,0x74,0x65,0x6D,0x20,
+	0x3D,0x20,0x22,0x70,0x68,0x79,0x73,0x66,0x73,0x22,0x2C,0x20,0x66,0x6F,0x6E,
+	0x74,0x20,0x3D,0x20,0x22,0x66,0x72,0x65,0x65,0x74,0x79,0x70,0x65,0x22,0x2C,
+	0x20,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x20,0x3D,0x20,0x22,0x6F,0x70,
+	0x65,0x6E,0x67,0x6C,0x22,0x2C,0x20,0x69,0x6D,0x61,0x67,0x65,0x20,0x3D,0x20,
+	0x66,0x61,0x6C,0x73,0x65,0x2C,0x20,0x6A,0x6F,0x79,0x73,0x74,0x69,0x63,0x6B,
+	0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22,0x2C,0x20,0x6B,0x65,0x79,0x62,0x6F,
+	0x61,0x72,0x64,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22,0x2C,0x20,0x6D,0x6F,
+	0x75,0x73,0x65,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22,0x2C,0x20,0x70,0x68,
+	0x79,0x73,0x69,0x63,0x73,0x20,0x3D,0x20,0x22,0x62,0x6F,0x78,0x32,0x64,0x22,
+	0x2C,0x20,0x73,0x6F,0x75,0x6E,0x64,0x20,0x3D,0x20,0x66,0x61,0x6C,0x73,0x65,
+	0x2C,0x20,0x74,0x69,0x6D,0x65,0x72,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,0x22,
+	0x2C,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x3D,0x20,0x22,0x73,0x64,0x6C,
+	0x22,0x20,0x7D,0x20,0x66,0x6F,0x72,0x20,0x6B,0x2C,0x76,0x20,0x69,0x6E,0x20,
+	0x70,0x61,0x69,0x72,0x73,0x28,0x63,0x2E,0x6D,0x6F,0x64,0x75,0x6C,0x65,0x73,
+	0x29,0x20,0x64,0x6F,0x20,0x69,0x66,0x20,0x76,0x20,0x74,0x68,0x65,0x6E,0x20,
+	0x69,0x66,0x20,0x74,0x79,0x70,0x65,0x28,0x76,0x29,0x20,0x7E,0x3D,0x20,0x22,
+	0x73,0x74,0x72,0x69,0x6E,0x67,0x22,0x20,0x74,0x68,0x65,0x6E,0x20,0x76,0x20,
+	0x3D,0x20,0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x6D,0x6F,0x64,0x75,0x6C,0x65,
+	0x73,0x5B,0x6B,0x5D,0x20,0x65,0x6E,0x64,0x20,0x72,0x65,0x71,0x75,0x69,0x72,
+	0x65,0x28,0x28,0x76,0x20,0x61,0x6E,0x64,0x20,0x22,0x6C,0x6F,0x76,0x65,0x2E,
+	0x25,0x73,0x2E,0x25,0x73,0x22,0x20,0x6F,0x72,0x20,0x22,0x6C,0x6F,0x76,0x65,
+	0x2E,0x25,0x73,0x22,0x29,0x3A,0x66,0x6F,0x72,0x6D,0x61,0x74,0x28,0x6B,0x2C,
+	0x20,0x76,0x29,0x29,0x20,0x65,0x6E,0x64,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,
 	0x20,0x6C,0x6F,0x76,0x65,0x2E,0x65,0x76,0x65,0x6E,0x74,0x20,0x74,0x68,0x65,
 	0x6E,0x20,0x6C,0x6F,0x76,0x65,0x2E,0x63,0x72,0x65,0x61,0x74,0x65,0x68,0x61,
 	0x6E,0x64,0x6C,0x65,0x72,0x73,0x28,0x29,0x20,0x65,0x6E,0x64,0x20,0x69,0x66,