From 83b0eb6ea983934504728e469ad2fb7d9bde2ae3 Mon Sep 17 00:00:00 2001 From: rsxri Date: Wed, 23 Apr 2025 17:20:00 +0100 Subject: [PATCH] -refactor: refactor filesystem for readability and to show purpose --- MB_FYP/assets/sounds/laser_fire.ogg | Bin 0 -> 12732 bytes MB_FYP/assets/sounds/laser_fire.ogg.import | 19 ++++++ MB_FYP/assets/sounds/ship_dmg.ogg | Bin 0 -> 26104 bytes MB_FYP/assets/sounds/ship_dmg.ogg.import | 19 ++++++ MB_FYP/scenes/{ => entities}/ai_fighter.tscn | 26 ++++++-- MB_FYP/scenes/{ => entities}/asteroid.tscn | 2 +- MB_FYP/scenes/{ => entities}/laser.tscn | 14 ++-- MB_FYP/scenes/{ => entities}/player.tscn | 14 +++- MB_FYP/scenes/{ => entities}/ship.tscn | 8 +-- MB_FYP/scenes/{ => system}/border.tscn | 0 MB_FYP/scenes/{ => system}/game.tscn | 63 ++++++++---------- MB_FYP/scenes/{ => system}/starfield1.png | Bin .../scenes/{ => system}/starfield1.png.import | 6 +- MB_FYP/scenes/{ => ui}/game_over.tscn | 8 ++- MB_FYP/scenes/{ => ui}/hud.tres | 0 MB_FYP/scenes/{ => ui}/hud.tscn | 4 +- MB_FYP/scenes/{ => ui}/input_menu.tscn | 4 +- MB_FYP/scenes/{ => ui}/main_menu.tscn | 6 +- MB_FYP/scenes/{ => ui}/pause_menu.tscn | 4 +- MB_FYP/scenes/{ => ui}/ship_choice.tscn | 2 +- MB_FYP/scenes/ui/ship_explode.ogg | Bin 0 -> 47907 bytes MB_FYP/scenes/ui/ship_explode.ogg.import | 19 ++++++ MB_FYP/scenes/{ => ui}/upgrade_menu.tscn | 2 +- MB_FYP/script/{ => entities}/Laser.cs | 0 MB_FYP/script/{ => entities}/ai_fighter.cs | 4 +- MB_FYP/script/{ => entities}/asteroid.cs | 0 MB_FYP/script/{ => entities}/player.cs | 1 + MB_FYP/script/{ => entities}/ship.cs | 8 ++- MB_FYP/script/{ => system}/game.cs | 3 +- MB_FYP/script/{ => ui}/game_over.cs | 4 +- MB_FYP/script/{ => ui}/hud.cs | 0 MB_FYP/script/{ => ui}/input_menu.cs | 0 MB_FYP/script/{ => ui}/main_menu.cs | 0 MB_FYP/script/{ => ui}/pause_menu.cs | 2 +- MB_FYP/script/{ => ui}/ship_choice.cs | 2 +- MB_FYP/script/{ => ui}/upgrade_menu.cs | 0 MB_FYP/script/{ => util}/camera.cs | 0 MB_FYP/script/{ => util}/pause_controller.cs | 0 MB_FYP/script/{ => util}/player_config.cs | 0 MB_FYP/script/{ => util}/wavecontroller.cs | 2 +- 40 files changed, 167 insertions(+), 79 deletions(-) create mode 100644 MB_FYP/assets/sounds/laser_fire.ogg create mode 100644 MB_FYP/assets/sounds/laser_fire.ogg.import create mode 100644 MB_FYP/assets/sounds/ship_dmg.ogg create mode 100644 MB_FYP/assets/sounds/ship_dmg.ogg.import rename MB_FYP/scenes/{ => entities}/ai_fighter.tscn (56%) rename MB_FYP/scenes/{ => entities}/asteroid.tscn (89%) rename MB_FYP/scenes/{ => entities}/laser.tscn (61%) rename MB_FYP/scenes/{ => entities}/player.tscn (53%) rename MB_FYP/scenes/{ => entities}/ship.tscn (72%) rename MB_FYP/scenes/{ => system}/border.tscn (100%) rename MB_FYP/scenes/{ => system}/game.tscn (99%) rename MB_FYP/scenes/{ => system}/starfield1.png (100%) rename MB_FYP/scenes/{ => system}/starfield1.png.import (71%) rename MB_FYP/scenes/{ => ui}/game_over.tscn (84%) rename MB_FYP/scenes/{ => ui}/hud.tres (100%) rename MB_FYP/scenes/{ => ui}/hud.tscn (88%) rename MB_FYP/scenes/{ => ui}/input_menu.tscn (97%) rename MB_FYP/scenes/{ => ui}/main_menu.tscn (91%) rename MB_FYP/scenes/{ => ui}/pause_menu.tscn (94%) rename MB_FYP/scenes/{ => ui}/ship_choice.tscn (96%) create mode 100644 MB_FYP/scenes/ui/ship_explode.ogg create mode 100644 MB_FYP/scenes/ui/ship_explode.ogg.import rename MB_FYP/scenes/{ => ui}/upgrade_menu.tscn (97%) rename MB_FYP/script/{ => entities}/Laser.cs (100%) rename MB_FYP/script/{ => entities}/ai_fighter.cs (97%) rename MB_FYP/script/{ => entities}/asteroid.cs (100%) rename MB_FYP/script/{ => entities}/player.cs (98%) rename MB_FYP/script/{ => entities}/ship.cs (96%) rename MB_FYP/script/{ => system}/game.cs (97%) rename MB_FYP/script/{ => ui}/game_over.cs (73%) rename MB_FYP/script/{ => ui}/hud.cs (100%) rename MB_FYP/script/{ => ui}/input_menu.cs (100%) rename MB_FYP/script/{ => ui}/main_menu.cs (100%) rename MB_FYP/script/{ => ui}/pause_menu.cs (91%) rename MB_FYP/script/{ => ui}/ship_choice.cs (90%) rename MB_FYP/script/{ => ui}/upgrade_menu.cs (100%) rename MB_FYP/script/{ => util}/camera.cs (100%) rename MB_FYP/script/{ => util}/pause_controller.cs (100%) rename MB_FYP/script/{ => util}/player_config.cs (100%) rename MB_FYP/script/{ => util}/wavecontroller.cs (98%) diff --git a/MB_FYP/assets/sounds/laser_fire.ogg b/MB_FYP/assets/sounds/laser_fire.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8eef44bbfd12ecd038e20d5dd003d1766b40ced0 GIT binary patch literal 12732 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 BjR*h$ literal 0 HcmV?d00001 diff --git a/MB_FYP/assets/sounds/laser_fire.ogg.import b/MB_FYP/assets/sounds/laser_fire.ogg.import new file mode 100644 index 0000000..1f2945d --- /dev/null +++ b/MB_FYP/assets/sounds/laser_fire.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bkmou1np8dpi6" +path="res://.godot/imported/laser_fire.ogg-d7b8b23ced7e218c23ff4b869a02843a.oggvorbisstr" + +[deps] + +source_file="res://assets/sounds/laser_fire.ogg" +dest_files=["res://.godot/imported/laser_fire.ogg-d7b8b23ced7e218c23ff4b869a02843a.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/MB_FYP/assets/sounds/ship_dmg.ogg b/MB_FYP/assets/sounds/ship_dmg.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c10d27d8207ed6a711dc697fd17cc905391236a0 GIT binary patch literal 26104 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 lTWPX%vp4E}nSDF9}g9v1)r literal 0 HcmV?d00001 diff --git a/MB_FYP/assets/sounds/ship_dmg.ogg.import b/MB_FYP/assets/sounds/ship_dmg.ogg.import new file mode 100644 index 0000000..3fd1caa --- /dev/null +++ b/MB_FYP/assets/sounds/ship_dmg.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://7jden56war5n" +path="res://.godot/imported/ship_dmg.ogg-724c925f497e421868e840bebced9f5c.oggvorbisstr" + +[deps] + +source_file="res://assets/sounds/ship_dmg.ogg" +dest_files=["res://.godot/imported/ship_dmg.ogg-724c925f497e421868e840bebced9f5c.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/MB_FYP/scenes/ai_fighter.tscn b/MB_FYP/scenes/entities/ai_fighter.tscn similarity index 56% rename from MB_FYP/scenes/ai_fighter.tscn rename to MB_FYP/scenes/entities/ai_fighter.tscn index 86079d7..4ce46de 100644 --- a/MB_FYP/scenes/ai_fighter.tscn +++ b/MB_FYP/scenes/entities/ai_fighter.tscn @@ -1,20 +1,23 @@ -[gd_scene load_steps=6 format=3 uid="uid://3e6fmds2x8q5"] +[gd_scene load_steps=9 format=3 uid="uid://3e6fmds2x8q5"] -[ext_resource type="Texture2D" uid="uid://soden53qtfxf" path="res://assets/Ships/Fighters/Enemy/enemyFighter.png" id="1_4l75b"] -[ext_resource type="Script" path="res://script/ai_fighter.cs" id="1_kyds1"] -[ext_resource type="FontFile" uid="uid://ryhimaxr7tr4" path="res://assets/Fonts/Kenney Mini Square.ttf" id="3_8bw2f"] +[ext_resource type="Script" path="res://script/entities/ai_fighter.cs" id="1_mbtbe"] +[ext_resource type="Texture2D" uid="uid://soden53qtfxf" path="res://assets/Ships/Fighters/Enemy/enemyFighter.png" id="2_ddmyk"] +[ext_resource type="FontFile" uid="uid://ryhimaxr7tr4" path="res://assets/Fonts/Kenney Mini Square.ttf" id="3_ps710"] +[ext_resource type="AudioStream" uid="uid://bkmou1np8dpi6" path="res://assets/sounds/laser_fire.ogg" id="4_mwdhe"] +[ext_resource type="AudioStream" uid="uid://7jden56war5n" path="res://assets/sounds/ship_dmg.ogg" id="5_3k4h5"] +[ext_resource type="AudioStream" uid="uid://d4ebqwhtvkwvd" path="res://scenes/ui/ship_explode.ogg" id="6_5sxl0"] [sub_resource type="CircleShape2D" id="CircleShape2D_6vq6f"] radius = 41.0488 [sub_resource type="LabelSettings" id="LabelSettings_lim1q"] -font = ExtResource("3_8bw2f") +font = ExtResource("3_ps710") font_size = 40 [node name="AI_Fighter" type="CharacterBody2D"] collision_mask = 13 motion_mode = 1 -script = ExtResource("1_kyds1") +script = ExtResource("1_mbtbe") Faction = 2 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] @@ -22,7 +25,7 @@ scale = Vector2(1.3, 1.3) shape = SubResource("CircleShape2D_6vq6f") [node name="ShipSprite" type="Sprite2D" parent="."] -texture = ExtResource("1_4l75b") +texture = ExtResource("2_ddmyk") [node name="LaserSpawn" type="Node2D" parent="."] position = Vector2(0, -75) @@ -49,3 +52,12 @@ scale = Vector2(0.5, 0.5) text = "HP" label_settings = SubResource("LabelSettings_lim1q") horizontal_alignment = 1 + +[node name="LaserSFX" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("4_mwdhe") + +[node name="DamageSFX" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("5_3k4h5") + +[node name="ExplodeSFX" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("6_5sxl0") diff --git a/MB_FYP/scenes/asteroid.tscn b/MB_FYP/scenes/entities/asteroid.tscn similarity index 89% rename from MB_FYP/scenes/asteroid.tscn rename to MB_FYP/scenes/entities/asteroid.tscn index 5bf4bd1..c0718cc 100644 --- a/MB_FYP/scenes/asteroid.tscn +++ b/MB_FYP/scenes/entities/asteroid.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://dnvcics1ni4pa"] -[ext_resource type="Script" path="res://script/asteroid.cs" id="1_rxx5v"] +[ext_resource type="Script" path="res://script/entities/asteroid.cs" id="1_rxx5v"] [ext_resource type="Texture2D" uid="uid://bai5xn2p7e5pd" path="res://assets/PNG/Meteors/meteorBrown_small1.png" id="2_rmklb"] [ext_resource type="Shape2D" uid="uid://iatbcsveyeh0" path="res://assets/CollisionShapes/asteroid_cshape_smallcircle.tres" id="3_pxcia"] diff --git a/MB_FYP/scenes/laser.tscn b/MB_FYP/scenes/entities/laser.tscn similarity index 61% rename from MB_FYP/scenes/laser.tscn rename to MB_FYP/scenes/entities/laser.tscn index 5e9be1b..f7e6490 100644 --- a/MB_FYP/scenes/laser.tscn +++ b/MB_FYP/scenes/entities/laser.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=4 format=3 uid="uid://b77r6f5awabe0"] +[gd_scene load_steps=5 format=3 uid="uid://b77r6f5awabe0"] -[ext_resource type="Script" path="res://script/Laser.cs" id="1_ctmji"] -[ext_resource type="Texture2D" uid="uid://b1tayknrnnrnx" path="res://assets/PNG/Lasers/laserBlue01.png" id="2_nq6d6"] +[ext_resource type="Script" path="res://script/entities/Laser.cs" id="1_qm1lv"] +[ext_resource type="Texture2D" uid="uid://b1tayknrnnrnx" path="res://assets/PNG/Lasers/laserBlue01.png" id="2_v06x5"] +[ext_resource type="AudioStream" uid="uid://bkmou1np8dpi6" path="res://assets/sounds/laser_fire.ogg" id="3_bsx87"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_odhrn"] radius = 3.0 @@ -11,16 +12,19 @@ height = 56.0 scale = Vector2(0.6, 0.6) collision_layer = 8 collision_mask = 13 -script = ExtResource("1_ctmji") +script = ExtResource("1_qm1lv") [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("CapsuleShape2D_odhrn") [node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource("2_nq6d6") +texture = ExtResource("2_v06x5") [node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] scale = Vector2(0.5, 2.75) +[node name="LaserSFX" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("3_bsx87") + [connection signal="area_entered" from="." to="." method="OnAreaEntered"] [connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_visible_on_screen_notifier_2d_screen_exited"] diff --git a/MB_FYP/scenes/player.tscn b/MB_FYP/scenes/entities/player.tscn similarity index 53% rename from MB_FYP/scenes/player.tscn rename to MB_FYP/scenes/entities/player.tscn index 4573051..871dd46 100644 --- a/MB_FYP/scenes/player.tscn +++ b/MB_FYP/scenes/entities/player.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=5 format=3 uid="uid://ckh362yqjkpi0"] +[gd_scene load_steps=7 format=3 uid="uid://ckh362yqjkpi0"] -[ext_resource type="Script" path="res://script/player.cs" id="1_lhmq0"] +[ext_resource type="Script" path="res://script/entities/player.cs" id="1_lhmq0"] [ext_resource type="Texture2D" uid="uid://ofevjaw7ld0a" path="res://assets/Ships/Fighters/Player/Fighter/ShipBlue.png" id="2_guof5"] -[ext_resource type="Script" path="res://script/camera.cs" id="3_ui7sm"] +[ext_resource type="Script" path="res://script/util/camera.cs" id="3_ui7sm"] +[ext_resource type="AudioStream" uid="uid://bkmou1np8dpi6" path="res://assets/sounds/laser_fire.ogg" id="4_sb852"] +[ext_resource type="AudioStream" uid="uid://7jden56war5n" path="res://assets/sounds/ship_dmg.ogg" id="5_ae0ke"] [sub_resource type="CircleShape2D" id="CircleShape2D_btpq3"] radius = 41.0488 @@ -25,3 +27,9 @@ position = Vector2(0, -58) script = ExtResource("3_ui7sm") [node name="EffectSpawn" type="Node2D" parent="."] + +[node name="LaserSFX" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("4_sb852") + +[node name="DamageSFX" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("5_ae0ke") diff --git a/MB_FYP/scenes/ship.tscn b/MB_FYP/scenes/entities/ship.tscn similarity index 72% rename from MB_FYP/scenes/ship.tscn rename to MB_FYP/scenes/entities/ship.tscn index 5d84334..f65218d 100644 --- a/MB_FYP/scenes/ship.tscn +++ b/MB_FYP/scenes/entities/ship.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://dx4wnk5okjs6x"] -[ext_resource type="Script" path="res://script/ship.cs" id="1_u8ww1"] -[ext_resource type="Texture2D" uid="uid://ofevjaw7ld0a" path="res://assets/Ships/Fighters/Player/Fighter/ShipBlue.png" id="2_fvvdf"] +[ext_resource type="Script" path="res://script/entities/ship.cs" id="1_dmn7f"] +[ext_resource type="Texture2D" uid="uid://ofevjaw7ld0a" path="res://assets/Ships/Fighters/Player/Fighter/ShipBlue.png" id="2_3ch5l"] [sub_resource type="CircleShape2D" id="CircleShape2D_tndfm"] radius = 41.0488 @@ -9,13 +9,13 @@ radius = 41.0488 [node name="Ship" type="CharacterBody2D"] collision_mask = 13 motion_mode = 1 -script = ExtResource("1_u8ww1") +script = ExtResource("1_dmn7f") [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("CircleShape2D_tndfm") [node name="ShipSprite" type="Sprite2D" parent="."] -texture = ExtResource("2_fvvdf") +texture = ExtResource("2_3ch5l") [node name="LaserSpawn" type="Node2D" parent="."] position = Vector2(0, -58) diff --git a/MB_FYP/scenes/border.tscn b/MB_FYP/scenes/system/border.tscn similarity index 100% rename from MB_FYP/scenes/border.tscn rename to MB_FYP/scenes/system/border.tscn diff --git a/MB_FYP/scenes/game.tscn b/MB_FYP/scenes/system/game.tscn similarity index 99% rename from MB_FYP/scenes/game.tscn rename to MB_FYP/scenes/system/game.tscn index 20ed239..6ce8959 100644 --- a/MB_FYP/scenes/game.tscn +++ b/MB_FYP/scenes/system/game.tscn @@ -1,19 +1,19 @@ [gd_scene load_steps=14 format=3 uid="uid://635xs5haibcn"] -[ext_resource type="PackedScene" uid="uid://ckh362yqjkpi0" path="res://scenes/player.tscn" id="1_1w06w"] -[ext_resource type="Script" path="res://script/game.cs" id="1_dukjm"] -[ext_resource type="PackedScene" uid="uid://b6myj160l6vf8" path="res://scenes/hud.tscn" id="2_xbhg5"] -[ext_resource type="PackedScene" uid="uid://dkyw6ve8ll885" path="res://scenes/game_over.tscn" id="2_xhmka"] -[ext_resource type="Script" path="res://script/pause_controller.cs" id="3_3v5pd"] -[ext_resource type="PackedScene" uid="uid://dnvcics1ni4pa" path="res://scenes/asteroid.tscn" id="3_b8wlr"] -[ext_resource type="PackedScene" uid="uid://bc52c4jrk6lo" path="res://scenes/upgrade_menu.tscn" id="5_p2w52"] -[ext_resource type="Texture2D" uid="uid://bjxo7mbl7nert" path="res://assets/Starfield/starfield1.png" id="6_kn6se"] -[ext_resource type="PackedScene" uid="uid://4fnk5c2nf6a1" path="res://scenes/border.tscn" id="7_p4rds"] -[ext_resource type="Script" path="res://script/wavecontroller.cs" id="8_fhk4p"] -[ext_resource type="PackedScene" uid="uid://btjj225d18y2q" path="res://scenes/pause_menu.tscn" id="8_tsx0g"] +[ext_resource type="Script" path="res://script/system/game.cs" id="1_6gbqe"] +[ext_resource type="PackedScene" uid="uid://b6myj160l6vf8" path="res://scenes/ui/hud.tscn" id="2_1vxhi"] +[ext_resource type="Script" path="res://script/util/pause_controller.cs" id="3_n6fe7"] +[ext_resource type="PackedScene" uid="uid://btjj225d18y2q" path="res://scenes/ui/pause_menu.tscn" id="4_52tew"] +[ext_resource type="PackedScene" uid="uid://dkyw6ve8ll885" path="res://scenes/ui/game_over.tscn" id="5_f2efe"] +[ext_resource type="PackedScene" uid="uid://bc52c4jrk6lo" path="res://scenes/ui/upgrade_menu.tscn" id="6_ok87t"] +[ext_resource type="PackedScene" uid="uid://dnvcics1ni4pa" path="res://scenes/entities/asteroid.tscn" id="7_xcalb"] +[ext_resource type="Texture2D" uid="uid://bjxo7mbl7nert" path="res://assets/Starfield/starfield1.png" id="8_sbfvn"] +[ext_resource type="PackedScene" uid="uid://4fnk5c2nf6a1" path="res://scenes/system/border.tscn" id="9_o645r"] +[ext_resource type="Script" path="res://script/util/wavecontroller.cs" id="10_qtnp4"] +[ext_resource type="PackedScene" uid="uid://ckh362yqjkpi0" path="res://scenes/entities/player.tscn" id="11_7i7a5"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4rlyh"] -texture = ExtResource("6_kn6se") +texture = ExtResource("8_sbfvn") 0:0/0 = 0 1:0/0 = 0 2:0/0 = 0 @@ -8060,12 +8060,12 @@ tile_size = Vector2i(40, 40) sources/1 = SubResource("TileSetAtlasSource_4rlyh") [node name="Game" type="Node2D"] -script = ExtResource("1_dukjm") +script = ExtResource("1_6gbqe") [node name="UI" type="CanvasLayer" parent="."] process_mode = 2 -[node name="HUD" parent="UI" instance=ExtResource("2_xbhg5")] +[node name="HUD" parent="UI" instance=ExtResource("2_1vxhi")] [node name="PauseControl" type="Control" parent="UI"] process_mode = 3 @@ -8075,9 +8075,9 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -script = ExtResource("3_3v5pd") +script = ExtResource("3_n6fe7") -[node name="PauseMenu" parent="UI/PauseControl" instance=ExtResource("8_tsx0g")] +[node name="PauseMenu" parent="UI/PauseControl" instance=ExtResource("4_52tew")] visible = false layout_mode = 1 anchors_preset = 8 @@ -8090,12 +8090,12 @@ offset_top = -100.0 offset_right = 200.0 offset_bottom = 100.0 -[node name="GameOver" parent="UI/PauseControl" instance=ExtResource("2_xhmka")] +[node name="GameOver" parent="UI/PauseControl" instance=ExtResource("5_f2efe")] process_mode = 2 visible = false layout_mode = 1 -[node name="UpgradeMenu" parent="UI" node_paths=PackedStringArray("PlayerNode") instance=ExtResource("5_p2w52")] +[node name="UpgradeMenu" parent="UI" node_paths=PackedStringArray("PlayerNode") instance=ExtResource("6_ok87t")] visible = false anchors_preset = 8 anchor_left = 0.5 @@ -8114,19 +8114,19 @@ process_mode = 1 [node name="Asteroids" type="Node" parent="."] process_mode = 1 -[node name="Asteroid" parent="Asteroids" instance=ExtResource("3_b8wlr")] +[node name="Asteroid" parent="Asteroids" instance=ExtResource("7_xcalb")] position = Vector2(1228, 195) -[node name="Asteroid2" parent="Asteroids" instance=ExtResource("3_b8wlr")] +[node name="Asteroid2" parent="Asteroids" instance=ExtResource("7_xcalb")] position = Vector2(332, 661) -[node name="Asteroid3" parent="Asteroids" instance=ExtResource("3_b8wlr")] +[node name="Asteroid3" parent="Asteroids" instance=ExtResource("7_xcalb")] position = Vector2(1450, 641) -[node name="Asteroid4" parent="Asteroids" instance=ExtResource("3_b8wlr")] +[node name="Asteroid4" parent="Asteroids" instance=ExtResource("7_xcalb")] position = Vector2(769, 202) -[node name="Asteroid5" parent="Asteroids" instance=ExtResource("3_b8wlr")] +[node name="Asteroid5" parent="Asteroids" instance=ExtResource("7_xcalb")] position = Vector2(387, 230) [node name="BackgroundTileMap" type="TileMap" parent="."] @@ -8138,24 +8138,24 @@ layer_0/tile_data = PackedInt32Array(-1966137, 2162689, 53, -1900601, 2162689, 5 [node name="Border" type="Node" parent="."] process_mode = 1 -[node name="BorderBottom" parent="Border" instance=ExtResource("7_p4rds")] +[node name="BorderBottom" parent="Border" instance=ExtResource("9_o645r")] position = Vector2(994, 2618) scale = Vector2(60, 5) collision_layer = 8 -[node name="BorderTop" parent="Border" instance=ExtResource("7_p4rds")] +[node name="BorderTop" parent="Border" instance=ExtResource("9_o645r")] position = Vector2(995, -1616) rotation = 3.14159 scale = Vector2(60, 5) collision_layer = 8 -[node name="BorderLeft" parent="Border" instance=ExtResource("7_p4rds")] +[node name="BorderLeft" parent="Border" instance=ExtResource("9_o645r")] position = Vector2(-1755, 501) rotation = 1.5708 scale = Vector2(37.35, 5) collision_layer = 8 -[node name="BorderRight" parent="Border" instance=ExtResource("7_p4rds")] +[node name="BorderRight" parent="Border" instance=ExtResource("9_o645r")] position = Vector2(3745, 501) rotation = -1.5708 scale = Vector2(37.35, 5) @@ -8163,14 +8163,14 @@ collision_layer = 8 [node name="WaveController" type="Node2D" parent="." node_paths=PackedStringArray("UpgradeMenu")] process_mode = 1 -script = ExtResource("8_fhk4p") +script = ExtResource("10_qtnp4") UpgradeMenu = NodePath("../UI/UpgradeMenu") [node name="Ships" type="Node" parent="WaveController"] [node name="Friendly" type="Node" parent="WaveController/Ships"] -[node name="Player" parent="WaveController/Ships/Friendly" instance=ExtResource("1_1w06w")] +[node name="Player" parent="WaveController/Ships/Friendly" instance=ExtResource("11_7i7a5")] position = Vector2(959, 539) scale = Vector2(0.6, 0.6) Color = 1 @@ -8202,11 +8202,6 @@ position = Vector2(1921, 1512) [node name="FSpawn3" type="Marker2D" parent="WaveController/Spawns/Friendly"] position = Vector2(1279, -637) -[connection signal="Exploded" from="Asteroids/Asteroid" to="." method="OnAsteroidExploded"] -[connection signal="Exploded" from="Asteroids/Asteroid2" to="." method="OnAsteroidExploded"] -[connection signal="Exploded" from="Asteroids/Asteroid3" to="." method="OnAsteroidExploded"] -[connection signal="Exploded" from="Asteroids/Asteroid4" to="." method="OnAsteroidExploded"] -[connection signal="Exploded" from="Asteroids/Asteroid5" to="." method="OnAsteroidExploded"] [connection signal="HealthUpdate" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerHealthUpdate"] [connection signal="LaserShot" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerLaserShot"] [connection signal="PlayerDeath" from="WaveController/Ships/Friendly/Player" to="." method="OnPlayerDeath"] diff --git a/MB_FYP/scenes/starfield1.png b/MB_FYP/scenes/system/starfield1.png similarity index 100% rename from MB_FYP/scenes/starfield1.png rename to MB_FYP/scenes/system/starfield1.png diff --git a/MB_FYP/scenes/starfield1.png.import b/MB_FYP/scenes/system/starfield1.png.import similarity index 71% rename from MB_FYP/scenes/starfield1.png.import rename to MB_FYP/scenes/system/starfield1.png.import index df53802..6e93c45 100644 --- a/MB_FYP/scenes/starfield1.png.import +++ b/MB_FYP/scenes/system/starfield1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://my2essq6mhxa" -path="res://.godot/imported/starfield1.png-5ed8bd185a54ef194c7756d5a9b1188c.ctex" +path="res://.godot/imported/starfield1.png-e59b1d493359003a2fb46239c1cadd7e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/starfield1.png" -dest_files=["res://.godot/imported/starfield1.png-5ed8bd185a54ef194c7756d5a9b1188c.ctex"] +source_file="res://scenes/system/starfield1.png" +dest_files=["res://.godot/imported/starfield1.png-e59b1d493359003a2fb46239c1cadd7e.ctex"] [params] diff --git a/MB_FYP/scenes/game_over.tscn b/MB_FYP/scenes/ui/game_over.tscn similarity index 84% rename from MB_FYP/scenes/game_over.tscn rename to MB_FYP/scenes/ui/game_over.tscn index 1dffbcc..e79d4ef 100644 --- a/MB_FYP/scenes/game_over.tscn +++ b/MB_FYP/scenes/ui/game_over.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://dkyw6ve8ll885"] +[gd_scene load_steps=8 format=3 uid="uid://dkyw6ve8ll885"] [ext_resource type="FontFile" uid="uid://be6xxaq8drt5q" path="res://assets/Fonts/Kenney Pixel Square.ttf" id="1_gbk3f"] -[ext_resource type="Script" path="res://script/game_over.cs" id="1_mvgnc"] +[ext_resource type="Script" path="res://script/ui/game_over.cs" id="1_mvgnc"] [ext_resource type="FontFile" uid="uid://dtpvg4lmre10g" path="res://assets/Fonts/Kenney Future Narrow.ttf" id="2_65i3g"] +[ext_resource type="AudioStream" uid="uid://d4ebqwhtvkwvd" path="res://scenes/ui/ship_explode.ogg" id="4_am7ef"] [sub_resource type="LabelSettings" id="LabelSettings_6mqtv"] font = ExtResource("1_gbk3f") @@ -68,3 +69,6 @@ text = "Main Menu visibility_layer = 0 custom_minimum_size = Vector2(0, 30) layout_mode = 2 + +[node name="ExplodeSFX" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("4_am7ef") diff --git a/MB_FYP/scenes/hud.tres b/MB_FYP/scenes/ui/hud.tres similarity index 100% rename from MB_FYP/scenes/hud.tres rename to MB_FYP/scenes/ui/hud.tres diff --git a/MB_FYP/scenes/hud.tscn b/MB_FYP/scenes/ui/hud.tscn similarity index 88% rename from MB_FYP/scenes/hud.tscn rename to MB_FYP/scenes/ui/hud.tscn index d38cce7..225ed14 100644 --- a/MB_FYP/scenes/hud.tscn +++ b/MB_FYP/scenes/ui/hud.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://b6myj160l6vf8"] -[ext_resource type="Script" path="res://script/hud.cs" id="1_aksh1"] -[ext_resource type="LabelSettings" uid="uid://lnjklxelhfuv" path="res://scenes/hud.tres" id="2_ns78v"] +[ext_resource type="Script" path="res://script/ui/hud.cs" id="1_aksh1"] +[ext_resource type="LabelSettings" uid="uid://lnjklxelhfuv" path="res://scenes/ui/hud.tres" id="2_ns78v"] [node name="HUD" type="Control"] layout_mode = 3 diff --git a/MB_FYP/scenes/input_menu.tscn b/MB_FYP/scenes/ui/input_menu.tscn similarity index 97% rename from MB_FYP/scenes/input_menu.tscn rename to MB_FYP/scenes/ui/input_menu.tscn index c3f810e..03d0593 100644 --- a/MB_FYP/scenes/input_menu.tscn +++ b/MB_FYP/scenes/ui/input_menu.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://01tjlnox4crb"] -[ext_resource type="Script" path="res://script/input_menu.cs" id="1_u13wa"] +[ext_resource type="Script" path="res://script/ui/input_menu.cs" id="1_a0rq2"] [node name="InputMenu" type="CenterContainer"] anchors_preset = 8 @@ -14,7 +14,7 @@ offset_right = 200.0 offset_bottom = 250.0 grow_horizontal = 2 grow_vertical = 2 -script = ExtResource("1_u13wa") +script = ExtResource("1_a0rq2") [node name="ColorRect" type="ColorRect" parent="."] custom_minimum_size = Vector2(400, 500) diff --git a/MB_FYP/scenes/main_menu.tscn b/MB_FYP/scenes/ui/main_menu.tscn similarity index 91% rename from MB_FYP/scenes/main_menu.tscn rename to MB_FYP/scenes/ui/main_menu.tscn index 8713d0e..e486da7 100644 --- a/MB_FYP/scenes/main_menu.tscn +++ b/MB_FYP/scenes/ui/main_menu.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://bh3heupvlc1ok"] -[ext_resource type="Script" path="res://script/main_menu.cs" id="1_wxwq5"] -[ext_resource type="PackedScene" uid="uid://01tjlnox4crb" path="res://scenes/input_menu.tscn" id="2_2h615"] -[ext_resource type="PackedScene" uid="uid://fwvsy2g3lj4f" path="res://scenes/ship_choice.tscn" id="3_the1x"] +[ext_resource type="Script" path="res://script/ui/main_menu.cs" id="1_wxwq5"] +[ext_resource type="PackedScene" uid="uid://01tjlnox4crb" path="res://scenes/ui/input_menu.tscn" id="2_2h615"] +[ext_resource type="PackedScene" uid="uid://fwvsy2g3lj4f" path="res://scenes/ui/ship_choice.tscn" id="3_the1x"] [node name="MainMenu" type="Control"] layout_mode = 3 diff --git a/MB_FYP/scenes/pause_menu.tscn b/MB_FYP/scenes/ui/pause_menu.tscn similarity index 94% rename from MB_FYP/scenes/pause_menu.tscn rename to MB_FYP/scenes/ui/pause_menu.tscn index 69c23a1..ccc7455 100644 --- a/MB_FYP/scenes/pause_menu.tscn +++ b/MB_FYP/scenes/ui/pause_menu.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=9 format=3 uid="uid://btjj225d18y2q"] [ext_resource type="FontFile" uid="uid://be6xxaq8drt5q" path="res://assets/Fonts/Kenney Pixel Square.ttf" id="1_b7j7x"] -[ext_resource type="Script" path="res://script/pause_menu.cs" id="1_mq0ks"] -[ext_resource type="PackedScene" uid="uid://01tjlnox4crb" path="res://scenes/input_menu.tscn" id="2_ugxyj"] +[ext_resource type="Script" path="res://script/ui/pause_menu.cs" id="1_mq0ks"] +[ext_resource type="PackedScene" uid="uid://01tjlnox4crb" path="res://scenes/ui/input_menu.tscn" id="2_ugxyj"] [ext_resource type="FontFile" uid="uid://dtpvg4lmre10g" path="res://assets/Fonts/Kenney Future Narrow.ttf" id="3_p0x5a"] [sub_resource type="LabelSettings" id="LabelSettings_6mqtv"] diff --git a/MB_FYP/scenes/ship_choice.tscn b/MB_FYP/scenes/ui/ship_choice.tscn similarity index 96% rename from MB_FYP/scenes/ship_choice.tscn rename to MB_FYP/scenes/ui/ship_choice.tscn index ad2cbce..3f27a00 100644 --- a/MB_FYP/scenes/ship_choice.tscn +++ b/MB_FYP/scenes/ui/ship_choice.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=3 uid="uid://fwvsy2g3lj4f"] -[ext_resource type="Script" path="res://script/ship_choice.cs" id="1_bn5x2"] +[ext_resource type="Script" path="res://script/ui/ship_choice.cs" id="1_bn5x2"] [ext_resource type="FontFile" uid="uid://be6xxaq8drt5q" path="res://assets/Fonts/Kenney Pixel Square.ttf" id="2_kov8d"] [ext_resource type="FontFile" uid="uid://dtpvg4lmre10g" path="res://assets/Fonts/Kenney Future Narrow.ttf" id="3_c045h"] diff --git a/MB_FYP/scenes/ui/ship_explode.ogg b/MB_FYP/scenes/ui/ship_explode.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9d40201688aa0dbce9252b993400a195ce663c7b GIT binary patch literal 47907 zcmb@tbzGFs_cy#2p$G^{r_w3iAShi*N-GUZFC7a=N~)BSA}olobf<`P=aP$nu=GkU zz4rxvKHuN>xu55C-~T+Fj212f1vz_N?eH<#EA{t3vHH&C8zuc`kci18Q(LakG08*#GAxCt;`Nf%x3fXn5cAFYJdFpW8&L(3X2%Nj(;--LCXgq&`nSf z8-85Qin9HHm< zU+Xe6k7Nv|0I~=gw=Tx~bhq0aUq8RO&ELfkqQ<|Lo1h`S_BAI?e4VXwNbU}I<%o(J z-?*MdaTAV-KV(1*mHtnLe>D#VU@UStl$OMDc$eZM+4DZS0iym+ivbh_OcSK|{=RbA z{oXQ~{$VD~U9K0TLc;>`+B)jGz~f<}?`ehb^gwt97<>#fstqux4KtbyGr@$trU?Hh z9RdT_omm8tsMb|-=mnLDr|L~CgLymHuwSBQ&TD5Iq zwPSBNS8qAN6${|ho0p>jeYQ)@`+p^CgJi4!dwOEq#Q}N(*s{}=rqh*4UW=*IjSKh6 z!d)Q1r%$xF+T8>dA%dL{Ngye@KkH6Z>)%%+`qv4UZU=#$@X@rp(sTpX(Bd9-6ViuB zAt34qz!aAj`9D9wSMdT&gfYW9***wQ;N9yhvjhQRDYEgN68zN!FhpkmW=I`M-Rl=4 zOkMt5a6fId^{q}CYhA&|v?~uf3{WlszGUzD)c*O?P%30VnIIMRx8y^Th6^tk0oo{0 z>4Y7WuK_;0kyPA*sh2=sgQ3)wuXXo<(%Zx|)~Y(4zw-VGivrX1fmX2vpvT+kG;kfh z2~aw=OyBOuzij*8!{-U$x7U*t9T{&J0^)GY?=$8xCeXRZ6DEA->tfHPi;YuIDF}J4 zMac?te{(f+1`sHe_$rG3&8|ZEZxrW#h~nsBtLWqJ<+{v@+6KfoO52E^67T_0%q0Xw zactE}CZt$Q2@I>6Fyw?KYN@cp{vrx+Dud-aSscnMkc5A9>tW9aQ1Rc6`@=MNk9PRK z(%=rw3le4^4fAtr3rOke=<0hq8l-s4)P$K#ddwpN<`J=GSC~vR zkKyY~57Cgr|Lfp?k>h&5^F2-XdnVO#CiM}n{#`-MJ;7m8`4@uf+7C>IA9#$CS!oNK zj0#ze>ROF^T1{138PxEV~E+O(zEN)5Z!_EIe&S$o`MbWrN${&~v zKCt*C+q_LJ_>{R;@a6XZh8)|d{Et!jkx{6~IJURRc5hR^)qQd3Dc-36zo!2nN70Q5 zNC0x=-I)FhIp6tco&snp=ThJMJ4dNuz@YB(!VY=aadL z7+Y2T03R&!y|EGJ`-eYY6N>9+h0aUvgLKEebDHGpmDZxOXAP_F_cPD%3-GggS(m|j% z?;w$Ucn>Uy#qkQ6Z8N%UJ z6cTvsVV9$-Og4<-gOORV!LF3U0OeKHm&z-3wCpZ>*uy&j>XoX_ zx$7W`&_we-F%$#fgV1+cF=8m1P%W(}Vy!4XRC>sB6_q3{HNKV0Hv0lC6~2zEwgRh| z%Qj*_auu-kr-u;Bv9niA0Dav7Z7|rRIM5eR3E0~ZkO%O=U=!vWSA5K{F~exaP%RZ@ zW>~U$G#^j`_!14H`I2?CR0;sT=&}wi6=2<)0NOfI0lk33V#+!UwN)<71+*E0f%6Y8 zA#h|-7*bY9lApBw5r+HuDrD~imLf1G;0sTO5cA``hY-l&GP(hQkZY+WXU7OrQ&D2h zB@+YUOpBjA8}?j_g*jKp5IFv90_NTPF2^Ql$qagj3+!IG_klxAcp_ki4w|PbfR!y` zfS3l_P>EW=ls`g%j0V^*fO8LEJsOKXz+8|xz!pGT=OqD^Zt-_F!3TjjT!78D^o1ql z&HK*)JgRStmNWfd@* zO2%b1J26oX57;IE%Y^|3hb8J5a=-v)z*KsF?P?DPf&SdY1%19wt*0o;PIZUtYL3@H z-vKPk;xJlVo{U0)3>YWH zPZbP|<+4g4aYY65h5xNu5L^x%%r{|pMFsa&{Zj?20Eh#_g;0qAv?mN91Ghj7f})@x z+R0M!AIifoUu83LUJH^0ft1*<4weAAE{%TajepOXe0l#V{ZHFfY2_b6-=%Y6#8zl7 z`=&!Qfbb8#0eTV?`!J0(=H`RTIpP7Xj(L3*{_j+B60Z!Lq(=oy4SrmTvjbF@$3GVAlLO@gwUZ&U|$iQ%dx|N9=KOdXAFI= z@-Klzg$b8UG~!imsGj5wzs+nEyk70Rn(g{Urd3{w-Zf0fC0D{CO{l%sih` zpDy^(ZAzBE_*wwAzkhk{nf~qn2v}$Sk@W8<{{OH3f2sg|?IpndzKTz6^HN!yljbhZ z6$Z%w#I=32h?8XnU~CBf_~yCXYHsd`ibI)@itMGav;de)@UMPN{Gg%&Zzr>e`4pn1 z#R06Kz) zgaws=fT}}daKBh2u)_0AP(k{IFte(Fa6k%|(f?0f)k|={5DFPWB#t+4UkC&?7%hd#3~}NEB6+Cwl0~+b0z4>& zp$R1vKcXW5b;Y`Xo)|y=@J_t9bR?2m^E+`cu)f>|MFJaI46p!&{`HA@)L*Fo7np&U z1Qt=?0RFPIxNqcJ>|&nA?iZr#Swr{I-ZQ3X@gW(b2o zvXOnnZzJ0o__C?kIPz`;wciT&2XzfiDmByw@!T*TYB#}^!;>R^^OEMtHGEOgg>Y8n zpHS-b&)PccmwGPWtA7Djm;ycg^6Ask>YpPJ{yj=Yc0Ms#4GCqoiTEZh#OReJCcp#)rVZTvwG~VJ9clru8}N@ zFK06>_+8mlZaqcszcZ%keflmun&Mk?PPuc^w|vAyjR-wlL<0omzw(Mi;u^o)P*Z@1 zk*3|EvlCY=6S_j;5n966bE#NHNRv>;U21OMXJ)8>-_-QCqjwrN5>DML2ng}N)>Z;0JSMSNb4QCSDiXowu;rk+yH+8lplhmTSNh7+_j82b! zHWeOB)D^Yn44j6>1$5h1VUKV0H{m*&&oEdL%!Qv+wXDu%tWk#kVX3wvAg1zr_=XtUkeRK$F#RuGgB&w&j=os)Uzj3Yc zgp%`JLa>)(!mh59gfaJ=)V|LJqHt*&u8-SE;6ztqlppO@V@&F?>K~;;POY$y5J$Or z8c{YayrnT{$Zeq6)<;*hUqpt<$m%pMpl@}g)XbRPDZ0J<><@o{r-rg4PH95(=_{LK zNPbauV^wbhO~XAxTrsIRuviu;OB%(texHYcnyy_i+>6rPKVN0U4VzHo;paMze$QC& z0B&3HRa!S>pZksYQr|BO*8pO~pRUEu+xP$ze<$>COsxlBirB&Lw1TM0-J(9Kat^+> zjNaUXk1;HavJciE816T|7nNRrs^46*RUk{?qvOAYWv6;vV;=f8Fr2dp_)a`CMw#gAegrd1t?LnRgx`C! z>cx?*nQUBeVfuTQABFogXhSQmp?+3agM8bEs7Vf%=91RwkgVPB&D z=QZ2xGEKOIfLd(aIL**q-+<-so1FH|JNG_1M0FA=Frr%|FZ3{69<|unz~&ifo!_FT z^!Z|m=AgmO()dTu(^1sSky9Fd(n+apCQ)N@iC?TuZ&p5R$vD4jiNnOoD_ZGT3u$J# zbzHVZxiKn&GGGxh$dYI%^E*!WEezDH+1oyO&69PCIu{U$()Z^cdtVaoh|u*iMEgFZ z^)JjIT0;*cWML_xd+kP^GmtP0eHhMR+(ng?Fu&&XvHHfJftm)QK`n_Yb)@oKVQNSH zOrAL6zD2&W-3ZhRS!AppCn(&R9AD5{t1Q%3&^0;m+x&5iPb$(rgH*L}j@7B^1gh!e zD8=+L;PHUF9rNaIYq(wL;9^m$t5=#8;qLGB%m50T@&4JHkK8`oO`(hpbf26aF5B2z zF^=wRY{+<;ly^u}`Jmj8EZnS#D=@>4^stR#D2AA`q5#=Q!iy8_?9>Fd{$@jO=D#(n z5$KL3mD)RH@8`3T*cKL{Rg1AO@ujPId3uM;`X}^O8ciX)L4?^tm&(^4GP?Yu(_Xt( zZc48ra7D(Dx11e9D(h1#g{Pzt7siDV%TGt=gm&U+mF1@kGrc9vc6!DSN|+(m1NY2& zK6RFge{0Z^8Tc&86BhE^wHS)L$QxN>Z>Zh$IoPFt#4~8PV?=ag>g#V}5sTO*?{^N> zYPEG~{j+S$yJHnH7}f8S8DMINal)=s?ic%}r0>+0nbD1Yd%HMFuf9EADq0;(%_q!A zKHDA0IkmO|_WIp*y{GrF#_z1Db)%Oa!UN_v1}lQD2_r(hb`-_E0^81f`aj+E=ZQseihdKd9XV@+~9xY)$nl!(hpA}@kb6&t|+u_$HWLeboT88F5 z(HGIAN{8O9lsSIj9iy@U^V*=hKg`j{XU(=T$qbqr)9F7g|I2X85zPTEb4KX5=)4da zQ;ZJvKI!W{#!Wgo>G4}^l1n-(acf3kgd0DkkPPk$aWoJXU5DV}xR=iPm5VHEq+}Eq1ka3Ztm^n>pIp8h!ah6ik61Dz-ic6!mjapmkajn z;6-5C_^Lf!tmygh#SkavXE5iD->sg(3CTvs>o+jFLC*w424CE%YN1H+>Vk^$Zm%wC zd~y3?e6Lwfy~(1=Nze3!ixS9kd#Gqg_SR@t!2L{JFB7vsY@oC5!bF&7^sT$bNv4-s}vU#UcCW0w@_!PbK$0@#+g2#;g zkd=`gQu@_1-LhJn0*a2n@R26L!DG?!r;P~d&qPxZ0L8npZv-l-978-crW6#B*AA+LGG7NzLIsDVE%eXtnZuS?5qY$Nitl) zX+hj5j_mB$Q}-e;?O!F)FCIBRphrp{*h5V>ZH~Wr4R6`4B&Lz3E4M7DVV0L7Vb0Wf zw9^Ws(f6{7v6?cj;PjvSsCg@9w@phStB^a??RU<(q}Jid((&K!2e>$Icy~yFe`HG8aWiK&-*2t zQ1dy@s-EWO#CG1jb{5{r9q+h-MLUxhgW>PeSFcNs5Z~h3q8!TN5#?l$HeYyoxVM!9 zo5vzCU|A0vUMa3B^|zXc;T9jSO4z|d19Cdq)6&vZw{u~o=9sW{;A9PQr)q9LZBe~f zvLNjxc47EL{e@u6Hl9wKw_f-QDh= zZ`W*ro4Tqzoe%k-KnZbq+$W^FBsW_9*q+ITJ{*<*!0~nPcyTw(O~Be~^nO}8ckAKF zSN0HuTA7k?RmAF-yl*U0`+Ucp$M@AW{N9({jW40BAj*{3P=+Qy+nc&u9h)u|#FRy{ z$&r`%`fJL&>4Qqw56rYT9Ucmm^hp~@h_B>G5ypF->^f`dzH)E7PHS`=fpfp+>|u$D zpqIiXTZvLQ=kCL1=WiEe7SRT$XWz}ph+ZWB!Q~YI^9O zBGaK5d)8!Q=+U$mc!+ECTDfLZo}5&DwtUZ=z|&mjtU`0>7u!wy#*3Bj^DA3USN2mW(OCe?#^jkJV$G`MN(}1)S)m)WhfqGfgr*pzoY&viADD zv2Vw>>3xsI2J6f7=fKVy4TF^ysVj&jU7KhTD^WAExG7U?!@}ps7rrNg%H!G?do$Gu zditjHH7Dm;MeK2*FJ@qIcUlY<($9BiuoG$nnQJ(&Y+MyVEj6MwRi)2PbsM6Y`*XJ4 z+^grnQ0z;0qA_Yrr5A$JQQeSci815+S-NNvxPIe!N8bP}ZaeU%N{9pQ?bNbaG+(9W z%)(M*bh5THT{Yt|_eIf<--B*m953u#r&`^|p6loI$?93Jqyn*bX2{ZSu~l3TVL_#4 zy09csdzr{N$Y+~+?EcBicLg1Ii9UvDEPtkVo zHVkXHu`_zg>*~OnWHNmpo74ZJ?Dc^VRQaT^0wd!#WY!mhzU}4MKLkG*ue?yn!*4i~ zhYxxiA01`B-yJlUGRJJm24*!Wr`ouLGjq|{A&ySxwo%sNDU`g&^`pGt_?c ztW86aE}%Ev8KET?;II%s=Xwz@5k$1+sT5*9;Pm6cA!F>}@{YAn$y+JOt#JbfkMorx zxU1>V+*XWx6`|hasU|E!M;`bRU|z!uHKl$?rDX4#kr)Qmwj;3FSPVTynZk0v^6&$t%%3;?ZNh`Ga@==n&(elC*$+Z=laK{ zoHW#F=nsBqW(_(P&+D0Sd-3-{?22vl#mwan%D&_q&J>2c9~u{mG1yRarFn7ch-RJ_3V=<&9qvCd%~SKU(@zBE)j_kxy9|ApdP+z3`&_o)c{PRyLhcroJW2%!3ep{MeKZ zEpyyzs=R&}->JC4SM8lK)%oH}-bB}oB4@H}FNavS__KG`DIwlwZZte+g03h>y}%S5 zH6J&y|2Tyw=PGQq(|==}CgaTSK=g34L^>dx;?cGAhZtI=Z!*e$%@+;cJM4ZGQO@*e zB!?ZZPjU|qMcyV~{!Ehd_G^kb^ul42#>NXj5s$F(AwoXy&8^O@jb3Do57Wi2ssLP~=4XYK z1@z;}shyJoT}}tRQllrmu@M2p@5p$nm6WIn!|r(MUTpC!=7U`5N~v?iw%Ib4;{GJ8;RzZF3tDSAtm}19nd`GJqDxt;?xrmMw6(XW zUE54Eld(t+gsjb{SDJOA zsKzlB7uldEhy0*EmQxPkbp!mde$g-f{hnRyxnI>f-wSnjOOkF`OXWiLvEg6IlTf0IDL$S)_-1-nnJV*PTNma2FK3N8 zRVr3_roEl{X74y#zNd>ZD#Xv@`|V(f z&-y_;?*si!Yvq~qt#dQjcroim-RWzSz3ohS`%d^cFT8csqyrglg4+B|X!L+paq6cT zqL{GeN$K(T`tYAN)BYDyLu|3OcFmer*dJqQu>ll~ifXjyShtD8Ro@50EB7m@YVdV< zWLD)aL{1F3%wEX&R3Nd-Xjd=eB9{YjSS3%ja03*X6$`8KnVO!XeY9qh0|!Q8sL^n@ zxGFI&Zw991C9$h5YrOt)p8j)-m=&tY9J~b+6g&4F9e9K5 zS?BiJ7np=uexnoTDf!@C;VGefDldugg9&%&B$~XzJMhTmEdS5|MYa3!8|x4B-MPtx zciJHSbD6g7Y*W6M+*yW?NVLL=FO;Uy&W0J+niI2&@7%f2EHm$2t%frpF- z0;vV_Z);zGq4>oIeugO#8X?;aTe9m)a$wTpPRXjDLyWrqc&SayA}rYORjr|Nskc^C zzZm@_oaf3tzI%sM^aj(1 z4#xWw=*^%4>=nItphQ|ef6Pk zzn^X+r;EORN#crn#gprayNfLQ=4%gTp(jaqBvzm!D>HkI+~tQ$TJz0&n0*Sbjeqtd46u^lmTYTnY9Zo1OtDpY|V z@;dH!YS5Kb7hRvZ38LL3Iyjf;eW{1EbdCy>bXNGlo9W4vhvuCR6xm5lFP0J2bn0Sn zb={bjrFE{w$J(t=%xMb>_z;NBPeX&}MfmV)h^9Zq`t@~gB7k?dm1cu4KZ+QexJ~mM z4u8MW#WOR>eZ57Wry9<)?QZQjYnJb6(~6!-OckIa7aL3qMevgGi8B3$MIK_JWZQ*^v`}wnu z!@&{RqQ5hnSi*RHjdq0{UGIKsrstn~f~21)NW520_oIW^(pWdljm#YGhZW*C0lx5GT^)cw*i^9GYZO;jeTuDJhup zrw?ta3^yX&se8LN`_Qf5PZWfIO9uNrVt<_b#h6pglRoOQ2pJ5`evQdOuiJLVi^)d3 zXSZ|)K3-o9kTa*socCdJN~B3&=U!{bpZgYl!h}YSR~V!RvLlLfa~tCI$LUoGaM2j# z%gxEcFTZ1zV!PK*HpP(CLUk8vHRa_u<5PB1G}mqHsV6JcJ*n_<&%dAZBj2WK=#tC_ zy{~j8lWziSguJp$p-&HQVJi%5WDU+ULDBn`t zjQV3%V^m#-lH;LyqjB3o{GA!C2ao;4quO-#&v|+F*fsO#9m^*K?wV*lOB@r1a*j+6 zMi;ZMy)nohYt5~>lQp#e5#BvHwL6i1dt{Q-{>C~k)lu_-H1%z-XXid&>xpzBx!l}= zyDT%(0fj@7RH~ZBlF`f!hXQ8k3!9{pELxA~&d#Sh*{5vnAB#`)U8VbH@#&q5F*19N z&^4kh4^M|fl(iSaaeW|vaO&cawno^Dwn019zF}s|ckD1Ge`mx%SY}=(IuB*0Cw*Vt zqJ(-d%$m={Ui!zr_bD57>z(E`c|Y`monY;8a4QGXf5uKBSNmAnwPL9 zN?Vr(?dqt_bg>ry31D}iKdm<)uJxdm-l-!n#ywJO<-PU0OiX`f1VL5&BRDkl16Kkm zxR^epKfts;u~{)Cr_K8Hafp6mFG+x)aF&LI)EpPMVz}T%1EwysvLvikizW-ZV;7wd z8B4~w9y~}iQL-yg^Bmm)_MbP3tL08*vf!1Esob~jo9qT3c?b}e>k5hL=f7U6IOJHG zcIyiaBCRE}a97R#UaNPObkps{t37&w90E&+#rlgz9LuhW@9)F?JP%)enVQD4lTk=I zL2^#OjbtHdvXMOWD%A=%V|XWG913kBx&l>Pmkz)EsvE;Dx&EOoKS$E17ide-eKnol zadZ=IN*znl@{PFRoIay!q3IG)@|3p5se_OQ9FvMeP&H9dFGl_SWJ6l0J z(hQDh8)AI19`IC_C3KKU5w*;*P0jeXk_ z#Y5E7{XEo%Q?`Yd=GN!^J%P8n$1dJ*TPVsNC)bZveOR$lV#{xl-ucwG){Xw<;Nc*@ zNo45#ylndX6PfGLgr+`L56lv>^I--#vo)ytke%*jMN%1c($gh&cJ7CE`;O5o4JM6@ zCLni`shb?4uhOpdAxlRZ{z99~dtN>GC~P z?AhwRs^W;50D^`i_arn9g)oA)P*WAnWBierVARyITxLa@9l(eEVJJq+< z>GKVTo*>tt8#rhBoPG$p3$f?}1n(XMwKI=A0wRz)zFu{yc0)|#I6Y&(SApcI8%2Yo zc+kZ!_b6_rc&5&a;-u)?P4@9kb}#Czymeel+`l?4AWM;ModU`8{(|f$(2>Cwx!&pN z&(X6>eUYSVJ#n{n7TIuv#QXPa$Z2A9YYE$edu0Yty92vkS!iT`v|b?bOQQl>V#_d3&vEe@0AN{2yPh=g>Yj+a`y566b+WJ%%t9At$?L=qb_14Y!UlV_+c0apgpEA$pdtseJm^7-VVSppt|lU- z2D<8Uyrbw~=hv9;bUGLD7QYRaGX`&T_8-MqaF?_$eGS>>-2%xexxM(w;@%JK zCEg)2dCn|_KEyJ;yM0SiT)&{=z1Y#AY~LTbi#kf6N}kUCnZh;aUmo_BXlMnG&*R_3 zjZ|V>GXWbX;w$fas8svc;6i!211EnbT5Z{%)-_L=3XwiD-W~heCy%b}3`WNtee`Qy z*y&NefgvY<5LQ*fjf>Aaydi8?3VQtaBI1ek|6D`>pQC^_hyAehrl!WPY@9sYJ)CVU zjZMu=Ozhm<+}*L*W-K-yi;XDa7$l5JfF}A*Vrk}ey#|^pvwn`HLyB7Z6+=#0SKvLZ zJ5h7gjr51(Z4(z3Wn>~r%g1%jPn`Jrp4z>TVRg|B?g&}os^=R}nsse9 z4nqap(RAs%_LC&up!WW(&{=WuzB)n144>=g7N(e*L>(!r`C2}c)f3gd%-o?6$nj@( zf4(Vt?id`g#figc%Ev}2D=FQ>7;9_Nol*0pSm$AxE>Pf84 zFZ}c`Zol8iNTU#BBC(nvG-8S(GDF*J&vq-PAb09lY(+iGG)qX4r`Yu>T8THdAmF@r z>$>~RFWJ$Jr>QCYy5$E?O}#m!OE~j3*FI`{r4ag_dgzM`$W4rG7Z16xGJ4qmX%=-~ z$lsUpnaV9y^NAuZV@au$Zy) zyUGfBL{-@l{nvgk+*~}a?&gn{tQ#3>Wrk$yEI8Cs!ZQbR~LKU4#g*|F&l=L6)k$%(Z z96&UmRT>+He@MAWm^ECnI>&{mE0ew^iF7x}CLM2uqD$r_?N0a30s<<>8lzdYPtDSA z*AzT9P14Md?9WL`TuhiQ^!UxUFdJ8QIJ%Q=^YDN#K%Lm;w_=_k-;{c)khaT$ zRIUa~X<^mk5w5c}nD;%#R5&aeOe+#*j@ze$^&Iu zwLhycsy|#*#osFDnny=Lw0=0Ml6q|R37VeLq|erExi|o3`W=Y3G=a#QbKl1iRsygCQLuq4GuAv|o$sDOAO)VhEpWL#D z@FwQf<5?C@UhQvw7rb+LQCJyc6t3A@lD2EPWP5qOWGj`f>)Yr8@d#qCX@BgooykRs z1{%%{w&}*G$L{7046jwf5BhBJB9xwcZBC*W(zPsF8DCbN59*Xa1ZYo>(Gw0b_+Rl> z5?Zv(7KQ{9VIK-^Gl61A_HNFO(Fed!cyEh{G#t3Ec%-0L%oW0u-}AUVOE!G!OGcCH4avdNQ(2FjyMO&OfJ)?%N9v%$rlJK48_`yai<@)d+iMm^Js1>1 zCzb;;xFuTjT9H1c46!!E?#UBZ?2l6O#2ws3r~GoQ7^u4zdVT3Oh_um3ZAab&;+bj$ zZaO!V6HZ>qWPQu)ED^v{OM#>lJ-i7ylHO6mtc}&JjXXW&{cP8lQbbm}6~Cat9y2;b zj^^w~G8ZGZqx0gR_w;E6T&RrS3s+5pV#xebzFIcAtX?#uH6CR|L=b95U|Jfdw$6^B zDZCwv3W&q}JBBjL;|JEiKf!0v^^!Y%2z~vH`tt9?`H9lsFeV&W59kF9|MgmDz7(a` zCjvC<$wfHZ8e&kdb@oaBAIi6H1cL4|fhsR_a(O)L@elQ7dX_VGz!_^9DRVYH75-RO zOXuR5rdlramO3K3VfQ!r&h+$JbTxGYio6XoBUv%HR?THd_iTKb6sJGki})-{qzg(d zXq4hP#NPg{FW7lOap{Yle~rPxAH-IUBV0gdFPf9rInJktNNs@l)`uDKpHa)(ZvzGA zZg}|}Kg{-zoN1~o?65+M#HjX`PeGS#6TYgpwD=)N%Dp0(2e${3?CPB8^i*HYreN+C zTf6&`4^2RL+`@j#KWJ^Sw_n-%(Smz8VdJ{Z`_T4}jxYk6*_O~jVsM)v^V#$_u7Q0V z%io~Az?p@OHe*T8fLCYZ-uuT9qE0PFySe&4nwwULOc-<80c%;sx}_J^XRGck=lFO$ zVN4Y{vq4zbLds9Q`7Ha9huTK5?>pqp_g3bC-S-D#qV=3d8fKhbxlSyh?*_|YW_~p! z0%S&E^Xi1a@kDYWe1VO9;)JelK7Y-6ud^j3Fr&I@{G#LK3u)*DnRb9Eo#b}t67bb) zXobJ2b9hqmxyF}|BXeZpu>oU;cC_Pv;V``W*wCKz2bD7Fv9cIl^PLQ_$93i!%Cock_g~RoQQ~oP{TTa;d zeAdApW6Mq}RiZgXLo)CdMMF(K%e;}HnzQ)cMQi0(uZ=2q-h4p?y++>cf#LL}k>i4U zeIxd3)?i$XYN~8GUQ7XAQFu?cc@Cg+h|UC)is*+KQkzTfMD@A}jTjE~$L4RZqvmy@mZaYvk!Vid zm98!Cao(>z5MZ671t*U_C7sB_x>i833RoC zMM_q)=NeC7M6U`R=K`?t55hJV4SQ>Dr>@_WXh=7*H{|T$NfD051hKC2POjWYmeFB5 zmZCb2jArw|=;fjO30N_o{GQLwrO$zJspFW|B$>*`g?~CU4m?8in2k4__y3%kFPN1~ zDz8}m-Fj^{JH5Q~n;At*Ok@}C4Rb*lK)cTJd z`Qo#g0WNw{-okhQ$*f6u+B4FAA+Z-QF&i1)Sq8SrEC=EH!x{WExgotP+WOs@R* z_`&($pilpO!V=jL1}}VqPQ;xbMoTe`K3LYYmWMM^*5HN7dXcrCUPiPx6G3#-3F|jw zBk+I8L^B{=S_S0%7SE>%qT;8Q$d^CvR!z@1`iQG~6Y8dNZyY|JiZ346+^}}m5bsU(a@zXSnh-DN zXWa%V`IH{kE##gMUT>*vY{bTZSWg|#z?N!+)eNDZW=yYd$7}lb4@P*qnLlvG5_YCh zv@C~H`la@tKm=DMCaXJxyAbpZXA{$q;c>L(hUwv6b55z>a%nz z15Z1g4Ch^;_@onuvjea!URsHInH^q4Nz3z{J2edR@RIrlDq}tNnvK07%xt^kDOt%w zhmtbZ;&*DoeW@%`8NYu{ON$L!vq<=@9Z#(m@qUuIzTNa0 zL*dTgOH6<9boU2a)%CQNKPQcYEa2l378%C)maIGzy9%MiL4;~RL&%Ab@J~ayaE#ld zGOXV~_xMN7x7D;scB?vSY=>OSW2*}lY>L%~PjjA%5>;nk`nlKFu`6E?PlSKG zJu39<4c>y#qxR&iJriQ5>KzTGseE+88$4vU!20b!*S-h(2fEqXeLwkD=>CSUwzS`_ zS~#ICZpoQs&(b6wHPdr6v3k&CiKRR)M?|l^s;?9s|M?DwZdyi^Zy@-!Mt&xZ&SX(% zf2qhxC{p2Df7-Q>eOoIly~XKv<{YOCQqumh&m1Do8pMW#yOGQz;o&QiX50siZtsY9 zzdD{PpAg`v+Qdy$^-?{3KzZz%npjQO;+%@d%9PQ|+dew0WXL&}ZGsd}&qG`NluQ`a zUwdAvDj$KbXrd{)qjpxCNT-f=Ae-uG6jmB~xpF?T8Nw{!%1k?%AI6stHtlKRGJibu z=S86e6~wE4M#XUuYddtRGo5#O>QWjxtd{R*(gcsi7TR9N;epASY}9CwPg~O8>1}OY zTn>LK-E@*TXU2(J$3Hjmb>)S)?M`)MyLJeY-p9UBd$4|_^seqi@Ro+XiPNS;qmd^i zHM6&&K>>pWyyC@4nui2dohI`(S~PWtWiJp$zO}T*ExM(GJvut3o@%=D)n}kCFhw3e zZ1f>^KX|~?Y$Ve+i#xM%oR;=s^*ZO)xa@;YlOt-rjbCQpJaH25Tom`y-Ne)N@S`=l zi_YHAooSY5-F=$5tYhW=$upl@NLvwtKASK1&Z23o4m`55;BQ&Tm_1sa(z5aw$t|g4 z&O?5D>lZA8wu9v7iVPf!cT(_j@%40|5r!`tDb=`BLDTRYNBv`-qeaATUtVYrCPaEI zZxgQeg)PeWtPaZS#JcY@fMY1LX8p=tXf5NSn*ttJoh}cJl_WTR@X43q@Mt71=@_%0 zk2U3)+fW@v_n1k(XjH|svK40Go z3c80$vB`gNU<%!rSEzIC85wmnt0nIUt9iux<7j{1`L_skHRW^zIyD@#QD9*DsbjCV z=6q9P%J*C5ZWfW`f)QT}+=bpRgKunLp;u}H0zKVYPLpA))-*JwTUJfk7`9unHpxGW zz+et{Pj^x~>K=>DXUqh&(SRM{>UYom^M?jgMCxTO#tV!zjq-UjWUBjR<};3`!A{@Q zS@I6*mqncJR=rIa)h&#hF|8cXb2%&JcOv}>o~xGDF>i19F zaQP`oub-@5lPxt*LsbjdXpGx|MZZpO3McohM&!!B6ohhq?&4LW&vEd7=q7axCfPi>^;pzqjm#lyNM!mQts#TSe(>Sae*GjZuQn(l0s(Wsa4iiT**(!vWy=jQw zUKbZm*P@eB4Jd!!@KETwFZqIC_MN?3;Zd6qf3%CfF^gvRYnn+P#_S@ey$sBj_~XY+ zz)4})RkJTgMSF2=XT>rt=hg_LLm8y0aa9VvsgrrV|GX{aY;Iz8c=ur=(Id54 z&aSx9IbCBML}pANoPUprjw`?vE{oel0xnJD(_xrg% z7gusH*C4GSJXJGjS~+>aU(% zk()k>`xwnl_ow%T2lko0>A&xWc~kos+1%EB+;o~kKLE|$<3r$%pKrC|V(IaTwVJZWqWLLR_?2Vw3-=!%#1p?y zcEp6e+O##JA09j`9FM+Uxt*LLcCYGXl2)XTB(uB@`<_-ayYha;2W*c%ob2iCEtd?8 z)_mCJd&*$)_pi@_4}YkIF73QT3sr)^hrXfSazJGxyBfpLQ4*&)H6<|W6zN3P-gOO7 zxTn6HS-&G7p)x%_ZCHt%G_^{ku^UX75x0_vJa5Te^zc$3fo5Z$#5JWPSXD5HIaYBE z5Eh(_IQ3lR!R2{0tSyV74Vglv$s{!T($=ex2OF8OX+Y9O@+eUDMU0fF z$K3XQn&BC)cJH0m@{Tb!E7^cM3z2BEW&(yc&!HeALnM;+X&9HBvEnOQ$$NpJPqk|i ziC8Fg%*?;d!!uuy-03&MH|EdO!=(AP$;8LXo;3PGKUN}ILLr->@zjE~&E|UJl&_H$ znFA|2!TZ-I&avh`M;AmmadM&jF@V%wm}E>Z+2kcE@p(Jjc3zX_OM3JvhtmdI4)QGL z{aQ*Iod;99eDgAPf@t5>!hJTUk=_OflA@fak5!A{Y-?^~d+I_zntx&DUbg#yP1gSX z)@G{GzZ$*wQ)UMjaql4`xuek$^61XQA}ROI*kI0SHnKL0`toD8Q>q@eOYcEW{X5~z zRiTw`TP(U&C<~K6B*5-Xou4XtJ2wCM=bhOU=fLFC*s&&8k+J}Uz**;7+$4`NiuKfo zR+<|R`jJSc(b5GQB5f%d!zRww>fW)iao1(pj?JqC!0mocuHYl6WwcpFsHMSQ^D zu&{A_Xx^sKQ*#LL?xTGLg{lkd6JL19hu{P^z7#GId|gqVidPbSv&-hhOf(bESl$ef za9!@{s?WOrA%Eay_^&0GeWX}cGgXrEm9^uP&(`D9r7j#TFY@^C|$kg{XP2a z56Zo`h2p*9!#3NTf=89H2UcL&B-27&*EMhD7_7U?v(JuPJRbRG&CkDF3kLJfZ3TIe z;)tY`C*pDkr;(A>XPqJzB$%W31gCb?Jaw8A5e!tnSnZ=9rwuTr=ULUqoCvOmc!0$b zPOB`i>?C+fQbUFkt(?Ii0E9ClBPh_M{cvJZK5}W!d%f947;E5;I~)zXBss~@Yk?7~ zy|)az{f`d9l?`RaEAFiw8)_7Z*eA?z111*`>Lqn9-YZ&_21(ReF&CAIUA`YTnY19*7Dlvn8Sbn!=CwU%48+-m9AMqE1T$~Pb zDX86LQt|Kk8PrRuL@ItRk4@{-N5bKRHrKF8euLoJP6qlx>R&t3Hi%HMYw6sZbP}}i z^Xxlx>;-7LCamMre(i9t+XLG4cQo4mM?%A(b9f#8srvu|KiIny^Yz9|ySI435F3f^ zy7+apSVle)pY~+AOOwM0&(h85l|8n$8L+euqqon~tGs(--hbPy#hSqxMkt+!4;q70OL<4x+FQUjs6*?B1 zSwVAef_e$WK+T%{gXm|Xvb$m7pZlP{<$Bvkyhje4Q*uO(Zk8|S5}@md3Ro9-s!CPh z16^a(kZhO!S5*PP9kKlTK}p|Lo6g9^Kvc_^6hKr>_>t(akudm%`y`51=1Q2Zw&OB-0T*d zr}hHeJlEGqbNkB+3~d6$L9E)}9R74PQ(49xL7n;jz}FC$(Vv{3U0OpZb^G{XXG2Zrgp185DU z-~&SZSkd8HRy(pBfEVw{GeqDBX#Wq3`2de(N( zUFio`C#sli*z|L{B2C;AL5k%s43?wMze98QijeFhH6Bfe9v^r%+aBJUtr5{ocVE{I z_l3+Wl0QAEl{1#95BAE5#$vn`2bm<>7;!eC!l%xCc|m@}v6Mv%%)isB9?M}=0O}qw zlRDrX8`cY_0wwHB_^;hBL4#Te>j4)>zec%4@15cBLzQGZ|0OoAFp6vOeu0il)nIi4 zngzZjzhFC==@v=fs3iR>jzeahY&UQvNx7t|FF5iKAL`MXmjRh??1;Q?n1$>fi~9F; zG+Drp*4ZBee~11+LWi4ccHmLAW3RbMU~=;HGW*$v@KI~}=k&>Y-AFJ07+3rnHA(!fW_uGWQ*uc5Qtl_a}AMVrsk|wha$8SrWahMXg1R z{C7_U1J4afBX!)A#mC&*Z^x`ysP&`s;j_3+<@u#wvm6M)h69fcqQk`6$QNmJo712s zbHxz(b&>4wFjEv7j)w%UHj6mTUDO`NL(apW3`x(%kLPzqJo*AX=R~NpC|8P%;ED(3 zlNG9Okuw9z zt0>IAfDaz}Qi&mNa!l)YoOd2yyIcP}VafT+cdxk1q$K#|p{UG9U)Ij0o{C<7tgP?u_UYXiN+o_YY}m&a zQ9Jym^)4@D{6fAETeeYp@T)0s4#o3u=1G?#J|@8^8sVi-o~5cb*ry#ZltVmxC{G3CMoB4@th42R!v>epK%``D|@Q&G3V1 zzh}oh2*n*47sIt8!L&v_AJ9r6@*DKnm%@#J!*&1kx6nqr>Nu2Rchx zg!GwRmlsOE9TnTB3^!K4D}i7w`M_R_`MKB5MxUE9`0yXoVH)+@uVg>*vnjKr0hHVu zhn@Jn7OOM%{>X0|%PXU1nirXtUZgQ*G)6N@pAynR4;eb?36?xci)C1iEP{)3J*qV^ zrGuEqIJdY^TO`VtL0KG;W-5E;u?A0=Zbdt@RtV=ef6|#m+|0FuQMx=yA4~94lvm+n z6$?k)M5@f}9hu2OQ#E{Di7uqeH?oF2H9CEq$iKs0RcU;fRaf@fuGFW!%`M_V>w5yB>6;as6Etm;Ks`-oc$-P$CSa0@t?Yrw|Sk*lTy~dLi zJZ~RbtGh&%l4)A%ap3sBVGghV4-?M)`y_lQ2oSXM4PY`?n9K?$bKc3$+0Nd{$r~Kv z9}olrI<<0Ag*3_-Kw={ooL)2{543RKZZLYaeO)Oa?Lb3Rq&^tf44$mQc)2bF=4j+@ z_AjZ13lx8e`MjrqpeW5x3JZn3nnDX6hH?}=AG{~zR44ZQ(RIgURAhfKH$RKP)*I*e z0fVo{o9$6YN$P4XZOU{qR~4u{dPt2#THnQjWM0{l6b*}w+o|&nKvB{Og|0L<<}PEt zq>BxrBIxhb)kE~tfS1}53PSDlGEMh?&$pHzr=?b!t?qI=bz5Mnj>v-bx$@U7&ZwQS z`Pbifj_Z-g=se?+@WC?sh14Z6EP+g+9SyWDkJ>}bOt;jN^`6t!e}&WKf{WpGL3|XW z+TM}7U)w(u;^q=31tY9j;6Z;r3cI|AAvCLx@Me`T)ZEE#URzIaT|NJYml3MV>?5BZ zAR^}1hH69Ek1bY?Sbs>Fotu~=9o62VEY9zC1*a}QnfsTM|4M$eow1yJEFlqIDKbyF zmX56ng8SgXMKRAjrLjrz!%oBI%w4*BI=X>VT|$*6p~|*L?BD#WuIj8uSJ4pR%FH6H zhyy9plx_PSwf=BtS6Rc1`MKY9 zb!xQ{0zETcH{PD8~MwcbPV-^$?GBT%#=dB&l zG3miyO-V+;US;FJyBgbPoQH*7 zduyhGnziDvqL``FiFdA~CXC%bb|^;az_@h#c%7 zaBX%ipXtAxyk=5cxhcB?yt}Nc+g>Cv+3g8oki%r5#=Zoi#uHS$XK1?pvT zT`s&oF&eK{Gl#?{s>{Qi6ALUUM*K#pQ&H8|6aL6@eIAV)Qv{)T*@H9>AhGKM8}z8YOt zCxOmIMpgTyHs%I>B~Vb`h7@n)##xAwuv7(4$RtHAQz~=x>}tu2w>N3BsDayN>8Dbpz1BcZLk3%oLYVsJW)a5#z%@7 zb$yOyMf!g4Ag}dBRUwUMLlmVz*9qcMrY|IKd8N;pg%azh+@=kYs^pXmnP(r-^m7CK zKX^glwDgq1?@h(%rG^qj{j}7ipa9Adl%v$nGwzaj%;@WpPz%Eiy%(6f+HegRX!`jf zC63QQM4Mkm_kH%ry)?<{`fK19#$GLvAx2b%;79B8^=;_PNZ{>iIeybu0?wg@i3e$Y zwGON|tz_3G^{jhFm$H5q^$5PcXmOLkkdBH^{;Jz#HNZ&o|7YGsaY`Ben4vV)y+7=1 z#Ff{a{$;l7nwB>B=cME+J|rAtrCYPW2QG_bd%NUDY5gi7l<7{xXH zS1RaBXPWChdc$?$sCP{jW3`sv*1tfwM642j=U7B*n7{Fw!(O)#=qkEP0*dCLEZV#;I|+{Z&W2<81*HRzMk{@>mF>_YCKfeE7SZgTq5HRh z4Zw9%w1KS?VozRYy|zDfyDHQoBWxmwNVSkj4N><|1B`uVt}Vuh+x3hOT^XAna+YOY zp%4ENwh!A38Iw0O=2AY0D4tf=RPzlZwe$FWOd5&X+cZ9V= z=Mok+^Az$fF!ZRnmJ|Qw>vrM8yY2&T)s34J)oE$>J?tB*B;LEeMDyk)n#UmRK=D=B zOxjAh{u7t+$a{e8b%G|}uTcYSfub03&H`{jP%eYew1dCD}^ z4`W7_P<3>!h(rsr9MUy4Ac1ZG`i{>#w4mKGUMifc(ii8h2o~(hlA?Rk&THQ7eWp4i z_&OOmKrZ$dgu^yu-Yd)e6>9}xso(m?f@1%DSoHwsNV9HVEX7GLg&y_ac%LyWeuufTdy@V(|P^z z^ySR5<2lxkpFRWrge8yNvLYF?1TF8dbpCL@Lb($oxW0#(Xkzv;48MSd04sN0ylI#A z)($>>Le{E(rmi@{<6-TM(S`!W1DO;Ql=jTgyu}2ZHjuj+^l5BV8ObJwBAbW z8%p*S@#6A|${&Ka{0%NVH+1^O#v)@KWR^c|Qygfjr>v%=(kdrz@aA99SOu~&&p!A) zXU~D;uhjs0B3orRJPXy?(AU=Q{8*7vS$#WB`1)mEb|7}d+ImoNNleiD=li=AilM4avbYI~n&@%pS6}jk z40c3}foUs_VO0*(SbnRy2^JHSWVY=-&0KZ7$ePLitKv@9_KhNLZsn(!y!yJIbvrT(GgzizsT2gw#A zWR4l0&i8_Jt@1G4Z^~2*mA|;{3obx495p0+6l)HzRnCa$LAx|;-LXmKLq}qpAh}uO zL_aUo4%_(CV#$YNw=N4E7$p>@&AM36Jx@cJu!;fMY%tHya6Y(EB(VTX?u(i>QbHun zjx~t+>S+*=kWZ1^B&LF}xO45~EHL6v&h3Qc(50Adr-5T#q5}||tAz=89cSN-Ua75Y z6`ogxg2g9-Q}@2}R)7fdQb4W2-V|{p%Tvt8`-w!gHjC_1K35%-2?&eO*49 znE2eDQCWSm2=>)BQ10zmd3fs1)*A}T!wwkJUK6s`)cS`K*?xRdjoT(wRtnSh0u=|Q z`wI~zwK`P4HP1keoCWWEh?PA7 zr{d1b|6_(|Sc79Y%ir~0n(327YH((I-uf;CX|Grg#_bo@z11I%x1 zjnEM9-`-R;ltY?X@C{Q3SEq{wg0<}Uv)l*ee{?4AeLsI01N^eAT@2843hPD>&+%h_ z!X7u|Er3?7%yv2Kd~K=>D?pJ(-4EB55h$|sKSt^Rn0rcLw3V~e;G9A$v;BnrwfKIX z;V|+tR%jGGtGiFEBD`*y*PYz|Dd9Ws3;szR*0H}-nWXZZlP%1BdRQg2>Ue4TygaO7 zvs4J>JX>a!Bv5Yr(2I1vBRnjtabNVNA?aL5cziIDR{fzRzbVI29&_9hIK4u#T`fAe z_?+eT2C706AaGx3xss+_-C$woHHGJ*T6ZE zf2YXxoN8^lnEJ3v$DN>-FA9rbqOY%1ANcL-^XZgnNHThE7kSRFWm1a3a0vFWD#mkq zxuutpIi0)A3CtmzI%D#t+1b%b@iVJ{@2J!nz}|?df}+NC7JD|x@z-Cy5ATZUL5PGb zg{D`nMwez)8}x+=R?Zppuu9xsyk-88@scfa=fHt!e?4E{R%9A4v*7yPxMzbpCCjPe7Px-Baj+y(r~eh;5L3W z_AZVV@=JU_0dXHv|1tgt!MP&XXD|S9muj$FnD(WxmS>T^BN9F}6Q>Ijrr<~yfejX( zpkYso)(4L~I9BAGwnf6^_x=ut$2}YEJDj4um-X8OzVGyWIrerw@fHY6NAEsyrqzUL zF3nX7qiirwP4e@(*{$i7*#<7@F%ec1g~vm4h+VZ1%{YTs?Z+u%C@v?4 zx?P*e*{Dd4iV)$P+47+?Q>K*-_qw}@R9*I()-B-avoiMud+In(=eeGx7YIYGgy?^0 z8P}3sQ)t+k;MV%rY->&LeR4c3rnoCTS3)wJ%D0||>j-Wy5{s$LVZJ4?x2KxNkK^Tf zUXRg3H}oBO$Q0??urn_A(urpc`~BWYYNuVQzx03L0`&j0hJS8fmONSFU2&i{5ai|I z{|#|?dHA^cIJvvJn=QOKcj|6vKCA#tKCIr)Uz;jE zoTg7hA|qpgWT{yQ5bZgI#*jgIo532_tB6&a^~m|Sby-6aB4Q>b)~yjL9vpa<(HehJ zF5vC6(ouKdcvtBC?z18!$lkIn0if6woiN=x?;9An?WCLj5IOdEtLP**`0CSR7xSkZ$7?2+XrFOu zkze$O#S`{%|S|2~IsSG?Dazo!jHwr}OoZp!Ksu9*~U`wQ2TYuA#P*ulzL<;JP;%_}y z!XfwO=iyr44K8wf1daT~xMw2W_nMLjK)BUtN;y5lXo1>ZG-sl6Yd3PCIot1N)oe)& z_!y(YzK2ZsT)&?`Vx?hYY#@LCAQ12<_VHD~6)yU|HUED60ndD$1p+?Z7w0Zt&bE5h z4IZ;vUUPFmi|Zwb26>Bg$wPD1f^_^)VAJP8q6SN73?e( z3=FHFBrgL;x2Dy*tsTv-QNbn@gL&H$EnHRG(TM|z%C@QwD;)vks{~Hai#S4I4)@h+;~y-k zjP-At6+36TU=*CyZZN_Eg55vTS3kn?cyfjH)op-9$@72@8To9sI+ID+9s-e#AqSq$ z;07z>#ypJ^bF`nu;IIEYn)17szA4Db$X1i9M{ESz+C9kP1SZgeG85a2FxPe5GluIZ zjJh~KJKOe-iuNZY^iGmB#~aDqUQ_69d9KO7OcJ_ClMf_%jsv!7+SfiYv; z8@sFxy=B2P{?M0kc^$fGtSU>K-E|X+vHeFK-^yo2U@0>tLl;j^f0gw}f{3`9;Alf} zrnxK%Tc66sa0WZaqQ3p0IO*0V)bT{CGQz?wYuWK6W$1t|rRJ|VTSi_fx_jM#+`aiK zuk&Q1s&VJ&+bNhJY+dTq!LJGPrJ;HBiwc5KfldXOe>>GvoTItGl#=u-FxM_6ElR%g zYZ1cq2mVdavYQrBSp^(&0)}}qj%bJUffWlv%$KxgRMALo|Gv-QSdA1x@v}8L0N-up zO(n#ig5AlJrBI3w9>YdX+6u03=Zs-e%^B`ruR>a&*%~1zVRrP)mxLn0*?v_sfGeI| z5Oq=uIurIgf|zwnxWK4)nL=GV8rxskpO?y|yo{MoHz&Pni@`gk?E%ms~W~-R8g5N3nvq<&{J=Z_61Z2Tc8>iiHF^KFB29 zUn*U#WVQ{zP(j(l*cEy%pLtn-wUeTOk|HOKf+W-R+9ou7R3n&P;CxiR8t$$B=oZ1z zd9GbFvoSMDX2DZTWAg{FUf$hwc)i44-eFunX;MI){AVDEYg!|vB2MESbIgWYf-3!~ zY^w-B+!)urQXv^))oQ;TW$Y}d)yj2J`Lg>}(9q*I%-h5V2BHuOf4o31$;N!$^*%@w znjY@$9cDKXy>GKdsLtQc4bOS5H6L7f^zs+un2@#xS88c&@|agY zYJ%m0nQar>;%%0}6eq_(sORuYWENr7)K*XEww1}*n751HUg0&qD303Azn{5BtJ(q- z_hdY)?cmz)wym`#S^FAGX$(xk(^k4ImU#x~L0oI8OWgc(Zo(&b8Dl|=n9dUqG zlTK_goR6ZhaS6{Um#DO<|9yj=m_?l|#3XREs)QYPV^Js(DSyKv4UP)qBn0cCby!w? zEcOEtljAIr-C&~Elyv9=g2AMb$SUN;IVVa+2Q)2{TBUBo%m_SNcYBKSGMO!#fpkjG zv27r>k|VGx5s|32B4WYaJ$n6Ag=hEdo3C2&keOsz4)B9Ax^Kz(;KI1EYo+?b;qQK&G#t^A zvr7d@6s*g*P+yZd-PC3ne*frU_{TwkpmhJAy&R ztafaQOhNI!$2z^$t2CrrY-Z^DtN8{gd*P@-8Y0m76_|b;`YgGnHNE+& zcekao!h)uh`G+L>iV!^V>&qKE1DE($AXD@6zk44z42!&W(1nXm#_)TU>6ur_w!hir zV{@VtGtN96=3vwL*!>%u%>>nhX)^U@{>+~lC!_n(LQ38UnICDYLLnt}V{v8a7L)B+ z(FcD@lF?eCJ;E)Tq3O@#Jl2O6gRje7=RLCmynq39B~M@MnKV49j8Lv@aRZ;$TX3s1 z@v@Re`iXg{{zg@gRM7|LJ>hG!19@2!i=5Q>IucXj)4f7ec$& zDJ$zr5ocs>D zBQa1yAQC5Tz3)ele-zf*%gbl9DrCbaBA8SCgkgWff(j}$bkpN@kf|4}Gz>x$S-Xoo z0`x8sNCQ!e-pX5523uF3SBT0)O7d*?nvFhw$#$!5^j=qM1G;*T(7Q)BZnrTu7SZTi zql0WHNkz*4=#MzZcnvhhg-q~4#a4Bj z@-W>Aoe@@f-=0>Izu5A`SzvsG@pdYlmU*q1eB=9Y#NIbb@f8X^v8y7t-11=zjA!^NSj3dQEvd4`mMSK|_Wo2(Y>=lHs_L(_u zkAMj3k6aN=HQ!0#TAvSQkJUbT-qn)rFt>gc>u@3ydL`HZ-oR*U)AS|d;Alcif~LMp z|EW8}L7dM|i`}q=C0Jijz{_Lo>8@R-GYs*QyYML4iR$2f;VZ>LP zJdP?Iog@)r-Xj~I#0^KK$v8+B%-rSLLW~I%6}J>=_4cy-mDxx$n(bKO-i-AqssboZ z5AmT2_0YL+V#{P~&qW`~E3qf89pfSlIeTSe9$&URCXGBXO{vc9oyu53wJ!XbPd4@r zCl466$;#-2hfXi6CyFRd2^$!{>Z22@xEum?Ul9JT{c>L6icxD_)*HA}?<#mCj~i)6KVvNaSo~{FT2AWec?-!c!+(`aVlO}@ zQ>;7@X^XAMseNiMgt)w96F2G_-C{w6SPcl;w9*dUZpsb$NoSCTLPP#6kOt0q4jlp7 z&7Ylglz8-=sTvn6e|v>hfxpk?<|CflyK3~+ z;B1L|nH)BWO#d1~5ulKtYG_S=RcvUw*8iqlX*fsU!_yY&9c7hEugvNZhAAAc@3akl z=#_p%|57y&0QJj#N)vND3K?89NNhkg1a% zD=;HA3X|cv{=pPi${;;lP}w)y`pchkjf~%%Ov@86N#V--t)=7>=Hg+OmM4l_*s;=+ZgpyZ0}hJ>Q8 zd6l`JQ$*d}@sUPc7VB?HJ77K;p9c6E>B-eWYkP{1Y?+vkr*?Bf-s#u>&HUnA(mTvc zvtCtd?wS`dj?Fq2=Mm)5DG8!^(j=k_cqaHggrKM_)77%bps3 zSVnU8>V6^uT9>Lk`{|b@xd(Le(`TNCU%^l&V&7=o_gqg1^n(uRw4L5jHY#HI6G$I^|Qu3-Sikj@P#1vYO zvg&Hncgj*L6fIN(Eqz5E+~eGTR1|%{u^a2sC?g%CH#wctJ@-tr-THLu{@uMAj>+bg z0&j`&P5%E&AU^+p0`b4w6n~2|1w>r~0{on9t=)ZHyz+E4(b%|1726T&SiVA__~;j zzU47-cewKDUp;)A^rg86$G(3S{|wQ;HSOis(kx^`?GJ434ByE(jH_Jbi-l0zvt*;P zOIQ?o{`+y7<=YYtFTNJcBmD>>#7XIaWJB@_?$f?omVC9B>a~CIY9#W?WKyr&=bsmH z*o`YiZ9V6EZh71Am#td8*d5B}_g1k|c7ybvXG6@0Bro@RxIF;GO$0!AYj{&ACSMoU zBr3_adftstSBNj{j6%=v^Ve7oOJW`Xd`b#WicaQ}3D|ac{!x0{0m>%MVrn42$xbr) zS^8F2CV6KK`B&VsSm{Z^(+aOVC4Fiy8&GHPW9~;FwmiHFclRp8tiBJ9OuA`%Eb+%3 zmoM=2T`)3B#4cU3zAW#;`eEi!G=cLsBiv8F=-_nJESAP77E%H1lvb8ADLuDb~Y+x+8;#b}^* zZ*WWVgDq11REovk2){F;)v6hW_u5-hn#CCT>Vv3)!?fHFn=wO(o)=)o_e%;~oFhvy z&z3>9VvxP%BJ5JHU5dr8ki`|lSdNhE(Tw7W_kV{v9)^$rs%rIvGVe-S=|%SFM&+*8 z>0zHS)jgE8oHuS&%L<;JUV}>XkJ(m9jP00^7YlIL9d1+=wwKGsD9A!7BuRrnu4+~G zcX}3HrmS8RdP6_qR2?TZ<>KN8M=->{I($0Z4y&?Y=ZV!DGS{W;_+nK&-2)m&iQ)na z$#f*|qk2h?SyfrlmT{{;PUv-U+{BMvbzom;_lJ1olFFpNN~9rWKFxDTTb@v;P zfBqyev@HI-dk;K@F=&9zPjsr`3+6zEj47@Q;JbfY=0Pg8H^QI#i5+BK5u>u@zsb(;YV zr3m8qWwFO+E19LjnZ<*IDZ8;(K`k%5MEGEYnS;i~ra7hb1(aXN`;wTYq0NXRqFUJQ z(pg0==H>OK@`oK*tHIZCQy;RsE5Ys~KO6Y}gvWoHQpKR9pqQ3&;g7;t{I-+l8K3o0 zmIs5;KMDHM04v^r{$g6DjotR0unI+BzDKew-9l*87JUW1JW^v$Wbiwj;=j~qimUj$wNMk%Fx>jeFe%XNXilzD-iiKp z`!#FRr7Elt(J!hig#6(++1XKBKeSG%N~7rMo!*_(PZ!MGzhp~}P-rRJ2)p*lpo@eY zOUuZB){_D6{*o|$%NM(s4_2bV(|lc%4@?%9%I4;Sv2q^j!&SbR)CHgCfQ^VPwWEp) z^wx!$v$H(*MV9~NG$`(ePZq@1Y>QY4U11429%Pjx03`L8dx86P#UC>my!xM0VyDb8 zI#kYLl5{2lRM6Mb>w}SW)wrUfCp9YgWwtk0#)i}9&xtzCQ-nI(`21i3y#m8 zy?QuTMSAd&${K4DK$Bos7=3>3KNeUKgL<59J){hZ^rWH7Gmg26eZ76bzTm7!w&b;P zkVWoTjtYpoxjKYe551#UtCK?%)VXORuj5x#yu zvf-dWLF>>=62ahWI|M2_%fCCTF#4F)C{Xu5=zbF{RXp-IT$IyJ&)gG5A6eR!Mnh&G zNTm3@+WoA*tbpM_LPtJTX|{55^>~*1_S-O9<%^zT19?x5FWD9m(PCZzHmQtFmCcqe z5$8YXvlko5tM9+=Ers}BK3@1tUmhhl?3J?^4EvofWo<+;5*fuXGHss7Hame|m|dZm zryFbNYYfTSF1AgV%fQ`xk5l z>T<%6KVmvpy4>NVxbo`>k2s$BbbAIq$4Kn866T}I>@QvGeC%+_;Ng5nEqm?pdKStv zzYZkNpn}9StCNU92*deErZ?)?*1m8?B_eOZ@XA<;yAG^fNnu;m8#_NPDXu=W^4n>_ z_aNa-k>^bHQvWH&ISp8w9L`R*2v%&aO)~r^vy-t~o#VFp#&*)g8oS&&^-vd&9?;y9 zT(AjU31zw=Ot%{M$4)M6#s)So%xLql?NWJxac+^eL}{?jTC{G%x&2=lQd$_HL*hhb z{pJ&O@cBzfa%a1nU2upQ@54sdmj5E+c%KVDD7@w$`39{`)%pw7XXbh(j>0wlIXRmD zWl1dGP~%5s53iSlnfWwC?sc?8K5GAX?`~!OEX}QLSanUM?vk~;`HhkxzQC36%wLc} zt1>2KuOYVNX0=4g-@JQ`ir~1ENl|GhkvlpQZnVL5qd4j|6u!=)fP8;gB zdE{2JouQ?$*KD)=cB`{Oy77!$FUO!%gOI_%-lxRwmnqzqwPqrQl+UNl9r-&SWoA!u zsLfni2Hgok<3GQ8+S+g!wnGfjE<>b)#y6%Htzy|Ek@xOr-1K5$>~n9W;2I?D)2M}= zTcpTRTS2KCfmwn1F+ua&NXy~M0rqsZGy4aBHXd5*nl7mPG}l-^A*I*5$Br$%NS&c& z3qys&5*EcHt_q0%V}LIeK-wQ)Fx``J_rH$vrm~Hrw=01^g2J=TF0&}~zwFY}e@_kP zxqzn~J=wL=;E4>zYX(B=87mD+b_<_%P`c36tq!vl5!1N*;gXoxCC_ld00EH1z+XZr z`ahZk2$0!w_T%k@)7S%FX=jmW>*9l{Vu8sp)vJ!x|9J||t9W&)?r-hmcJ)@wkwp!A z@&SS8Ioh8-TXsQPU+jZDr7{K8TN#$eyL4-fUM^(}<2XbEP~`MAd|ZBVGdaFG98?}l zqW0P5*6d$S9Ptd(f|dr8dfm2Emd@YGW>U6e4`<7l#V))qy`O|Dbv}RL_Nn@OOEwsT zHzA=52%oTdIiqT_+{AsYS%EEq#V523Mc8-V^#;$xvPXRKSeiJM7-3Qa`mce7Qw6-WK%TkCc7?0TIrnB-yUC73Pvw% zA0KNs=$C@YnJxDm{&B{B&P7m_pn+PRGYZI`tRKR~zXQ~G0UD@2;wCwBUVDEM*U;|| znQr#XIiXWCD=(M|U)Wbh8*Ud)VbeUxky@*#toA7`+dImN5rZ|yv&U;#sWiKrtJo0J;^Ds zXlz@On8$F%3pNBc>>OiTeNuHRKFP5F?& zlMT4F7K!L8>l5{%vEO7Vp+TVmeR?zL%a{YKHj$G^|MU{I=X^;(qU+z5xYzA|#*kLSmw@1M+gfuet7%IKLJV2+RJg9>volpmQDiyqsf@nh3l!bdY6 z6NY8j3ZYt%;T^N|W;qr@`c&k@HeX#kW#=$BOx zNw8ElD$Ug3QZ|WN>1X}^q(Gifn*n;Lhdjl8{Ml8JMPjdCogkN!?k%ELR zBKm@!5mjO-#;Oy)-3Y&iKV~^x^EonxNgy)?KRO`^5CKafVIcYP)b)scuV<<|a;~ul z=Bu4OrFW&v@`5tWZc#L?1|HC`;pT`ze~djGcL*4By904!508dPg%FD@TFZ8y<|KL_ zUTH(vrrWqjC_{QpRUu16dE(CC*Z|76{%Et@wZ4x|O}J+7(ERs4?lIpHpw1*Ztm3#h zG8=|u+YcntZ!G%d#l-h_83f&Xa%776v+S;;lEX8d^?jkfK5kc7K&4+i@hrbP`u4%| zw7z#=ZQPcH5Q(FU1bb+fU&5=mBYSNskr0svwTy(Ny|wRR(L^>7B-;sFvWx3}m&{=u zx#;eUxQd-L6IW05WPQbaRl-%dA0uU`_by|TZSigC)11(-Cx8~+{p4_(^I3j|o!a82ki;Y$T%A+N6e zz5w`6K4mlMaOPF-DSN<-IEpbLXkl%a&%OffC&mzvMDdUtv-d~!%aEh%g68~uv(abMmuxD*#(In_vDT|`GSM+=% zj4Rk)y=OVVRX*fR&$k!LbZ&`G4G|0t+~=$JGtzzKD5) z@8Kb#LNzz4SDS$)X;!lU9eLja{NJ(Y?!H2J?Wbz|x?cvl#;p6uo+(|;P~0P#&9Ln) zIHs?GCDM*6)V`&`F$5F70`r?BKYXwF(n%l#q@f*xP_8}qf8j&%|A!C%yFio-F>Mob za`z7m26}jUfgJ3tJY2oKo!mT_%nUnw&%i)GKYtH*D{C9~JDrbD`yq4=V$chznZGGH z$-`VJZA82FW?NjxDy96-vVx!bcc}v-$mTEM;TVB zdg|7XI<~amgp#4;jmn!E+)}rPjCjcJWuyv_IycoPgAyzFLN9E{gy;5O^4=Ab`jIP2 z%8Pa?AuqbNzX5LNRYPXD^ z|65&@f*t%{&$WWKsRWK}WWalc9_|}}M^)!p)cZHipJx4v#c*9@l89UD&InSwiT%Pt z%L2g}GBK7Zq6Q}HBB9{KhUcC3UCG&$pSkbpV;1$^Sw2Y_-q@iTKb2@}&7kF}h9Swh zlUyT@0KC>Mnb{6Ix5Hz0yWS6&*emvhQ^)GOb}HXo6Anb~aJ2ts)k0^cP^M51nB=IH zeR^?&Zx~+>cZNO9lBN#{%n1zNkQNd}M9OAEO;>0XNuse9h&e1B)3SNs$BQf833y$C z>@Gwl-;gjJxr6ho&v9sfft5JTr9+f|>x7Y{khnoi%OI=S5gXk>0!ZrKDTSVq^Mx{=RR2J#cKlhXqhj`t-BaBA{SB|v;d8~z16pqf(j^}wYKzmi>L9HM31 z6ABZIEMDnFX8YC^H+Q`yW~Gm(o71wz^j!@?5!ADTXOrhvD>cTJtnXDM4pdAyciAV| zM)g^^4@4|`ohudOmBMDwZSY;vMI`Y56!qOhk=4j{W zFX?B5?pjorPw{T> zlR$E3$w7z zP}+t~JS)VaR#iaaHk~3Gi^P@unt?`}OG!;EfV@>X3y;c@ic7keDmFC_uno@$cSB0Bm2X`a%;{b~|KQ`}_ z(be1@E4~Xx-dh!k9EN~!FkzXY=DC5vVLxuzib&hX-GP|SyY$)d$gY@}rJ2!tsDIg7 zj1!CbQy%P8>h5wC6LXNVK;y!vyZYH|T69dz?BseGeFex>Ni_uEh!ApT`%_ZHv+=nH z9x1lE(s!fA9s-`u{Q>#l^4o+nn*KH@HWbLn)Q|5T=~^*+s;eF5AF{A|?QHecEDhbF z1@gBv7Mi;q`Uk^{Ztlr4`u#0auH=rAcym#2I+h;UTt6X{Iel7sItq3bi`PEa`g+}P zqEE@){<^fm@`z&2gL$8;|Lx}twJrY%%1A!L1$&bN9kE8&m3eYbChJ(bG#$&KL3i$GYlL9D%r5!XM!gXqpggkj5y)$* ze?M!UJ)HfISIWIfJt^*>+rtNUk1gb9XJ$ORogs8gVAbfUdt=OdBbPkqHMu?6PR_&G?hOMLA%sKSU7XJ%Wg1|$ zRxJYqqE;J8Q59(Q7(93IQ76HbqW;F3Av%tG!Ec!O`32ZKL2c;8%^5cMo?H7#+s`FL z%Xiwuyvo$>6W@c6gr2cIVJ%d4$;yV~Tc{HwNm$_eWJR{{Z|&8VMrmAJsmRf*mQRZp zg53)P9DwS@LA*Yvj1ty4lJ!Fxd{-<0FCy8UJ%9K_4r}tVsUDhMs#)(^{q@PRrmTUZ zB%zs3PrOv~iQx3v{a0Mlp0( zqjGl`R;T3r$kI(kqP841=0M8ee9l)h>4u4#@{9EuZ?T~dGVZZIIaRakvya>VI%_S+ zD`s=(rd@meNYK0ux1CGaqOj`ZDbnz|vwLK`N5Gth@3kKK0M3WZW(l5za2KZca#kpDUshSrw=$@{4wsYV+z=ZI3f82q5ZdI&d(a;g;pKw&FfdC4tg30&q?26 zkMdMr(cHKSjyQgABPvM5zCd+td6bl|t$7ZIFq8Bfdf^vy&+bd-Ho5TSuys!T&!rL- zt>hQmeoe^UZR=WX_vyEpqev^DJ@PJ1B5n>!7r@OiJUwyFK>Ke*1ZhC0)fBoO7I6nE zFkR_GsZ3VEs!Ps<6ojBZBW|uJuJzTb1Z+IaE9}9LG%8@fVXxL5X2Yip+%dHy*`S(P zYLV9{Sn8_Je4c!IZL%Q~%1VFBH%Sv-G%>B@HjQSxG0quYCf3}w{zKlx6tI%i({&%C$Q<{cDT=~cC| zcx0tn@n4%C+NbKj^!Y-Y>WD_$2C$7vq}s_8JWV!@8r@*k_+P^OPBu$t3sq5MBaI#V z@H@4?)nmaWZGGqP&+(s*&qkcI8`g+IZ%xYsHb9Q*?vIwSkpO4(Y_q-kRMrs?ALuYU^ke-Xz=+;ljS1_8(VU94TD5}jPu%Kw zLb5CIlpUFV^DB6G1#pJ9KmeR$HOnE3>olP{d%DDn5~-4&NV!y%qV|?C(1^YL6~V_= zy=d23*uE5DL~x<5)drL06*H0P^^K1A7k?G(vE%H_LKhx~rosK?Q_ww2Mh(0Gk=-*Be zEt$N)+Az{mf8V0>!fO6xgP?`@OOZiClY6wy&W|IiY}t50H-C)gIhty$I$7r7?jIM^ z;zM;U8;yE$sW{)HH4R2-JwLkj1rp_{nGwhH?IP=W@eQ;hnnh83xc;C%xI*N>Nh8FX zabIPTK^o2<)nujz4~Su{2xp|~_Ol~gD-$qR8nH(4mIx+prZGP)>V&2V8R@bJP;m(B z#Bl!BtTha+F4;7!yuEw4cP}w~k6nJHx(B9gZt3_KOxIaLsmx69^vFJ8Kp&Wu38UK8 z)FWk|>w&$cLxb}is)vcKJKhkPt}+Hthj& z(`;}m0VHNjZ~c{1=l+@J>8d!+7k^*MetcgSx4Y)J-Q3KscG=(A?V>P;Q0bPv&YGLQ zA2((u7gJ$A8id-C`M#(>582Q9POng99*tWBqdb|mX{wWSck`}mqlNm66LA?nf!SZG z8(hIQ+Qdh6S)Xgywt6<5-tzlIk7##Itd|{MDha%3*74|TIk&Hy_)y-WrBxfSji(C5 zm9*yNG~33{tkid^gG;Ez7ZJtq9o(F~;7KocqvhWV?4U4++Tyq6ye(DpZT#-$O@Fh` zfXIhQv^9}vT#>MoF3yJNUJg`~wR)Np#$da${)R>2>wK_Qk_R=4x%&SKeW$~bxv{aT z_0yV^Qm(rVH&{`|S@ZKAHU#<{aq}wL+IwW^aV3tGLOhh}8!t!RTLmqT8DpD2tknnm z8VhC8XVv>VSF2|4%umQ2i7%eOy#tl1-OlfYs}{(eOG&pQVEl*L&7s;nvLpW_`lj+T z>TE)AWy~nt2%QP9TUyr2a@(DZGxAm!&#k6e{iTw-y8j9VB+2(Sqpa~h(3*w@P<~mj z)W`H_#j}s{%RRh!^H3S~DJ?&|O9Ip%XNJ$=-Skec26XGI+`;$gc;J$xVRUfMx1P~WSc8R)QY^;S)st?ta zR6v>RyC>^dOCHDOCENmqjV=kgW<`jCZ{V4amGQWH=0s!MmHDHNNtT!Non9o~wHCG2 zqAn&_3V@E!PVXdoo4dc~N;WnRBJ=XW6fHEJ<1tTtMP?3=+n=T5QLdJT>8x$LHDT86 zvK3?RkdiuBw7$fD(4$5rTQA`MAWbKv1AB$iCiltMT4&M(cBZc3U!J{=(;?jjLLVGT zWv7ZQ#GmXm{PQ};bhyfJ#*xD^;?~MGqO{VDlKXoyFX_`4O?>2?aW^Ky$3OHq?(BM) zsEUU=h#D7lO+NV7U~oE1`zv#n5VA87f=x9uZvckA1d(4Y((CYc!OQyT-5yH~F|y(G z*@#0PNi`>F;;3&p1r#eDXdFZwPNE$;GFm?nkpf95qs8)(p4!&3BYk*mf038%V|y^}w%SA_9SV#xM(}X-3WB!){-|@_aiDS($aH|WILw%>c*BJISi6y{i?@On$0MN54IHyAi{J&J4w2|XL1h%^@c@74t zZE2W1=HwouJO3vc47?=`vfz)~EtJ`(YCVfYnI-a*zRD*(tkK$cvm(YL3U652o+^((Mf0I zU**i-2-IXTX1*l7t00;KY`4YsvPX7Az7VmxYTG14z&11w7_r2Wt zkdmnM3SFy>prqZ8!^L4*uNJ6K(`E1 zr>nrUN6kZYiT$3Nn{WO+yUUeu~TeJCa<|}0SLI{J(=7sjAl zOfGE%%JcLP`hN1CVMSQ~d;y$!As^xHgZO=^RkmbFAK86-e{cBrE;>5zp!G9lxqp*^ z)xohNMHd2E%br5fgXjLY!CX-rVdd8$b{+Bd z)9;PH*SETa{*bx-H-(qycA1D|8XaoUvnhr_$l>zWN&XL;b1hE00h-xx#{A~v}vr_ z3u_qspg6Y)ENQPfohW=7*p>W~Laj|GOSl+*Nf%nFp!sP+KYaq|GF276A{qG@_#v*e zr~L~b8uq-5Vaf7oC5B1$6N-Xzf0CQ1lk?^ckS^Ox1I^~$YHyxMn#X3iY4qOSZuJ<* zT7ziTL2MP2`n&r?6khHNG2dQN$$$|=e_q-D)qgre;WRmH&@r=O7+Kur^oC?0a}TPW zbQ)hqe>g2vAg0w_I=37bCGUeUJ$<1<>%ig=_8U34!ow2?{<#0^85q(S7BD$Nwmcof z)G5%qJ0dSC4l8)t#7n}))9X7{I@lMszn9VPG01B%mlJ3?%(~|scw&;Mh?iMVrO@2k~f_?WzS@x zaR@{E;8F~m+JY69vF-O~pSQ7A7KqK2V%_Xaqa|6!1zou9I?MbVtG*e-^e)yHbMaWH zGd$2UYJW55nJ5y|HvVLy{?7Rvv{k-^80RVx%d=kd;?l+Qu2bAK;%hRu9IVn>-H%iOaA>Kds3I_2S(=8Y0%EUW;)AvDRIf(gbrthtQ#K)B2MYwBQ9 zb@fzb6MgcR7iqI8YfdvDq_KL9(i_1xvaSVHR+*lU(nJppt0n)0+MkU8^=HyZB?*z) zHm8xBv>n~k=RRg*ZSCp5lyp0`KW9|g+7Gx;4S$!icnjlK6q^q|u<|I?-J{v_Aq%#) zq+XQab{I+U%X|~Kfh0&`2b!uC2uyob%OKkRnO>?K&f`^ zxPY}I16+c+To67WezEh^TQOeuhFUwj=W7SXx#;avK!wia1189c5IEMgFi%U2bNYMt z@;!>AbiBpXe$m5oMUx#_Ea;0nfXotGryVADHro0XA?DZ|8_<`Ix-x9rAgU`aRcwmv`h2f;jxRPwg~;k`61Gq)eY$!l zwpKsF%&UNhp_F}a@jTBIa305MjeFm)q^K3rP8NsY?7Ieyhy%?Nfsl+idE(|x6>K0X zDp-4>^TDMujJ!dsQ(>0D&1Fj(j9Kf24<^VZ{ru8BE{TcTW$eFw>qS;^mnFCCinEhN z&0W@#`0wAaN1y3>=u>ByXNp|~Ib*E-is$^AL`Hgw4x53bS3lYZ_%A&0Gjalw8HR>N zRd3(tR3yx&KwLctW0JoHJDjv_O1FK|?0WTK^e-wkKG>A!XpgjvF!v>u&i08(iy&n; z4fijZeD6K};_CqX8<>n-6lmomIX|T3{HpQM>W-cr{4%2byltfp;5EuTY{g3XpF{1HzW_#Bp z<(hb*&4Js`@Ul7g=&MsMuZWGmt>sz; zM_rH1cAK0`aGaN@EW@0c@M#USxrG0#h`OrBtf^ZfiK12*gm=eKEq1m|@Dii)Iq|@< zIf4{rx43Sv5aZK(@6*nloql3}g~9d7YREeDW|-um2lUlD=u3&()2cr?0KizJm+nK8 zGu7Q~-q+erbaLt2+}V0R=hYrt`QGH*4if+jttM- zhXdFXt5jy%a}=6#&qlro)yeMpmHIsIhi|i@R7@k?g%u>uWv{ktSdu>lq~1E^cFn+w zC$xL&%lRk3W_PY5A&~)4IfH`HBrfMY#1p7)Y9qKk$Cd|%3(sDymu64Lhq%#)bp~#L zqu##9lqCO?`1)PJ&y(I{pPo05w-)bKI`mBxlI^KN5#-^G+MH%ydA$pviR8`aM?duU z>CNc%#8d9Fyc~yC-{e0(Lt=t)V6~)H| z8LqR+4zfYnt$lWTwDh$LypKjV*q7%WNWZSU;W=j*qNd;o;Ay z6$Lt&sG~5D&&e%&`5M7obHiSJ0&^d58U;A$4C~M~Djks>tB&zTIIvXb0;*XRs?`2o z%61$*q3OLr+fU-_g{HNeI9gqX>v(DtmOVY^2Y3gnLs(_}{LR~Dd*pxdgtpQD!xPRP zhDSsA<)xgg9Y9`gexBZ5?w+0?Z#zG4Hy`&mu0GChL7qPDZf;y|I+trVG|CYC(pcZW z-HLF}0jA^)auO~%*Ub5-44^UT#&rTc|KL>uXzRCjqRfR^8w!>q!HG9V7+EJK|0|{u zADK|mfiLnfpU^c9L=P1>VCdZ!cXhGJKg8ys+q&?I`{JbgM|axu%yYv}AeevI=@ROJ z_Fngis939nI4S=t`v;@t_>J+Y)wycLT+f2!>=+O|G~dEpES2%%?WI_soX6;aI6ghq z-?)T3)iVkI)M7=v^gfuhA{34+D;_y$2N@*2RLMWL)rilId#JnnGXa&qO<%2FKU0UY zRp0xjK%TH}Vk?ci{wWu8SR#DkDOJ$sT7`8B(Jq92;+Bq85uzmX?g;T+ESAx+*7gw0 zq$9=3<==tMCk370;p+%-9`B>u%+691A1>}!s(m$2`lpgdtW z)*!eL=CU#UioCl;?kByEM-IC8kMjr*u@=|_)xh@I;((g^Z7EM?gWpT0J!jXq0Vr>K zm34)!BmdrfE@=Y!Kq8b9T^ir40j2&+&)0gS{q~C9t;X>SSt0OK3PgyGvI{(=?UlpK zlF43v&1m+(Z+;q|y<=;a9NGowAA`fWVou3O7Qm=iCQh5>X z2uYies;X%zd| z%vL&1qm16H(Nev)G0~qgOhB246q{6@gEYXOF{^Yp_UrbOZafYuHX#`^R?&T(PtT(% zrhrAO)aBE_5am@L$f=)r{fjSdrSR|#2cis~{AbiAUL_ffnAap0zU>xd8CP-`j$l^` zCxGH0Dw7>XM-hIxv8j7A_djm=c`xxFatzpm8+$es@sxDY*Z(!H=EW3#*TMhVPYS^n z2|Tq7eIi^3)b;ROyMYPO-O~2B6A`w0jVHRh;0O=zNQ30Q%W?vM6KH>cF2*o=xz1q+ z2jrN!<@9_KoLMzok7++-WF>52hX-20S*z7#q9BpY>e&^TSw7X}p|l^)f>_(UpZopU zy|AYA^dpHG36KR{@)9JtKbU!aI{7kv{ppd}zUG&rl?y84C7g@cO&q)mjzQw}vB3@A zoWebI2!3|)%Rd9*}0>w9EN+nG0m&~9ws7Pk^Ea$(uW|*5T!8I6v*m# z=VSAu_t42EM0LR^$Vr?fKxRlx0dj;Vu)W~qQ85t?k+{FJ2$SDi#5A)u zY!aPZrZYEtEV!BqyVrk=d&u}rY+c0>&T+lCZpk9YB%+{i0^faMHqLxH)x94=X-GV! zbaA~t7LXZnsqxb~cR|11FlIZ0P@3A!qxvXX=^SqL#((KEFX zNwAg~lEf+eOsVAmPcD?R{^8Z>$$bP#mp`NB%kk(%U8+b{OL3jW-3H{&U*j?-#?~Yj z!P)+!!fd9+R&+T?qf>$y9wS!?Kr|%`3<9MleR9VbD)t^vyTe;j=KJ+;HeeU_HL8

1nt|9g`#OK^0T};jC3M!sTsJEir{{dO?y(#{)7QIf7L0Jr zINz9A5DhQM0E&BD|c%f#Wr_EEcHpx{Uo0_hyx*_5DKxZMC%FUmYX=9_w)DoHjT7d=oPsOEv$Ki^8~2A(Mp*)^KWK zysA$3MXHB15^5dk5ckR48Ug*_O8?Muzd-iu^{nXGF(dZt8TTvP%PDAUtWFm8%%$Bh z0p^~A?4Ud#v949%xMLtrj7PKoAHfnmx^5b?cjVC5HQ%wG4gCTC!@E~KXv+dWoYFPEL`+ZvsrH+u}`4a0;NAFMQ4=p?0ra{*h^K!DIwO~}D37gceG#UBPRGuz zcS4=ABn&B$7uU5JXS1&ch79H(m?o<8hK;^HtZ`ih%xRba9c{{nMNh!vE)a!5TQz`rtZG~aMoq5FD zdE4^f4tUxn;rkQ@R?h5yZdYNka`e))$NgwAzFsL{hzR-HGKw_^O)itfbK6wFH8ZfV z0b7|Qa^$F=WNT}A1I6*?&*G5{Vzh3j>J5!^Rxy9h%@xWv+Ac+j`5%O?Ueq~VKcD;w zx+bxjE}QFJqmLXP`^59D`}bivAhv*>XBvU5m%rrWojkbSTg7tv%5`Bj8k|U^-L@-w zPbOC*6J*&tO?LN2YzO;bu*@igMkI7DK3v)mM4RFr8Yzmg_l{|*+dd5|`4bHI$GO^T z_Rq$gx~N}ORloBwjzn`XFZ}V<*2+x}iLa7TH)TTHJ#o|}PjD{+-o0BLp zIKXM{+f%NY+bb?kv|uI;gu70PN1>662Xywx;x6AgJ{r>fv3#)08U(z_WUu_0wq+e~`7&yd@XxB>?f8z^^|u{8d`L2nc zp2VPUYSI!0vuf+C!Ixuw@6t_uVt?!{H7D3m$#Yssk#SR`%MWwBy+Wh?@en} z?Si+oUKTFm{z&2^&(q-#=Z@FUXRulMorChtF<e6Ihb&OBP*r@ zXm?4Du!V6j%M#}&U0J2svO4qhY#sbh$edf?k`%-%6s6setJ`qlNTQa-86a-)x|6P0 zks!Y19`3Vh^Vu|r%#yO%F&<1n8BM!agSh`7EOe`JjikPd^J5IT*3_znjxI2RDp!m|=Jl z@U8Mp2plmMm_0t`Fe8ek>TTBFDFdgi6kYKc`AlkTa!AjHnO3#HlJ_f+@r{^Lqx*Rs z3m2p4BCOGMTd~Fcg!YmAsEnx`7dX;q7!k5l3#AR{r;nC}`Jz$2p>bNB%7adw?BRz{ z6Vd(N&Z!GYgh?rtA0m1HWlRaGfmj&3{5`Q#ft_fc4?j7a>ds|bv4eZ2@V)3;Rte9AIt51y)x*oqAcOOxMMryi0vZb+E)KC`&^b0X$i z=(js;&`Z%DZ99}_>f^6sR?vUTn*@dHHY9)XogI7}ZY?h;55G{7WQLmWDu35`52Ku6 zKU*Nrff3*{?UQG#L5NwC`?U_jFRdan zo;D5l)Vgwwl2!5VsAylZ=Y@d^lch>r7jSOPSJUqXp0slJ15YHVEy0nE4LV1G&EKtBtsZ z2q?)ry0wzs)Hiic#WMs3mvDND9(^LuagJ~bF0Ph?ZY?-=3Rpxz`jkOKzQfo&q<|ki{AytSe-IVURdzMCsoq|OZBeeQZJH* zjaMvGn_t=%bzj?gS`t3mzq91qZxUs(aP0@#qvNa;+R$N|AoD;HmSiFt;0VGK5tC9E z)0`g>tnuQOlr4ylt(pUv20~c|O2&v^Ii3DS0W+^m_IOYIKwX^`hfn0S*gi3>vFpx# zs(x#pzG@8`8%wokicN@39oW5ypo0IK{&< z%!=df`B0DL)CWewh$9no?xsa=zuJemx0`7bLS}h`EWDZ`EMuarnXsCo6);45Dt6mn z*^&tambuJNc_|$vCdW zz1ss(i*{(2%5oOrcxRReknL zR~7IO=y8~Yovf(ij;N1Ro~75*lmFX_a@=(4|DYqj!|*u=e(nU9tHagedt$&T4`Q0TB5 zBdgHtdh$~ZcO4V1Wg4f0q6(x%M@AaF{iXJDINdKn`(Z~arYGTAEFW{IMQu+}PQ~`I z%RS(<>`bKXqEnTe^8j}Fjpc<%tmZV5Kti=pw;d-0=M-a2bn_PA&pV{qH?)Se$5C3H zMG3#X|6W;FAen7tq;2zePUT1kSY>=opU6stES#P-x)HVG- zF9YSwlAI$2JP8c|z0p2{e`kQ4vr3~A)9UO6zp<;p?BLL!R*Co*ApCT;Kh z7iBd1#4^`Z)ZDOjecA`lt2p(k>#4*$eTmEeZ5`3L-1#vLcu)T5uZSf3Q#=wba3l6n z-ftW8p#xyNV5YV`6|A3;jGcz{tmGHkembFaSL2heX_FQ+yR%edy|ELaoo8dK>9!dy z6lZ-9tk$@-r-u%eC))S>iS>Tv`Bz)%Ebg1Db8=jDTSF0O<~E(avbQ|ne92FD;L+y2 ztmdZRN+A9KOng-vvA;QC zKlpcgS{8P_2t-0BkyO8Dp?*ybp_H?|N2A?v?RlHO*?c}%1tzn`CBaA&WHb9Edy^r3 zE@d3}=iism6BTD?pdan>C<9+)d@Mh%3thcZnGO#8?%g{2u5#}=@4$*An6|t E12x5=f&c&j literal 0 HcmV?d00001 diff --git a/MB_FYP/scenes/ui/ship_explode.ogg.import b/MB_FYP/scenes/ui/ship_explode.ogg.import new file mode 100644 index 0000000..20e8018 --- /dev/null +++ b/MB_FYP/scenes/ui/ship_explode.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://d4ebqwhtvkwvd" +path="res://.godot/imported/ship_explode.ogg-fd9bb85d9098e1cf8ddaa38fb22a5107.oggvorbisstr" + +[deps] + +source_file="res://scenes/ui/ship_explode.ogg" +dest_files=["res://.godot/imported/ship_explode.ogg-fd9bb85d9098e1cf8ddaa38fb22a5107.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/MB_FYP/scenes/upgrade_menu.tscn b/MB_FYP/scenes/ui/upgrade_menu.tscn similarity index 97% rename from MB_FYP/scenes/upgrade_menu.tscn rename to MB_FYP/scenes/ui/upgrade_menu.tscn index a81d190..73d0ad5 100644 --- a/MB_FYP/scenes/upgrade_menu.tscn +++ b/MB_FYP/scenes/ui/upgrade_menu.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=7 format=3 uid="uid://bc52c4jrk6lo"] -[ext_resource type="Script" path="res://script/upgrade_menu.cs" id="1_aupyl"] +[ext_resource type="Script" path="res://script/ui/upgrade_menu.cs" id="1_aupyl"] [ext_resource type="FontFile" uid="uid://be6xxaq8drt5q" path="res://assets/Fonts/Kenney Pixel Square.ttf" id="1_rlo6h"] [ext_resource type="FontFile" uid="uid://dtpvg4lmre10g" path="res://assets/Fonts/Kenney Future Narrow.ttf" id="2_m2s84"] diff --git a/MB_FYP/script/Laser.cs b/MB_FYP/script/entities/Laser.cs similarity index 100% rename from MB_FYP/script/Laser.cs rename to MB_FYP/script/entities/Laser.cs diff --git a/MB_FYP/script/ai_fighter.cs b/MB_FYP/script/entities/ai_fighter.cs similarity index 97% rename from MB_FYP/script/ai_fighter.cs rename to MB_FYP/script/entities/ai_fighter.cs index 0dcfc06..c9c3a16 100644 --- a/MB_FYP/script/ai_fighter.cs +++ b/MB_FYP/script/entities/ai_fighter.cs @@ -85,10 +85,12 @@ public partial class ai_fighter : ship UpdateHealthLabel(Health); } - protected override void Explode() + protected override async void Explode() { int factionInt = (int)Faction; EmitSignal(SignalName.OnDeath, factionInt); + GetNode("ExplodeSFX").Play(); + await ToSignal(GetTree().CreateTimer(0.5f), "timeout"); QueueFree(); } diff --git a/MB_FYP/script/asteroid.cs b/MB_FYP/script/entities/asteroid.cs similarity index 100% rename from MB_FYP/script/asteroid.cs rename to MB_FYP/script/entities/asteroid.cs diff --git a/MB_FYP/script/player.cs b/MB_FYP/script/entities/player.cs similarity index 98% rename from MB_FYP/script/player.cs rename to MB_FYP/script/entities/player.cs index 0172501..dccf986 100644 --- a/MB_FYP/script/player.cs +++ b/MB_FYP/script/entities/player.cs @@ -64,6 +64,7 @@ public partial class player : ship // Inherits from base ship class if (Health <= 0) { EmitSignal(SignalName.PlayerDeath); + //etNode("ExplodeSFX").Play(); } } diff --git a/MB_FYP/script/ship.cs b/MB_FYP/script/entities/ship.cs similarity index 96% rename from MB_FYP/script/ship.cs rename to MB_FYP/script/entities/ship.cs index 67ea189..8211c7d 100644 --- a/MB_FYP/script/ship.cs +++ b/MB_FYP/script/entities/ship.cs @@ -44,7 +44,7 @@ public partial class ship : CharacterBody2D protected int RotationDirection; - protected readonly PackedScene LaserScene = GD.Load("res://scenes/laser.tscn"); + protected readonly PackedScene LaserScene = GD.Load("res://scenes/entities/laser.tscn"); protected virtual void ShootLaser() @@ -55,6 +55,7 @@ public partial class ship : CharacterBody2D laser.Position = LaserSpawn.GlobalPosition + -Transform.Y * 25f; laser.Shooter = this; laser.Rotation = Rotation; + GetNode("LaserSFX").Play(); EmitSignal(SignalName.LaserShot, laser); } @@ -186,9 +187,12 @@ public partial class ship : CharacterBody2D Health -= damage; if (Health <= 0) { + Health = 0; Explode(); } - GD.Print(Name, " health: ", Health); + //GD.Print(Name, " health: ", Health); + GetNode("DamageSFX").Play(); + } protected virtual void Explode() diff --git a/MB_FYP/script/game.cs b/MB_FYP/script/system/game.cs similarity index 97% rename from MB_FYP/script/game.cs rename to MB_FYP/script/system/game.cs index 6c0c7e0..3810ce5 100644 --- a/MB_FYP/script/game.cs +++ b/MB_FYP/script/system/game.cs @@ -36,7 +36,7 @@ public partial class game : Node2D private int _score; - private readonly PackedScene _asteroidScene = GD.Load("res://scenes/asteroid.tscn"); + private readonly PackedScene _asteroidScene = GD.Load("res://scenes/entities/asteroid.tscn"); public override void _Ready() @@ -198,6 +198,7 @@ public partial class game : Node2D { GetTree().Paused = true; GetNode("UI/PauseControl/GameOver").Visible = true; + GetNode("UI/PauseControl/GameOver/ExplodeSFX").Play(); } private void OnAIDeath(int factionInt) diff --git a/MB_FYP/script/game_over.cs b/MB_FYP/script/ui/game_over.cs similarity index 73% rename from MB_FYP/script/game_over.cs rename to MB_FYP/script/ui/game_over.cs index 28fdd22..3d4013b 100644 --- a/MB_FYP/script/game_over.cs +++ b/MB_FYP/script/ui/game_over.cs @@ -9,13 +9,13 @@ public partial class game_over : CenterContainer { GetTree().Paused = false; Visible = false; - GetTree().ChangeSceneToFile("res://scenes/game.tscn"); + GetTree().ChangeSceneToFile("res://scenes/system/game.tscn"); }; GetNode