From 8377fe2156032e55a728bcef985ffa01c95e0335 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 3 Jul 2018 13:48:34 +0900 Subject: [PATCH] PostProcessor working: nested FBO won't work, use FrameBufferManager --- .gitignore | 4 +- assets/18BitColour.frag | 2 +- assets/crt.frag | 8 +- .../graphics/blocks/block_markings_common.tga | 3 + assets/{modules => mods}/Creature_raw_doc.md | 0 assets/{modules => mods}/Faction_doc.md | 0 assets/{modules => mods}/LoadOrder.csv | 0 .../basegame/KotlinScriptTest.kts | 0 .../basegame/LuaScriptTest.lua | 0 .../basegame/basegame_groovy_delete_pending | 0 .../basegame/blocks/blocks.csv | 0 .../basegame/blocks/terrain.tga.gz | 0 .../basegame/blocks/wire.tga.gz | 0 .../colourmap/black_body_col_1000_40000_K.tga | 0 .../colourmap/black_body_how_to_use.txt | 0 .../basegame/colourmap/col12spectrum.tga | 0 .../basegame/colourmap/col216spectrum.tga | 0 .../basegame/colourmap/colourkey12.tga | 0 .../basegame/colourmap/colourkey216.tga | 0 .../colourmap/health_bar_colouring_4096.tga | 0 .../basegame/colourmap/pal16.tga | 0 .../basegame/colourmap/pal64.tga | 0 .../basegame/colourmap/pal64_ryb_based.tga | 0 .../basegame/creatures/CreatureHuman.json | 0 .../{modules => mods}/basegame/default.json | 0 .../factions/FactionGenericPlayer.json | 0 .../basegame/factions/FactionSigrid.json | 0 .../factions/FactionWildHamletTemplate.json | 0 .../basegame/factions/factionid.csv | 0 .../basegame/fonts/7seg_small.tga | 0 .../basegame/fonts/7segnum.tga | 0 .../basegame/fonts/watch_17pxmoondial.tga | 0 .../basegame/fonts/watch_dotalph.tga | 0 .../basegame/gui/basic_meter_atlas.tga | 0 .../basegame/gui/watchface_atlas.tga | 0 .../basegame/items/itemid.csv | 0 .../basegame/items/items.tga | 0 .../basegame/items/items24.tga | 0 .../basegame/items/items48.tga | 0 .../basegame/items/malicious.groovy | 0 .../basegame/items/testpick.nope | 0 .../basegame/locales/bgBG/game.json | 0 .../basegame/locales/csCZ/game.json | 0 .../basegame/locales/daDK/game.json | 0 .../basegame/locales/de/game.json | 0 .../basegame/locales/elGR/game.json | 0 .../basegame/locales/en/blocks.json | 0 .../basegame/locales/en/devmsg.json | 0 .../basegame/locales/en/game.json | 0 .../basegame/locales/en/help.json | 0 .../basegame/locales/en/tips.json | 0 .../basegame/locales/es/game.json | 0 .../basegame/locales/fiFI/game.json | 0 .../basegame/locales/fiFI/tips.json | 0 .../basegame/locales/frFR/devmsg.json | 0 .../basegame/locales/frFR/game.json | 0 .../basegame/locales/frFR/tips.json | 0 .../basegame/locales/huHU/game.json | 0 .../basegame/locales/isIC/game.json | 0 .../basegame/locales/it/game.json | 0 .../basegame/locales/jaJP/devmsg.json | 0 .../basegame/locales/jaJP/game.json | 0 .../basegame/locales/jaJP/tips.json | 0 .../basegame/locales/jakanaJP/game.json | 0 .../basegame/locales/koKR/blocks.json | 0 .../basegame/locales/koKR/devmsg.json | 0 .../basegame/locales/koKR/game.json | 0 .../basegame/locales/koKR/tips.json | 0 .../basegame/locales/nlNL/game.json | 0 .../basegame/locales/noNB/game.json | 0 .../basegame/locales/plPL/game.json | 0 .../basegame/locales/ptBR/game.json | 0 .../basegame/locales/ptPT/game.json | 0 .../basegame/locales/roRO/game.json | 0 .../basegame/locales/ruRU/game.json | 0 .../basegame/locales/svSE/game.json | 0 .../basegame/locales/thTH/game.json | 0 .../basegame/locales/trTR/game.json | 0 .../basegame/locales/zhCN/game.json | 0 .../basegame/locales/zhTW/game.json | 0 .../basegame/materialprop.csv | 0 assets/mods/basegame/metadata.properties | 42 ++ .../basegame/religionspheres.csv | 0 .../sounds/ambient/ambient_forest_01.ogg | 0 .../sounds/ambient/ambient_meadow_01.ogg | 0 .../sounds/ambient/ambient_windy_01.ogg | 0 .../sounds/ambient/ambient_woods_01.ogg | 0 .../basegame/sounds/ambient/crickets_01.ogg | 0 .../basegame/sounds/ambient/crickets_02.ogg | 0 .../sounds/effects/power_button_push.wav | Bin .../basegame/sprites/fixtures/tiki_torch.tga | 0 .../sprites/npc_template_anim_prototype.tga | 0 .../basegame/sprites/phystest_lunarlander.tga | 0 .../basegame/sprites/slime.tga | 0 .../basegame/sprites/slime_1.tga | 0 .../sprites/sprite_placeholder_24_48.tga | 0 .../basegame/sprites/test_player.tga | 0 .../basegame/sprites/test_player_2.tga | 0 .../basegame/sprites/test_player_2_testa.tga | 0 .../basegame/sprites/test_player_glow.tga | 0 .../basegame/tapestries/the_world | Bin assets/{modules => mods}/basegame/test.groovy | 0 .../basegame/weathers/WeatherGeneric.json | 0 .../WeatherGenericRain.json.asrtinears | 0 .../basegame/weathers/generic_light_old.tga | 0 .../basegame/weathers/generic_skybox.tga | 0 .../basegame/weathers/raindrop.tga | 0 .../dwarventech/fonts/24-seg_red.tga | 0 .../dwarventech/fonts/MDA.tga | 0 .../dwarventech/fonts/milkymda.tga | 0 .../dwarventech/fonts/mt-32.tga | 0 .../dwarventech/fonts/teletype_9x12.tga | 0 .../dwarventech/metadata.properties | 7 +- .../dwarventech/virtualcomputer/bfvm.kts | 0 assets/{modules => mods}/modules_doc.md | 0 assets/modules/basegame/metadata.properties | 21 - src/net/torvald/terrarum/AppLoader.java | 31 +- .../torvald/terrarum/FrameBufferManager.java | 30 + src/net/torvald/terrarum/ModMgr.kt | 19 +- src/net/torvald/terrarum/PostProcessor.kt | 39 +- src/net/torvald/terrarum/Terrarum.kt | 10 +- .../terrarum/modulebasegame/IngameRenderer.kt | 9 +- .../magic_language_guide/guide.aux | 30 + .../magic_language_guide/guide.log | 648 ++++++++++++++++++ .../magic_language_guide/guide.out | 9 + .../magic_language_guide/guide.pdf | Bin 0 -> 96686 bytes .../magic_language_guide/guide.synctex.gz | 3 + .../guide.synctex.gz(busy) | 0 .../magic_language_guide/guide.tex | 66 ++ .../magic_language_guide/guide.toc | 9 + .../magic_language_guide/missfont.log | 6 + .../romapidoc/api_filesystem.tex | 0 .../romapidoc/api_hexutils.tex | 0 .../{ => usermanuals}/romapidoc/api_input.tex | 0 .../{ => usermanuals}/romapidoc/api_keys.tex | 0 .../romapidoc/api_machine.tex | 0 .../{ => usermanuals}/romapidoc/api_os.tex | 0 .../romapidoc/api_security.tex | 0 .../{ => usermanuals}/romapidoc/api_shell.tex | 0 .../romapidoc/api_speaker.tex | 0 .../romapidoc/api_terminal.tex | 0 .../{ => usermanuals}/romapidoc/cc_bit.tex | 0 .../{ => usermanuals}/romapidoc/cc_colors.tex | 0 .../romapidoc/luadifferences.tex | 0 .../romapidoc/luaglobals.tex | 0 .../{ => usermanuals}/romapidoc/mda.pdf | 0 .../{ => usermanuals}/romapidoc/mda.png | Bin .../{ => usermanuals}/romapidoc/peri_lp.tex | 0 .../{ => usermanuals}/romapidoc/romapidoc.pdf | Bin .../{ => usermanuals}/romapidoc/romapidoc.tex | 0 .../{ => usermanuals}/themanpage/man_dsh.tex | 0 .../{ => usermanuals}/themanpage/man_msh.tex | 0 .../themanpage/themanpage.pdf | Bin .../themanpage/themanpage.tex | 0 154 files changed, 929 insertions(+), 67 deletions(-) create mode 100644 assets/graphics/blocks/block_markings_common.tga rename assets/{modules => mods}/Creature_raw_doc.md (100%) rename assets/{modules => mods}/Faction_doc.md (100%) rename assets/{modules => mods}/LoadOrder.csv (100%) rename assets/{modules => mods}/basegame/KotlinScriptTest.kts (100%) rename assets/{modules => mods}/basegame/LuaScriptTest.lua (100%) rename assets/{modules => mods}/basegame/basegame_groovy_delete_pending (100%) rename assets/{modules => mods}/basegame/blocks/blocks.csv (100%) rename assets/{modules => mods}/basegame/blocks/terrain.tga.gz (100%) rename assets/{modules => mods}/basegame/blocks/wire.tga.gz (100%) rename assets/{modules => mods}/basegame/colourmap/black_body_col_1000_40000_K.tga (100%) rename assets/{modules => mods}/basegame/colourmap/black_body_how_to_use.txt (100%) rename assets/{modules => mods}/basegame/colourmap/col12spectrum.tga (100%) rename assets/{modules => mods}/basegame/colourmap/col216spectrum.tga (100%) rename assets/{modules => mods}/basegame/colourmap/colourkey12.tga (100%) rename assets/{modules => mods}/basegame/colourmap/colourkey216.tga (100%) rename assets/{modules => mods}/basegame/colourmap/health_bar_colouring_4096.tga (100%) rename assets/{modules => mods}/basegame/colourmap/pal16.tga (100%) rename assets/{modules => mods}/basegame/colourmap/pal64.tga (100%) rename assets/{modules => mods}/basegame/colourmap/pal64_ryb_based.tga (100%) rename assets/{modules => mods}/basegame/creatures/CreatureHuman.json (100%) rename assets/{modules => mods}/basegame/default.json (100%) rename assets/{modules => mods}/basegame/factions/FactionGenericPlayer.json (100%) rename assets/{modules => mods}/basegame/factions/FactionSigrid.json (100%) rename assets/{modules => mods}/basegame/factions/FactionWildHamletTemplate.json (100%) rename assets/{modules => mods}/basegame/factions/factionid.csv (100%) rename assets/{modules => mods}/basegame/fonts/7seg_small.tga (100%) rename assets/{modules => mods}/basegame/fonts/7segnum.tga (100%) rename assets/{modules => mods}/basegame/fonts/watch_17pxmoondial.tga (100%) rename assets/{modules => mods}/basegame/fonts/watch_dotalph.tga (100%) rename assets/{modules => mods}/basegame/gui/basic_meter_atlas.tga (100%) rename assets/{modules => mods}/basegame/gui/watchface_atlas.tga (100%) rename assets/{modules => mods}/basegame/items/itemid.csv (100%) rename assets/{modules => mods}/basegame/items/items.tga (100%) rename assets/{modules => mods}/basegame/items/items24.tga (100%) rename assets/{modules => mods}/basegame/items/items48.tga (100%) rename assets/{modules => mods}/basegame/items/malicious.groovy (100%) rename assets/{modules => mods}/basegame/items/testpick.nope (100%) rename assets/{modules => mods}/basegame/locales/bgBG/game.json (100%) rename assets/{modules => mods}/basegame/locales/csCZ/game.json (100%) rename assets/{modules => mods}/basegame/locales/daDK/game.json (100%) rename assets/{modules => mods}/basegame/locales/de/game.json (100%) rename assets/{modules => mods}/basegame/locales/elGR/game.json (100%) rename assets/{modules => mods}/basegame/locales/en/blocks.json (100%) rename assets/{modules => mods}/basegame/locales/en/devmsg.json (100%) rename assets/{modules => mods}/basegame/locales/en/game.json (100%) rename assets/{modules => mods}/basegame/locales/en/help.json (100%) rename assets/{modules => mods}/basegame/locales/en/tips.json (100%) rename assets/{modules => mods}/basegame/locales/es/game.json (100%) rename assets/{modules => mods}/basegame/locales/fiFI/game.json (100%) rename assets/{modules => mods}/basegame/locales/fiFI/tips.json (100%) rename assets/{modules => mods}/basegame/locales/frFR/devmsg.json (100%) rename assets/{modules => mods}/basegame/locales/frFR/game.json (100%) rename assets/{modules => mods}/basegame/locales/frFR/tips.json (100%) rename assets/{modules => mods}/basegame/locales/huHU/game.json (100%) rename assets/{modules => mods}/basegame/locales/isIC/game.json (100%) rename assets/{modules => mods}/basegame/locales/it/game.json (100%) rename assets/{modules => mods}/basegame/locales/jaJP/devmsg.json (100%) rename assets/{modules => mods}/basegame/locales/jaJP/game.json (100%) rename assets/{modules => mods}/basegame/locales/jaJP/tips.json (100%) rename assets/{modules => mods}/basegame/locales/jakanaJP/game.json (100%) rename assets/{modules => mods}/basegame/locales/koKR/blocks.json (100%) rename assets/{modules => mods}/basegame/locales/koKR/devmsg.json (100%) rename assets/{modules => mods}/basegame/locales/koKR/game.json (100%) rename assets/{modules => mods}/basegame/locales/koKR/tips.json (100%) rename assets/{modules => mods}/basegame/locales/nlNL/game.json (100%) rename assets/{modules => mods}/basegame/locales/noNB/game.json (100%) rename assets/{modules => mods}/basegame/locales/plPL/game.json (100%) rename assets/{modules => mods}/basegame/locales/ptBR/game.json (100%) rename assets/{modules => mods}/basegame/locales/ptPT/game.json (100%) rename assets/{modules => mods}/basegame/locales/roRO/game.json (100%) rename assets/{modules => mods}/basegame/locales/ruRU/game.json (100%) rename assets/{modules => mods}/basegame/locales/svSE/game.json (100%) rename assets/{modules => mods}/basegame/locales/thTH/game.json (100%) rename assets/{modules => mods}/basegame/locales/trTR/game.json (100%) rename assets/{modules => mods}/basegame/locales/zhCN/game.json (100%) rename assets/{modules => mods}/basegame/locales/zhTW/game.json (100%) rename assets/{modules => mods}/basegame/materialprop.csv (100%) create mode 100644 assets/mods/basegame/metadata.properties rename assets/{modules => mods}/basegame/religionspheres.csv (100%) rename assets/{modules => mods}/basegame/sounds/ambient/ambient_forest_01.ogg (100%) rename assets/{modules => mods}/basegame/sounds/ambient/ambient_meadow_01.ogg (100%) rename assets/{modules => mods}/basegame/sounds/ambient/ambient_windy_01.ogg (100%) rename assets/{modules => mods}/basegame/sounds/ambient/ambient_woods_01.ogg (100%) rename assets/{modules => mods}/basegame/sounds/ambient/crickets_01.ogg (100%) rename assets/{modules => mods}/basegame/sounds/ambient/crickets_02.ogg (100%) rename assets/{modules => mods}/basegame/sounds/effects/power_button_push.wav (100%) rename assets/{modules => mods}/basegame/sprites/fixtures/tiki_torch.tga (100%) rename assets/{modules => mods}/basegame/sprites/npc_template_anim_prototype.tga (100%) rename assets/{modules => mods}/basegame/sprites/phystest_lunarlander.tga (100%) rename assets/{modules => mods}/basegame/sprites/slime.tga (100%) rename assets/{modules => mods}/basegame/sprites/slime_1.tga (100%) rename assets/{modules => mods}/basegame/sprites/sprite_placeholder_24_48.tga (100%) rename assets/{modules => mods}/basegame/sprites/test_player.tga (100%) rename assets/{modules => mods}/basegame/sprites/test_player_2.tga (100%) rename assets/{modules => mods}/basegame/sprites/test_player_2_testa.tga (100%) rename assets/{modules => mods}/basegame/sprites/test_player_glow.tga (100%) rename assets/{modules => mods}/basegame/tapestries/the_world (100%) rename assets/{modules => mods}/basegame/test.groovy (100%) rename assets/{modules => mods}/basegame/weathers/WeatherGeneric.json (100%) rename assets/{modules => mods}/basegame/weathers/WeatherGenericRain.json.asrtinears (100%) rename assets/{modules => mods}/basegame/weathers/generic_light_old.tga (100%) rename assets/{modules => mods}/basegame/weathers/generic_skybox.tga (100%) rename assets/{modules => mods}/basegame/weathers/raindrop.tga (100%) rename assets/{modules => mods}/dwarventech/fonts/24-seg_red.tga (100%) rename assets/{modules => mods}/dwarventech/fonts/MDA.tga (100%) rename assets/{modules => mods}/dwarventech/fonts/milkymda.tga (100%) rename assets/{modules => mods}/dwarventech/fonts/mt-32.tga (100%) rename assets/{modules => mods}/dwarventech/fonts/teletype_9x12.tga (100%) rename assets/{modules => mods}/dwarventech/metadata.properties (53%) rename assets/{modules => mods}/dwarventech/virtualcomputer/bfvm.kts (100%) rename assets/{modules => mods}/modules_doc.md (100%) delete mode 100644 assets/modules/basegame/metadata.properties create mode 100644 src/net/torvald/terrarum/FrameBufferManager.java create mode 100644 work_files/usermanuals/magic_language_guide/guide.aux create mode 100644 work_files/usermanuals/magic_language_guide/guide.log create mode 100644 work_files/usermanuals/magic_language_guide/guide.out create mode 100644 work_files/usermanuals/magic_language_guide/guide.pdf create mode 100644 work_files/usermanuals/magic_language_guide/guide.synctex.gz create mode 100644 work_files/usermanuals/magic_language_guide/guide.synctex.gz(busy) create mode 100644 work_files/usermanuals/magic_language_guide/guide.tex create mode 100644 work_files/usermanuals/magic_language_guide/guide.toc create mode 100644 work_files/usermanuals/magic_language_guide/missfont.log rename work_files/{ => usermanuals}/romapidoc/api_filesystem.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_hexutils.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_input.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_keys.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_machine.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_os.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_security.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_shell.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_speaker.tex (100%) rename work_files/{ => usermanuals}/romapidoc/api_terminal.tex (100%) rename work_files/{ => usermanuals}/romapidoc/cc_bit.tex (100%) rename work_files/{ => usermanuals}/romapidoc/cc_colors.tex (100%) rename work_files/{ => usermanuals}/romapidoc/luadifferences.tex (100%) rename work_files/{ => usermanuals}/romapidoc/luaglobals.tex (100%) rename work_files/{ => usermanuals}/romapidoc/mda.pdf (100%) rename work_files/{ => usermanuals}/romapidoc/mda.png (100%) rename work_files/{ => usermanuals}/romapidoc/peri_lp.tex (100%) rename work_files/{ => usermanuals}/romapidoc/romapidoc.pdf (100%) rename work_files/{ => usermanuals}/romapidoc/romapidoc.tex (100%) rename work_files/{ => usermanuals}/themanpage/man_dsh.tex (100%) rename work_files/{ => usermanuals}/themanpage/man_msh.tex (100%) rename work_files/{ => usermanuals}/themanpage/themanpage.pdf (100%) rename work_files/{ => usermanuals}/themanpage/themanpage.tex (100%) diff --git a/.gitignore b/.gitignore index ef1c67f6e..a55ef2111 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,8 @@ Thumbs.db *.jar .DS_Store ~$* -assets/modules/basegame/demoworld -assets/modules/basegame/demoworld.gz +assets/mods/basegame/demoworld +assets/mods/basegame/demoworld.gz external_resource_packs.zip .idea/workspace.xml .tmp* diff --git a/assets/18BitColour.frag b/assets/18BitColour.frag index 72b203fc6..cb6e7ed25 100644 --- a/assets/18BitColour.frag +++ b/assets/18BitColour.frag @@ -10,5 +10,5 @@ void main(void) { color.b = floor(63.0 * color.b + 0.5) / 63.0; // a: passthrough - gl_FragColor = vec4(color.rgb, 0.0); + gl_FragColor = vec4(color.rgb, 1); } \ No newline at end of file diff --git a/assets/crt.frag b/assets/crt.frag index daf862511..ff51988ae 100644 --- a/assets/crt.frag +++ b/assets/crt.frag @@ -16,12 +16,12 @@ vec3 scanline_darkening = vec3(0.66, 0.66, 0.66); // 0: every odd line will get darkened; 1: every even line will get darkened uniform float alternative_scanline = 0.0; // 1.0: true -uniform float blur_blend = 0.8; +uniform float blur_blend = 0.5; void main(void) { vec4 color = texture2D(u_texture, v_texCoords).rgba; - vec4 color_pre = texture2D(u_texture, (v_texCoords + (vec2(-2.0, 0.0) / resolution))).rgba; - vec4 color_next = texture2D(u_texture, (v_texCoords + (vec2( 2.0, 0.0) / resolution))).rgba; + vec4 color_pre = texture2D(u_texture, (v_texCoords + (vec2(-1.0, 0.0) / resolution))).rgba; + vec4 color_next = texture2D(u_texture, (v_texCoords + (vec2( 1.0, 0.0) / resolution))).rgba; color = color * (1.0 - blur_blend) + color_pre * (blur_blend / 2.0) + color_next * (blur_blend / 2.0); @@ -41,5 +41,5 @@ void main(void) { } gl_FragColor = vec4(out_color, 1); - + //gl_FragColor = texture2D(u_texture, v_texCoords); } \ No newline at end of file diff --git a/assets/graphics/blocks/block_markings_common.tga b/assets/graphics/blocks/block_markings_common.tga new file mode 100644 index 000000000..81232cafa --- /dev/null +++ b/assets/graphics/blocks/block_markings_common.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:037531d6dfab950995a3831cfff2351b3f80f9589d726d7229c60f707cddb68e +size 5164 diff --git a/assets/modules/Creature_raw_doc.md b/assets/mods/Creature_raw_doc.md similarity index 100% rename from assets/modules/Creature_raw_doc.md rename to assets/mods/Creature_raw_doc.md diff --git a/assets/modules/Faction_doc.md b/assets/mods/Faction_doc.md similarity index 100% rename from assets/modules/Faction_doc.md rename to assets/mods/Faction_doc.md diff --git a/assets/modules/LoadOrder.csv b/assets/mods/LoadOrder.csv similarity index 100% rename from assets/modules/LoadOrder.csv rename to assets/mods/LoadOrder.csv diff --git a/assets/modules/basegame/KotlinScriptTest.kts b/assets/mods/basegame/KotlinScriptTest.kts similarity index 100% rename from assets/modules/basegame/KotlinScriptTest.kts rename to assets/mods/basegame/KotlinScriptTest.kts diff --git a/assets/modules/basegame/LuaScriptTest.lua b/assets/mods/basegame/LuaScriptTest.lua similarity index 100% rename from assets/modules/basegame/LuaScriptTest.lua rename to assets/mods/basegame/LuaScriptTest.lua diff --git a/assets/modules/basegame/basegame_groovy_delete_pending b/assets/mods/basegame/basegame_groovy_delete_pending similarity index 100% rename from assets/modules/basegame/basegame_groovy_delete_pending rename to assets/mods/basegame/basegame_groovy_delete_pending diff --git a/assets/modules/basegame/blocks/blocks.csv b/assets/mods/basegame/blocks/blocks.csv similarity index 100% rename from assets/modules/basegame/blocks/blocks.csv rename to assets/mods/basegame/blocks/blocks.csv diff --git a/assets/modules/basegame/blocks/terrain.tga.gz b/assets/mods/basegame/blocks/terrain.tga.gz similarity index 100% rename from assets/modules/basegame/blocks/terrain.tga.gz rename to assets/mods/basegame/blocks/terrain.tga.gz diff --git a/assets/modules/basegame/blocks/wire.tga.gz b/assets/mods/basegame/blocks/wire.tga.gz similarity index 100% rename from assets/modules/basegame/blocks/wire.tga.gz rename to assets/mods/basegame/blocks/wire.tga.gz diff --git a/assets/modules/basegame/colourmap/black_body_col_1000_40000_K.tga b/assets/mods/basegame/colourmap/black_body_col_1000_40000_K.tga similarity index 100% rename from assets/modules/basegame/colourmap/black_body_col_1000_40000_K.tga rename to assets/mods/basegame/colourmap/black_body_col_1000_40000_K.tga diff --git a/assets/modules/basegame/colourmap/black_body_how_to_use.txt b/assets/mods/basegame/colourmap/black_body_how_to_use.txt similarity index 100% rename from assets/modules/basegame/colourmap/black_body_how_to_use.txt rename to assets/mods/basegame/colourmap/black_body_how_to_use.txt diff --git a/assets/modules/basegame/colourmap/col12spectrum.tga b/assets/mods/basegame/colourmap/col12spectrum.tga similarity index 100% rename from assets/modules/basegame/colourmap/col12spectrum.tga rename to assets/mods/basegame/colourmap/col12spectrum.tga diff --git a/assets/modules/basegame/colourmap/col216spectrum.tga b/assets/mods/basegame/colourmap/col216spectrum.tga similarity index 100% rename from assets/modules/basegame/colourmap/col216spectrum.tga rename to assets/mods/basegame/colourmap/col216spectrum.tga diff --git a/assets/modules/basegame/colourmap/colourkey12.tga b/assets/mods/basegame/colourmap/colourkey12.tga similarity index 100% rename from assets/modules/basegame/colourmap/colourkey12.tga rename to assets/mods/basegame/colourmap/colourkey12.tga diff --git a/assets/modules/basegame/colourmap/colourkey216.tga b/assets/mods/basegame/colourmap/colourkey216.tga similarity index 100% rename from assets/modules/basegame/colourmap/colourkey216.tga rename to assets/mods/basegame/colourmap/colourkey216.tga diff --git a/assets/modules/basegame/colourmap/health_bar_colouring_4096.tga b/assets/mods/basegame/colourmap/health_bar_colouring_4096.tga similarity index 100% rename from assets/modules/basegame/colourmap/health_bar_colouring_4096.tga rename to assets/mods/basegame/colourmap/health_bar_colouring_4096.tga diff --git a/assets/modules/basegame/colourmap/pal16.tga b/assets/mods/basegame/colourmap/pal16.tga similarity index 100% rename from assets/modules/basegame/colourmap/pal16.tga rename to assets/mods/basegame/colourmap/pal16.tga diff --git a/assets/modules/basegame/colourmap/pal64.tga b/assets/mods/basegame/colourmap/pal64.tga similarity index 100% rename from assets/modules/basegame/colourmap/pal64.tga rename to assets/mods/basegame/colourmap/pal64.tga diff --git a/assets/modules/basegame/colourmap/pal64_ryb_based.tga b/assets/mods/basegame/colourmap/pal64_ryb_based.tga similarity index 100% rename from assets/modules/basegame/colourmap/pal64_ryb_based.tga rename to assets/mods/basegame/colourmap/pal64_ryb_based.tga diff --git a/assets/modules/basegame/creatures/CreatureHuman.json b/assets/mods/basegame/creatures/CreatureHuman.json similarity index 100% rename from assets/modules/basegame/creatures/CreatureHuman.json rename to assets/mods/basegame/creatures/CreatureHuman.json diff --git a/assets/modules/basegame/default.json b/assets/mods/basegame/default.json similarity index 100% rename from assets/modules/basegame/default.json rename to assets/mods/basegame/default.json diff --git a/assets/modules/basegame/factions/FactionGenericPlayer.json b/assets/mods/basegame/factions/FactionGenericPlayer.json similarity index 100% rename from assets/modules/basegame/factions/FactionGenericPlayer.json rename to assets/mods/basegame/factions/FactionGenericPlayer.json diff --git a/assets/modules/basegame/factions/FactionSigrid.json b/assets/mods/basegame/factions/FactionSigrid.json similarity index 100% rename from assets/modules/basegame/factions/FactionSigrid.json rename to assets/mods/basegame/factions/FactionSigrid.json diff --git a/assets/modules/basegame/factions/FactionWildHamletTemplate.json b/assets/mods/basegame/factions/FactionWildHamletTemplate.json similarity index 100% rename from assets/modules/basegame/factions/FactionWildHamletTemplate.json rename to assets/mods/basegame/factions/FactionWildHamletTemplate.json diff --git a/assets/modules/basegame/factions/factionid.csv b/assets/mods/basegame/factions/factionid.csv similarity index 100% rename from assets/modules/basegame/factions/factionid.csv rename to assets/mods/basegame/factions/factionid.csv diff --git a/assets/modules/basegame/fonts/7seg_small.tga b/assets/mods/basegame/fonts/7seg_small.tga similarity index 100% rename from assets/modules/basegame/fonts/7seg_small.tga rename to assets/mods/basegame/fonts/7seg_small.tga diff --git a/assets/modules/basegame/fonts/7segnum.tga b/assets/mods/basegame/fonts/7segnum.tga similarity index 100% rename from assets/modules/basegame/fonts/7segnum.tga rename to assets/mods/basegame/fonts/7segnum.tga diff --git a/assets/modules/basegame/fonts/watch_17pxmoondial.tga b/assets/mods/basegame/fonts/watch_17pxmoondial.tga similarity index 100% rename from assets/modules/basegame/fonts/watch_17pxmoondial.tga rename to assets/mods/basegame/fonts/watch_17pxmoondial.tga diff --git a/assets/modules/basegame/fonts/watch_dotalph.tga b/assets/mods/basegame/fonts/watch_dotalph.tga similarity index 100% rename from assets/modules/basegame/fonts/watch_dotalph.tga rename to assets/mods/basegame/fonts/watch_dotalph.tga diff --git a/assets/modules/basegame/gui/basic_meter_atlas.tga b/assets/mods/basegame/gui/basic_meter_atlas.tga similarity index 100% rename from assets/modules/basegame/gui/basic_meter_atlas.tga rename to assets/mods/basegame/gui/basic_meter_atlas.tga diff --git a/assets/modules/basegame/gui/watchface_atlas.tga b/assets/mods/basegame/gui/watchface_atlas.tga similarity index 100% rename from assets/modules/basegame/gui/watchface_atlas.tga rename to assets/mods/basegame/gui/watchface_atlas.tga diff --git a/assets/modules/basegame/items/itemid.csv b/assets/mods/basegame/items/itemid.csv similarity index 100% rename from assets/modules/basegame/items/itemid.csv rename to assets/mods/basegame/items/itemid.csv diff --git a/assets/modules/basegame/items/items.tga b/assets/mods/basegame/items/items.tga similarity index 100% rename from assets/modules/basegame/items/items.tga rename to assets/mods/basegame/items/items.tga diff --git a/assets/modules/basegame/items/items24.tga b/assets/mods/basegame/items/items24.tga similarity index 100% rename from assets/modules/basegame/items/items24.tga rename to assets/mods/basegame/items/items24.tga diff --git a/assets/modules/basegame/items/items48.tga b/assets/mods/basegame/items/items48.tga similarity index 100% rename from assets/modules/basegame/items/items48.tga rename to assets/mods/basegame/items/items48.tga diff --git a/assets/modules/basegame/items/malicious.groovy b/assets/mods/basegame/items/malicious.groovy similarity index 100% rename from assets/modules/basegame/items/malicious.groovy rename to assets/mods/basegame/items/malicious.groovy diff --git a/assets/modules/basegame/items/testpick.nope b/assets/mods/basegame/items/testpick.nope similarity index 100% rename from assets/modules/basegame/items/testpick.nope rename to assets/mods/basegame/items/testpick.nope diff --git a/assets/modules/basegame/locales/bgBG/game.json b/assets/mods/basegame/locales/bgBG/game.json similarity index 100% rename from assets/modules/basegame/locales/bgBG/game.json rename to assets/mods/basegame/locales/bgBG/game.json diff --git a/assets/modules/basegame/locales/csCZ/game.json b/assets/mods/basegame/locales/csCZ/game.json similarity index 100% rename from assets/modules/basegame/locales/csCZ/game.json rename to assets/mods/basegame/locales/csCZ/game.json diff --git a/assets/modules/basegame/locales/daDK/game.json b/assets/mods/basegame/locales/daDK/game.json similarity index 100% rename from assets/modules/basegame/locales/daDK/game.json rename to assets/mods/basegame/locales/daDK/game.json diff --git a/assets/modules/basegame/locales/de/game.json b/assets/mods/basegame/locales/de/game.json similarity index 100% rename from assets/modules/basegame/locales/de/game.json rename to assets/mods/basegame/locales/de/game.json diff --git a/assets/modules/basegame/locales/elGR/game.json b/assets/mods/basegame/locales/elGR/game.json similarity index 100% rename from assets/modules/basegame/locales/elGR/game.json rename to assets/mods/basegame/locales/elGR/game.json diff --git a/assets/modules/basegame/locales/en/blocks.json b/assets/mods/basegame/locales/en/blocks.json similarity index 100% rename from assets/modules/basegame/locales/en/blocks.json rename to assets/mods/basegame/locales/en/blocks.json diff --git a/assets/modules/basegame/locales/en/devmsg.json b/assets/mods/basegame/locales/en/devmsg.json similarity index 100% rename from assets/modules/basegame/locales/en/devmsg.json rename to assets/mods/basegame/locales/en/devmsg.json diff --git a/assets/modules/basegame/locales/en/game.json b/assets/mods/basegame/locales/en/game.json similarity index 100% rename from assets/modules/basegame/locales/en/game.json rename to assets/mods/basegame/locales/en/game.json diff --git a/assets/modules/basegame/locales/en/help.json b/assets/mods/basegame/locales/en/help.json similarity index 100% rename from assets/modules/basegame/locales/en/help.json rename to assets/mods/basegame/locales/en/help.json diff --git a/assets/modules/basegame/locales/en/tips.json b/assets/mods/basegame/locales/en/tips.json similarity index 100% rename from assets/modules/basegame/locales/en/tips.json rename to assets/mods/basegame/locales/en/tips.json diff --git a/assets/modules/basegame/locales/es/game.json b/assets/mods/basegame/locales/es/game.json similarity index 100% rename from assets/modules/basegame/locales/es/game.json rename to assets/mods/basegame/locales/es/game.json diff --git a/assets/modules/basegame/locales/fiFI/game.json b/assets/mods/basegame/locales/fiFI/game.json similarity index 100% rename from assets/modules/basegame/locales/fiFI/game.json rename to assets/mods/basegame/locales/fiFI/game.json diff --git a/assets/modules/basegame/locales/fiFI/tips.json b/assets/mods/basegame/locales/fiFI/tips.json similarity index 100% rename from assets/modules/basegame/locales/fiFI/tips.json rename to assets/mods/basegame/locales/fiFI/tips.json diff --git a/assets/modules/basegame/locales/frFR/devmsg.json b/assets/mods/basegame/locales/frFR/devmsg.json similarity index 100% rename from assets/modules/basegame/locales/frFR/devmsg.json rename to assets/mods/basegame/locales/frFR/devmsg.json diff --git a/assets/modules/basegame/locales/frFR/game.json b/assets/mods/basegame/locales/frFR/game.json similarity index 100% rename from assets/modules/basegame/locales/frFR/game.json rename to assets/mods/basegame/locales/frFR/game.json diff --git a/assets/modules/basegame/locales/frFR/tips.json b/assets/mods/basegame/locales/frFR/tips.json similarity index 100% rename from assets/modules/basegame/locales/frFR/tips.json rename to assets/mods/basegame/locales/frFR/tips.json diff --git a/assets/modules/basegame/locales/huHU/game.json b/assets/mods/basegame/locales/huHU/game.json similarity index 100% rename from assets/modules/basegame/locales/huHU/game.json rename to assets/mods/basegame/locales/huHU/game.json diff --git a/assets/modules/basegame/locales/isIC/game.json b/assets/mods/basegame/locales/isIC/game.json similarity index 100% rename from assets/modules/basegame/locales/isIC/game.json rename to assets/mods/basegame/locales/isIC/game.json diff --git a/assets/modules/basegame/locales/it/game.json b/assets/mods/basegame/locales/it/game.json similarity index 100% rename from assets/modules/basegame/locales/it/game.json rename to assets/mods/basegame/locales/it/game.json diff --git a/assets/modules/basegame/locales/jaJP/devmsg.json b/assets/mods/basegame/locales/jaJP/devmsg.json similarity index 100% rename from assets/modules/basegame/locales/jaJP/devmsg.json rename to assets/mods/basegame/locales/jaJP/devmsg.json diff --git a/assets/modules/basegame/locales/jaJP/game.json b/assets/mods/basegame/locales/jaJP/game.json similarity index 100% rename from assets/modules/basegame/locales/jaJP/game.json rename to assets/mods/basegame/locales/jaJP/game.json diff --git a/assets/modules/basegame/locales/jaJP/tips.json b/assets/mods/basegame/locales/jaJP/tips.json similarity index 100% rename from assets/modules/basegame/locales/jaJP/tips.json rename to assets/mods/basegame/locales/jaJP/tips.json diff --git a/assets/modules/basegame/locales/jakanaJP/game.json b/assets/mods/basegame/locales/jakanaJP/game.json similarity index 100% rename from assets/modules/basegame/locales/jakanaJP/game.json rename to assets/mods/basegame/locales/jakanaJP/game.json diff --git a/assets/modules/basegame/locales/koKR/blocks.json b/assets/mods/basegame/locales/koKR/blocks.json similarity index 100% rename from assets/modules/basegame/locales/koKR/blocks.json rename to assets/mods/basegame/locales/koKR/blocks.json diff --git a/assets/modules/basegame/locales/koKR/devmsg.json b/assets/mods/basegame/locales/koKR/devmsg.json similarity index 100% rename from assets/modules/basegame/locales/koKR/devmsg.json rename to assets/mods/basegame/locales/koKR/devmsg.json diff --git a/assets/modules/basegame/locales/koKR/game.json b/assets/mods/basegame/locales/koKR/game.json similarity index 100% rename from assets/modules/basegame/locales/koKR/game.json rename to assets/mods/basegame/locales/koKR/game.json diff --git a/assets/modules/basegame/locales/koKR/tips.json b/assets/mods/basegame/locales/koKR/tips.json similarity index 100% rename from assets/modules/basegame/locales/koKR/tips.json rename to assets/mods/basegame/locales/koKR/tips.json diff --git a/assets/modules/basegame/locales/nlNL/game.json b/assets/mods/basegame/locales/nlNL/game.json similarity index 100% rename from assets/modules/basegame/locales/nlNL/game.json rename to assets/mods/basegame/locales/nlNL/game.json diff --git a/assets/modules/basegame/locales/noNB/game.json b/assets/mods/basegame/locales/noNB/game.json similarity index 100% rename from assets/modules/basegame/locales/noNB/game.json rename to assets/mods/basegame/locales/noNB/game.json diff --git a/assets/modules/basegame/locales/plPL/game.json b/assets/mods/basegame/locales/plPL/game.json similarity index 100% rename from assets/modules/basegame/locales/plPL/game.json rename to assets/mods/basegame/locales/plPL/game.json diff --git a/assets/modules/basegame/locales/ptBR/game.json b/assets/mods/basegame/locales/ptBR/game.json similarity index 100% rename from assets/modules/basegame/locales/ptBR/game.json rename to assets/mods/basegame/locales/ptBR/game.json diff --git a/assets/modules/basegame/locales/ptPT/game.json b/assets/mods/basegame/locales/ptPT/game.json similarity index 100% rename from assets/modules/basegame/locales/ptPT/game.json rename to assets/mods/basegame/locales/ptPT/game.json diff --git a/assets/modules/basegame/locales/roRO/game.json b/assets/mods/basegame/locales/roRO/game.json similarity index 100% rename from assets/modules/basegame/locales/roRO/game.json rename to assets/mods/basegame/locales/roRO/game.json diff --git a/assets/modules/basegame/locales/ruRU/game.json b/assets/mods/basegame/locales/ruRU/game.json similarity index 100% rename from assets/modules/basegame/locales/ruRU/game.json rename to assets/mods/basegame/locales/ruRU/game.json diff --git a/assets/modules/basegame/locales/svSE/game.json b/assets/mods/basegame/locales/svSE/game.json similarity index 100% rename from assets/modules/basegame/locales/svSE/game.json rename to assets/mods/basegame/locales/svSE/game.json diff --git a/assets/modules/basegame/locales/thTH/game.json b/assets/mods/basegame/locales/thTH/game.json similarity index 100% rename from assets/modules/basegame/locales/thTH/game.json rename to assets/mods/basegame/locales/thTH/game.json diff --git a/assets/modules/basegame/locales/trTR/game.json b/assets/mods/basegame/locales/trTR/game.json similarity index 100% rename from assets/modules/basegame/locales/trTR/game.json rename to assets/mods/basegame/locales/trTR/game.json diff --git a/assets/modules/basegame/locales/zhCN/game.json b/assets/mods/basegame/locales/zhCN/game.json similarity index 100% rename from assets/modules/basegame/locales/zhCN/game.json rename to assets/mods/basegame/locales/zhCN/game.json diff --git a/assets/modules/basegame/locales/zhTW/game.json b/assets/mods/basegame/locales/zhTW/game.json similarity index 100% rename from assets/modules/basegame/locales/zhTW/game.json rename to assets/mods/basegame/locales/zhTW/game.json diff --git a/assets/modules/basegame/materialprop.csv b/assets/mods/basegame/materialprop.csv similarity index 100% rename from assets/modules/basegame/materialprop.csv rename to assets/mods/basegame/materialprop.csv diff --git a/assets/mods/basegame/metadata.properties b/assets/mods/basegame/metadata.properties new file mode 100644 index 000000000..2bf384358 --- /dev/null +++ b/assets/mods/basegame/metadata.properties @@ -0,0 +1,42 @@ +# The name that will be displayed in game +propername=Terrarum + +# The description +description=The base game + +# Author of the module +author=Terrarum + +# Name of the entry script +# Entry script must inherit net.torvald.terrarum.ModuleEntryPoint +entrypoint=net.torvald.terrarum.modulebasegame.EntryPoint + +# Release date in YYYY-MM-DD +releasedate=2017-07-14 + +# The version, must be ^[0-9]+(\.[0-9]+)*$ in regex +# e.g. 0.1 0.1.1347 +# e.g. 1 1.0.58385.02 +# e.g. 26558 0.0.0.0.0.1 +version=0.2.0 + +# External JARs the module might use, separate multiple by semicolon (;) +libraries= + +# Modules that must be pre-installed, separate multiple by semicolon (;) +# Dependency syntax: "module name space allowed 444.44+" +# Version number: + means equal or higher, ! means this exact number, - denotes interval, * is wildcard +# the default is equal or lower +# e.g. 1.4+ would allow 1.4, 0.6, 1.13, 1.42, 1.4.0, 1.4.4456 +# e.g. 10+.2 would allow 10.2, 10.1, 11.0 but would not allow any integer version (v10.0 != v10) +# e.g. 10.4! would allow 10.4, 9.4, 8.4, 7.4 +# e.g. 10.3-11.4 would allow 10.3, 10.7, 10.12676, 11.0, 11.4 but not integer v11, 10.3.12 etc. +# e.g. 13!.5 would allow 13.0, 13.1, 13.2, 13.3, 13.4 and 13.5 +# e.g. * would allow any version possible +# e.g. *.* would allow any version on that scheme +# e.g. *! would only allow all integer version +# NOTE: it's your responsibility that your mod's version scheme would not be a total mess! +# real world examples: +# BaseGame 1.0+; CommandLineRenewed 2!.0+; Basegame 1!.0+; ScreenRecorder *; MyScrRecHack 1.* +# Can you decode them? This is for hypothetical screen recorder mod. +dependency= \ No newline at end of file diff --git a/assets/modules/basegame/religionspheres.csv b/assets/mods/basegame/religionspheres.csv similarity index 100% rename from assets/modules/basegame/religionspheres.csv rename to assets/mods/basegame/religionspheres.csv diff --git a/assets/modules/basegame/sounds/ambient/ambient_forest_01.ogg b/assets/mods/basegame/sounds/ambient/ambient_forest_01.ogg similarity index 100% rename from assets/modules/basegame/sounds/ambient/ambient_forest_01.ogg rename to assets/mods/basegame/sounds/ambient/ambient_forest_01.ogg diff --git a/assets/modules/basegame/sounds/ambient/ambient_meadow_01.ogg b/assets/mods/basegame/sounds/ambient/ambient_meadow_01.ogg similarity index 100% rename from assets/modules/basegame/sounds/ambient/ambient_meadow_01.ogg rename to assets/mods/basegame/sounds/ambient/ambient_meadow_01.ogg diff --git a/assets/modules/basegame/sounds/ambient/ambient_windy_01.ogg b/assets/mods/basegame/sounds/ambient/ambient_windy_01.ogg similarity index 100% rename from assets/modules/basegame/sounds/ambient/ambient_windy_01.ogg rename to assets/mods/basegame/sounds/ambient/ambient_windy_01.ogg diff --git a/assets/modules/basegame/sounds/ambient/ambient_woods_01.ogg b/assets/mods/basegame/sounds/ambient/ambient_woods_01.ogg similarity index 100% rename from assets/modules/basegame/sounds/ambient/ambient_woods_01.ogg rename to assets/mods/basegame/sounds/ambient/ambient_woods_01.ogg diff --git a/assets/modules/basegame/sounds/ambient/crickets_01.ogg b/assets/mods/basegame/sounds/ambient/crickets_01.ogg similarity index 100% rename from assets/modules/basegame/sounds/ambient/crickets_01.ogg rename to assets/mods/basegame/sounds/ambient/crickets_01.ogg diff --git a/assets/modules/basegame/sounds/ambient/crickets_02.ogg b/assets/mods/basegame/sounds/ambient/crickets_02.ogg similarity index 100% rename from assets/modules/basegame/sounds/ambient/crickets_02.ogg rename to assets/mods/basegame/sounds/ambient/crickets_02.ogg diff --git a/assets/modules/basegame/sounds/effects/power_button_push.wav b/assets/mods/basegame/sounds/effects/power_button_push.wav similarity index 100% rename from assets/modules/basegame/sounds/effects/power_button_push.wav rename to assets/mods/basegame/sounds/effects/power_button_push.wav diff --git a/assets/modules/basegame/sprites/fixtures/tiki_torch.tga b/assets/mods/basegame/sprites/fixtures/tiki_torch.tga similarity index 100% rename from assets/modules/basegame/sprites/fixtures/tiki_torch.tga rename to assets/mods/basegame/sprites/fixtures/tiki_torch.tga diff --git a/assets/modules/basegame/sprites/npc_template_anim_prototype.tga b/assets/mods/basegame/sprites/npc_template_anim_prototype.tga similarity index 100% rename from assets/modules/basegame/sprites/npc_template_anim_prototype.tga rename to assets/mods/basegame/sprites/npc_template_anim_prototype.tga diff --git a/assets/modules/basegame/sprites/phystest_lunarlander.tga b/assets/mods/basegame/sprites/phystest_lunarlander.tga similarity index 100% rename from assets/modules/basegame/sprites/phystest_lunarlander.tga rename to assets/mods/basegame/sprites/phystest_lunarlander.tga diff --git a/assets/modules/basegame/sprites/slime.tga b/assets/mods/basegame/sprites/slime.tga similarity index 100% rename from assets/modules/basegame/sprites/slime.tga rename to assets/mods/basegame/sprites/slime.tga diff --git a/assets/modules/basegame/sprites/slime_1.tga b/assets/mods/basegame/sprites/slime_1.tga similarity index 100% rename from assets/modules/basegame/sprites/slime_1.tga rename to assets/mods/basegame/sprites/slime_1.tga diff --git a/assets/modules/basegame/sprites/sprite_placeholder_24_48.tga b/assets/mods/basegame/sprites/sprite_placeholder_24_48.tga similarity index 100% rename from assets/modules/basegame/sprites/sprite_placeholder_24_48.tga rename to assets/mods/basegame/sprites/sprite_placeholder_24_48.tga diff --git a/assets/modules/basegame/sprites/test_player.tga b/assets/mods/basegame/sprites/test_player.tga similarity index 100% rename from assets/modules/basegame/sprites/test_player.tga rename to assets/mods/basegame/sprites/test_player.tga diff --git a/assets/modules/basegame/sprites/test_player_2.tga b/assets/mods/basegame/sprites/test_player_2.tga similarity index 100% rename from assets/modules/basegame/sprites/test_player_2.tga rename to assets/mods/basegame/sprites/test_player_2.tga diff --git a/assets/modules/basegame/sprites/test_player_2_testa.tga b/assets/mods/basegame/sprites/test_player_2_testa.tga similarity index 100% rename from assets/modules/basegame/sprites/test_player_2_testa.tga rename to assets/mods/basegame/sprites/test_player_2_testa.tga diff --git a/assets/modules/basegame/sprites/test_player_glow.tga b/assets/mods/basegame/sprites/test_player_glow.tga similarity index 100% rename from assets/modules/basegame/sprites/test_player_glow.tga rename to assets/mods/basegame/sprites/test_player_glow.tga diff --git a/assets/modules/basegame/tapestries/the_world b/assets/mods/basegame/tapestries/the_world similarity index 100% rename from assets/modules/basegame/tapestries/the_world rename to assets/mods/basegame/tapestries/the_world diff --git a/assets/modules/basegame/test.groovy b/assets/mods/basegame/test.groovy similarity index 100% rename from assets/modules/basegame/test.groovy rename to assets/mods/basegame/test.groovy diff --git a/assets/modules/basegame/weathers/WeatherGeneric.json b/assets/mods/basegame/weathers/WeatherGeneric.json similarity index 100% rename from assets/modules/basegame/weathers/WeatherGeneric.json rename to assets/mods/basegame/weathers/WeatherGeneric.json diff --git a/assets/modules/basegame/weathers/WeatherGenericRain.json.asrtinears b/assets/mods/basegame/weathers/WeatherGenericRain.json.asrtinears similarity index 100% rename from assets/modules/basegame/weathers/WeatherGenericRain.json.asrtinears rename to assets/mods/basegame/weathers/WeatherGenericRain.json.asrtinears diff --git a/assets/modules/basegame/weathers/generic_light_old.tga b/assets/mods/basegame/weathers/generic_light_old.tga similarity index 100% rename from assets/modules/basegame/weathers/generic_light_old.tga rename to assets/mods/basegame/weathers/generic_light_old.tga diff --git a/assets/modules/basegame/weathers/generic_skybox.tga b/assets/mods/basegame/weathers/generic_skybox.tga similarity index 100% rename from assets/modules/basegame/weathers/generic_skybox.tga rename to assets/mods/basegame/weathers/generic_skybox.tga diff --git a/assets/modules/basegame/weathers/raindrop.tga b/assets/mods/basegame/weathers/raindrop.tga similarity index 100% rename from assets/modules/basegame/weathers/raindrop.tga rename to assets/mods/basegame/weathers/raindrop.tga diff --git a/assets/modules/dwarventech/fonts/24-seg_red.tga b/assets/mods/dwarventech/fonts/24-seg_red.tga similarity index 100% rename from assets/modules/dwarventech/fonts/24-seg_red.tga rename to assets/mods/dwarventech/fonts/24-seg_red.tga diff --git a/assets/modules/dwarventech/fonts/MDA.tga b/assets/mods/dwarventech/fonts/MDA.tga similarity index 100% rename from assets/modules/dwarventech/fonts/MDA.tga rename to assets/mods/dwarventech/fonts/MDA.tga diff --git a/assets/modules/dwarventech/fonts/milkymda.tga b/assets/mods/dwarventech/fonts/milkymda.tga similarity index 100% rename from assets/modules/dwarventech/fonts/milkymda.tga rename to assets/mods/dwarventech/fonts/milkymda.tga diff --git a/assets/modules/dwarventech/fonts/mt-32.tga b/assets/mods/dwarventech/fonts/mt-32.tga similarity index 100% rename from assets/modules/dwarventech/fonts/mt-32.tga rename to assets/mods/dwarventech/fonts/mt-32.tga diff --git a/assets/modules/dwarventech/fonts/teletype_9x12.tga b/assets/mods/dwarventech/fonts/teletype_9x12.tga similarity index 100% rename from assets/modules/dwarventech/fonts/teletype_9x12.tga rename to assets/mods/dwarventech/fonts/teletype_9x12.tga diff --git a/assets/modules/dwarventech/metadata.properties b/assets/mods/dwarventech/metadata.properties similarity index 53% rename from assets/modules/dwarventech/metadata.properties rename to assets/mods/dwarventech/metadata.properties index 2acfe65fb..804c50560 100644 --- a/assets/modules/dwarventech/metadata.properties +++ b/assets/mods/dwarventech/metadata.properties @@ -1,7 +1,8 @@ propername=Dwarven Techs description=Dwarven technicians are emerged from their hiding author=Terrarum -entrypoint= +entrypoint=net.torvald.terrarum.modulecomputers.EntryPoint releasedate=2017-07-14 -version=0.2 -libraries= \ No newline at end of file +version=0.2.0 +libraries= +dependency=basegame 0.2.* \ No newline at end of file diff --git a/assets/modules/dwarventech/virtualcomputer/bfvm.kts b/assets/mods/dwarventech/virtualcomputer/bfvm.kts similarity index 100% rename from assets/modules/dwarventech/virtualcomputer/bfvm.kts rename to assets/mods/dwarventech/virtualcomputer/bfvm.kts diff --git a/assets/modules/modules_doc.md b/assets/mods/modules_doc.md similarity index 100% rename from assets/modules/modules_doc.md rename to assets/mods/modules_doc.md diff --git a/assets/modules/basegame/metadata.properties b/assets/modules/basegame/metadata.properties deleted file mode 100644 index 2d2d30e49..000000000 --- a/assets/modules/basegame/metadata.properties +++ /dev/null @@ -1,21 +0,0 @@ -# The name that will be displayed in game -propername=Terrarum - -# The description -description=The base game - -# Author of the module -author=Terrarum - -# Name of the entry script -# Entry script must inherit net.torvald.terrarum.ModuleEntryPoint -entrypoint=net.torvald.terrarum.modulebasegame.EntryPoint - -# Release date in YYYY-MM-DD -releasedate=2017-07-14 - -# The version -version=0.2 - -# External JARs the module might use, separate multiple by semicolon (;) -libraries= \ No newline at end of file diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index 58fb85f91..7dd7e80a3 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -96,7 +96,7 @@ public class AppLoader implements ApplicationListener { public static void main(String[] args) { appConfig = new LwjglApplicationConfiguration(); appConfig.vSyncEnabled = false; - appConfig.resizable = true; + appConfig.resizable = false;//true; appConfig.width = 1072; appConfig.height = 742; appConfig.backgroundFPS = 9999; @@ -146,10 +146,7 @@ public class AppLoader implements ApplicationListener { shaderBayerSkyboxFill = new ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/4096_bayer_skyboxfill.frag")); - //shader18Bit = new ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/18BitColour.frag")); - - // Q & D test for the new post shader - shader18Bit = new ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/crt.frag")); + shader18Bit = new ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/18BitColour.frag")); @@ -212,24 +209,27 @@ public class AppLoader implements ApplicationListener { } } else { - renderFBO.begin(); - - - + FrameBufferManager.begin(renderFBO); Gdx.gl.glClearColor(.094f, .094f, .094f, 0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); Gdx.gl.glEnable(GL20.GL_TEXTURE_2D); Gdx.gl.glEnable(GL20.GL_BLEND); Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); + Gdx.gl.glBlendEquation(GL20.GL_FUNC_ADD); + FrameBufferManager.end(); + + + // nested FBOs are just not a thing in GL! + + FrameBufferManager.begin(renderFBO); + setCameraPosition(0, 0); screen.render(Gdx.graphics.getDeltaTime()); + FrameBufferManager.end(); - renderFBO.end(); - - - //PostProcessor.INSTANCE.draw(renderFBO); + PostProcessor.INSTANCE.draw(camera.combined, renderFBO); } @@ -241,7 +241,7 @@ public class AppLoader implements ApplicationListener { //initViewPort(width, height); Terrarum.INSTANCE.resize(width, height); - if (screen != null) screen.resize(width, height); + if (screen != null) screen.resize(Terrarum.INSTANCE.getWIDTH(), Terrarum.INSTANCE.getHEIGHT()); if (renderFBO == null || @@ -256,6 +256,9 @@ public class AppLoader implements ApplicationListener { ); } + appConfig.width = Terrarum.INSTANCE.getWIDTH(); + appConfig.height = Terrarum.INSTANCE.getHEIGHT(); + System.out.println("[AppLoader] Resize event"); } diff --git a/src/net/torvald/terrarum/FrameBufferManager.java b/src/net/torvald/terrarum/FrameBufferManager.java new file mode 100644 index 000000000..99d1ebc2f --- /dev/null +++ b/src/net/torvald/terrarum/FrameBufferManager.java @@ -0,0 +1,30 @@ +package net.torvald.terrarum; + +import com.badlogic.gdx.graphics.glutils.FrameBuffer; + +import java.util.Stack; + +/** + * Nested FBOs are just not a thing in GL! + * + * Created by minjaesong on 2018-07-03. + * + * @link https://stackoverflow.com/questions/25471727/libgdx-nested-framebuffer + */ +public class FrameBufferManager { + private static Stack stack = new Stack(); + + public static void begin(FrameBuffer buffer) { + if (!stack.isEmpty()) { + stack.peek().end(); + } + stack.push(buffer).begin(); + } + + public static void end() { + stack.pop().end(); + if (!stack.isEmpty()) { + stack.peek().begin(); + } + } +} diff --git a/src/net/torvald/terrarum/ModMgr.kt b/src/net/torvald/terrarum/ModMgr.kt index 139ac60c1..56a93b548 100644 --- a/src/net/torvald/terrarum/ModMgr.kt +++ b/src/net/torvald/terrarum/ModMgr.kt @@ -24,7 +24,7 @@ import javax.script.Invocable /** - * Modules Resource Manager + * Modules (or Mods) Resource Manager * * * NOTE!!: Usage of Groovy is only temporary; if Kotlin's "JSR 223" is no longer experimental and @@ -47,15 +47,17 @@ object ModMgr { val entryPoint: String, val releaseDate: String, val version: String, - val libraries: Array + val libraries: Array, + val dependencies: Array ) { override fun toString() = "\tModule #$order -- $properName | $version | $author\n" + "\t$description | $releaseDate\n" + "\tEntry point: $entryPoint\n" + - "\tExternal libraries: ${libraries.joinToString(", ")}" + "\tExternal libraries: ${libraries.joinToString(", ")}\n" + + "\tDependencies: ${dependencies.joinToString("\n\t")}" } - const val modDir = "./assets/modules" + const val modDir = "./assets/mods" val moduleInfo = HashMap() @@ -93,9 +95,10 @@ object ModMgr { val entryPoint = modMetadata.getProperty("entrypoint") val releaseDate = modMetadata.getProperty("releasedate") val version = modMetadata.getProperty("version") - val libs = modMetadata.getProperty("libraries").split(';').toTypedArray() + val libs = modMetadata.getProperty("libraries").split(Regex(""";[ ]*""")).toTypedArray() + val dependency = modMetadata.getProperty("dependency").split(Regex(""";[ ]*""")).toTypedArray() val isDir = FileSystems.getDefault().getPath("$modDir/$moduleName").toFile().isDirectory - moduleInfo[moduleName] = ModuleMetadata(index, isDir, properName, description, author, entryPoint, releaseDate, version, libs) + moduleInfo[moduleName] = ModuleMetadata(index, isDir, properName, description, author, entryPoint, releaseDate, version, libs, dependency) println(moduleInfo[moduleName]) @@ -107,6 +110,7 @@ object ModMgr { val newClassInstance = newClassConstructor.newInstance(/* no args defined */) (newClassInstance as ModuleEntryPoint).invoke() + } @@ -115,6 +119,9 @@ object ModMgr { catch (noSuchModule: FileNotFoundException) { System.err.println("[ModMgr] No such module: $moduleName, skipping...") } + catch (e: ClassNotFoundException) { + System.err.println("[ModMgr] $moduleName has nonexisting entry point, skipping...") + } } diff --git a/src/net/torvald/terrarum/PostProcessor.kt b/src/net/torvald/terrarum/PostProcessor.kt index 2baf9aa5e..33ef366a3 100644 --- a/src/net/torvald/terrarum/PostProcessor.kt +++ b/src/net/torvald/terrarum/PostProcessor.kt @@ -7,6 +7,7 @@ import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.TextureRegion import com.badlogic.gdx.graphics.glutils.FrameBuffer +import com.badlogic.gdx.math.Matrix4 import kotlin.system.measureNanoTime /** @@ -15,6 +16,7 @@ import kotlin.system.measureNanoTime object PostProcessor { private lateinit var batch: SpriteBatch // not nulling to save some lines of code + //private lateinit var camera: OrthographicCamera private var textureRegion: TextureRegion? = null @@ -24,37 +26,39 @@ object PostProcessor { lutTex = Texture(Gdx.files.internal("assets/clut/$filename")) } - fun draw(fbo: FrameBuffer) { + fun draw(projMat: Matrix4, fbo: FrameBuffer) { if (textureRegion == null) { textureRegion = TextureRegion(fbo.colorBufferTexture) batch = SpriteBatch() + //camera = OrthographicCamera(AppLoader.appConfig.width.toFloat(), AppLoader.appConfig.height.toFloat()) + + //camera.setToOrtho(true, AppLoader.appConfig.width.toFloat(), AppLoader.appConfig.height.toFloat()) + //camera.update() + Gdx.gl20.glViewport(0, 0, AppLoader.appConfig.width, AppLoader.appConfig.height) } - // FIXME something's really fucked between sky_gradient and the actual_world_render, - // maybe overlaying world over grad - // OR mixing lightmap (less likely?) - // known symptom: when localising the spritebatch, greyscale lightmap and the UI are the - // only thing gets drawn - - Terrarum.debugTimers["GFX.PostProcessor"] = measureNanoTime { - //Gdx.gl.glClearColor(.094f, .094f, .094f, 0f) - //Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) - //Gdx.gl.glEnable(GL20.GL_TEXTURE_2D) - //Gdx.gl.glEnable(GL20.GL_BLEND) - //Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA) + Gdx.gl.glClearColor(.094f, .094f, .094f, 0f) + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) + Gdx.gl.glEnable(GL20.GL_TEXTURE_2D) + Gdx.gl.glEnable(GL20.GL_BLEND) + Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA) val shader = AppLoader.shader18Bit // no-screen screen renders but the game don't? wtf? + fbo.colorBufferTexture.bind(0) + shader.begin() shader.setUniformf("resolution", AppLoader.appConfig.width.toFloat(), AppLoader.appConfig.height.toFloat()) + shader.setUniformMatrix("u_projTrans", projMat) + shader.setUniformi("u_texture", 0) AppLoader.fullscreenQuad.render(shader, GL20.GL_TRIANGLES) shader.end() @@ -65,4 +69,13 @@ object PostProcessor { } } + /** + * Camera will be moved so that (newX, newY) would be sit on the top-left edge. + */ + /*private fun setCameraPosition(newX: Float, newY: Float) { + camera.position.set((-newX + Terrarum.HALFW).round(), (-newY + Terrarum.HALFH).round(), 0f) + camera.update() + batch.projectionMatrix = camera.combined + }*/ + } \ No newline at end of file diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 1ac5338f3..2adaeed37 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -833,13 +833,19 @@ inline fun ShapeRenderer.inUse(shapeRendererType: ShapeRenderer.ShapeType = Shap /** Use Batch inside of it! */ inline fun FrameBuffer.inAction(camera: OrthographicCamera?, batch: SpriteBatch?, action: (FrameBuffer) -> Unit) { - this.begin() + //this.begin() + FrameBufferManager.begin(this) + camera?.setToOrtho(true, this.width.toFloat(), this.height.toFloat()) camera?.position?.set((this.width / 2f).round(), (this.height / 2f).round(), 0f) // TODO floor? ceil? round? camera?.update() batch?.projectionMatrix = camera?.combined + action(this) - this.end() + + //this.end() + FrameBufferManager.end() + camera?.setToOrtho(true, Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat()) camera?.update() batch?.projectionMatrix = camera?.combined diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index fa20ee239..168280f05 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -86,7 +86,12 @@ object IngameRenderer { drawToA(actorsRenderBehind, actorsRenderMiddle, actorsRenderMidTop, actorsRenderFront, particlesContainer) // clear main or whatever super-FBO being used - clearBuffer() + //clearBuffer() + Gdx.gl.glClearColor(.64f, .754f, .84f, 1f) + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) + Gdx.gl.glEnable(GL20.GL_TEXTURE_2D) + Gdx.gl.glEnable(GL20.GL_BLEND) + Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA) /////////////////////////////////////////////////////////////////////// @@ -277,6 +282,7 @@ object IngameRenderer { // multiply light on top of it val lightTex = lightmapFboB.colorBufferTexture + lightTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest) if (KeyToggler.isOn(Input.Keys.F8)) blendNormal(batch) @@ -360,6 +366,7 @@ object IngameRenderer { // multiply light on top of it val lightTex = lightmapFboB.colorBufferTexture + lightTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest) if (KeyToggler.isOn(Input.Keys.F8)) blendNormal(batch) diff --git a/work_files/usermanuals/magic_language_guide/guide.aux b/work_files/usermanuals/magic_language_guide/guide.aux new file mode 100644 index 000000000..0f1cb2157 --- /dev/null +++ b/work_files/usermanuals/magic_language_guide/guide.aux @@ -0,0 +1,30 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand*{\memsetcounter}[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\@writefile{toc}{\contentsline {section}{\numberline {0.1}Arcanum Fluxes}{7}{section.0.1}} +\@writefile{toc}{\contentsline {section}{\numberline {0.2}Arcanum Ports}{7}{section.0.2}} +\@writefile{toc}{\contentsline {section}{\numberline {0.3}Arcanum Manipulation}{7}{section.0.3}} +\@writefile{toc}{\contentsline {section}{\numberline {0.4}Cost of Power}{8}{section.0.4}} +\@writefile{toc}{\contentsline {section}{\numberline {0.5}Fluctuating Calculation}{8}{section.0.5}} +\@writefile{toc}{\contentsline {section}{\numberline {0.6}Different Ports}{8}{section.0.6}} +\@writefile{toc}{\contentsline {section}{\numberline {0.7}Writing System}{8}{section.0.7}} +\@writefile{toc}{\contentsline {section}{\numberline {0.8}Arcane Language}{8}{section.0.8}} +\@writefile{toc}{\contentsline {section}{\numberline {0.9}Where They Come From}{8}{section.0.9}} +\memsetcounter{lastsheet}{8} +\memsetcounter{lastpage}{8} diff --git a/work_files/usermanuals/magic_language_guide/guide.log b/work_files/usermanuals/magic_language_guide/guide.log new file mode 100644 index 000000000..8f14c4e25 --- /dev/null +++ b/work_files/usermanuals/magic_language_guide/guide.log @@ -0,0 +1,648 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018/W32TeX) (preloaded format=pdflatex 2018.7.1) 1 JUL 2018 08:49 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**guide.tex +(./guide.tex +LaTeX2e <2018-04-01> patch level 5 +(c:/texlive/2018/texmf-dist/tex/latex/memoir/memoir.cls +Document Class: memoir 2018/04/04 v3.7g configurable book, report, article docu +ment class +\onelineskip=\skip41 +\lxvchars=\skip42 +\xlvchars=\skip43 +\@memcnta=\count80 +\c@@memmarkcntra=\count81 +(c:/texlive/2018/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch +) +(c:/texlive/2018/texmf-dist/tex/latex/ifetex/ifetex.sty +Package: ifetex 2018/03/31 v1.2a ifetex + +(c:/texlive/2018/texmf-dist/tex/plain/ifetex/ifetex.tex)) +(c:/texlive/2018/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +(c:/texlive/2018/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +\stockheight=\skip44 +\stockwidth=\skip45 +\trimtop=\skip46 +\trimedge=\skip47 + +(c:/texlive/2018/texmf-dist/tex/latex/memoir/mem11.clo +File: mem11.clo 2008/01/30 v0.3 memoir class 11pt size option +) +\binding=\skip48 +\spinemargin=\skip49 +\foremargin=\skip50 +\uppermargin=\skip51 +\lowermargin=\skip52 +\headdrop=\skip53 +\normalrulethickness=\skip54 +\mem@maxheadheight=\skip55 +\mem@maxfootheight=\skip56 +\headwidth=\skip57 +\c@storedpagenumber=\count82 +\memPD=\dimen102 +\m@mabparskip=\skip58 +\thanksmarkwidth=\skip59 +\thanksmarksep=\skip60 +\droptitle=\skip61 +\c@book=\count83 +\c@part=\count84 +\c@chapter=\count85 +\c@section=\count86 +\c@subsection=\count87 +\c@subsubsection=\count88 +\c@paragraph=\count89 +\c@subparagraph=\count90 +\beforechapskip=\skip62 +\midchapskip=\skip63 +\afterchapskip=\skip64 +\chapindent=\skip65 +\bottomsectionskip=\skip66 +\secindent=\skip67 +\beforesecskip=\skip68 +\aftersecskip=\skip69 +\subsecindent=\skip70 +\beforesubsecskip=\skip71 +\aftersubsecskip=\skip72 +\subsubsecindent=\skip73 +\beforesubsubsecskip=\skip74 +\aftersubsubsecskip=\skip75 +\paraindent=\skip76 +\beforeparaskip=\skip77 +\afterparaskip=\skip78 +\subparaindent=\skip79 +\beforesubparaskip=\skip80 +\aftersubparaskip=\skip81 +\pfbreakskip=\skip82 +\c@@ppsavesec=\count91 +\c@@ppsaveapp=\count92 +\ragrparindent=\dimen103 +\everylistparindent=\dimen104 +\parsepi=\skip83 +\topsepi=\skip84 +\itemsepi=\skip85 +\parsepii=\skip86 +\topsepii=\skip87 +\topsepiii=\skip88 +\itemsepii=\skip89 +\itemsepiii=\skip90 +\partopsepii=\skip91 +\partopsepiii=\skip92 +\m@msavetopsep=\skip93 +\m@msavepartopsep=\skip94 +\@enLab=\toks14 +\abstitleskip=\skip95 +\absleftindent=\skip96 +\abs@leftindent=\dimen105 +\absrightindent=\skip97 +\absparindent=\skip98 +\absparsep=\skip99 +\c@vslineno=\count93 +\c@poemline=\count94 +\c@modulo@vs=\count95 +\c@memfvsline=\count96 +\vleftskip=\skip100 +\vrightskip=\skip101 +\stanzaskip=\skip102 +\versewidth=\skip103 +\vgap=\skip104 +\vindent=\skip105 +\vleftmargin=\dimen106 +\c@verse=\count97 +\c@chrsinstr=\count98 +\beforepoemtitleskip=\skip106 +\afterpoemtitleskip=\skip107 +\c@poem=\count99 +\beforePoemTitleskip=\skip108 +\midPoemTitleskip=\skip109 +\afterPoemTitleskip=\skip110 +\col@sep=\dimen107 +\extrarowheight=\dimen108 +\NC@list=\toks15 +\extratabsurround=\skip111 +\backup@length=\skip112 +\TX@col@width=\dimen109 +\TX@old@table=\dimen110 +\TX@old@col=\dimen111 +\TX@target=\dimen112 +\TX@delta=\dimen113 +\TX@cols=\count100 +\TX@ftn=\toks16 +\heavyrulewidth=\dimen114 +\lightrulewidth=\dimen115 +\cmidrulewidth=\dimen116 +\belowrulesep=\dimen117 +\belowbottomsep=\dimen118 +\aboverulesep=\dimen119 +\abovetopsep=\dimen120 +\cmidrulesep=\dimen121 +\cmidrulekern=\dimen122 +\defaultaddspace=\dimen123 +\@cmidla=\count101 +\@cmidlb=\count102 +\@aboverulesep=\dimen124 +\@belowrulesep=\dimen125 +\@thisruleclass=\count103 +\@lastruleclass=\count104 +\@thisrulewidth=\dimen126 +\ctableftskip=\skip113 +\ctabrightskip=\skip114 +\abovecolumnspenalty=\count105 +\@linestogo=\count106 +\@cellstogo=\count107 +\@cellsincolumn=\count108 +\crtok=\toks17 +\@mincolumnwidth=\dimen127 +\c@newflo@tctr=\count109 +\mem@margin@floatbox=\box26 +\@contcwidth=\skip115 +\@contindw=\skip116 +\abovecaptionskip=\skip117 +\belowcaptionskip=\skip118 +\subfloattopskip=\skip119 +\subfloatcapskip=\skip120 +\subfloatcaptopadj=\skip121 +\subfloatbottomskip=\skip122 +\subfloatlabelskip=\skip123 +\subfloatcapmargin=\dimen128 +\c@@contsubnum=\count110 +\m@mscap@capbox=\box27 +\m@mscap@fbox=\box28 +\sidecapsep=\dimen129 +\sidecapwidth=\dimen130 +\m@m@tempdima=\dimen131 +\m@mscapraise=\dimen132 +\sidecapraise=\dimen133 +\m@mscapmainwidth=\dimen134 +\m@mscaplkern=\dimen135 +\beforeepigraphskip=\skip124 +\afterepigraphskip=\skip125 +\epigraphwidth=\skip126 +\epigraphrule=\skip127 +LaTeX Info: Redefining \em on input line 7578. +LaTeX Info: Redefining \emph on input line 7586. +\tocentryskip=\skip128 +\tocbaseline=\skip129 +\cftparskip=\skip130 +\cftbeforebookskip=\skip131 +\cftbookindent=\dimen136 +\cftbooknumwidth=\dimen137 +\cftbeforepartskip=\skip132 +\cftpartindent=\skip133 +\cftpartnumwidth=\skip134 +\cftbeforechapterskip=\skip135 +\cftchapterindent=\skip136 +\cftchapternumwidth=\skip137 +\cftbeforesectionskip=\skip138 +\cftsectionindent=\skip139 +\cftsectionnumwidth=\skip140 +\cftbeforesubsectionskip=\skip141 +\cftsubsectionindent=\skip142 +\cftsubsectionnumwidth=\skip143 +\cftbeforesubsubsectionskip=\skip144 +\cftsubsubsectionindent=\skip145 +\cftsubsubsectionnumwidth=\skip146 +\cftbeforeparagraphskip=\skip147 +\cftparagraphindent=\skip148 +\cftparagraphnumwidth=\skip149 +\cftbeforesubparagraphskip=\skip150 +\cftsubparagraphindent=\skip151 +\cftsubparagraphnumwidth=\skip152 +\prechapterprecisshift=\dimen138 +\c@maxsecnumdepth=\count111 +\bibindent=\dimen139 +\bibitemsep=\skip153 +\indexcolsep=\skip154 +\indexrule=\skip155 +\indexmarkstyle=\toks18 +\@indexbox=\insert199 +\glossarycolsep=\dimen140 +\glossaryrule=\dimen141 +\sideparvshift=\skip156 +\sideins=\insert198 +\sidebartopsep=\skip157 +\sidebarhsep=\skip158 +\sidebarvsep=\skip159 +\sidebarwidth=\skip160 +\footmarkwidth=\skip161 +\footmarksep=\skip162 +\footparindent=\skip163 +\footinsdim=\skip164 +\footinsv@r=\insert197 +\@mpfootinsv@r=\insert196 +\m@m@k=\count112 +\m@m@h=\dimen142 +\m@mipn@skip=\skip165 +\sidefootins=\insert195 +\sidefootadjust=\skip166 +\sidefootheight=\skip167 +\sidefoothsep=\skip168 +\sidefootvsep=\skip169 +\sidefootwidth=\skip170 +\m@mdownsf=\skip171 +\c@sidefootnote=\count113 +\sidefootmarkwidth=\skip172 +\sidefootmarksep=\skip173 +\sidefootparindent=\skip174 +\c@pagenote=\count114 +\c@pagenoteshadow=\count115 +\mem@pn@lastkern=\skip175 +\every@verbatim=\toks19 +\afterevery@verbatim=\toks20 +\verbatim@line=\toks21 +\tab@position=\count116 +\verbatim@in@stream=\read1 +\verbatimindent=\skip176 +\verbatim@out=\write3 +\bvboxsep=\skip177 +\c@memfbvline=\count117 +\c@bvlinectr=\count118 +\bvnumlength=\skip178 +\fb@frw=\dimen143 +\fb@frh=\dimen144 +\FrameRule=\dimen145 +\FrameSep=\dimen146 +\c@cp@cntr=\count119 +LaTeX Info: Redefining \: on input line 12100. +LaTeX Info: Redefining \! on input line 12102. +\c@ism@mctr=\count120 +\c@xsm@mctr=\count121 +\c@csm@mctr=\count122 +\c@ksm@mctr=\count123 +\c@xksm@mctr=\count124 +\c@cksm@mctr=\count125 +\c@msm@mctr=\count126 +\c@xmsm@mctr=\count127 +\c@cmsm@mctr=\count128 +\c@bsm@mctr=\count129 +\c@workm@mctr=\count130 +\c@sheetsequence=\count131 +\c@lastsheet=\count132 +\c@lastpage=\count133 +\c@figure=\count134 +\c@lofdepth=\count135 +\cftbeforefigureskip=\skip179 +\cftfigureindent=\skip180 +\cftfigurenumwidth=\skip181 +\c@table=\count136 +\c@lotdepth=\count137 +\cftbeforetableskip=\skip182 +\cfttableindent=\skip183 +\cfttablenumwidth=\skip184 +Package abstract [2008/07/23] emulated by memoir. +Package appendix [2008/07/23] emulated by memoir. +Package array [2016/10/06] emulated by memoir. +Package booktabs [2016/05/16] emulated by memoir. +Package ccaption [2008/07/23] emulated by memoir. +Package changepage [2008/07/23] emulated by memoir. +Package chngcntr [2008/07/23] emulated by memoir. +Package chngpage [2008/07/23] emulated by memoir. +Package crop emulated by memoir. +Package dcolumn [2008/07/23] emulated by memoir. +Package delarray [2014/10/28] emulated by memoir. +Package enumerate [2008/07/23] emulated by memoir. +Package epigraph [2008/07/23] emulated by memoir. +Package ifmtarg [2008/07/23] emulated by memoir. +Package index [2008/07/23] emulated by memoir. +Package makeidx [2008/07/23] emulated by memoir. +Package moreverb [2008/07/23] emulated by memoir. +Package mparhack [2008/07/23] emulated by memoir. +Package needspace [2008/07/23] emulated by memoir. +Package newfile [2008/07/23] emulated by memoir. +Package nextpage [2008/07/23] emulated by memoir. +Package pagenote [2008/07/23] emulated by memoir. +Package parskip [2008/07/23] emulated by memoir. +Package patchcmd [2008/07/23] emulated by memoir. +Package setspace [2008/07/23] emulated by memoir. +Package shortvrb [2008/07/23] emulated by memoir. +Package showidx [2008/07/23] emulated by memoir. +Package tabularx [2016/02/03] emulated by memoir. +Package titleref [2008/07/23] emulated by memoir. +Package titling [2008/07/23] emulated by memoir. +Package tocbibind [2008/07/23] emulated by memoir. +Package tocloft [2008/07/23] emulated by memoir. +Package tocvsec2 [2008/07/23] emulated by memoir. +Package verbatim [2008/07/23] emulated by memoir. +Package verse [2008/07/23] emulated by memoir. +) +(c:/texlive/2018/texmf-dist/tex/latex/bookhands/inslrmin.sty +Package: inslrmin 2002/12/30 v1.0 package for Insular Minuscule fonts +) +(c:/texlive/2018/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2017/04/05 v2.0i Standard LaTeX package + +(c:/texlive/2018/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2017/04/05 v2.0i Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +)) +(c:/texlive/2018/texmf-dist/tex/latex/allrunes/allrunes.sty +Package: allrunes 2004/01/06 v2.1 allrunes package. + +(c:/texlive/2018/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +LaTeX Info: Redefining \mdseries on input line 43. +LaTeX Info: Redefining \bfseries on input line 55. + +(c:/texlive/2018/texmf-dist/tex/latex/allrunes/arc.fd +Now handling font encoding LRC ... +... no UTF-8 mapping file for font encoding LRC +) +(c:/texlive/2018/texmf-dist/tex/latex/allrunes/ara.fd +Now handling font encoding LRA ... +... no UTF-8 mapping file for font encoding LRA +) +(c:/texlive/2018/texmf-dist/tex/latex/allrunes/arn.fd +Now handling font encoding LRN ... +... no UTF-8 mapping file for font encoding LRN +LaTeX Info: Composite with undeclared \. in encoding LRN on input line 74. +LaTeX Info: Composite with undeclared \" in encoding LRN on input line 78. +) +(c:/texlive/2018/texmf-dist/tex/latex/allrunes/art.fd +Now handling font encoding LRT ... +... no UTF-8 mapping file for font encoding LRT +) +(c:/texlive/2018/texmf-dist/tex/latex/allrunes/arl.fd +Now handling font encoding LRL ... +... no UTF-8 mapping file for font encoding LRL +) +(c:/texlive/2018/texmf-dist/tex/latex/allrunes/arm.fd +Now handling font encoding LRM ... +... no UTF-8 mapping file for font encoding LRM +LaTeX Info: Composite with undeclared \. in encoding LRM on input line 122. +LaTeX Info: Composite with undeclared \' in encoding LRM on input line 123. +LaTeX Info: Composite with undeclared \^ in encoding LRM on input line 125. +LaTeX Info: Composite with undeclared \~ in encoding LRM on input line 127. +LaTeX Info: Composite with undeclared \= in encoding LRM on input line 128. +LaTeX Info: Composite with undeclared \" in encoding LRM on input line 132. +)) +(c:/texlive/2018/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2018/02/06 v6.86b Hypertext links for LaTeX + +(c:/texlive/2018/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO) + + +(c:/texlive/2018/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO) +Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO) +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +Package hobsub Info: Skipping package `ifluatex' (already loaded). +Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) +Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) +Package: pdftexcmds 2018/01/30 v0.27 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO +) +Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO) +Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO) +Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO) +Package: xcolor-patch 2016/05/16 xcolor patch +Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO) +Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO) +Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO) +) +(c:/texlive/2018/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks22 +) +(c:/texlive/2018/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO) +) +(c:/texlive/2018/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) +) +\@linkdim=\dimen147 +\Hy@linkcounter=\count138 +\Hy@pagecounter=\count139 + +(c:/texlive/2018/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2018/02/06 v6.86b Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +\Hy@SavedSpaceFactor=\count140 + +(c:/texlive/2018/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Hyper figures OFF on input line 4509. +Package hyperref Info: Link nesting OFF on input line 4514. +Package hyperref Info: Hyper index ON on input line 4517. +Package hyperref Info: Plain pages OFF on input line 4524. +Package hyperref Info: Backreferencing OFF on input line 4529. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4762. +\c@Hy@tempcnt=\count141 + +(c:/texlive/2018/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5115. +\XeTeXLinkMargin=\dimen148 +\Fld@menulength=\count142 +\Field@Width=\dimen149 +\Fld@charsize=\dimen150 +Package hyperref Info: Hyper figures OFF on input line 6369. +Package hyperref Info: Link nesting OFF on input line 6374. +Package hyperref Info: Hyper index ON on input line 6377. +Package hyperref Info: backreferencing OFF on input line 6384. +Package hyperref Info: Link coloring OFF on input line 6389. +Package hyperref Info: Link coloring with OCG OFF on input line 6394. +Package hyperref Info: PDF/A mode OFF on input line 6399. +LaTeX Info: Redefining \ref on input line 6439. +LaTeX Info: Redefining \pageref on input line 6443. +\Hy@abspage=\count143 +\c@Item=\count144 +\c@Hfootnote=\count145 +) +(c:/texlive/2018/texmf-dist/tex/latex/memoir/memhfixc.sty +Package: memhfixc 2013/05/30 v1.17 nameref/hyperref package fixes for memoir cl +ass +\c@memhycontfloat=\count146 +\c@Hpagenote=\count147 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(c:/texlive/2018/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2018/02/06 v6.86b Hyperref driver for pdfTeX +\Fld@listcount=\count148 +\c@bookmark@seq@number=\count149 + +(c:/texlive/2018/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip185 +) +Package hyperref Info: Option `unicode' set `true' on input line 18. + +(c:/texlive/2018/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2018/02/06 v6.86b Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) (./guide.aux) +\openout1 = `guide.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for LRC/fruc/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for LRA/frua/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for LRN/frun/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for LRT/frut/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for LRL/frul/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for LRM/frum/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 23. +LaTeX Font Info: ... okay on input line 23. +\AtBeginShipoutBox=\box29 +Package hyperref Info: Link coloring OFF on input line 23. + +(c:/texlive/2018/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section + +(c:/texlive/2018/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO) +) +\c@section@level=\count150 +) +Redoing nameref's sectioning +Redoing nameref's label +LaTeX Info: Redefining \nameref on input line 23. +LaTeX Info: Redefining \ref on input line 23. +LaTeX Info: Redefining \pageref on input line 23. +LaTeX Info: Redefining \nameref on input line 23. +(./guide.out) (./guide.out) +\@outlinefile=\write4 +\openout4 = `guide.out'. + +LaTeX Font Info: Try loading font information for OT1+imin on input line 25. + + +(c:/texlive/2018/texmf-dist/tex/latex/bookhands/ot1imin.fd) +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <12> on input line 25. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 25. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 25. +LaTeX Font Info: Try loading font information for OT1+eiadcc on input line 2 +7. + +(c:/texlive/2018/texmf-dist/tex/latex/eiad/OT1eiadcc.fd +File: ot1eiadcc.fd 1997/01/14 v2.5a Standard LaTeX font definitions +) +! Font OT1/eiadcc/m/n/7=eiadcr7 at 7.0pt not loadable: Metric (TFM) file not fo +und. + + relax +l.27 \eiadcrfamily O'Really\raisebox{1ex}{\tiny ?} + digital press +? +Missing character: There is no ? in font nullfont! +[1 + +{c:/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2 + +] +(./guide.toc +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <10.95> on input line 1. +) [3] [4 + +] [5] [6] +Overfull \hbox (4.76656pt too wide) in paragraph at lines 46--47 +\OT1/eiadcc/m/n/10.95 or poured. Ac-cu-mu-la-tors are where fluxes are stored + [] + + +Overfull \hbox (11.62057pt too wide) in paragraph at lines 49--50 +\OT1/eiadcc/m/n/10.95 Arcane fluxes can be com-bined, di-vided, si-phoned, adde +d, + [] + + +Underfull \vbox (badness 6592) has occurred while \output is active [] + + [7] +[8] +\tf@toc=\write5 +\openout5 = `guide.toc'. + +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 66. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 66. + (./guide.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 66. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 66. +Package rerunfilecheck Info: File `guide.out' has not changed. +(rerunfilecheck) Checksum: D99386C427B5B0665019B8D83FB91267;1176. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 66. + ) +Here is how much of TeX's memory you used: + 12545 strings out of 492646 + 184111 string characters out of 6133326 + 256625 words of memory out of 5000000 + 16354 multiletter control sequences out of 15000+600000 + 15719 words of font info for 39 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 31i,10n,29p,232b,379s stack positions out of 5000i,500n,10000p,200000b,80000s +{c:/texlive/2018/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc} +Output written on guide.pdf (8 pages, 96686 bytes). +PDF statistics: + 185 PDF objects out of 1000 (max. 8388607) + 108 compressed objects within 2 object streams + 20 named destinations out of 1000 (max. 500000) + 73 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/work_files/usermanuals/magic_language_guide/guide.out b/work_files/usermanuals/magic_language_guide/guide.out new file mode 100644 index 000000000..2fd9d808e --- /dev/null +++ b/work_files/usermanuals/magic_language_guide/guide.out @@ -0,0 +1,9 @@ +\BOOKMARK [1][-]{section.0.1}{\376\377\000A\000r\000c\000a\000n\000u\000m\000\040\000F\000l\000u\000x\000e\000s}{}% 1 +\BOOKMARK [1][-]{section.0.2}{\376\377\000A\000r\000c\000a\000n\000u\000m\000\040\000P\000o\000r\000t\000s}{}% 2 +\BOOKMARK [1][-]{section.0.3}{\376\377\000A\000r\000c\000a\000n\000u\000m\000\040\000M\000a\000n\000i\000p\000u\000l\000a\000t\000i\000o\000n}{}% 3 +\BOOKMARK [1][-]{section.0.4}{\376\377\000C\000o\000s\000t\000\040\000o\000f\000\040\000P\000o\000w\000e\000r}{}% 4 +\BOOKMARK [1][-]{section.0.5}{\376\377\000F\000l\000u\000c\000t\000u\000a\000t\000i\000n\000g\000\040\000C\000a\000l\000c\000u\000l\000a\000t\000i\000o\000n}{}% 5 +\BOOKMARK [1][-]{section.0.6}{\376\377\000D\000i\000f\000f\000e\000r\000e\000n\000t\000\040\000P\000o\000r\000t\000s}{}% 6 +\BOOKMARK [1][-]{section.0.7}{\376\377\000W\000r\000i\000t\000i\000n\000g\000\040\000S\000y\000s\000t\000e\000m}{}% 7 +\BOOKMARK [1][-]{section.0.8}{\376\377\000A\000r\000c\000a\000n\000e\000\040\000L\000a\000n\000g\000u\000a\000g\000e}{}% 8 +\BOOKMARK [1][-]{section.0.9}{\376\377\000W\000h\000e\000r\000e\000\040\000T\000h\000e\000y\000\040\000C\000o\000m\000e\000\040\000F\000r\000o\000m}{}% 9 diff --git a/work_files/usermanuals/magic_language_guide/guide.pdf b/work_files/usermanuals/magic_language_guide/guide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..16f41a3253e0228dcf66306224225ad195c0202a GIT binary patch literal 96686 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 djl3q));uoZSoR9rtkvVp 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 IDgsuWGnAA_GmHmPH zW5q#96*21jy3?M>+oq2hXsQQ~eHAYD0QZ8Vm~og(x(}}&`8;G9X_PA!L+v_&twPCR zhimf$8D20TJRCs?KclH6HOJCw;&HjLbMW~wjb zjf0rW+{i@Am1&#qX|Zrs0nfvZ;z&D!D+l?%|3|%HyjcWdD^~2Km5K zbq8TL*1DNYd_-$Vr7>n;TimJq{ia$i&kHYwrbprkL87yCrP_PIobEws(S}$3!GN57 zifA)cbD@qf{A2m3Zf($#X@Qp|g{;eN)nlQbjF|4z%0-mGEP2*@q!K2w9+|9i3nGLhV4mr3&4(7t&iO{Cwm*fHA=l%XJ?+`oekj>5D%Dbtxl zh!dw3Geqm-zQk9v`nZ6kKwX;NBG!ATQURX%>NVpv)~}HnqKpFj#JG1j#|z!Det}sX zX@C^VJNTCF7+6a2y&1#lmvm6W#H27xEk_wV5bluH*$bjFFJ6o25?g%f)Uk`zL}50q zRFeur@Fc;JoxhZW6u34w)5=^Um8`Y$<7}`EYg2 zchkw<3(n%-e_MFg@%0NUlU?Cj8XlWkv^HSr88{(%l>aH<<;=xrC3nFGW6Im9o!{kJgC-JK5gyl^iJiIjw09`eQ6h?Xr{0nt^;CAid!6?Mh(pdgE8NRehYA?q<~!zSnkIikg3o ztG;c1mG|iJauc#%D{W)&&F0>zz7E;(wjVkwrZVQL_hFidCpiD5as^Z5Rq`R0Nh|pC z@iFoaYfC8~o0(S*kD^<{s8sx3E;=ykI~C?%jUHWHl?;9MIKNz>BR1Q^k%Bm#FBae{i;=RQ<76c5x^UlAiGkBKqj{=IE*U{n4 z0YVCnb|z!;@wIB@?`jd;@&>4l34j~kwXR8@TtU zsXOw`XVjN2S*r(mWq78GTC|4cyRoJ@Go;&ST!i{V{P^J4?u;Pc7@p^+m!>Jx(eV-{ z@wu^Wh*h>d>)AmZbra~;33o}!=F1xSKUMdd&7*wRnX^e!Py1k|OgY%L27ivZX*M04Z1yl`W2`#Of^`1EbF4lF;C@dL?bX&*UT1)mFk8w)- zQT~p<{*7aR`7_OyyvXtagr`%1h2^WQ=(aV6X8U9Dmyd~8@)+)V^tdf5GNd^XxV(lQ zgEBiremdO}xkX1M!ZtO+tTTjTpN_WbUnrqs(Y5HWJ;-Q{F;aY-#ciOSo#nRuvFA-w z8!NYV6ygN*GTp2X!@GMlxX5rXO+jKL;3pk*0niWV%W$K1eCW{le5!8z<;G~NRytp2 zCnG0b@4g-#(>H`3v#*$6lZjzvMwkE6_{1RK>A7r(dBR@UUf90sk1NLOxjav)(t#pQKw)Xkn(sfeJWxJzT2xf0%j^%=h(z=8UhxwxX~xN)RfyeUBs za{3Lgz z)_7ck&ykcWJ~+okt%fYUUSd;P&P;Hwtmm}1(jPf7x0AaL{yux;H_Iru;Ldq8ab|{) z=Du48nGV3&NffRhzVci85S;>9ME!Z)pmuV@$7bNn)r zvr$$I%x;y55))iIhD{ZdLRX;?Nz%+JQ>{17|IFR=GXJK}8Wsb&8uF~bkL8{*^(?rZ z=&jb;kvn|XHh$qDbz95yY$57&TkMt~y=#Z`n^;`>taNeWJ)Gk(|1+yMKc(3|u1xvb3qRQ!F}-=4 zFP=*68@v5852-In;G=7u10eh^UP}v+gV3VY+`XpjmJX}k>o%bfqhDlcaR|6cmN?(^ z;5AcRUAUJZB6}868Sk$-d$&=!$p+6%WAiY1YCo`$l?hz6o%%Lsw+9jB&!5!c?bvmO zxDNKcj;Cel@!=bAQ@t|PXfwF?S($p43KXWiug%sb-*bR`INs&_AW9JIFic3Ge!HC< zB2LQkyPGMN2ta)PEav#ez$UuH3?Zi1Jl2B=efhKByH;BH6!p)KQ3+-A(aRIHKbGskNQWmsUY-z1wcT(0=rbVLiyQvrQFP zda*#9V?MGz$6OjZxGy&Pw$(J^YtH&^x-gb2FFkN3I;lNj6uZ%f)q|K4vq%G`P zXi*J=C5c^NKL@0elz*I(0J?ipLfh*ZHy4}CTND+w zt*T+8ifGd*}nFB6=n zt0`W55SxAa3G{Y~stvdFjti$_EbRil(J+p!n$!Nsr1o7(s;d=fnC9G}@p$R*_AZnb z)n;eq!htpi**hkW9~eWeb0g>dU@~1zFYN6;a&o;TIFeZ*vv?h6xk)?~My<}y9X|{C z(pW85$6Xk)+K4?3tYMxc5Xt0O=^YXJV)wAy~ zcQ)EA!VgJRHqm2xB^-o`6T=;Wt=_)d z(QAGWbNA_&YLy|@Ph+vQ`*hwFP{(95A`~E8H>G9rq$9TXR}@jNIaU6|m)Zgg|?AZsdgDj9P#LOt57DAdg)DfJcp@CP`JSNY$pXa5NT|IaNw zBLO=T`~S!qOa%Yonpiph=lOpZJQz7x|F1O2|F_^_)8Xu3Z;Ql=wdLj~DQC0QYP;3y zYxI8}o`*Rc9e2|{%=$apZLj>XD=XD&OD*oaEs~ML*Ec#UJh(ELmY5e9?EsTTLRc|0 zG%x^QTxJ+bN`~ah!syc8+=#;H%5(vpm5>4(%YgmkAO=PT1|fu?5L?_HT$)+h?En-p zlz+G&6&n~?8k<^NfXmmm*E=+^v;aJIc6LB^vvn?Vbv`bCD3sY*Ksq!sfM#iIWdMer zpt6#jjsT(UIaC7M%d^W9^I!%0Rwl-lFbRz;Y%R`gr63s_+<-Q}M*uN5H!?JTBNLgo zdmz`_GPydxgl4BE_RtBas)#7b>B@i+P)pSiz%Vy508B`KDO(*J&OgCytZa|(Yc4DR z>3^DRVSoQ(e$9XAuZ|z^qv6655eTV zp7_53Q2s0=AQ>20zrb&-jET)Htf2}JTH9P5Tp3+~#y7JwxHbSou5D!iity;l+{ntv z{zS1iwKhF|{|^7)g%(Hd@p(aRrvDTZ4)_VB%^9WPm61WE)BQ=v5Wy}7aH{+90Z4S#py^kh_YL{y?b{jKlsnk#Y}dm>A7IR!RO@I_&B zWq#4$-L(ehANjeT^{M`LC;^WCUQA(ib7*)0Hep=;w2;F5dH-5m{^+G7#&?IZ(;^dr z1*WFQ!3<1{O@SPknm&K~&at|@!HZ)q;PvIJ+tYNF~ zk!iE)LCW*;Srtn4OhNRrFM3wQT5(z#7WjXIpZ<%$+`)zOqgxDj`S*~2%nR9Im_xa9 zvHoOJ2)U!4wS<%`Zr8h=={D}y5(?dc$-r){YQSByJ?@ekI}=L;T4j+^zcr~%HpZZ9 z<~+0sdY%DrEZTj4E+*%4l+tlZm94VpToAg#E_RDr9K<62T@8Rqc=+A(ZPQY=_KF&c z77RJItNk7%8pugK+>8y|oLdujXRAb5Pp~@R5FC^AFh>p2KlEO3x0hh2f{45YRx%vM zNv7a1Iyd$Pd&yQR4BF0(b8}BO%oo?4OY0!8LxUWlPcDSs-IEnI#a?F|(T$GG$xUo= zSOrTwGljX+BC)`m} z)|>%*Gw=qNlZsL?lDEi&uZ}lSQ4t`d2tnV)&XL7Y2>BDet>$>bk< zK-^S(CJQvqP7VXBM;K7*{&X<~W`peq=5zpnxlFSb#~6dV zoA5t`(U`Sze%f5!%&@Ckpz0w&_todp1t$GhYX+1cXTzmm9&id*lGxs_=fx3%(msN4 z(2Zb)sw0p8xPO-86z}JTp=x_ZV`xeOmKyS&4p-(dW+M6w(B)|TO>1?EzhiAPvHHK8 zx0jrMc$J5NRSCKpWFL8!CHXj{+UiK@(i1D?Xy`NXO;)!t_>seFX13p(+k{Vc2MB%I zA%Q8Y@JlxB4@q9C`iW6P0tn1Lm=N%(@Np3@q}z~_2?=q!W7WYqK+2H1png9O#Y+T> zA#p_tx*7xIiU^)-NI$izM-7WQH+x{`l|mZp0;;gAaBaY#h|5aRINy_9gh7SaXI@Q5 z^@Lfu3R0)6f3xtUHj3~2BLvZA4}0WI&2MakL8a{QN!7$uuG;UIGnYK~&GMqlIv{W1}r zB~Wd};NNyLkbu53^b=Pw>T%`t?+dBH8*w$}E z_{NX45QOUY;&ZkRblf|Blko5FyG|d7kp`F-n;|h8j*GGu)B-$=a_Ao#utPs$RcSk2 z*oZ9j``%`tiRoZL^|kT~>o3}o@JW@~OW?)=%r`hIEyy?(_~Oi}bHvwE>wHu+`&`vIa?a2$RH* z&B33kq|Q6Ov$6~mCZc1vPQ7!Yhrq#c#WIx>fZO;zA49{QHcj;P=JGL7T$|o8>cO93 zXWPCSN&a&P)3M>f>8mP(z$>;fIsJjU(4j?=j{8lTF8Pcpc0H8w$?$ptS>0jxaNo9o z4;J&k7^rT|nmKRJ_TBBh(9dgbp#@q3u~@6#>8;X$Ojc#V$90`uyViU7P0is>bjf@L zlPld|XN;d#AxZ2^$%qdbZtTD)orxcuAvsMmgLRjD7 z$|WIhA{BI{KmGNcXw!}Od~^^2HIc?>mG=CGRD$9;tUMdrHFH0oFfolDuuWA-A06Lh zi>z`Ka@>sIE<=_GQCSuAjN%2#w<6aOIpZM0)bFA~8%lkyHI#L{dEXdeR*?9Pju@Lw z^yCKGQKkbZ7LD+=Ezb1BnXF7Du{!t)>$}2i3A!p*-V#iKeV&V+NtF81xCVP5zYzeB z)&RoAuxO{b+E?d@kvemOkm@Yd1urL&NNItGoWn!G2^3GvGSbK!Uw~C=0iMHPEA3gwQ{wE^POM658K7z=M*2AaTaNpJ)-{Y8c;qkBHs#M)I&YL%{H3H|A_b;NoGgPZW zk~HCjHk`%Te);0sXng9 zRoNmxI-Bv36MM z35g@(AOTMOT^Grreum&DeQ)j$?iQ{J=|{P_wo{jo)y{=@kH|rLVI+eB62hEXCi&A zK#v=}HUyC_R&a9o0)g-EotVv#!zq<)83y-H?Y!ikf!ky*;SC5;<2wztkRys<){$(- zw$i&{kN2>$b~%^?F0Du2ZHfM>5_ws4QHJ!G1kOK5-=mqe(W~E7!fR!gp;`BXwqZvO zm~0*XJ0QXR!tj}!twbr%G>Pglf;aoQi-7tay!xp`(I-|siLqRdM`}Q7%i*1BIZ$iZ zMUYXXf#_^y)(bB+Q3Ml6+0ERkIJIZ(vLefIl{`i#)TmtPMf&U{vooO6FokEh2OIy{ z9QJDybP_Nz&PDnG(1G_yn#+zGZaTR|*=-y}5tPJ7*Z&572u6Lr%ld3mAQ2NTyebX{Ke~)V002Ni4Hn#TkgbFw^c1NX>9@-y zm^?sa-y#G_wL?Zw)*&`*MpKxa4Q_81qx)z3)yaU2@MkY%a&q>H4}MsS9*A!^p~hC( zD4NJArhSe;LYWNA%7}q8D5Y=L#?nn`7gU(WKPb~CXiw8}^sGi8NfxG2U};lf^xqb9 zT*7l~@0oXs?-6S~lT2W@;SqUG+yQ3h*g{1A8R*V5i3DKBFPy>?+7(*14tfb2nUk8g zBgzK4!+)>CYf49myU8-uh!2(n>y8igia_dhLEd{VerRT6n7O5h)tsoRPCBamQ{-MX z>U=<;?1&dd-TbmEn&@weN7d%HXq+*v-8BS#aYY4z!?lnWtKL#w^)@+!w|>qvUGlV7 zXoj;cnub7mFLkNt{nH=xYNsmck>V8B#fS$s;c~7T`OCCVyRb7EnNZR~hBOmi z>+qvto?L8^dX~usxYYH<#JBlv+~t;?O{a9mmlfMdLnSkgxR}!VO2`Y5&dsIuM5fi6 z>l@s3a%U&MRz7_+*)-hprEGro%m*D>+35JRc?G@G7VPp#@F3!}Q@a9Y&>XqFV@K{% z?DEy!u;u2L_*D?0S@DYy$cXU@Z!Kj4+LLG1E~9sYB6{Bx2OYEqKLKfOs!mXB0ovLR zJ=jObkpZuJXR9=JDN)ay;Xh5-Xo+lTRIB{4aV$C|>5Cifan9uYOW`_{U}S5xUFq7C zd(X1)PX>?iB9Fp!X??|O&yk5@Bm*gO$FBm)vn{31H-(7B?3E^yI}7whxNDb&6OHX% zJh~Y>RLo{tt|Dh2T2YaMMKk9LyqXy?m$2fD8p_BIyGwqxMdLH3)VP?a3{u7Fe4|G?Tw zRAm#dQrtP+e@|6M(Qjd~5+_)R1)&SABjEI13X9K5E~Zx^ygpP)Ce*wwm}@6R|nj?x4!4#g?Ev(W}_)_o^((Q?oiPs-G^R>ZA71~{wH zCd#w$o_A0k_9)B2<1FClW%k(*kY4L3v&LMWw5XagFB5yLCbd2k9N5{sxJ;Nzc?6fI(URqLFt0JtMK@ zsFg5;^o%wPA&4$|iu#=upEFJ5A%RbIlii+orc9PR45_X)YB+G~=;w5==POU&!`N)i z5XZK2ldvkhzrO&ur%#|fyVaTY_gY_U7}zAdpTr&UmOO>X317HaBnoXJ=b3K-0zG5+ za~`)3x>2Vsa#hZj?a<|Yw$_JiGSe$>eveS(l3s`gjFfj9)<;$&!KU#BOGr-(?chE1 z&s|?CV^>!a{xF>XLdhsSo;=-1M`Eyf9~B6o_5F!etUvh`)9E-YQo_Vi@lgF493@^3 z>dpH*eQ8>8ejoF|9vD&-Qlo30E77hKi(8#Kc!nZnXSdT3&icyvq#TZFV$zH#KAfBE zw2c5=+Q2)J-`G~n`^l~14QXE-F{5MOt!D+OKw%8};4ONWvqP^-8f_(G!jqWq|q39+$t>6nDXn%8h|Bw;%m?AINRvZ;?b z-1=&BYKRsXu>5|9Fm!AwewgP=s6)QnP(-6=Ni8(N=Wrm9>rL~zNsZSid3u1UH6}us z{{ycFM2o~= z!Vf_d=bhE;m=yV3cLN*_CK;pEW1QV!`v`{G!`i<_uW(ErvLAEHhGS4ipE|(bF98C{ zdoR{H*T@;LLU=`eY0XUUgkmn4;twY7OBj8SO>)%|h(GmII2WceLe7H2)a2&_^N)d- z&9vahQXN+)X%ok_qT_?gCMd7#N=i;U7v@p)C8Jl5iiEIWR%ZR|YXLg`(UQee)g_Xo z0kYCm5UAq+ODV@8Je@PV^#@H*3U67%0>}u%>3)?5S;B~;uy6}9Ld?vB@UWDqt{B_E zk)1x=vk?0fS!m~7=+@b0gZEGHh+9}P<%y3q2H1D1Tq5$f1c8S2X&euT3EUW{zV4Y` zLlsc2Xo1Y2k@8D^n>nza8i;lVqGZF-!8iiRba;^n1Vi8^xpz|}dEwqEH6mzSK8s|T z6MVDL#!#nHVFRNX=Jb&8Jz*?!;8U0W$!kHTtb26=LasY0%t_UUbB{^iR52C)1l5L0 zARICkzn=XJNCu~UE&dL$%R%)kMqXZz)3*u)PlOt~jaZ$k)D7CQ#Jh}=7L8Xe($1=t%qd7ZkhST{m)rZ1V`9KldAl-_X;pxO|*2x^__Cu%u z(FzZpFfgjM-Xe!l$I@I;$e6WTq0zPbYiHlfpaf1g)al<#XU%9Mq3`nGH+E`u|FJ@i!Uz=7fJM!%}Z4B0Vd&Jubc*Yq^e*!E$;5-tL>k-|dtK3di*0 z-;w!`@&0e$9)k7&W28f16O$` z9x&OV-Xat0Yz@L#5|A}3AXRIyd4$+I?`rsEa;uxob*s3<8BxPNTMWx)mrjV}Q?X$a z8n6G_KX%kqOs>EZGJd8gi<6Is#1P-GVqa<~3pJ9x27QmkoMQ1RTX{GqVo05tN$2N$ zHKbq&I$jN#)n7&3ctI{#LT>iwXy(ovJ4tUN6lvnzaer%DTglyh_6A+zz6f=_il>UE z;F$WQGLcr_^qNfXcY^ny`BfFh3T@Y>H7X`UlBdf+b8Up}#WcvY$q`0`&7XJ})8`F5 zwTu~Txq7zAWvB2TK&;6m?AP#%*LB7ekF_L5-@XRW z)+=13CbAK6m5i^~iAVGB-j|b0(6WV5m}5%)GVwfw+4f(4 z2_&cC(_i2f`db3KY8Y;Dy+LHH15^82{!j^Vq!{cr!_6KwvdSWLjW$N?9c0#}qCta< zu;%=1x{@40$wk;IrpMThxI{@w#ZYej*h)FMvuAtcvAoKM!?{e!B5J1pN>Ov`CKSJR zx-%nbfTF)@FgTAnG*W5<&%m>^7j;cD9~n%}^?g(d8|b>SoLDZ^kxJ5sUGfU#RKOH+DUBMi zA@#5kfzhz>8&;f%hy1BOxHdW7P{Y?U9^=PLgdGtXL{L64M2X8(kh}baR#qaYmCQp^ zqRh1oK(AjoXb9w*2@PQR01L5^I9UBJxXA zWh2%a1}h#sSud?AOL8o*sFx&iH-BHf`(gx|w*PP^kk}@L?o^i+jk144lxZqZ_@<0c982k zrHyi|Xz)MHOhCTgYL^QUy8UJWn2Op%-5G|lGtfW1g1?#by(39HPs{<;e-3&*c`L=( zy(?I-bLVWN0HRBdYfelLk~JVMbKIr^DT!@qOwV1gze7aGZ z&V0jkJ#HPgwi5IX2e7yfa4&vlxJv5vO<pv_7Sl8_x$o#Va z-UEUz#;)&E7_p{iqp@;q%#7u_9UGD-E5Xn?Z{|6CBGBqF^q>u&`S{hf;d7{tFmJs5 zWpjC(t^MH@;`&ESg+g8uO3TAf6;8>WuHNc1KLH#S@Y3|u+zuIt(ZaGw;kR(1LQvkI zWhY$bo)&<(M^IZm`#Hfv@K&N>Ti4^z*Mim;Wv5XM90(YJ#N&o|SPZ#)_m7Eob*>&* zz<_UIPN*2>&`_G_T|4A(Lg;9cX_#B>l9zjLj$h9kdu7b4288*?;~3Zsqweo z#M-FzEh0qAh1%qYQa)6XgUMpOf@s{4fwHQz90DpK4}r=S`e26W0v)%|f$F}!t{>g+ zlFs9MN3I((2=n&{{(wg4KG023I`MV1k9E_dJ4ATXKL@OHS~nFlXp9u2WN0O4z)zkN1mv%P3izO!niS@ zsaM%*`+pip_4|(?lUO_|=RIk3^3Yp6|CtIE`^fMlmb(0C!S&ODQuBaFy+b=HS!tNE zOCs~83bib`3UQ#kLH?jw%*-kdH20S=Iz!S6==dE*5f`%mB`}kL+y}n- z&?(fe%Q2%qb++ju`Jg7PBt5&Os7C2IRN9%O?L2xFebdw-8)6>`^;xHw%mO6Bqzu+= z8ZP|>?j^yTQ5?zEAfy1gfGnZYXuimdlUDRW)DVRHtV6@IY<1c z+q=YYlt(RERmr>fuQCH*mrF30g32ign*uBtpbUdV-O>)L2t4J!9jbgb?VZ15)8xlo zc-i;T2Rfr-M*z#Rz$2O|NVZ{+%;*shfzRp#9>&X9V|q|yt9?wBxu5OpLyo9Vp>5W- z1BDl1fy5`8#gab_$*ZZpc*&Xa?O?Gg@;JAuUQ4U7poOa+eExz5?%A~-|e5}!|U zV@vSIZ6~cN&K8U{Ps*Q(fy$^(mX*%xy_ysI-E71c#|f8i9a<_B^ZurrYfgGpdHqlL zz~-%0lIGcAvDY#pIf9r=7V7kxLEzkl|I!*Ao6mrY_v6$RjC`#?Ss=}#(tf0{uJG|| zeSmAP6Y9EoLq7Ri_+){d>?Pc@4XfBf!xdtx)JKnc#F)b{?9MIgk%r}Ny7kZAosTq? zZw@Qr;>+aL#2$GRn}u?Y(c#MQz%MRgMA>i}-fVrI-#3U(>1i|Hcgb?MVRaZlmH0*O zLt$4?`KZZbY|<2SVqfi{F}+9EQKI%E*0MwUK1eergjkzH)a&Y6z-Ujo-Tq zaVA$ZOHD@>Uy?UhmH2e%rE^I5;vZbTBnMTb8|ZkjUR8wA+}4u`MJbl5 z-35(pXeKsKdLBCLBz7INTrk$>59&WlHI}SMp$};$3&y6$=@{%sFDMM@@8qz{%`NFi z3M5wF%(UeE8T6+=f>g6}kjBgqmS|LgE6=p*DSK0CHAnT0d2H7$L1jM<<;$5DueyU? z^Hn`PMa_8CapD$TXY>@yULbejMeT!RRuw*Qf6W-JGrz@{yc!tA7*Ywy5ED+G9q!pC zX*hsWh=qGgKs@-oOkqUaVK_sY01X)M_bnEBzgH)-ohi8+iX2XCOth@AM=?>33$Y7Q z@vFZ_*moRE4|vk<$D#(pY|W*(<-9ND$j*iyxPu{j50V_#iA!SEA&vPbq@8HF;J{zF zzC)3GF`N}veUQAiD$P*5%pb32y%#^z5vI*MJW0DfEk_31FSdfB4O zM43S^8CD|S?q&1NWk0~7d>ft16!6|}+@Cdr4`x)?ctNe3!;UqPOD|;H2*2vU+jd@t zw`KyEP;Q63RXq`dO0ihbpu;x?x759>y?7(soq|Ep!e9QG+2Amscb4k@n)Vksja)0+ z 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