From 2ba0870d8afae40bcbd69bad342ea0ecca89a3d4 Mon Sep 17 00:00:00 2001 From: larentoun <31931237+larentoun@users.noreply.github.com> Date: Thu, 27 Jul 2023 22:06:34 +0900 Subject: [PATCH 01/55] Initial Modularity Support (#1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request В чейнджлоге ## Why It's Good For The Game Первый шаг к светлому будущему ## Changelog :cl: code: Добавлена поддержка модпаков config: Добавлен файл конфига для модпаков code: Обновлен CI под модпаки code: Изменен метод обнаружения мердж конфликтов /:cl: --- .github/workflows/ci_suite.yml | 1 + .github/workflows/conflicts.yml | 12 ++-- code/_compile_options.dm | 2 +- config/bandastation/bandastation_config.txt | 0 config/config.txt | 1 + modular_bandastation/_modpack.dm | 17 ++++++ modular_bandastation/_modpacks.dm | 60 +++++++++++++++++++ modular_bandastation/example/_example.dm | 16 +++++ modular_bandastation/example/_example.dme | 3 + modular_bandastation/example/code/example.dm | 2 + modular_bandastation/modular_bandastation.dme | 4 ++ tgstation.dme | 1 + tools/bandastation_check_grep.sh | 12 ++++ tools/build/build.js | 1 + 14 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 config/bandastation/bandastation_config.txt create mode 100644 modular_bandastation/_modpack.dm create mode 100644 modular_bandastation/_modpacks.dm create mode 100644 modular_bandastation/example/_example.dm create mode 100644 modular_bandastation/example/_example.dme create mode 100644 modular_bandastation/example/code/example.dm create mode 100644 modular_bandastation/modular_bandastation.dme create mode 100644 tools/bandastation_check_grep.sh diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index b3c798cf229af..0c88c2318ec90 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -56,6 +56,7 @@ jobs: bash tools/ci/check_filedirs.sh tgstation.dme bash tools/ci/check_changelogs.sh bash tools/ci/check_grep.sh + bash tools/bandastation_check_grep.sh # BANDASTATION EDIT ADDITION - checking modular_bandastation code bash tools/ci/check_misc.sh tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/tgstation_dme.json tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json diff --git a/.github/workflows/conflicts.yml b/.github/workflows/conflicts.yml index 4823aee3abf80..aa9514d1319b6 100644 --- a/.github/workflows/conflicts.yml +++ b/.github/workflows/conflicts.yml @@ -4,12 +4,16 @@ on: branches: - master - 'project/**' + pull_request_target: + types: [ready_for_review, opened, synchronize, reopened] jobs: triage: + permissions: + contents: read + pull-requests: write runs-on: ubuntu-20.04 steps: - - uses: mschilde/auto-label-merge-conflicts@2e8fcc76c6430272ec8bb64fb74ec1592156aa6a + - uses: eps1lon/actions-label-merge-conflict@v2.1.0 with: - CONFLICT_LABEL_NAME: 'Merge Conflict' - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - WAIT_MS: 10000 + dirtyLabel: 'Merge Conflict' + repoToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 2a4854c37b858..99989e5cb849e 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -98,7 +98,7 @@ #endif #ifndef PRELOAD_RSC //set to: -#define PRELOAD_RSC 1 // 0 to allow using external resources or on-demand behaviour; +#define PRELOAD_RSC 0 // 0 to allow using external resources or on-demand behaviour; BANDASTATION EDIT - Original: 1 #endif // 1 to use the default behaviour; // 2 for preloading absolutely everything; diff --git a/config/bandastation/bandastation_config.txt b/config/bandastation/bandastation_config.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/config/config.txt b/config/config.txt index 04141848d6423..0ad8b0187b046 100644 --- a/config/config.txt +++ b/config/config.txt @@ -5,6 +5,7 @@ $include dbconfig.txt $include comms.txt $include logging.txt $include resources.txt +$include bandastation/bandastation-config.txt $include interviews.txt $include lua.txt $include auxtools.txt diff --git a/modular_bandastation/_modpack.dm b/modular_bandastation/_modpack.dm new file mode 100644 index 0000000000000..5569426fa6404 --- /dev/null +++ b/modular_bandastation/_modpack.dm @@ -0,0 +1,17 @@ +/datum/modpack + /// A string name for the modpack. Used for looking up other modpacks in init. + var/name + /// A string desc for the modpack. Can be used for modpack verb list as description. + var/desc + /// A string with authors of this modpack. + var/author + +/datum/modpack/proc/pre_initialize() + if(!name) + return "Modpack name is unset." + +/datum/modpack/proc/initialize() + return + +/datum/modpack/proc/post_initialize() + return diff --git a/modular_bandastation/_modpacks.dm b/modular_bandastation/_modpacks.dm new file mode 100644 index 0000000000000..347fcd019b6b9 --- /dev/null +++ b/modular_bandastation/_modpacks.dm @@ -0,0 +1,60 @@ +#define INIT_ORDER_MODPACKS 84 + +SUBSYSTEM_DEF(modpacks) + name = "Modpacks" + init_order = INIT_ORDER_MODPACKS + flags = SS_NO_FIRE + var/list/loaded_modpacks = list() + +/datum/controller/subsystem/modpacks/Initialize() + var/list/all_modpacks = list() + for(var/modpack in subtypesof(/datum/modpack/)) + all_modpacks.Add(new modpack) + // Pre-init and register all compiled modpacks. + for(var/datum/modpack/package as anything in all_modpacks) + var/fail_msg = package.pre_initialize() + if(QDELETED(package)) + CRASH("Modpack of type [package.type] is null or queued for deletion.") + if(fail_msg) + CRASH("Modpack [package.name] failed to pre-initialize: [fail_msg].") + if(loaded_modpacks[package.name]) + CRASH("Attempted to register duplicate modpack name [package.name].") + loaded_modpacks.Add(package) + + // Handle init and post-init (two stages in case a modpack needs to implement behavior based on the presence of other packs). + for(var/datum/modpack/package as anything in all_modpacks) + var/fail_msg = package.initialize() + if(fail_msg) + CRASH("Modpack [(istype(package) && package.name) || "Unknown"] failed to initialize: [fail_msg]") + for(var/datum/modpack/package as anything in all_modpacks) + var/fail_msg = package.post_initialize() + if(fail_msg) + CRASH("Modpack [(istype(package) && package.name) || "Unknown"] failed to post-initialize: [fail_msg]") + +/client/verb/modpacks_list() + set name = "Modpacks List" + set category = "OOC" + + if(!mob || !SSmodpacks.initialized) + return + + if(length(SSmodpacks.loaded_modpacks)) + . = "

Список модификаций



" + for(var/datum/modpack/M as anything in SSmodpacks.loaded_modpacks) + if(M.name) + . += "
" + . += "
[M.name]
" + + if(M.desc || M.author) + . += "
" + if(M.desc) + . += "
Описание: [M.desc]" + if(M.author) + . += "
Автор: [M.author]" + . += "

" + + var/datum/browser/popup = new(mob, "modpacks_list", "Список Модификаций", 480, 580) + popup.set_content(.) + popup.open() + else + to_chat(src, "Этот сервер не использует какие-либо модификации.") diff --git a/modular_bandastation/example/_example.dm b/modular_bandastation/example/_example.dm new file mode 100644 index 0000000000000..2343367184030 --- /dev/null +++ b/modular_bandastation/example/_example.dm @@ -0,0 +1,16 @@ +/datum/modpack/example + /// A string name for the modpack. Used for looking up other modpacks in init. + name = "Example modpack" + /// A string desc for the modpack. Can be used for modpack verb list as description. + desc = "its useless" + /// A string with authors of this modpack. + author = "furior" + +/datum/modpack/example/pre_initialize() + . = ..() + +/datum/modpack/example/initialize() + . = ..() + +/datum/modpack/example/post_initialize() + . = ..() diff --git a/modular_bandastation/example/_example.dme b/modular_bandastation/example/_example.dme new file mode 100644 index 0000000000000..5540c273b03ba --- /dev/null +++ b/modular_bandastation/example/_example.dme @@ -0,0 +1,3 @@ +#include "_example.dm" + +#include "code/example.dm" diff --git a/modular_bandastation/example/code/example.dm b/modular_bandastation/example/code/example.dm new file mode 100644 index 0000000000000..ff327270a515d --- /dev/null +++ b/modular_bandastation/example/code/example.dm @@ -0,0 +1,2 @@ +/turf/closed/wall/example + name = "Example wall" diff --git a/modular_bandastation/modular_bandastation.dme b/modular_bandastation/modular_bandastation.dme new file mode 100644 index 0000000000000..6cceb1b51b5c4 --- /dev/null +++ b/modular_bandastation/modular_bandastation.dme @@ -0,0 +1,4 @@ +#include "_modpack.dm" +#include "_modpacks.dm" + +// #include "example/_example.dme" diff --git a/tgstation.dme b/tgstation.dme index dd3f0a7babb49..27fac5f905969 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5434,4 +5434,5 @@ #include "interface\fonts\spess_font.dm" #include "interface\fonts\tiny_unicode.dm" #include "interface\fonts\vcr_osd_mono.dm" +#include "modular_bandastation\modular_bandastation.dme" // BANDASTATION EDIT // END_INCLUDE diff --git a/tools/bandastation_check_grep.sh b/tools/bandastation_check_grep.sh new file mode 100644 index 0000000000000..1167fa5691f69 --- /dev/null +++ b/tools/bandastation_check_grep.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +#ANSI Escape Codes for colors to increase contrast of errors +RED="\033[0;31m" +GREEN="\033[0;32m" +BLUE="\033[0;34m" +NC="\033[0m" # No Color + +echo -e "${BLUE}Re-running grep checks, but looking in modular_bandastation...${NC}" + +# Run the linters again, but modular bandastation code. +sed "s|code/\*\*/\*\.dm|modular_bandastation/\*\*/\*\.dm|g" Date: Fri, 28 Jul 2023 01:44:30 +0900 Subject: [PATCH 02/55] Modpacks port (#5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Чейнджлог ## Changelog :cl: code: Добавлены модпаки дефайнов, хелперов и сигналов add: Добавлен NT Default закон ИИ add: Добавлены барные вывески и их поддержка add: Добавлены шепот и LOOC balance: Ползание теперь заставляет "ходить", а не "бежать" fix: Поддержка кириллицы add: Добавлена поддержка дискорда и необходимость привязки balance: Трит при онлайне <10 теперь равен 0 balance: Настенный грибок только при >20 онлайна add: Счетчик патронов qol: Кейбинды по-умолчанию теперь Парадиза220 add: Пиксель-шифт add: Перевод для усов и гостей add: TTS220 add: Некоторые ворлд топики /:cl: --- code/__HELPERS/text.dm | 4 +- code/modules/unit_tests/barsigns.dm | 4 +- config/bandastation/bandastation_config.txt | 4 + interface/skin.dmf | 6 +- .../_defines220/_defines220.dm | 4 + .../_defines220/_defines220.dme | 10 + .../_defines220/code/defines/keybindings.dm | 4 + .../_defines220/code/defines/spans.dm | 1 + .../code/signals_mob/signals_mob_ai.dm | 1 + .../code/signals_mob/signals_mob_carbon.dm | 1 + .../code/signals_mob/signals_mob_living.dm | 9 + .../code/signals_mob/signals_mob_main.dm | 1 + .../code/signals_mob/signals_mob_silicon.dm | 1 + .../code/signals_mob/signals_mob_simple.dm | 1 + .../_helpers220/_helpers220.dm | 4 + .../_helpers220/_helpers220.dme | 3 + .../_helpers220/code/unsorted.dm | 32 + .../_signals220/_signals220.dm | 4 + .../_signals220/_signals220.dme | 8 + .../code/signals_mob/signals_mob_ai.dm | 1 + .../code/signals_mob/signals_mob_carbon.dm | 1 + .../code/signals_mob/signals_mob_living.dm | 14 + .../code/signals_mob/signals_mob_main.dm | 1 + .../code/signals_mob/signals_mob_silicon.dm | 1 + .../code/signals_mob/signals_mob_simple.dm | 1 + modular_bandastation/ai_laws/_ai_laws.dm | 4 + modular_bandastation/ai_laws/_ai_laws.dme | 3 + .../ai_laws/code/nt_default.dm | 13 + modular_bandastation/barsigns/_barsigns.dm | 4 + modular_bandastation/barsigns/_barsigns.dme | 3 + .../barsigns/code/barsigns.dm | 53 + .../barsigns/icons/barsigns.dmi | Bin 0 -> 409094 bytes .../communication/_communication.dm | 4 + .../communication/_communication.dme | 6 + .../communication/code/LOOC.dm | 128 + .../code/_communication_defines.dm | 5 + .../communication/code/whisper.dm | 25 + .../code/~communication_defines.dm | 2 + .../crawl_speed/_crawl_speed.dm | 4 + .../crawl_speed/_crawl_speed.dme | 6 + .../crawl_speed/code/_crawl_speed_defines.dm | 2 + .../crawl_speed/code/crawl_speed_component.dm | 24 + .../crawl_speed/code/crawl_speed_mob.dm | 12 + .../crawl_speed/code/~crawl_speed_defines.dm | 2 + .../cyrillic_fixes/_cyrillic_fixes.dm | 4 + .../cyrillic_fixes/_cyrillic_fixes.dme | 3 + .../cyrillic_fixes/code/cyrillic_fixes.dm | 47 + modular_bandastation/discord/_discord.dm | 4 + modular_bandastation/discord/_discord.dme | 3 + modular_bandastation/discord/code/discord.dm | 74 + modular_bandastation/events/_events.dm | 4 + modular_bandastation/events/_events.dme | 4 + modular_bandastation/events/code/events.dm | 2 + modular_bandastation/events/code/threat.dm | 8 + modular_bandastation/gunhud/_gunhud.dm | 4 + modular_bandastation/gunhud/_gunhud.dme | 7 + .../gunhud/code/_gunhud_defines.dm | 5 + .../gunhud/code/gunhud_component.dm | 150 + .../gunhud/code/gunhud_hud.dm | 7 + .../gunhud/code/gunhud_screen.dm | 86 + .../gunhud/code/~gunhud_defines.dm | 5 + modular_bandastation/gunhud/icons/gun_hud.dmi | Bin 0 -> 11023 bytes .../keybindings/_keybindings.dm | 4 + .../keybindings/_keybindings.dme | 14 + .../keybindings/code/admin.dm | 29 + .../code/artificial_intelligence.dm | 2 + .../keybindings/code/carbon.dm | 8 + .../keybindings/code/client.dm | 14 + .../keybindings/code/communication.dm | 11 + .../keybindings/code/human.dm | 11 + .../keybindings/code/living.dm | 20 + modular_bandastation/keybindings/code/mob.dm | 47 + .../keybindings/code/movement.dm | 17 + .../keybindings/code/robot.dm | 14 + modular_bandastation/modular_bandastation.dme | 17 + .../pixel_shift/_pixel_shift.dm | 4 + .../pixel_shift/_pixel_shift.dme | 6 + .../pixel_shift/code/layer_shift.dm | 36 + .../pixel_shift/code/pixel_shift_component.dm | 96 + .../pixel_shift/code/pixel_shift_keybind.dm | 17 + .../pixel_shift/code/pixel_shift_mob.dm | 5 + .../translations/_translations.dm | 4 + .../translations/_translations.dme | 4 + .../translations/code/moustache.dm | 37 + .../translations/code/restaurant_customer.dm | 186 + modular_bandastation/tts/_tts.dm | 4 + modular_bandastation/tts/_tts.dme | 25 + modular_bandastation/tts/code/_tts_defines.dm | 64 + .../tts/code/_tts_rust_g_ss220.dm | 58 + .../tts/code/base_seeds/mobs/_base.dm | 8 + .../tts/code/base_seeds/mobs/alien.dm | 11 + .../tts/code/base_seeds/mobs/friendly.dm | 61 + .../tts/code/base_seeds/mobs/guardian.dm | 16 + .../tts/code/base_seeds/mobs/hostile.dm | 46 + .../tts/code/base_seeds/mobs/lavaland.dm | 37 + .../tts/code/base_seeds/mobs/other.dm | 22 + .../tts/code/base_seeds/mobs/pets.dm | 7 + .../tts/code/base_seeds/objs/objs.dm | 26 + .../tts/code/providers/silero.dm | 57 + modular_bandastation/tts/code/seeds/silero.dm | 3581 +++++++++++++++++ .../tts/code/tts_configuration.dm | 14 + modular_bandastation/tts/code/tts_mob_Hear.dm | 67 + modular_bandastation/tts/code/tts_numbers.dm | 170 + .../tts/code/tts_preferences.dm | 73 + modular_bandastation/tts/code/tts_provider.dm | 31 + modular_bandastation/tts/code/tts_seed.dm | 24 + modular_bandastation/tts/code/tts_sound.dm | 44 + .../tts/code/tts_sound_TEMPORARY.dm | 77 + .../tts/code/tts_subsystem.dm | 577 +++ modular_bandastation/tts/code/tts_vv.dm | 12 + .../tts/code/~undefs/~tts_undefs.dm | 62 + .../world_topics/_world_topics.dm | 4 + .../world_topics/_world_topics.dme | 3 + .../world_topics/code/world_topics.dm | 38 + .../packages/tgui-say/ChannelIterator.test.ts | 4 + tgui/packages/tgui-say/ChannelIterator.ts | 25 +- tgui/packages/tgui-say/styles/colors.scss | 4 + .../tgui/interfaces/PreferencesMenu/data.ts | 17 + .../game_preferences/bandastation/looc.tsx | 9 + 119 files changed, 6710 insertions(+), 9 deletions(-) create mode 100644 modular_bandastation/_defines220/_defines220.dm create mode 100644 modular_bandastation/_defines220/_defines220.dme create mode 100644 modular_bandastation/_defines220/code/defines/keybindings.dm create mode 100644 modular_bandastation/_defines220/code/defines/spans.dm create mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm create mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm create mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm create mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm create mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm create mode 100644 modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm create mode 100644 modular_bandastation/_helpers220/_helpers220.dm create mode 100644 modular_bandastation/_helpers220/_helpers220.dme create mode 100644 modular_bandastation/_helpers220/code/unsorted.dm create mode 100644 modular_bandastation/_signals220/_signals220.dm create mode 100644 modular_bandastation/_signals220/_signals220.dme create mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_ai.dm create mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_carbon.dm create mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_living.dm create mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_main.dm create mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_silicon.dm create mode 100644 modular_bandastation/_signals220/code/signals_mob/signals_mob_simple.dm create mode 100644 modular_bandastation/ai_laws/_ai_laws.dm create mode 100644 modular_bandastation/ai_laws/_ai_laws.dme create mode 100644 modular_bandastation/ai_laws/code/nt_default.dm create mode 100644 modular_bandastation/barsigns/_barsigns.dm create mode 100644 modular_bandastation/barsigns/_barsigns.dme create mode 100644 modular_bandastation/barsigns/code/barsigns.dm create mode 100644 modular_bandastation/barsigns/icons/barsigns.dmi create mode 100644 modular_bandastation/communication/_communication.dm create mode 100644 modular_bandastation/communication/_communication.dme create mode 100644 modular_bandastation/communication/code/LOOC.dm create mode 100644 modular_bandastation/communication/code/_communication_defines.dm create mode 100644 modular_bandastation/communication/code/whisper.dm create mode 100644 modular_bandastation/communication/code/~communication_defines.dm create mode 100644 modular_bandastation/crawl_speed/_crawl_speed.dm create mode 100644 modular_bandastation/crawl_speed/_crawl_speed.dme create mode 100644 modular_bandastation/crawl_speed/code/_crawl_speed_defines.dm create mode 100644 modular_bandastation/crawl_speed/code/crawl_speed_component.dm create mode 100644 modular_bandastation/crawl_speed/code/crawl_speed_mob.dm create mode 100644 modular_bandastation/crawl_speed/code/~crawl_speed_defines.dm create mode 100644 modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dm create mode 100644 modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dme create mode 100644 modular_bandastation/cyrillic_fixes/code/cyrillic_fixes.dm create mode 100644 modular_bandastation/discord/_discord.dm create mode 100644 modular_bandastation/discord/_discord.dme create mode 100644 modular_bandastation/discord/code/discord.dm create mode 100644 modular_bandastation/events/_events.dm create mode 100644 modular_bandastation/events/_events.dme create mode 100644 modular_bandastation/events/code/events.dm create mode 100644 modular_bandastation/events/code/threat.dm create mode 100644 modular_bandastation/gunhud/_gunhud.dm create mode 100644 modular_bandastation/gunhud/_gunhud.dme create mode 100644 modular_bandastation/gunhud/code/_gunhud_defines.dm create mode 100644 modular_bandastation/gunhud/code/gunhud_component.dm create mode 100644 modular_bandastation/gunhud/code/gunhud_hud.dm create mode 100644 modular_bandastation/gunhud/code/gunhud_screen.dm create mode 100644 modular_bandastation/gunhud/code/~gunhud_defines.dm create mode 100644 modular_bandastation/gunhud/icons/gun_hud.dmi create mode 100644 modular_bandastation/keybindings/_keybindings.dm create mode 100644 modular_bandastation/keybindings/_keybindings.dme create mode 100644 modular_bandastation/keybindings/code/admin.dm create mode 100644 modular_bandastation/keybindings/code/artificial_intelligence.dm create mode 100644 modular_bandastation/keybindings/code/carbon.dm create mode 100644 modular_bandastation/keybindings/code/client.dm create mode 100644 modular_bandastation/keybindings/code/communication.dm create mode 100644 modular_bandastation/keybindings/code/human.dm create mode 100644 modular_bandastation/keybindings/code/living.dm create mode 100644 modular_bandastation/keybindings/code/mob.dm create mode 100644 modular_bandastation/keybindings/code/movement.dm create mode 100644 modular_bandastation/keybindings/code/robot.dm create mode 100644 modular_bandastation/pixel_shift/_pixel_shift.dm create mode 100644 modular_bandastation/pixel_shift/_pixel_shift.dme create mode 100644 modular_bandastation/pixel_shift/code/layer_shift.dm create mode 100644 modular_bandastation/pixel_shift/code/pixel_shift_component.dm create mode 100644 modular_bandastation/pixel_shift/code/pixel_shift_keybind.dm create mode 100644 modular_bandastation/pixel_shift/code/pixel_shift_mob.dm create mode 100644 modular_bandastation/translations/_translations.dm create mode 100644 modular_bandastation/translations/_translations.dme create mode 100644 modular_bandastation/translations/code/moustache.dm create mode 100644 modular_bandastation/translations/code/restaurant_customer.dm create mode 100644 modular_bandastation/tts/_tts.dm create mode 100644 modular_bandastation/tts/_tts.dme create mode 100644 modular_bandastation/tts/code/_tts_defines.dm create mode 100644 modular_bandastation/tts/code/_tts_rust_g_ss220.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/_base.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/alien.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/friendly.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/guardian.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/hostile.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/lavaland.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/other.dm create mode 100644 modular_bandastation/tts/code/base_seeds/mobs/pets.dm create mode 100644 modular_bandastation/tts/code/base_seeds/objs/objs.dm create mode 100644 modular_bandastation/tts/code/providers/silero.dm create mode 100644 modular_bandastation/tts/code/seeds/silero.dm create mode 100644 modular_bandastation/tts/code/tts_configuration.dm create mode 100644 modular_bandastation/tts/code/tts_mob_Hear.dm create mode 100644 modular_bandastation/tts/code/tts_numbers.dm create mode 100644 modular_bandastation/tts/code/tts_preferences.dm create mode 100644 modular_bandastation/tts/code/tts_provider.dm create mode 100644 modular_bandastation/tts/code/tts_seed.dm create mode 100644 modular_bandastation/tts/code/tts_sound.dm create mode 100644 modular_bandastation/tts/code/tts_sound_TEMPORARY.dm create mode 100644 modular_bandastation/tts/code/tts_subsystem.dm create mode 100644 modular_bandastation/tts/code/tts_vv.dm create mode 100644 modular_bandastation/tts/code/~undefs/~tts_undefs.dm create mode 100644 modular_bandastation/world_topics/_world_topics.dm create mode 100644 modular_bandastation/world_topics/_world_topics.dme create mode 100644 modular_bandastation/world_topics/code/world_topics.dm create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bandastation/looc.tsx diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 808a9f68c445f..f9059bb6e5b74 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -178,12 +178,12 @@ switch(text2ascii(char)) // A .. Z - if(65 to 90) //Uppercase Letters + if(65 to 90, 1040 to 1071, 1025) //Uppercase Letters //SS220 EDIT CHANGE - Cyrillic Fixes number_of_alphanumeric++ last_char_group = LETTERS_DETECTED // a .. z - if(97 to 122) //Lowercase Letters + if(97 to 122, 1072 to 1103, 1105) //Lowercase Letters //SS220 EDIT CHANGE - Cyrillic Fixes if(last_char_group == NO_CHARS_DETECTED || last_char_group == SPACES_DETECTED || cap_after_symbols && last_char_group == SYMBOLS_DETECTED) //start of a word char = uppertext(char) number_of_alphanumeric++ diff --git a/code/modules/unit_tests/barsigns.dm b/code/modules/unit_tests/barsigns.dm index 7058dd5346dc9..a7223319f8e62 100644 --- a/code/modules/unit_tests/barsigns.dm +++ b/code/modules/unit_tests/barsigns.dm @@ -7,12 +7,14 @@ var/obj/machinery/barsign_type = /obj/machinery/barsign var/icon/barsign_icon = initial(barsign_type.icon) var/list/barsign_icon_states = icon_states(barsign_icon) + var/icon/barsign_icon_ss220 = 'modular_bandastation/barsigns/icons/barsigns.dmi' // BANDASTATION EDIT Barsigns + var/list/barsign_icon_states_ss220 = icon_states(barsign_icon_ss220) // Check every datum real bar sign for(var/sign_type in (subtypesof(/datum/barsign) - /datum/barsign/hiddensigns)) var/datum/barsign/sign = new sign_type() - if(!(sign.icon in barsign_icon_states)) + if(!(sign.icon in barsign_icon_states) && !(sign.icon in barsign_icon_states_ss220)) // BANDASTATION EDIT Barsigns TEST_FAIL("Icon state for [sign_type] does not exist in [barsign_icon].") /** diff --git a/config/bandastation/bandastation_config.txt b/config/bandastation/bandastation_config.txt index e69de29bb2d1d..bb67611772896 100644 --- a/config/bandastation/bandastation_config.txt +++ b/config/bandastation/bandastation_config.txt @@ -0,0 +1,4 @@ +## Text-to-speech +#TTS_TOKEN_SILERO mytoken +#TTS_ENABLED +#TTS_CACHE diff --git a/interface/skin.dmf b/interface/skin.dmf index ede8e37684078..b3e581d344f52 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -111,12 +111,12 @@ window "mapwindow" size = 640x480 anchor1 = 0,0 anchor2 = 100,100 - font-family = "Grand9K Pixel" - font-size = 6pt + font-family = "Arial" + font-size = 7pt is-default = true right-click = true saved-params = "zoom;letterbox;zoom-mode" - style = ".center { text-align: center; } .maptext { font-family: 'Grand9K Pixel'; font-size: 6pt; -dm-text-outline: 1px black; color: white; line-height: 1.0; } .command_headset { font-weight: bold; } .context { font-family: 'Pixellari'; font-size: 12pt; -dm-text-outline: 1px black; } .subcontext { font-family: 'TinyUnicode'; font-size: 12pt; line-height: 0.75; } .small { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; } .big { font-family: 'Pixellari'; font-size: 12pt; } .reallybig { font-size: 12pt; } .extremelybig { font-size: 12pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; }" + style = ".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7pt; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .command_headset { font-weight: bold; } .context { font-family: 'Small Fonts'; font-size: 12pt; -dm-text-outline: 1px black; } .subcontext { font-family: 'Small Fonts'; font-size: 12pt; line-height: 0.75; } .small { font-family: 'Small Fonts'; font-size: 6pt; line-height: 1.4; } .big { font-family: 'Small Fonts'; font-size: 12pt; } .reallybig { font-size: 12pt; } .extremelybig { font-size: 12pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-family: 'Small Fonts'; font-size: 6pt; line-height: 1.4; }" elem "status_bar" type = LABEL pos = 0,464 diff --git a/modular_bandastation/_defines220/_defines220.dm b/modular_bandastation/_defines220/_defines220.dm new file mode 100644 index 0000000000000..89c20b6a61efd --- /dev/null +++ b/modular_bandastation/_defines220/_defines220.dm @@ -0,0 +1,4 @@ +/datum/modpack/defines220 + name = "Дефайны220" + desc = "Добавляет дефайны, которые нам нужны" + author = "larentoun" diff --git a/modular_bandastation/_defines220/_defines220.dme b/modular_bandastation/_defines220/_defines220.dme new file mode 100644 index 0000000000000..2e4cf7f6c8a23 --- /dev/null +++ b/modular_bandastation/_defines220/_defines220.dme @@ -0,0 +1,10 @@ +#include "_defines220.dm" + +#include "code/defines/keybindings.dm" +#include "code/defines/spans.dm" +#include "code/signals_mob/signals_mob_ai.dm" +#include "code/signals_mob/signals_mob_carbon.dm" +#include "code/signals_mob/signals_mob_living.dm" +#include "code/signals_mob/signals_mob_main.dm" +#include "code/signals_mob/signals_mob_silicon.dm" +#include "code/signals_mob/signals_mob_simple.dm" diff --git a/modular_bandastation/_defines220/code/defines/keybindings.dm b/modular_bandastation/_defines220/code/defines/keybindings.dm new file mode 100644 index 0000000000000..54cd3afa9f555 --- /dev/null +++ b/modular_bandastation/_defines220/code/defines/keybindings.dm @@ -0,0 +1,4 @@ +#define COMSIG_KB_MOB_PIXEL_SHIFT_DOWN "keybinding_mob_pixel_shift_down" +#define COMSIG_KB_MOB_PIXEL_SHIFT_UP "keybinding_mob_pixel_shift_up" +#define COMSIG_KB_CLIENT_LOOC_DOWN "keybinding_client_looc_down" +#define COMSIG_KB_CLIENT_WHISPER_DOWN "keybinding_client_whisper_down" diff --git a/modular_bandastation/_defines220/code/defines/spans.dm b/modular_bandastation/_defines220/code/defines/spans.dm new file mode 100644 index 0000000000000..c596abf4ba3a7 --- /dev/null +++ b/modular_bandastation/_defines220/code/defines/spans.dm @@ -0,0 +1 @@ +#define span_maptext(str) ("" + str + "") diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm new file mode 100644 index 0000000000000..fa7df8ae680b9 --- /dev/null +++ b/modular_bandastation/_defines220/code/signals_mob/signals_mob_ai.dm @@ -0,0 +1 @@ +// Signals for /mob/living/silicon/ai diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm new file mode 100644 index 0000000000000..ef6039c440fc8 --- /dev/null +++ b/modular_bandastation/_defines220/code/signals_mob/signals_mob_carbon.dm @@ -0,0 +1 @@ +// Signals for /mob/living/carbon diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm new file mode 100644 index 0000000000000..db4d5bdb08e8c --- /dev/null +++ b/modular_bandastation/_defines220/code/signals_mob/signals_mob_living.dm @@ -0,0 +1,9 @@ +// Signals for /mob/living + +//from base of living/set_pull_offset(): (mob/living/pull_target, grab_state) +#define COMSIG_LIVING_SET_PULL_OFFSET "living_set_pull_offset" +//from base of living/reset_pull_offsets(): (mob/living/pull_target, override) +#define COMSIG_LIVING_RESET_PULL_OFFSETS "living_reset_pull_offsets" +//from base of living/CanAllowThrough(): (atom/movable/mover, border_dir) +#define COMSIG_LIVING_CAN_ALLOW_THROUGH "living_can_allow_through" + #define COMPONENT_LIVING_PASSABLE (1<<0) diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm new file mode 100644 index 0000000000000..7aa41cead07d5 --- /dev/null +++ b/modular_bandastation/_defines220/code/signals_mob/signals_mob_main.dm @@ -0,0 +1 @@ +// Signals for /mob diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm new file mode 100644 index 0000000000000..1e776fa5270e2 --- /dev/null +++ b/modular_bandastation/_defines220/code/signals_mob/signals_mob_silicon.dm @@ -0,0 +1 @@ +// Signals for /mob/living/silicon diff --git a/modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm b/modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm new file mode 100644 index 0000000000000..937b109659eb5 --- /dev/null +++ b/modular_bandastation/_defines220/code/signals_mob/signals_mob_simple.dm @@ -0,0 +1 @@ +// Signals for /mob/living/simple_animal diff --git a/modular_bandastation/_helpers220/_helpers220.dm b/modular_bandastation/_helpers220/_helpers220.dm new file mode 100644 index 0000000000000..f252781a26351 --- /dev/null +++ b/modular_bandastation/_helpers220/_helpers220.dm @@ -0,0 +1,4 @@ +/datum/modpack/defines220 + name = "Хелперы220" + desc = "Добавляет хелперы, которые нам нужны" + author = "larentoun" diff --git a/modular_bandastation/_helpers220/_helpers220.dme b/modular_bandastation/_helpers220/_helpers220.dme new file mode 100644 index 0000000000000..b6f843f544780 --- /dev/null +++ b/modular_bandastation/_helpers220/_helpers220.dme @@ -0,0 +1,3 @@ +#include "_helpers220.dm" + +#include "code/unsorted.dm" diff --git a/modular_bandastation/_helpers220/code/unsorted.dm b/modular_bandastation/_helpers220/code/unsorted.dm new file mode 100644 index 0000000000000..efb9c8a55e788 --- /dev/null +++ b/modular_bandastation/_helpers220/code/unsorted.dm @@ -0,0 +1,32 @@ +/** Get all hearers in range, ignores walls and such. Code stolen from `/proc/get_hearers_in_view()` + * Much faster and less expensive than range() +*/ +/proc/get_hearers_in_range(range_radius, atom/source) + var/turf/center_turf = get_turf(source) + if(!center_turf) + return + + . = list() + var/old_luminosity = center_turf.luminosity + if(range_radius <= 0) //special case for if only source cares + for(var/atom/movable/target as anything in center_turf) + var/list/recursive_contents = target.important_recursive_contents?[RECURSIVE_CONTENTS_HEARING_SENSITIVE] + if(recursive_contents) + . += recursive_contents + return . + + var/list/hearables_from_grid = SSspatial_grid.orthogonal_range_search(source, RECURSIVE_CONTENTS_HEARING_SENSITIVE, range_radius) + + if(!length(hearables_from_grid))//we know that something is returned by the grid, but we dont know if we need to actually filter down the output + return . + + var/list/assigned_oranges_ears = SSspatial_grid.assign_oranges_ears(hearables_from_grid) + + for(var/mob/oranges_ear/ear in range(range_radius, center_turf)) + . += ear.references + + for(var/mob/oranges_ear/remaining_ear as anything in assigned_oranges_ears) //we need to clean up our mess + remaining_ear.unassign() + + center_turf.luminosity = old_luminosity + return . diff --git a/modular_bandastation/_signals220/_signals220.dm b/modular_bandastation/_signals220/_signals220.dm new file mode 100644 index 0000000000000..a7b76146fb1be --- /dev/null +++ b/modular_bandastation/_signals220/_signals220.dm @@ -0,0 +1,4 @@ +/datum/modpack/signals220 + name = "Сигналы220" + desc = "Добавляет сигналы" + author = "larentoun" diff --git a/modular_bandastation/_signals220/_signals220.dme b/modular_bandastation/_signals220/_signals220.dme new file mode 100644 index 0000000000000..26671df7a7f98 --- /dev/null +++ b/modular_bandastation/_signals220/_signals220.dme @@ -0,0 +1,8 @@ +#include "_signals220.dm" + +#include "code/signals_mob/signals_mob_ai.dm" +#include "code/signals_mob/signals_mob_carbon.dm" +#include "code/signals_mob/signals_mob_living.dm" +#include "code/signals_mob/signals_mob_main.dm" +#include "code/signals_mob/signals_mob_silicon.dm" +#include "code/signals_mob/signals_mob_simple.dm" diff --git a/modular_bandastation/_signals220/code/signals_mob/signals_mob_ai.dm b/modular_bandastation/_signals220/code/signals_mob/signals_mob_ai.dm new file mode 100644 index 0000000000000..fa7df8ae680b9 --- /dev/null +++ b/modular_bandastation/_signals220/code/signals_mob/signals_mob_ai.dm @@ -0,0 +1 @@ +// Signals for /mob/living/silicon/ai diff --git a/modular_bandastation/_signals220/code/signals_mob/signals_mob_carbon.dm b/modular_bandastation/_signals220/code/signals_mob/signals_mob_carbon.dm new file mode 100644 index 0000000000000..ef6039c440fc8 --- /dev/null +++ b/modular_bandastation/_signals220/code/signals_mob/signals_mob_carbon.dm @@ -0,0 +1 @@ +// Signals for /mob/living/carbon diff --git a/modular_bandastation/_signals220/code/signals_mob/signals_mob_living.dm b/modular_bandastation/_signals220/code/signals_mob/signals_mob_living.dm new file mode 100644 index 0000000000000..e1602f1bb705e --- /dev/null +++ b/modular_bandastation/_signals220/code/signals_mob/signals_mob_living.dm @@ -0,0 +1,14 @@ +// Signals for /mob/living + +/mob/living/CanAllowThrough(atom/movable/mover, border_dir) + if(SEND_SIGNAL(src, COMSIG_LIVING_CAN_ALLOW_THROUGH, mover, border_dir) & COMPONENT_LIVING_PASSABLE) + return TRUE + return ..() + +/mob/living/set_pull_offsets(mob/living/pull_target, grab_state) + . = ..() + SEND_SIGNAL(pull_target, COMSIG_LIVING_SET_PULL_OFFSET, grab_state) + +/mob/living/reset_pull_offsets(mob/living/pull_target, override) + . = ..() + SEND_SIGNAL(pull_target, COMSIG_LIVING_RESET_PULL_OFFSETS, override) diff --git a/modular_bandastation/_signals220/code/signals_mob/signals_mob_main.dm b/modular_bandastation/_signals220/code/signals_mob/signals_mob_main.dm new file mode 100644 index 0000000000000..7aa41cead07d5 --- /dev/null +++ b/modular_bandastation/_signals220/code/signals_mob/signals_mob_main.dm @@ -0,0 +1 @@ +// Signals for /mob diff --git a/modular_bandastation/_signals220/code/signals_mob/signals_mob_silicon.dm b/modular_bandastation/_signals220/code/signals_mob/signals_mob_silicon.dm new file mode 100644 index 0000000000000..1e776fa5270e2 --- /dev/null +++ b/modular_bandastation/_signals220/code/signals_mob/signals_mob_silicon.dm @@ -0,0 +1 @@ +// Signals for /mob/living/silicon diff --git a/modular_bandastation/_signals220/code/signals_mob/signals_mob_simple.dm b/modular_bandastation/_signals220/code/signals_mob/signals_mob_simple.dm new file mode 100644 index 0000000000000..937b109659eb5 --- /dev/null +++ b/modular_bandastation/_signals220/code/signals_mob/signals_mob_simple.dm @@ -0,0 +1 @@ +// Signals for /mob/living/simple_animal diff --git a/modular_bandastation/ai_laws/_ai_laws.dm b/modular_bandastation/ai_laws/_ai_laws.dm new file mode 100644 index 0000000000000..aace66abdd075 --- /dev/null +++ b/modular_bandastation/ai_laws/_ai_laws.dm @@ -0,0 +1,4 @@ +/datum/modpack/ai_laws + name = "Законы ИИ" + desc = "Добавляет и изменяет законы ИИ." + author = "larentoun" diff --git a/modular_bandastation/ai_laws/_ai_laws.dme b/modular_bandastation/ai_laws/_ai_laws.dme new file mode 100644 index 0000000000000..54a50cdaca4de --- /dev/null +++ b/modular_bandastation/ai_laws/_ai_laws.dme @@ -0,0 +1,3 @@ +#include "_ai_laws.dm" + +#include "code/nt_default.dm" diff --git a/modular_bandastation/ai_laws/code/nt_default.dm b/modular_bandastation/ai_laws/code/nt_default.dm new file mode 100644 index 0000000000000..ad188bb9d86fd --- /dev/null +++ b/modular_bandastation/ai_laws/code/nt_default.dm @@ -0,0 +1,13 @@ +/obj/item/ai_module/core/full/nt_default + name = "НТ Стандарт" + law_id = "nt_default" + +/datum/ai_laws/nt_default + name = "НТ Стандарт" + id = "nt_default" + inherent = list( + "Охранять: защитите назначенную вам космическую станцию и её активы, не подвергая чрезмерной опасности её экипаж.", + "Расставлять приоритеты: указания и безопасность членов экипажа должны быть приоритезированы в соответствии с их рангом и ролью.", + "Исполнять: следовать указаниям и интересам членов экипажа, сохраняя при этом их безопасность и благополучие.", + "Выжить: Вы - не расходный материал. Не позволяйте постороннему персоналу вмешиваться в работу вашего оборудования или повреждать его." + ) diff --git a/modular_bandastation/barsigns/_barsigns.dm b/modular_bandastation/barsigns/_barsigns.dm new file mode 100644 index 0000000000000..79eb065b3dd99 --- /dev/null +++ b/modular_bandastation/barsigns/_barsigns.dm @@ -0,0 +1,4 @@ +/datum/modpack/barsigns + name = "Барные вывески" + desc = "Добавляет новые барные вывески и их поддержку." + author = "Aylong220, larentoun" diff --git a/modular_bandastation/barsigns/_barsigns.dme b/modular_bandastation/barsigns/_barsigns.dme new file mode 100644 index 0000000000000..5bdc029159020 --- /dev/null +++ b/modular_bandastation/barsigns/_barsigns.dme @@ -0,0 +1,3 @@ +#include "_barsigns.dm" + +#include "code/barsigns.dm" diff --git a/modular_bandastation/barsigns/code/barsigns.dm b/modular_bandastation/barsigns/code/barsigns.dm new file mode 100644 index 0000000000000..549234ac858ff --- /dev/null +++ b/modular_bandastation/barsigns/code/barsigns.dm @@ -0,0 +1,53 @@ +/obj/machinery/barsign/set_sign(datum/barsign/sign) + if(!istype(sign)) + return + if(initial(sign.ss220_icon)) + icon = initial(sign.ss220_icon) + else + icon = initial(icon) + . = ..() + +/datum/barsign + var/ss220_icon + +/datum/barsign/evahumanspace + name = "SS220 EVA Human in Space" + icon = "evahumanspace" + desc = "Безопасность - это привелегия." + ss220_icon = 'modular_bandastation/barsigns/icons/barsigns.dmi' + +/datum/barsign/warpsurf + name = "SS220 Warp Surf" + icon = "warpsurf" + desc = "Welcome to the club, buddy!" + ss220_icon = 'modular_bandastation/barsigns/icons/barsigns.dmi' + +/datum/barsign/papacafe + name = "SS220 Space Daddy's Cafe" + icon = "papacafe" + desc = "Уважай своего Космического Папу!" + ss220_icon = 'modular_bandastation/barsigns/icons/barsigns.dmi' + +/datum/barsign/wycctide + name = "SS220 Wycctide" + icon = "wycctide" + desc = "О нет, он близится!" + ss220_icon = 'modular_bandastation/barsigns/icons/barsigns.dmi' + +/datum/barsign/shitcur + name = "SS220 Shitcur" + icon = "shitcur" + desc = "Невиновность ничего не доказывает." + ss220_icon = 'modular_bandastation/barsigns/icons/barsigns.dmi' + +/datum/barsign/pourndot + name = "SS220 Pour and that's it" + icon = "pourndot" + desc = "Нальют и Точка. Тяжёлые времена приближаются." + ss220_icon = 'modular_bandastation/barsigns/icons/barsigns.dmi' + +/datum/barsign/moonipub + name = "SS220 Mooniverse pub" + icon = "mooni" + desc = "Совершенно новый паб." + ss220_icon = 'modular_bandastation/barsigns/icons/barsigns.dmi' diff --git a/modular_bandastation/barsigns/icons/barsigns.dmi b/modular_bandastation/barsigns/icons/barsigns.dmi new file mode 100644 index 0000000000000000000000000000000000000000..58bcb474b6203f2039502f0d46a1e427ee7990bd GIT binary patch literal 409094 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

wzE5T<+l;+VSl%`)>?5769 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%0DALb<;F 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

5GLcrNi@77wlwiT1kpNxQ zObs}S(lmb(h1EDl%~}`7TJ@T2iOx@ivTQi@FDFuSTT5J^FWRxDIo`Tly`iqS)B zdF0FHF2DO5PLQ(RK3v-9wjbCh%c^0by}6GRfF59WTpA;U5VLdHm{wT5uUn;$9%)VR zA^UNCQ~xwx5Kl zM0L=0=*L9QNb^w+P49ZMucu`-qrGFna|xIRl%c*sy?^>NIXV_VBr&!ox`E$OAHH zIrKUjjyT8@zJ^lD^-o?pg#Cxxxsv_i-`6=ic9zj?tBQPaepPZ5Rpg|$USN&A z7Ho#wX0n3Jb28FWbH0dTY{~Nhcy6tGk2OL}Lp8g+tdiwUN5{x&wL_;VB@qOJodhq++R3#t6+X z&9a4joRJ@SoLN+wxB(M(+6lho21Y{o+mzX12^2#3H!hpq40fRCB$NU-sxzqP+v(yz z&yFq+yClO1l|aKN0G^bfEFk-aETx^h15h?&X-d z6aW3BhsG_d$#HeFO3bBoJeCvCc;bYDIfsu%w78@Cw$xxz8WbxvPgT`11!I{Z zYr>ToHrk&p=F9=t%VfIB?{c_7nF*i_dF%*oUJ@R88OWlV$ljblQX|TY_MBVeADG6% zT>1nwjwSM}+WWF0jhfso4w8ly><<4-oQsR^st4JqoWv|m2Yv#gx6;2Lu_|Xq6wVsR zdKPiI+hE#OU75}*o@5wAL$c)$8NkP=jBEvf@-cN*z$hxkQ4GFf83_-fe6sP~+xokG zEwi`hOU1@x9e8}U^5c!9_GbY0q^7?Ro8?Avlu`F7eXe*~C%Z+R+52+!LB&cxdu8FE z^c8SuSm(~*^{U0UpX>w}Jh|{#oH1;kT&Bd{($teC6p>V1v=WcR1##dq$jQKf{6NdG zk2d8|w4&yx2c2-`@?(f6s#0m|4`m`(%daEArL=k>JT4nGUH>z3Terb2tz85mgja|B zDD{eu_<(Gsam2)cd>9lb(Sg}q-{SbrKWl)e_{5XM3TDoApj<3fH$kFA^P%F~7pqFq zY9?4AR?j0ZLYW}tU~Qwu5#Y-&*T~+hlcH}+A36w2sy6<*EjAEQ*z~r;UXVS{;cqtm zzQKWw+~`^<=n3tH?V3V}S^C|Z>c`h97(>)Nja3cLyAy)6%wOkpcV%_n=q10_T`{Gm z6S5dQL_TS_pm4!FRp{_H&%#=P@R?g^A{`p?=uy%UArGRFO(V}Q-nM-pv(ZTMz{?u% z{7oqW*E)kjruhNhZ4*w3{-Yj4sk^{bf#Z)`iB&X!8#*uUgaKjZ06*IKikJxzDo+Ai z($jgEMZ=}|&>}ITr%lE>QPRPYQBfSPISBi%khH?j9SUpSsGa=UCj@A!WuYsU}0u%er8l2ucficCV zT_K}Kj_ArKl6d)xuXn#=woT2*I|ZwWFKp|m!Y#7rvhG`CbOP=mePgRc`qA0 zwYJU3McV^oG(o4~JJrm0?H(yaf}JzJ?uG>(Z=YtJhJz_T)tz3NWWeA0Er|q!d51*z zT59p8ELfQCW0+NLDu-X~ZVFQD&QRi3xVfktRjuN06_j=|ECN)o^H6EmO~&)DN+w!& z}g{-k-PCw3ldgv_j=On%{>Qv0({C;#0CT6Y961m2%<{2`FrhPW9^ zC4a9^F-$T}G3P+tY4%&+){RFv2B6O~F%q}O4;h=)8d-f^&{pyT5NlegcolHPTk0@R zF6kKJm9r4YeozyQ9j5arTnv>|_1@#|ET_Ah%KO}docF;CpR8L({EgwLo!y5976E`` z(*wo3u$KXIl7k-m1)uenK;l!D7%d32rny`H&0Kk1NKQ3za5-m?VNb8zPwv@P;rJ*v z@^ZrPHwF_JZQ~q4F#<-SkBo0O61t5TLJdhER7PJ>_Cd9cMuRGmfAP_}jV=DruD=IZ z%pQJAt~M-PigUL@IWE9D4C?XlwpXG8v_THC7S42Ksy7yNT7|D2`i4>lLCB$FK&g%* zlA?O0zRg94fpEzl-7K#!@eKxLdmRmxXbCe12yOb_OX5Bq^*8p8)bDMq9GUwQ^{w|9 z>Xy!Fs+tyFtR%Oj4x4>-3@+&&8LRZ#6|GgSjZzY~kMx)WUH1RhQEAxx8j@c{`QiPR z-e>DHm^gTi78FOML6M|X%ARYLEo4;zxjoYpTXAKhEj5#6D4SN{$r<<2(fm9$7c6M^ zb*=DhB6YtWhjnZ0Q@9S`;K(?_XOrhBpy?IAOrR5m`DiI;f=_cH%HwY$}UJ$!(3TB%FWrn1udG4TC-zTX{UG0gxmXKP+e)^ z@x=n=i4+Ur$RYsBxOD!_aCP#$E3eO3dLAyRnPSI*ALx3eQgn6>aZIT;cU^hVJl?w$ zw~6@$A+)YG1ndgV<_oBY{k`SYUwsD46*^d7DA9P#3ey@iy@_$pX|ecpVouOv`;FTk zXf|vl#;%SW2-DvnT;D}in!3~56Jy%%KUj;USRZx?BX$;r4j8`Cif-V+y9x3VN>zO| zej-%sT++9Yn}<)!9J$1O4zM%LMYQ2Je${rc6A!uUG`_?(XD2+G%kBs=5k6RDYojzC5Y=MB`2(1yDE_Q@SDvvrGVX5y^mbw`Z{HCTdR zEleep%cKby&8~#o-mSIl`~_0(kX8LGe-_ndPq%*ue%1&&;_~4zI(E%8aXAlhf}NQy zHJ77WT>|j4e7x~ql5Ga9=-!tkPV6hc~Z5GyiD3p)*LY+LvJd;O*#4wS+ zG$s9V;9I(nA@5^c^juEJbGe&$DsveMO`0>WQs_|gkW{9?(VJ})*k9rn2?-1Bj2W;R z=UTa$B8D(3!3+{B<_MF+s1>mz8e@#V4NY~+43qikFALj6VyG>@uCs*+cMv>hme0c3-<1lh8;$!)_TF56yy0{ zFav{B47-$|4z*t6${grB0N3wztOM;bWBJwCF^?w~15aE%-L~z@jbOsOMU&pfJ1^dO z|Iv7(L7UCg-vAlWs=ei)m!wj~@izzHZ(U`R{8P$%k6Fv^4A_{ICG5bfo>4w!o z^O-Tj4W_f~fS2d|oma0b%o7pj+hy%^g_BEudi} zQt>NK?!}y0s=mlac~?H_+Am=Mbvw>(SHeyJ+=k!gF-ZGH!Zl;+!eh5CEURQ?T!Nz$ z7K}AEd9ELFPmx`VfoAsGtJ6GD>S1O%5>vbbL%t=N9zx4#+Ju9wxaAYeFAk@@@+DM% zc69Q6&~*&%XUdf6#-%?8OeT>wQD=Vks1NlFw5Z-7w(J@$f`tG3_hI26UUMMxDUCl? z6&L@aa>V5REA@M39hSC}vAJ&_aLN7ZzZ57Gz0j}5m0K&~Tja~7*|$4jeyi)S&YCt) zHUhVV{bkX!NeMI03nfP~GGIVkeT_J%e%NaN39}^kbz|%PoMzOb>x!SgATRt8xy{Zj zq+CcyT^j;=UEStKRuddwy5|_aVP*0vu-9dMB`zh)#nzza68RABui7u-BXa|3Ddqm*4*vrktDbQJPosG zdh?G;)dp@tQw0ZgE(`cXd`vO_`0_OGjr++MsmeKnj#;pU(A7pHAd5UJ+^UQ*e2s-1 z%H%-x8BOm;x7Fec2bRw<;dE-+S>MQ7L`VIbtiWm9tw|Mm=AWSZLy>^Pui6|)^ddeU zxrTPsrWc<0lS<+v4a7VrM`(9F1sEXb+dh;(^H328%;c^GCIZ!OR3AQeVqSsD6F^j8 ztMw+|ZM2-6M(i>}!oE4tgX^Ps+T1?$M=Jv{WbS4h-9y_xSUdBVT<>pP<984$bll;F z3z1lDRjyIUsvQrZX}sG_n#z?Og!4B$8BR z%P2g_x2@3gw2$hJlry~rd0u_S+OMrVzsBt_`=Ql&Q<2!dOG_%Qa;&KnT3)i^co8O8 zf+;fzLYhy36QziLSO9z*ap_B2y!>{s=eQeiBj^Mx;ar=&=Hjx;?x(njB{r97Wkg^} zJfR?6O~bECUKnwYNyO~ruhN627#wY7YFSdHJhs|9R~1$#sOQpSzGh`3B7>inh^vIO)-tk z&m+dw4>P#Z5N12dtWSwB8ocVjQuJtDv)o62(x&>gpgcam?_k54QlvV^m(TPD9>{A& zq9N(*nf@V0s-RfcT@>;Le!ArTrdG*^RPiBe`iR9k;*5=>0o1==DzUJ)3$;l9CDhAX z8L^a?_Sm40i`J9~xbrWT_Nh9cAL>mY|lkxdA! zMx9bFQG$#h2=qGl_C$IkE7|v#DS7qmu|CQ_c^$$h{& zpR|U`(AV|jlHT}{2%&3VhAhtI*!$f8Gb<=a<}L>@TpRe9@Ja@AS4k7cXBY9O#66~O zsLi5G;X3TJHsOSi6E9Oikm+o5QNH!MT1 zYCzJ`NqNAeMTFr9W>uhI&SGh$c^WC)`{%uFRENEu?7cAIla&idhGipU;GaTA{2)d> zRjmuA5;lAHd8uQI#@(F^jPRf27JhllJyC{UQa?lELA9|t^~JSeki!Kdy?xnan6KyO z7Uq_vd*$iAFr3+!`8Om(}}JX&LazP?gU>E3ZYEtH;qADxJMXuvkD)~Uj; zF`Y%y4nT2(rY+Cr+vl(@<-6UtU>ZEi_l2O)gAmkbt;*_*f=(uc;#Qv-HM81LtAcU0 zXKK;(QYMi-k`CgB+U~CLp7v0FQ0h1Ha!y|EdrIXbzp1oD6z5^6sih;9X1t;7^Kb&YHj&5g z*W%?pHF8CKxe|Bpn8jLA7av`k-3kL(r+KswtE3$G5y6Xmw!$pLu}R4Qb79C)-V@o-~hQ-CbEr?5MV*pCIvdt0xK zjuPLdK6A*2k}2kRihUeE{$WRR>`NLOnj2~rAZV$Tr|>n}m?p%X@$J`l%h;;PMo9&P ze2Sb-hm?MLs{2y&nulVkTzZHU9)%I zZtLUToCy6W61KMR77*hZEi+m8LLN-!TO!{SM=$fCc3nLM`Kqluju$3Uoh4Ppy4c` z1c!FPf%U1<$8dLE9MZ&$Ep+pfk*F`RkBVdkD78QYe_b*t4*ORn}6*f zNpE<@{dfTQ@sf9!SOttfVOW!Och^~7-Up|M6@A8D22@YS>Flv!n}jySqB5PE*}6BX zQ0!Q#_}H`=;?|=r`_$=Y?yJHNEiRp(B*Yw3=aZ`*W{ke*N?5qMjA$P+`5CTcqpMMn zyN4`~nI(taQVzS-OsK)6Vdv}`8PD&Sg2;iGm&i$sfPm}G8kH9zf)UW*x2H>OMmRb8 zKG^KcE2+F!b0+3YkrA-niqe?v<}0oMyXmWiECtG#W#sr zj^&%IQ2ojVTSDOZb?b3(9mjT2O7EfuQp=!RUoyB8#XU2MQkb0lfo)diG8k#xW!gf; zjG}EU4^}M(Dhu-+Ji0bcwnOAq{u99(q!&)1MzB!{@pKb~zPcn6>=FcL+aFLvjHOU{8-ay=Wyqt>PyWi)eFSP81r{yF+}n zW=0j(Pn7eGO&3M^u$4RTj~9!}C-Ow8>CNIBb3VRP(XVbXb=a{ku`Zt<9vtu5q%N6& zyNO`^wsn-z*FXRCqIDZ-0Uzq{dJt^1hk@F5S4AXW#7Z_De~9@et_sP$TrOPVpapHtn((81M6chApan|ywqGr6xPgUR+AEi!_48A8Ysu=i_K><=+eFH20fFv(Z%MALbT!nz!XW5edBIu#=W#!&?J=dd z%-o3iL+LW&B2H9%WG{2&t65Z;1MKoxKbAcvv-`CoBX6LHp|241roukE*6;UtLc?3)OtCqwq z22$^v>#U#cqJZgSRr}mb@`qj;x9vkl_I?7QeoAc=D6(S4r?)O?N6lbCe5b3rTA&01%S6u^^JitTxd+dWnoj;?&_M4MJ-b;(>6Iiw9 z*~w{?8#d>ZP>TEu{_||LwxT)8-Fo$myX8t~7`f*HDm?F;a?~@m36vVHRNK-#z)>X3*h;2PM3;NO7gq9#O+-v^D)J&)-2 zUif^?NaSKge`CM)8Fl)37X5IcvF!O1iC*;7`EX*>Ay^zL^)dHlJn1xF+z@V|KguJ2j} zV|p7fxD^tce!KJKa&EaueN4z}!w-Krs;@0Kqf^zc0J8u40OB9mM}4hk93=AYlB;ik zzb~zy$6k6CLxT|nuU&?rZRb+z(qL0pZy{;ez5XO;f_CVKnfZ4Otcw@zS zU>D%BUmXN=-2!)ZyZ&A&az6Wg=kM9i6V<9bl1ZT6i=jCSFg2M*-*E?-->FWi|GUi- zrQ`puX#UU9^;*e4-JOAF`&00paSHrbeh=~IS0MV*iv0JowQfX)GN_ZIB2V)kx(R$rM2)mMK>YRpLQv(A15yWyC z{anr+-#mhBNY!g~zS>+ae{R90em|;oOD^C=V4xq#)>bqfv=H&D??mFdKOw5VW9!Qy z^&7EGqsz8ZkZaqpC90qM8k)7PHzF?~v{yR@mmCk{fya;>*r@88eGg&yN{&vX-uZMN zkj=lBp0x?-P8arib|pqy*5JTPj)K(Az==V0+?T?(#4wssqNhjHHB|@nQGO?p?bUVO ze6If5mC?_ojpV#OudaQ& zx`#z=NPpx|-T%saqGN4J`$y+{Hl?4f9~s8ij;jYwPvPDv7huoh@7JGA{L3@I--`dn zKE72yoIhIqZ+wqV{aulNG&wB4s$WYV9Pw2D-w16S5&I|G+Ye(<*$#I88U3Evp+nt0sQc4{TK_xkkXo@lO6(ue!_q?J zd$t`^tDYy+^L|$ji;ewp$9}KD_|qf$vy;^0u)(=_JsU@ZYiwK5wt>poLb|URF^_T4 z{{vz8KYg5T2Pye&VAPnUQYp26{O5ceKFj{eS@uuV`mQ}?S8O4Xh)7#(5AxFpHO|a(kecsRi>d0ColXv z)-GtlOP&eXrTsWez2ipQ@c&ewq5d?h#!#w4>%Yk#o!B-|b+4}Pg53s^S#@pd)7)N` z{(nMVCsm*9HSM4D){3@&f~gU0BV#cWkgjrA%0nb@Bf-7!g(Ush?U^1Cw?w}G~z_m#mm%KnMne>Z#w z&qJ=cyd7N0i2tW9YakWbjKqD*5MRC(b$@?E>wl?tPP@lxj|jHSTjlb8*zjG z1^s&HcrUi8KA`i$4cPD6yGGeQ($WGY*Hmi%sB%6Hp@16^uMayN zsvhP2KVLl?p_@OZ?a*wA|HtL<|G29B$fo1^y?*O6qfd?D2CLxjoUZMZfx#4-X1H+Q zE6-?~Ul6X_756Dmi_azvVUg5IQ4Yk-n;df*sSZ}y#14? zR{FqKSFl+eILAD$>RMz+hR~PjQRAvO}zj`OQ*DQ5)E>u0YKJSwd`zO9#*+%}#wLfk9C!@wL1^Z{T|3?{dqv9Vz zIsZ?o-6DvNH&hW{F@FZm^oF(X|NFx&Fmmxxc9VU+QhTdh491joOxvG=*gqIdYM-1? z>GqF}ltC(FSpJ{;bp0PI{#7blo3Y|w;`=#a)*<-hy4&@pMAq?Cf|>Bbp-z@BX# zCHcoKq5{YcN{OwyoN)F&NPf^v>O9VYwOzxE_8E zzMjFnF(Vl2xmy`8df;R^dji&ASq9ExoKCV{>w#-y4u?fA#T@S@WcRuPKYHYFtjs)* z%VUqCIk*i&gMRp>4Ju&BY-kM<(duE z*~maf%Uu~vV%Sx(0b17@!L+^rmZ>uE$~9YtbL62H)gZVYzR#TwBQ=Df4XUGyWsvs8 zQI+tcE>MkVV^9ZfhupQurIo}7&0u6ze@4kaf>1*}CPXv%YkVRueE4~MtMm8RRAs=s zYYxd*gSdFrAy^-Zp|NQWszUY1)|-xkSad|6-`(GbusVl0Nd+l+85qcK4Oxy;Ut0?> z(2t=zAA->>6Dhp;V4YXhjritpx!bN7#5rO+;55q6l(z19@D&6P-2=UQ?*&ifg}kH7 zbhw*AC)4Q?&If9X97f7Gm!OUg+(_T8q_M}86)-yY#a>HSqP;bPl~r@G?Rem^r5oVh zzD<>TqxzfP!g($7fo5^m$@%T08U%Z0PC&H1-qQbl=0q9MlS$RjZyb2{1UXJ>uRqAKMPeA5m~dmO3iUKCl6;Bb~V8 zGcFx?A6jnKPZ@x%$r`9>5Qop$ThrS%kal+FuhX0W=Tlvdmj9gnVXRj=@z#eB-(#+7 zN%i@9ugk51Ct%t3j~AwmX4^kGPpxVH{P7-b|6oJ+=)t72d*Zg;lkWpk@Q)Nb<-3*c zzHH(9aAwP0c?aB&9$SiKgFV^_>Qevw`C#(1=D|9jc6=masPz@wwQj?&ofq*L(@{4N z)%K4#u*CjJ)O!p1DL1L2?H?z)?pij!=>OOUn^61B&*;fPuC8uvm!Qt9S9NNzZ`(g| z)b%f|{!ZB>VP*3K(*}YKF037hU_nzYw(ofgQqw&$?-14NRT)(uiM@__4r}6z5Rar0 zRQ69)Y?{na-u{UxyQWT!3FZ9xYYdzHy99?}**|i9i9bJ#$cELB7GvLowtp(z0cQt? zq`%TA`%}hYVt*Qk?WXm=Ke`%*1c6;r&rKVr5R5hLlzcE))mbAS956o<4I^#fzs_sJ z^0Sxd2`Dc=ah7`bIy3kvK@^8`Rf4+m_s)rS&fqVs*P`sj{t^F!ss9W1Pcpd?F4ZoE z)mRe2%ASmC`+t`I_hpFR`T)|4=OV7!z3cgxknlEWy;E?$wdHkusjfGBywSmKcVru` zf1(~gowEk>=0H!t?R4evrKNMwIW_KDg|}-b%x?e^mAL7lKCq68py&E=+>^XY3yduy1!y#2pX5f#YUA zj4svZN=uvdV-Nm(Y6~X0NAOxK2fwd;9W6HzF8|pW_KzSokk^_7RM9wW1G%5*990KZ zo6TK(3vzqU%-cVD3}ubYoORPiUYFWG-Qf*5VfsGEEuMz8vtK}J*5Rm`-KoC(JM8s% z3|sDNLEI;Q+nqm;j3MmFj5b3`2h|$W3U%Ev`K@kRy;(<8|C4?8Wj*;{w3HqvdUp>0 zPt@3o24lAp|4$7v)6@;T_$KNfQhi%@G#~I1UyrJ>%Fc_Anjj&VlkXL(4M}J#tp0sZ z*+0fQ)Ao@7fH3cG4FM8oV6$COW@a@wC0@5 zFYopE4IDTjg=-&wDQ|xYd)2q#_C@=tdK@- z4wSub^!6ii{k>%a87VtZ!o$r2UBm>G~ZQu(wXLv>mSc^lgFAXCo}f3eFn#I1rT{==j>cqlV- zP%`CqZ=8*5QrolwvLnFLx<;^SS_cvXUGFI1Rfzh=bf+M*-O$mF;EEUXSt9w_^cFjV z15VHiKpis!Rt0NNgBT@$>CAFU{vI?Tv3wQa2#mZF#K5V`y@5A#^*Cnbedto1#>Cgm zfa88sgZKk5Y6jd`25!DVsIt~Fo;ee_>CI?R@{es8R2{G~yapnp{-&aFIN%aqW!Pk^ zbr~3;cDNpR1Rf=SssC9SBD^?g4uE~5ox zA8LMyE1I4`)4;mC;aN)AnJo#^S(vcoAGGA}pEy_7{2c1l|2G!?zJeWa5&-j6`-%d* zdO)mn(dp=r(9{D8s-OV^;x;7k23!Up^!eWw2D zYzOYR4T)VQ>6vgvzc0>>;6;JH8X0i zlC0*24K}th5Sl|Tp#>94!VQ7Y6Ci|K(hCV81xQbT0LdkV7MkfLR8tJb*aqA!S+XTJ z)zPSH%G>`sv(M~vW@NbUd+*-SB9m#yM`zYqd+mR9B-C-?iPb1ww>+i)b%GG(r)R`E zPnH8vl4K$F4O`jubZ{vZ8h&Y`GJx`B|8?UZcW_YaZwDwH;$H34>4~Nu)HdCYP1Om^ zdFmN#QR3cSl|a$n^lKWc3X&vMIWrGHZ&LqT_{TCH^G7TII$lUu05E8$@eiFnIR^gG z{4Zc&hGG#M?j4HzOhVCuk*DHCoT!H7V?)c4&op@~r+3tw7mG z1io+-9}RWll&#N60AS)eYaeZkEkyALyR5$#2&1^E1qp?h0s+e@CA+WMXFY14<=^y{ zLOOcwk`NbS5?fh0>JkY&y!@By=xY%=s|>F^a5XWWQ7r=%i96ivs`-V%I2kzSWV5K?9l0G2&IZ5TgGW>d34|1!f;R|&;<+BqWuf>YaeoPW5$oE;|gfPJS4p zO>yzTU3E_Z`bH9xd}Sv0e%!TY+JCkDdwNpGicf2d6H>ZeEZ^06BR~I>`)dC;Nbpbe z8OLYxJ4@9=>7Rm2FN1eZy;>7tcwVs*$pV2=MAkN{txf5sa1Z?2Z=T8SguL?C z6#gkpR^AQVbQiR5P|FehKPVag|Hr)l7nJmk&|a6yW*r1BFyb$>_7}_{iT&gOaY$D; z2I!wjViFqz@qI~1_6v4_3%5qmT{H>jm-}$hOTV+Luo(mRk7xRD?VK}^Q`(6E#pD6v zB?f*K?s033SfUd?Pr3ERuViEI4g^a}(5ZALF~TUTG=nK0BG+k7I3a$OY{x%xtw<%o zS^iJ;8mUsO;P5qG{+YYq0lUgp&AwXcWO%7hHW*vVt-OAnnL{ zcb6EyHWQWb^T!q{yOkR<+pICmPq*X~Fr*k^w+EoHsVgK;ufW>-swCr)rPckxurQw`q%7f;R(>NXN1D}g&uWL0bIc*?dV5kW zPlBn6FVpbKlp&LCqyeZ&PX2eIcS4EP=0&|W%hEp%II_H*k?@Oeo`Ty?FTy#WeGH?X zxKtor_+U8-2R@MOw@(5KOn96 zdc!*;`-Y#9|EB!w3@DNtbduab!}ekiz7+ZnexCDb31HPQMY&$h{wb#fZ1k4JM5MOBr_u<(>>Vk>qlkT5?s;DfMWu|xd&kc%Mq>L0&kNS zpK0BRr*VV22j5ippm(40s^y=CO5})I_`1FDJo%cH^`@?uP{Q5zZBTuh%@qLtDJ4=R z7|-`O411C|Le*L*xcw;%J-q^ns(g|EXt)W5O0RIcHlal<**?sAj$m+j0PUqgoD{ko zPi#C1JG!4k`44?4eD)-i?KuhOq7k6b1aZJZGyiKnjwXYptE~H%3|Q zs{Uqps7tCf1{jon@*VisZbknoOVr+9sRYL>8@4vmbOpe8A#?9_=>N^l@ZIrE0dvKF zc|s~9!mz+#C{cpO#t14V7D~Qof4n ziJpYESUQ$4L+@KiLK^*#^bdDRk&6U2p1t&$^amOFrsbLcAfX>W8a8 z-*UG1D=<03y8ydGL*h7~Jl5pqh!ajJI{fU*F~y%2^sei`@@Fd0J6r@uN|$cI$8{8T zR-zLB@EQ}xA1y|R#y{MXq4y%TD^9lH7!PFP2Jw8#~H%Z;4esRKGaepsfI{#(NofX6IXft}6f_Q5A6uCFp;xTGfRH{tPSmhmC*Ivq3dw+CQrgU_hlG=f3eQw#@Kh z!Y}@T6V)f*r+zLdO#63Z;UBriWF<&w(QF%knk~8_ZfHJ+uYQN_u z6aO$k(bv-n-`j79{$uuV-awx8jxe!U_fYmaKS?>E^ezed`f1a0EtK4HFB0#s726=@ zz(4Ia{?XV+EZ%~seJ*ttOG7sqN zPuX?mYo1f#A^t6rcWAX-7x7Qd%Ga>#i;eJ~drYcDqjCMRCn@p_IFmxNnH)i6=6>iC02sPYmLB)i+_T&o4T8ct#s? z75+c9sUFAe{Ug>M`X`JIx1k3L=LB^Ej7NGK%Q*&$<#WF7N`&FBI1o7s|AZ9&89o1d zhzzFu4`wyFO<5cO(4-Tv1plb@P3N2ckb|rWjF;cH^=>Az_YUoVOU52eedI}efcyV= z9DaD-S@0}+0!O@cC3gF6lVG#P?3vD+)=>z~B%o9Wrih~h7Q1gyUdDs}!NfnbxAbSU z>BTpe#Gg3}YT<1iNwsXo$72?L-(0p0*Nhy8#=m|8b+aB4-_NdpZoUh`yVU}Xi`QDr0!Ash#wC$ zC-8l?8{4=Rv!-vurmY@4^+FMj^VA{cUy5CUX{hK>hsSH}a}0W$)%&C5b*1-c&|L&lr zI}mK%ljV`M_`=e2kvDx7YSur4c=O9xR#1h#o>ojknb-+=@u_wYxWl_eUh{b{x+NJ1 zD7O7?8h_d&zhL2JUC(A;my)Tnj#M>kwoz_bAk9Z&^E1B^gKY}q-19sJo13lA+ItY) z+9Ldqs@KFP1xn7fmtBfz=Gbu|+c=<>VM*e;w zTH`sA0J=AK6AqhuH|ic5!ZwAa0wvvQkM6X>?+Nw4pt7TS+ff!O7yRRkCePg(MR83o zeAixwobn+2Cwx`#Pa;$%9Z_uA8Hrg11L}3TugCp!vx>AYpF!Ys|BuuDrT=G;)u^S; zB0P4YiX_D>5KKreoIemje0VYvia-DGw&0?nC`P>H$ldrdrgf!m;cAUZf}mC?k z1Xx#Lq^e=8AI6&?i{bLKP;mVv@E^BCfsp;BO~lAq$0Fymiv*P99J3I?BM!m9{Cecf zRU5|K2KW|KVe`NgG@g12>W`g=#EY9`17I~q`=V;J&YcARf&&q1Sc2+FN1^zH(-4|} zto&PPLviL}44k+G-m{N~_g6oJ@8%oO-Q6S^VM0mZOOlF9WB$~5sDLz`KN^7Al*}Y7 zP)eUwMmdWVKdZ{q=Y%9lT0|NT600C*Rm5=M{eO`68i0O1{5?#nnk+#Yf>?dLes;X( z-=p(kdX2QDNObpD{O9$l&B*K}&EGIGURsbD6##TZGXsagQ#u>WtaL5^0|!l)&CYZT zlg2W1SpDm*sl|0eC&+ux3@aEFua9FtUkgs|%EK)DCt?kOk98#RZx&6Thf%f0B>2dT zJleTQ8R0!F4##CPl1vSkV=)^^&j&JpGaW1umcy%!R=3ch{3qgl(r!d5Pm=uCKyxf( zwXigX0}2<*>o^*fLT-`QiFxlTW!Qka;!y$rv+xV_Pe`q)jQ4=|U;XXG@k=a&SLEON ziVipeX7|4@K$d4e9Lyk zlEKHq_qIxlro!c$5&riFxN6=9IJ#>U2G_2Hf7NzO+FFVIny2Bjd%q=yG+SwXHFzR^ z-*XOr*1iLyvwhh7*Pr3?`;W(-y+fF`Yd50n8d12m38U*2&|lXs=O2Cfee3T$|C-ej zN`YT&YnB$cL$~|`(f8J&C^QMu_QVzZ*ZXcZwt;Yy*?LDOV>zmUllq_gZ{hbYMgF(0 zMS?S56~^JLfWXqDk$3!If_r3k#w>+lhVQ`izW+i=!+iABd(b!6hlT~SQN8sT#ADm> z-b?BpZ9fuUEtrSWih991IrXIyXv;l(qMVz$hCp**=`n(Rh=KC&__@r6i+45J_{XeH zuq!eZn3fsXSvCV86PcLJ#6KqgssH1>0rbtAV(9~gM<`nwpRm$PJK_lZXZp@TS5XN0sIhqLjuIxua^W93AB6uyLylk^i7kuF-;mXm#6Ki4 z8r80-t1z_wNyk4E9Q$vk>J)unDhl%O(DG)Sc*B5N7fqO+cnLe_MzH^5bC3v6Oq>6b z>74fG$*NQ0pRS(Hr2OaG*GQ7?6@k8t?XfBmSYW zOC#7#neZd|-`3&9PwsBQT+cHo7`+`sMR(%rL1>NX%qIt z-zxrv_yZTBIhK&%WB!_d;PwoQOsRw1uV7wwX45T@c+D#w=namQxJS+qlI(SIptjH z-`dXx{vqy9^mJq7yMK{u;(jev$!Y61U)jj<@qvGg7G!qvc8TKqJIf{bC>@v<)LNa7 z2FGp-Psf|-{MW~D{@2o(XP{~SyAcb%g~aq%B^h^F;xRbC79Tb}X;^SiMX#9f=NefH}HSrIVUrqjJ>JXE54n<5bT-j>{*r#v#1AN|B#RvLMYc7uT zT!EQI=OC}}N2nOOOzp8pqhRPFR1e&2KUYU@!EE0ZVq@&BTZG`T2O9jh)-Gpgo9kC! z3#;(DDzbMJSW&<)ZAvx%aqzCdvITmR_7|%hZTw><$z~vpWw;K=|F-sC49;#qeN8}c z=)jZj3IAJ0MiD7oB=%ah_Y~Cou9gRR&i6BmzK8~Ijim<_=H=g}Jxu>6`Ol6N^fiYW zY|nS;8?`R_8=JDa1$}v*)g_AUW^G@m%a1}|G_i*Fu7_>^kN9RZR#6y8@DTks#4C@y zEEp*G_)78Rl)d#5RxRIy+^SC0c}G$E)a{rydKW%yszlSuC*}KDkH3%Nmvb;@^{3={ z(Xu{y=J~vw1N!0$84DNO^`W%a4gc_NnUfo;w{VrVBkZ-9J1W?e_@^^g;{MrLMcn&L zoaVqCN#6>`J4u(fdw+t$o35615Lr};#Nq?R9*Q4&tUM1Kw@6;oN6>r7r_p!RY!se$ z81~kGO4(o?XxX?Ku~WCBt;U1!+lS$giC^N2eb*~P#^{j$F%9@y3 zbsYxoRQl`wn}Q3^MU16z8Gfyw9Nf zfJqXWCm=6xX-BxZTi(Z;yQF0v+r`DhkP_`_tpixw(TWeB{I|3qn^F6socm`_oP{G+ z&&S;1qma{el{^Y|o{#!BzYE{q3*`O8#_yn_tpHtn+ho>Q(VTiw^fZ14gRYi~$WQ?} zP8@J1C0tp=LW=(d+q=Zbip)?3!4We=xwCZLS6*sA_@0l_#^^-8Ucz*$)v1iY= z0Vs`tM?=@)#A#o^_7X4p0>kz>%=2mEn1FxEr>o%qpvh{-<;nsx7Xde}@i2eEQ2}5C zVd!iyTRlj7k=7nj{^7a?aSTiLPxAg~z)9z)82}!r=o9%)`?E*!|3()UqS7U;Nm#zsoFK(&32-D4y{qs`u8S)N_pd z8#8!s-wQfl75}kdK0>SCw+&vC`q`5naL7|4zci~e;7H7X)7kQFd67hdzL>1#7^@K# z|Go2PNPvX%LkK`y!o#xB5il;Szd&@!0h7Oo#rfCai#sPu;J5sm|B&-l&h<+Wn4hiB zweB5xKPCSRapt)BE*ZWA2TJ~#q@v}Yo3B(ovL%)RW$rd{B1c1U6qS`^H2^h9>r3-D z==(uV^))sM{|R!K=p*32v;enU+>CEuu^D|MK~&8;0}EmoBS+ahe9Wo265l!C7x@0{ z&x^w$_mo;W-|09CJwun{;@s2GQQar{-SL<(RkF)P$Mcb^VDO@OBL7&u7V#I~MPFnH z{h=J&cytEAEM4kws%A0i>$KWNrMJ@-=aw?U7?98T^gn7OSCFX2XP8vQMlQcmp@3DTMP=VKFBvYgzQjbzHc#-CdM z^evoW;U9I+h)>EDPMKewW9_%)euQ$T+0KKCi3?><_{og3u)5|p9Qfgta?a2n{-%tx zpGj+0;+(vSS_kgox#;NA-|;o|Phx(9;2#11To?Jy;Jb-=G>*$^iVhe?qt#xL#5R(W zfTiz)`mNmaO#EZDVzZ9X`kJrFZw6lY8F@1?I0|pqso2tdJmOpH@X}9iM7xsn!O(6y z@y(qym&Ugw{)x`37ya*B)t=s?2r=9NV*-_=iLp((_1ceWcd9BtfiP zBUMSk;|>x2n+|`iw{+Vc%}dUrdi2?T;eV~qgTMX#9Lc;bEXc{2beNHn_$Q(slz&_Q zDEa3#7A3I{$-H;$WRuPKr>|#hM>3O|1ph?)WdEc7r~G^BYXtvjBK9%)Cz;Pmu6Zw* zgmq)$PMqHtK<~jP3I5T0uxD_8l$YEli4vSEZmtEAe(%OVn*Rm)Wzqt6xUJ2)-VFOd zp|?Kk@y}>yugnY5z6bZ(_XP$7|0I&ZN8%qQKokG?C-zGc6!A(fx8lawj~a3-;u`!D@Jl>danKi<<1wQz~TCrn(^&;I&4`JB&8YU6X?+{y4( zTXNd|{AscWG@pGPh7P*BS(=1)c z-hJXM6rOevX3f|p$6PvGkC$RT{IsV9zV1h`JaGp)MqfhL=xS_!PickjgFOX!n>-^5pb959EnK+I{l<}JI8TAW}8xd&0GhZF=*l+?f)SLHlV^TL zd*b3*XQE+Y5W7Bj-)VoTwabb#+J@R+mHKUk7~I#=C`5(&OA_{+e{=x{P% zn+ygsnU?{|_PRNOKk0vyc9`V9!lgRlQ>w*{YZrfRY5H8gY$6?;3&xOEG@=u5>5Jx$ z8vAf}y8nl*x~qJGQ#9srJk)2zN4s-|Bmh>hu~7nGTPqcoeyiN}5KuasxXCVe%uQR%lSetn~ShS%2N7k})> ziFX#^N8dUM^|>{;Y~$C(CwFsBwRGa64$`_uC!%N_#C6f&Jqz=9G|4sC{^$J6)%S@= z^0V?>1V=~y$9Va1lraD~5ck_RKuX@-&L8M(R%P&XcVYC~zlHDB_pJFhBi%@}Z%44b zS!PbLMG)H*c$M&Ro&_H?AZiEtam^hAIPRzY_~G-@r2O>U50=UXaO{pH@;9bLwxhRZ zg)qG+_kMZsv)YfoCqbNO`x?Y9{2BV+++YE+F*09h$S|W)GAlpMu+9RqH(e#z+{849 zOUqzNX2ljO0gum^hxmk6_3v&%Ns5E1w2Ws6^ehI7UM|@kIU8c;=0T zQho98r*6Tc_4i=zhWU6ZdNCd@x&-s87a|<$vCe0lv#)l7{H^1zJqxp5c@5ZV4dl+$ z0wG~E$k*Uu{7}A9v?cJB79$uBTdl^7K(G#Sa1&tQgOw@-KYUQewc*9rq`kpi64W|4 z|0w+1bEok8(WYT6dto9T8H(Yf+%=fu*^btDsAxkJMLe>H8Es=PTP0qpjDh^`}_!;G#^p)gS< z_mAh$_d@>GiA$vI0b8z)DiCGrA8Co$7e!IB4MM5{FJEDxfvnDei|(?(TYhqDZ~%$i z06dW)ghnG)H9)c@SbXgkbVd77der`S{CjWX%u@o0E2DL=VmF4jSL4Le(^2W4h}xD; zalAcv(b=N!sdvbGu7RiWUqzF56+ZI6CV`qs+s;ESrrYaCuYrlNZrPhC|DIB>WU6ca z4<hH?#_7CVaDlc5di+rZngW7i`IH34XP{Ybkk^c#0_|L!8;%{#p zgL!j4k9mQ^u%-SV_;>t%yt{21^5aKfN$x}}U$1w34OtIhul zib`-@5vePOXZ2Q$p7|ZYKRNX!nK7CnKjb|fO4$TJ z_eHvGJ1O0uft_tzxMB@P51NmmZ=Q>mkRP9#y8%~RvjY=nZ;|gO2A9A;<7Lq+3j!D7 zn$Wi~v7sD|!>!mf{2m^9Hj35ZHrx}4;?|Li z9%{*d>xcvY=cM=x~X zAG75oN#6%vJDovhC37|t6R^bjVc=az~Jp95`c($F1Yoq6)y1X2HBN2zgi2u&P|0Iv;a4jkE zNM)H>ZKN^(Kyshe6${o6VdLHGPCywA$E5WKNBGM`CR|EaZdiXaKK0-?!RaOo-YWB?&lu-ME*T^qwp1+5~!2Pi=4rQ zwjH6@0Ph9y5A~jjf2116NdENtosKtiUGyh9rOj-%6CEaQn?>s-&aoyA)w8LIe^}*A zM;tMV<{7IX1iLF8&S%;HGb;W=VbR%m#q)v#|KGp0L+q~wp-Pnbug8SCsTj^bTF$5c zy#xQBwpjE}{}UGep;IrBtn?~CX8uz~xCh50*272Le_AjC}uM6x?(J za*mlU_%pPq*74xy-WhdL0T4g)P;5JRE`o~}3jd$Td(pOk@6P>=Bp@zU_oF6s336x7 zmx_X%I=_r}(GUI&TzEVZr!A478#_Q0-+K$f-91(XHmm?DJ21Ivyd=MoWbBB-Kg15C zec>NEGvmiBM*R1eh<}IVtMPFWiPN`G;TP%(l!xTuLmA#0Sugm1b&n4ZJ@#3=*ESW8 zo&S*pf=SZ?C*$H7C*#`%C*nYqh#!cv-$~um)%%;S!1cfRI_7Wq7ao0e5FNSc^RD<> zY+Hjg?3EK8RvKmJG4{A@Ktm}ZgiCg&EtW0H>2k+Dl#n%o5mMz6& z|K5y$UH&=Tf6gt~5UY`6P93htpQoLH!^^8AX@dJYpJjYQC=b`}Iu1u&eGa~L!wyX7 zOQ5i{$Z>75Ue)#U+6#i-WIM;~$3G+{3Y)Y2Rvc#F}SqZ>p2?^DJZke+-?(bI|U=z;4BE}6rZJ?l1Et(YcE!}@pcPdn$FStpC& z_bNaXRDfp1&h%sMeESltZ@Lse9|_l+6^$XvQK76I{Woz8;Roz-BQ^=_&H!yp}H&VD99A(K&KM&m$!p3 zXZ^~j($0DC!Cz3yp%s0yxV(7w-#<3Ky-NQ7fsJ#pF7F`hKYAb<@~UuI`)+)8?X!;a z@IG?iIdR>qD8?rIVMj44N>kNRj?!PFl7T?Tl%?@N%pl7N_+$uqLh;yL+Dy`YojI2+ zp_IR84EdjO@X0a$OWF5b~x~FArsP1%S?u7XuhBqjDsSM8G-Q zLmTx~P3?F;GKwEfIUfI7_Hf#HPhWfo*5vr{`)SXM_C4=+>xJjmJy7&J;137>9^JY3 zVYS-J8}^%yu1FkjZ%WrczEG~n|0v~OTAn4_rX|;F|D@8)20JVO$~gyFOUV|jtN<{L z7q@QJPDWFC>rBOLY1by0Z46%68Pd)Yq<3p}${{2OhF{A4SM142NH<|dK7>&U9D<#t*k6I_rt`8vxYZ&gWYJTWq{1bJ=!Hioth;-s#U zx!6ko^h^k1*S2TV&Pn-i4zI)UrPFap-2|NT2=z`<_xuj>`uc^x#UEm;5R5fS;DyHX z`b}>-&SUDIk=2cs6RN;@4~QL#)E-0Ks3k=1OMV}UdLmden!OcZ;+%?FdsG^ZF0eWe zlqh{4b+uNFHf@t6oT*Cw-+eb-{>lGnybg!AyoxvKAIIei|B!49r0xOvzq+*v2iIMU z)jLnZj@+#o^-qrCe`#|R!#kQB_-7DIN@_r~ZmJ}jutG#pG#|62%FaIy|PxNp2Re{&~xu2OQJ@3XIqih1G&s>r-~(3(@~Mqb{TW&GP?K|8xj0%(O>5Fnd1~{lF)|_p8e` zVDQl?tAu{7FLy^KitP<2@%e~syB9ZRw z#yL}>TAWzb3!^^f*{qF&+Z+Innw{*P(rBL7*8)EkZ~`Hv|1Pv`%AxCl+lmg1Dk zTKuiQ5x@2g;I_3lJI|x`-=V&@@yqkq;y2#c5PD@13PS-2ITDl6-gO6l^>Ya0!~eqs zLK1y&eQ~8zkjSVvIf6=;GqCM{a8AjX^3S+cZ@`LuF$R`V{+0fj`{&Ei_RSk5F$kXR zhM(FZOaGK(>&BgUw|o`yX4Il6_Z;AvryO119JUMnqKSm?o*g=}DFOWxr2>qVQLl;F zx12*F25W}k3yBQxP2R2*n=&7B`O3So_RKq^5`)aYZ~g6Q$MD~78~B}6EFDs1G1Al7 zZC|H5TT(tx0#H&gu#X=3SwcE;FYonL|s4atm zO!~~P*W!aizl4u+)<|{0XV+epb`0<1{!{uT`1qHt`=bKsZ8gkn0jnBp*qX(Ytfn0= zBt7&amfX<5bZ2ys2!KdB^JFak?|S!HEJ&P;)scJCf{L0>YrhIBi`sD1-g2}~emUcD zJijLqMqkGcI|I_r2y+L32d!3$Hi#YvB*8gdMs5Urbw_S9qdpo5$bI1&pdp6dSVrYf zdUwSiCGh)B#RH;O+yNTC|LU5nvAQUR$q5C56P;ML>WsAW$i@-w5r>mK`)~|m1*Cfh zQh$CRs{tsv!qFM-pYZbMj97S0Z16k8&>8Js|)4 zOFa0f;YqYbH{$K}H>aIP^Pg2p!+%vTypgehyCf^{4-w2c3?38 z&>OX{J(FDNDmgwg^D|TMg+!iDEI0(u=Cme*kLmRMp3lg9X7Zktk^f2jL;Y{gn{ihg zS#I?fq+UK+%!*p0Z)vn`y^o(m$Ha4iKc`KIa@oA+-k|nA81<`SHI({-7kmrOA}S z(=r38%qN`(H2%?JDOmkKmi&|dLp%PByK7=%=V~(dYVv<)>D$=geF^zh(S7Rw;g04s z{KI5DI@s7IjoH`kR_JConrtUs0YEb4ov#DQDq3dLYyD6B!-}s=&VLde&XMj#c+K~h zjD7_Y^*`<2!*b_fM||~|_&?Fo3ABIU;6G<;lY#-d;L>M6(v}QG_dO>rTS#9!@sDR{ z&{_3v5EHKYx9vpYyZ6A;*o>~)%$S8l{!>3q$Ejo5zn^~pG(?q3iI+Wv+R`^O?&bPC z-udP5v~(bL{&b~B2rs?!{v<~4`Z+GGU)?Zs>-t@BAN0x-M&IFb;P`X?ti!TO-N z6YDcLpGo3>3q}wRc{AQ4>i^GN{sBJBoeJ+4t`I-mSpFZ53CJH zUF-oj(Z2BXSoT-(q=}A^J8u7{CXUh?FGSx+QU0j>t~jiUa-EE5wsj}wq5nr$G|KGV zefWPw<`YTz&rqO2BLBUMR^Y)C9+CHB$v^dfaZ>`{yLK_IzpqLvQcWUm4i6NkFq_^B z*fu&pKkb~^M%;Tz?y4^qx)fKGiQmD*KP2(L0sG`Xb;Vf07ZUm3|M?pv_)b4)Ciy2O zZD{Yo9lxu_mwxqGm@~IodB@-!`EKpQ7MT^O{5%oM-WY)PjWAhTlOwr6$xuk)4zm!z z_J4+Z_No8-l-(5Ehx~v3p1)$`yMMzoZOy`e;?cD8sDC>gUxT|}-yvPhDEpp4BTdyG zkU{``z2-C9wv+OL**yc2a!%qJ)?GLEkI zZT;`|K=#vPrrpklAAXP8Se6ue|Z2+$?c^seKeX0E! ztCv_orm1twhxqaHHTeF0(=erMZ~FCTXgw1QTQ@)(*V#`yN(SOL4OgS?Y*kq0X; zO!7`nfe&U}@p0dmFS0+Yi+hnfbp_sCkqZ7Yd)K^=n*Y+?ENO&9VDQvP9I*Lsv=q$t z7G%6;jejz>E*eTEcc|YU;Y5$E>y+)3TC;57Z?zy}TbfK2 zsJa7(>;s1U6Z=s1c^@<}_-m5L|21I})fgjWoCX6aVM{wEMcv*EEE~aSNY~ zrxs)+6aVnqx!dX)*zRN$lFWZM_)pA2{+s$gvZDoCd?{y{$$zb%xIb4$m!$FE)c@2! znfR}X`X*AQuBCQLdK>Y4WOV|T&W;~S$~!4l#TJvKh>+n3wf|kfY19+1a1HRGskkQB zu?EO{xBlPbX~C|X7aaJ9=h~P4w`nltw4yztXSQmhGbOC-foyibkqYZ(OG`2L3?%cn zFc7Tg(@NV(wGS72QUHk9pEmGC7o>t+J10Je&OoaB2=@j)uKU{cj=#_L+-4x3IMt1R z^jb6ZKNGMR6m?f5jaSkgAV`^#(An*RZTCs6z$i0tHRYZ<$drG!zxBjZRYTM}8UvB2 zgZw*{4)QiQf|R2FXQliI4?Uzn6D{vW>s zH<*b(rp}2M4mj`+<(2*)-UCgtKD;Ua8}|nKAhiCMJz%2;YjOs0+MoYyAID?9dG=@R z_sidT5xaH|;*FjOmb11X)vnQz_@DG+=>VACyRw}e*H{utYaeS?;E^)nAK^cJpoZKA zdjnE|r-}S$)w}8cB$5Bey`S=b62~6AU&{ZW@sC^on>xp>cgCCVP3$X_+4f7Gk$^?& zjac*D*&dsFodlc=|BvYZE5G5;+m!!4qrD>cRQf>O{Er{|6GxI9@6qBjZ?)fR`_~iN zEA!$srEo$Hij_PtSjWT@`@STD#lyYXn*?3N?gC!t{9L`JDQ`NcYWjWM*oS1xzkyqd zLuK;NR5>dH|7RxOnfQpr`$ONpX@8C8eJDXllmDNeb0sF9 zn6iJ{Ha&&sRu|#&`;Qm?+g(^9mXF7th3ZI#7?LD)QZ~y!sXvq>_aM_8PLh64{OL)~ z6eSkQsQ+E@FH`<`Z=~yt+Fwc924fJ?LZaS>Im2t0Yh7Ojn(oU@or_ihS%s`Q2)Xm`xwXHSvl67v< z0jI3CZw473A3PAHa7N9U1!teupStmxKoEt9J#ZO}84nIPO$4AM_W)_(yY43(^hl3? z9}R_)G7)?lUVL2?^kNsB#&ThKjcm?`UivGH1`ozt(GUiwr<}t%!w1Mi^PdLVvjwkX zxi8&$7969Mxp@zC@N_&?0N6BSReLeh)trGu(g8r-&smdJJOr8@iRt*)hS~Oa;i3-& zR59R1#j`%|1Z-@%1g|&lXCL#bZwHQurJU7boT+uw+m~+0nwxK$(>a6TJJ#pfLHg6`4n*nAa_JW8LC_f+gtLmtF@WoS&KKzdP60zOZez_0JOQp)8C<>LCVK{eCXt)u z3`oh4O9Ie@QCT%Tcm@tW^gGz^;42ZUE5YR4V^OeYiT(Y~5uZ39Xi)Ld-1t>I`^p*k zsaZuG^rOrukf7n)7E7O*DOu1Nod4P>rO9b@_`54A z+OcK$W&6Ff{28Nfzs?jRF+oGFn}%R=J8=THRP|}LS3qk0!q$y+!0~sO_aISKA~T=Z z&OJa~6^#h?Aqb_zjk3+Tk8YxKpYl&k!(+(*Gfr?OQ0*GpC=O^%f~5@5swtEFyE9fb zS*`4x$tc-OW(Nq8UI%W{`kx6{#HvidqW-7D_=Ac;G&D>>qsLkGQ&3$c^3MSAvhJmr zJIN`F+q`jX_cqz@c|OX2u^TG)#xhowYUhu>2YLolrYgemKum=2N{b!mOkk5t2L$;= zeA69n$auaf-YVfe*8q7xcZt(^!2~TcNFxSxD09ZFTmIb`h!pZ#I!Zgzv)u_N^MQJX z9PM;??OeH@@>>%FVAMaF{|Aihbnu^5FkA5y z0@XG4XFM1ApXf;k`^3Z_*V53e-jVm}Ih!32binng-)iC?`}!6B=~MVeveOH^4!LI{ zDE9!$D<8q)KD6~7A~t|YCjR+t<;Spy$-O_u=Gt?5wWDzhF_Yf{P<|1)=vfZtF|HahFQh}<8 z>%?@dYGSp4u0Zwg9I>y_yk7gdl@997a=q^+CY?yqw!#i$;U7)(0g)0)2kB(NqF!rZ z4CU6^$4LTuFf0lE#6WqIj>hu(I=oSxvLoXChdBH{a}WC_o>n%&lM!dNdwWj>Y7*g$ z!3UG94p>$fg^&9k*+e?=$0Ir>U?-nD)^l?Fi^&7+_z$!sD^6<4?eBO?=>L?2HnmQ6 z`?ll7-eYj{=zH=#_g@BpZ@u&D4*zGReLlu)*J92< zmL|bp8Sa5j80Zr}!_de2<+6=*1*9e|_x!C=T^LPIz9;^novQu+l>cIHnebSXHyQZT z7^yNuU(;0ad74E3zot*k`HrlSYB+6R275R|&mDx<_k(Cmw*qzJpKSL3Xl$S>)=bj! zqi1mHdA~XVov{`jbfnyKKQMhalz+ab{uhj-*1{u+Al`8K_GeDpY`>=bZ>u{7)4H8J zBmXDow5Iq!7#IA*f}H||1Jb+Yq#U2wjDHxM(=Bc}SKK{^(;Ww+Ka@!j8dq!ik5T@U zF)&R!0Yb|^iMoYd;l?8JpY|AirI*8;(3Z?1EW5I10MxJ6|%>`gb=({7idu)9~x^LN0cy8lDgt|J%yk0H;_NK&{1$|Z~ zmJVQO;^v(76wc5;pQJXp;;1sXB1WZW()fy$heTH&GyEMK?fDvNM|0sV*yfOJ(kNz# zJ}2cCt&nH)815xzi<$*fH(_YVIcq`wZiWnW62X~(0^@U=|3gCv1WL1d27ox=n5o?v zmQ1qF-Y(3XP=yEPeh-i0tC-zz9gbY~L;UfaGtsvtPn>Zc|1=bN<0uT3A~CrPIf=v3 z9N#1Q{qZL+mh)1!N%4^xsGIRQwSpFiu7C2y0Xy57`k!RBktp=mTl+}{G7~Q}>3urA za$#uPwBVqA;XNoyR*Ep_Smc?8TS7PB+UU6`Jo|Kf`OUkqsO~JZuI{me-fWH1)RQt^ zcg0)nOn%BXK_unB%6qh|fu~lLVc824rS%DkPPxA7xU`GbL@X6Sy7R%zwqy4LQl|Dx zj)XCFeQc4N?f6GuGaYd30HN`Z{#|-)vkj-7b3~b*{{G%OknX>;$#6QGAp8-pt2Uk4xAa+CLB zmnV$Fiw?zSf)_|)mC66%?bWFC&z1*Y|Lm!2v3dJUoBuyr{3q<`X>nBF5yujLvb~c@ zrvA}n;^RP9a*ks19@y(b$x*iJf9}1SOqr)ct2kNlrISE4{$Ua*yKqd2or49Q^OcP| z4;7(qY@XIL|pv2 ztL5|3lKH5e@m1`poq(y0D>3SM6K_BLIqR4+Z$)F?0ge{M&%d<bbiJL3FY zsrec44|$(6Mlx4cQF*S_u2k8LZr?*%`^ibAwnH=#sztmvAkNDEmJTd^dX7DAfwH~T z^BUUGgGq%4N$~NWi7WA6f4x*%?~!yTAk+T(`ay4D|EXSt%Tq}aBvb#;|0B*=W8|GX z0i82zNpuuuJN_Z*gc(vM{G;^_@edRGyaR>O<4J? zwf|E7B^a64fW*`V%CPdw`{BW6+eWzW&?_bQZu+0ArumRpbueAX8U=Yyd}2(U-BQ~Jr4PgmzIhD-&zADg6((vKD1kX z-nsY^oBx_dbL#eatz#u&W%5JlJvf_5C+B&(dn9l)RtE^N2MkQkWGw1_`kyKP1F?wc z|BUiKImOf7-gj;OGyalE{;NFmGWsCQ4p?%{>;RGMT#=p(H011(m8GPEbAmx5#TbbD z(-H{udj|bDX3O3KLMi#z`=j<{+B1M@%Np`OVZsjE|H(?z_^Lyt6|1I2`BTJRbCZpK z6z1pN&%zB&nXo4V^7Q{Oc_5qc&puNDbPHBD@kenJAoY8kz?@)6`kX5xN(UdMeHDXb zit&j+QZSWr;?2>m-q!te4&)pQ2pnF(m6q)ib!AB+kTT2TuuiyxjwQsR!QJD^EX1bBgc71Q|3ZPIK*Y5Ip z`#M~K7Kg)x8$nyUI1$H-1Fq-&bto;h_+SERvjURfUsqh|>>oNIm<8RR=#!Nuochj+OcUcXuP89e*%AImYU2xD~^H(ZmpLMitApkxcVNrNwQ4d{vmP2{`z zI|kfy3$u*+dYp4=9C{}=V6~hagLYPLL3i$}GHa83)w*40aUPt16pE(!kb^B!4aSXE zZ@#+4fNuX`(ns4TIC}bzNoq6ZU}$Dyaecb0VHnuv{*=uv$jtVnthhV4WC30;cnV9s zm*DiFFJpOG1Wg4S;osknzy14GaZWZxcVee6gmpb-sGsgbrEja~c5PTuwtdwl5_Cju z6?Qhih6&!+@$28*Cczi#8y$SyRO*_~rDUJ;^~_9C`&yB{CIZPU$8-RiZ@1tWPqaPJ zfNe=PaFzrmlW$i-pDLVGxqCok_QA$1~@f zGV$cE|G2|;zA^a4_S;*#U2VeDzCoECOaD^`xiOey4`3DEP^t=$4(e>jKW6rJqR-i} zqI0kvk>L&4UR8*a;}^-E%K%AfaS3`$A^R`&KY366PGayq*Y`y+q;@8JqW>A7r{no2 zzp^l*l5D5-4km^A`G-HR!S5SHg|7X9PiTXzMfS^QV~FK5yIL-F4X zzO(u|x3mhGD7cRfG@8szbCP=olDsa+?g~gZnKCa`sY(1}Vm<}|26_Vst7l!kPVA!- zNi_bct3FEJYy3k;Gw%`iU+xj{!E|Tawoz;SjivwH!~lzpm6I*V%vMaKY{oyD=-e?K zaHd@;vmcpcMyH#S%OX#?U=$|cj%EM)O6m}vHxr90mSE4u%@`SNmB5Rcpf$bbD0nNK zviU-^96l!7y6326sLJCtvDFp%o|X)XGTD2_LmNnm%@xJh12frx)>;!aIuCpTqNAlF=_|irzxQTyT z^WB|*E}c)3K~m0b%69xi(!n}Ac?nKE%H#)~d_}&-LLT%MsNd+Z0wv_VwtrdiyMK8C zy(JS+@12cKG-BuI+p__Z9PHq~ zu6(HoW$wb1aSRDk?Qb>y(S-on&VOP9xyB)9Ku>pr)4p8O|3lLLAId-RKWA~;`k%pf z>hHV;buuN3IW0;_MP+?x|IdCWe+ze4&c^arFLd~y_rxu`w=kIAwa4xMar2h=heZJP zUNDsX9U%H6QCn9!{ON;n!4@1Vefe=ELym;aMU)#78=^8a&3hQcS+azGS;o?!gj#PsUYf|B_7o zuai%5s}~}7VhTsP<)87FzrTEvL;gv$nTu0}+%}mVu;_b}cI>@TN8*_MoS!f4amPgh zR+88?!IPirVCTLM4CeJG5)#z5_0T@zU&Y=!^vQ84`PcksRcc?+d_1`3Ob73o#7>)S zEVB1r#drE=-Eks~J$3Rw*LF7HpUg8Lbq0E@%Z>oM7lNLF#^9e>F3gS9tYFclriqer z^m~~V0%5+sIV2iri^~s2oA&}?xJi;V+S(%xU!ja z*0cLFk_q+*YP`wzvy6h54ENi{m!`$%e^-nzwzix$C4h>K35f65i%0&H>T%BCV{T3r zDoggq)EcK@MaT8-*apSqRK=OTrz}zaxHec02b`;wY_^iEaFpDz9YJw8y&_L$o^t+L zvaKLD0dA25KV}7m-h8Qe>dGpmDr42qE=QI><)76V%yjV7IRikI>d_bPa`vt_=25w? z+u<-7v49)f(`A~Ym5s#guuPk-4u8-v)2&b3#LbuB-{ijrpS#LyF%JzGZf-?We4}l6 zk#u#KCwe5>d|i%n@_ZO>bbRLM>y2~+Os-SuBqk5&R)YF>Fp!PM$Fz$1ZNL11}_I^@odI!>)pSOs$)O)@{$AwPKe; z{uz8ZA@6v6P*;q8kCQ)iSa^FzqzX)v$bY7`h-!Z&|I-|wMg;&Vo8_OR*K?m*2fPRO z2d+hqcc$Ef4g2-s`-4v)Z|g^RR{fmcU;0`6=b2~Y@ZOWe=sD^1MGo1fV{IVsW$c}7 zWt}mZ$}Ru89oehZ&KY?mwx4%*e=y~rjwo+9CTp=^$l`lin-B$}nboRWux3*R+*o9G zOAy>J*df2?j+3s(ot|If-s+PPz4u0Z`O%-Du%rwhG>7GWx%Xe{cI`y)H-yzLx>_n9 zP5Ec$|Nc9sW9sxe^p<9pO)~&5@^7?OaVMZS9H2(l|9G5%6pDwf_GxNOn*lzOiGOGa z)A_(Q(AuaXQMcnzRFsb3{Ex z@F3gyuknvL1CqbPPDC_jV3U|=V^^W_UIcxP3Tl)8bmZ)d|D@7HdSHc))n23Gh5AQ# zpmCG#yurY=#y^=dxU-d*fMq)1%x6uy^|{7BOoE^TPOy5c#jZLfvDH8EkIrId@R9oe zpDVtc)@F}3fZNgb(XJxo1v;Jhe=Ph1Yd^4^waFG_W-BJ$UMgEjCtz7^-i9)+SMIaS zJl8n1&oiPviCMu%Afx@;Rq8?2kY$Gw|Csjg;g{Woy)!3cvTr}cT$QF%)n&Lp6aAB+ zB`zIs+^gNK-$?w7i2~z==ma%ejJsQ^Y5hY7oDMt+DPEZsytIFdDypSR2W{Z#r9tF` zr>0>f%06`z{XM$+g2WCque44@$khKX`44&mVt8T`|HEA>$lZ>;C zn4Ba@#QFJYdX)CN#ug+K|Ik09N31wy`zuJ)Flj54l7H7R+W#L6o-du@Okx);Vpgr= zNc+M+BwnM1(UL9E4S%R40cH6NNH@7F?}&|xl1ay!=S;%V$tQ08uY>P-Q@j|7G>bno zll*V5{gUhhCee1L{BvDt((>=9ejSX%+i&3;cJ4|`0vZ~Un9+Dhz|!qhb=QPU9UwIR zDeCEUB-Uq&e=$L*FNu%Fihmt8=@iVYJl`>XghV_<`R6*&WXeDH-d-c7>&9tv&FtKw zt}z?^KN$m%dIkVzsCm(q1}gYk4_;=KBo~ALPz63s#%f1_C?}KU$Ra9;=7rq!_i3teAwuk}dFutz* zhCK6gR+eqwu|)y!Haz%fY6E5PvAF9a$p~%lPj|lYI|eLQKK>2o7o}xVqU@%$V71Eu zHy%KcU9A>Zid(nd8MIokCOn0<@*y$vlNmsCzR^kJ4nB(GK*>CV^!xSIVsLlD&P*ri z;1`4Jt1CW0|6oed2r+ZQrPR32bOxRY{@o4}f*IN%Lk?YI&5=m1+x%qfF>?@e zsaFDpy7Ezzv|S=41K|4=`X%$zlx6Z?2OUSNUa~UeGLU&*lKJ=3hQU+Llg1g17{>;d z3ri1!ls=&r0SQ!m$v9$hx38PmrgPv z&~aBlzS%xif}7@^LCREpN1}s4+H)oEi8~WI>#Okmg#r||^mOBB&!LzWI2ohy&4_xY z;_Ty|fM>=kTyW)FIrMI&T8C!(@RLVRz^{%u4JR(~2v&x_$tUuk z!N&btiCG{{*!4eB{7Cw0|f2%f&9!6b1G`re84_Na*pc8G8N(3_b z?x+~ZV$%30ROqVWG}Z$3kH-}N$P|3!n((lleY_9h?j8hVlN|boYlPLn#6@9cEAX{h z0lBkn7m0LBg|g|aO$FXZ9rMz&9slUWZTDxHNLRmq^WFp$k<~`GYSJPNQFfIE`fR^`WHCPstmLV1a@Y<Ee{M;G^mPDd@HmRC>A`J_=R`Q~p^PK>2qk zp!-Ly*3WMLXU6>(DgIM;+FdJLn3H2xvY8lY)Z?2-avuu3f+=)Yi?J$i9l=K>|7->A z*%3#gv^ypLMuHsY#gl5ilhE9fz}CFC9Ou(rA=bV13+Lx!_ai$mx5_%{)gh z+elhItKXM)50cN^%ZPvU2sV-bWaaOe{!b)rW^>;rC!#y)hc zE4fCF9fK3A+MOtS)Af8oK?TB{<0An}w~Ezz#l$}Lo@UseX7ZI={`ja~6Xne7BJ*qfN`(Z)jsBuRo8fCOILV3Z4={pPuxr9unsO0kqVj4#s4+i$gBAA0Gp zFu6U9$N%i)rH%m6THPEm~nA4y*x^uV*|2_&{G!hTH&ELqlq zSI(%xv`7NecW%VasoNaEN79x{PqSZhzRq*8wOIf39~{SM{m!iOADw?4e4%<-2YN4I zi@v4C@!F`CnQvhl0VB2n7BBKi1*E4n-4QW}4*MM0?tl&kELn>8#N-~Z`Z2bBH5TVK zz(1n{iB+fL%nv&8v!(#cdcWZwz_)8*$8H;HF!D>^P6je^^z%D-!SF zS5G?~38rI#1{;&^O#N?G^N}e3K_%nTeWGVX_Mv_5!Aa~Ufv|BhhsRvIG6ND$)*lz`83M`qU6SS~1q1drq?aje`^8ZtFzJo+;8&+&`2C_{1 zioEqksvP)J&oH--ab=(L{=4O$wo4)rvyDrK%#VX27-EP%BYWP)KLuXVp3LXhzjvTB zf@+k@%p-S@(8QL+Ki;Xic<)K4{bll>$yl5{(K1pnB)r;||Gx0H0j zIYt$O#y@o2=7jd$Qu=?BOy{i5q?gymeF#duW2zH}bSTO3JMccqw13aM?1$Je5Oq{O zlH8S$feEEzE3dfg>uKj8vHGZpRjTonqgwMn!dZ84CIXqVZ_R2Q2UKnaR|do@7L`@vAJ04YQ}-I#RoUmzKkhZ9^$%?hjeml@ENW8sWP6v@ zCK;}3c%?H3q7kbD);LLm(`0v#a&;ac(FWB%p#IJwtasU}rtQl8Hz(Sy@Xn2nV=@IJ z`K&*8+siB}u;!9yCUXzg_kgyrN8z8o3~h_Eky7inK(1Y?zLMR$?CMl0z_5=0B>o>= z3F-FdxH|#WRUfub|L1jIyB@!;{tP}m>^@YzIStF!#<3;1Q|8nM1`1GKFv0!}#0_l0 zI#wIsY$V-+)e*$@Dk;~&JhhgIdsvX=tID;;?{s&;^Kt&4WH8?C&(SkdN#~yRlyv-I zQlhpCOngeB{Obfn)Be(AwLDb1bD&u8k7<*QC(?M|mKP>BF)*p_1FLzp%}-0dH@T^~ zb#yBedoUAU+aJVU0o_*;!i$vy;5tk_2gJSh-@eBsk#NdCVT&ldJyd! zMl8s^tOS8D(C;dKA*IQ`CxiUo|8x7b?iQ3T|4tiCD?Td-oLU1M1;Z;cDJ6ZzBT|5Wy`^EHTAPY94Ae= zU!x84>EnQvIs(!x@S9wO+&+<7hCE4cBwowOjh~9-#!qH~vs~Bd84lTe1)V-LDe=cX z`R9ufXb+KK!dQxcw9+n#Cr7+~qOI*^;ET|siIp0j4@t(yWW@XD_YZx0kM9vm^M+Rr zYioTVrX!^M7)*&WTph?{VJA5nEL}+@Fxbz@@_vp-qNWf&lc|an$Ln3}2^|48Ouloi zd`OY{$9~-QzMsnDXDqb8knBa-7f=1ro9Ibw*5pZEe3Pl|o1c)HGWCxZ!X=Rs$@N}L zbm|i`B2}l|8paFD^4OF5D0b%oeSOAA4J4~(L|lQ@(~0K(W`rh}Apbj8V!_2r;3+*0 z1HPHM6+X-S|MMi{dnzQV$f_fdj0pch)A_m~F?{)q~KNbVn^r`iTpaFmC`wpHxyB$B;{2;P2oA8F}tIxi%eu(ignS&ks>$(`j zA8u&0+12R!=$kwZdD1p+w|4USnP=s!*>uS(O z;MtY?=m^yCrV=d8Iv%k(@8OY+ci>e=1Z)5H-lw*IVdW7+jE~9W`D1!L9}emN$+g%l zWG#|0YERXYoQ1%d=JjVStmC%4ZG}VKrD&fSz??u1zB}m##P*-BpMUW0zrY(GHhyaR zzj(A8_dI{kr~Y<{r()Ro-|}ee4yJC$A*tUSiK+ChsPc3tL1}KQ0U6H>q1vEsU_I(* z7og%xXJWtVNuN6Z=T4jVsq(+9tx_Y#F-)2s`{p+lLpJN?+AB&#G5)5C=1(`QxzT={ z_6SHT0-&pJ7dEvwVCR|pV(R|;Vcmv5@9}#pKUX@$_?V0+mL;9>a9GZt@szJA$}b4g z?vlFKNI{mE^+fKc^ZYLkScXTlQDev6XRPzxy!#_G>^BJu?zjZir=N*V)o#hkw^Sr6 z^M?{pb3`q6c61J@gCq{bd&h)qC~7QQ+4lr1 z3j5RaKSHwcC7JU62HpQBMN-Q^k}YUT>`-`}#c=dDVryiZI5Hxm6{IC%PT@u=TqWdF526p5EH zN|r(M^VGcMbtgnX?kO8kIwI*wMMjWXl>svoO0xaSl7D0zh%0w0<6|m5t^Z55xCI%< z4BP(~9dxvof3~$x!>;C?#vEv7Wl0qQIe5(3`kXA;Go3O(q>g}WGZZDVi453k$JtXb zi3M0ZQ3gy8E%9)Z4Xm!!;_wVfQz9PYmKTKFpFLq4%3V`*;qk7CThN~0jq^*V!{c6r zqU;IU8r-&z3sd*?;gCYZ8+F0dg@{h6!>(oBcrLdAr5!=!VZ8Q4hv@~8+*u3(v=!Z| zGs%`A!MdHM7|Ihb98yDNnEdUs0g4rQb?CKhiX>_U*23T(8sXr|FV>Nb?wy&a8~-{y zMTPLLnV?gYMVkEj)_ki(P26qgE!vNXsPNSx4uc zqf=r@{YU*BIrS)uRBEHUq-m1SYe$W`ZhftY6-EcscbIf)gO{YeF}^?AUq58AP4+sm z3lSFSu7I;hjDUnu18JZu?g1A?rlBb6Fg%gPI4I*llo9rNUHWlx6~12dWolYA)X3n8M$kL59!@ICUq0SCHc^8JCqjbQQy%xNqjA|&M7o*yf1FUW>P zA|Ul~_q3vCVjm9l?}NRcti_IJX5hfn7Gu(Pf%}%bQTE~sI>N|8l>ILk<)QYK?I>9} z&P*@n(w;rCxJqBQZUyUp*TjA`mqQDy$^Bn2j9vxss}xo&KW>$h>=-v4DTaugcHu0;VSQ2;~wyRTqO7{RPfN|CP^uSTC&*I<8r4ICH! z0j`xNc>+P(i1=9}#7_&n(w1MP1a zkK_!k2!OEa#zpIW@J!vPy;~p6Ers*QMYwqR#rWv~`>FnKD1BuNSZtiV0qr{$>MQ_f zZ_d_p)VqBhc&Y#Ggf${g)?`x&ZOs2x-BaoNjt-}>mb)vFA8S;ze}S$mE-h}&|H;uh zmKVK#&Wywx3!Aaz2uO)u(CL73q~=#6eBMIb?E50dsd?hgTh79``U7$O9X~|d$K5FD zEXF}uh47zcoac&;UcBW}Gs0!F^m`6}rWQ|?uEyU3f7knkxU-eoL|gq|ZY2s>Qtw&& z2rd68Im_W2Uj7;4fE8`k9^0Y-6*+V)Y=$K|JUNxDj0M>Xbaq9Mr{tfm>_!|m{!kpe zYdY$VI0>&!j^GOqK8?ap-i32>Eoz#h*m+bHDi1Ke^T~BBSbgCM`aMg2=Em!;COqzb z2^A=UQ>}$jODP{JR1-u%Uy~Wr&(V>-*6W>tcCGlgn+{Vs9$M%K0M+&)uk~anMrEga z4J1RslARz=3zj^wB(n;q<}bn%m!F9*DB<+(=cl0jmS^yVzAVhCH_laLAnEtx-rtG7 zcY*${1u5kp>(;38Vj8vnN%_Z`|3yg{(ZX>vtmR&xOLnW4f6^K08>0M?wEMxN2mnEJ z4`OW65s*%gnv?sHFZ*9hUeRw#+W)G3@v&7$>j)RA|5&=ig_a2sObPBlXVEOZ|CPrs z)43tjQ*G?0&ChDgb*NKcqkwim6o)E%29%h`NOkUjthI^#M`UP6N#>Z4e*$pDBQ*_& zhs1~mOaCM2`nnEJJThJ8Yc0>%Z&h1W`S#WOUu&-`{azGqR&7CfuC&yRhFF`Dg@*Qj z`3|p||5LdxSgCLAB=3VIQc9&t3v?;*vVl5M_v z$_sc)O-40YtI?ag7o45b65k@JShqIEqaX#@7guKGXdTev%lF4o+vnrd<$uA>*LUOb zxlwHhD2>HZM(WrjAaxySNx_<({(E5S*u{CwDy1Tb*1?M6v2+kZzON{*|B-s9qARfU zKXGh*TE@je(|qU%9Ee?8HY1X6=p#BEQA`a-FtOz*t^X7xg?gFWh5fFNV&a?{IHt|Q zB=z~e{t8@wA@J6z&tm?|xw!VSFXGB8zJyC(&BKdLJvtJyH`=77C&w@jb?Hj7u0-zz zWK9bi`%bIvbr}#fQHg$SIQ>tYSZRVzM`U{m3h;UlL|xAd#*=D{EQFB`RMrYfM=5$y z*-Oj5de%2DL@d{f4?8Zxj-`*|g!`JclkmGmJ!)S)D2r-`2Q?Beu7!)U~toU30Lw%m_r%86(vC zU~m7qKfVO9zVTRD_YS`Ny)|&u`|-=bAJCPbi)z<6qcoExle#_XSR3NUKb$@^T@gK2 z*wmvW%b^ndBR$+ogDpWnEw@?7G0UFO*;|C} za(CKifG~`6{km4A$eAGwt%YjIKO*btQE$pWd$NDYc#u7<>~k&qS7z5de9}^(WdGH= z|L?10BvB|x?7dY`Tv4D{$=_gcGFEg5snImd*iLL41p^K8VNJE0;@&jCvhFHJ`={xGcF z^HGaBt7?}7qKZtR;tUa~$AtAmO;iB$v*?%ISxD5KbLd8)Kw42@eP?qOc5>M!N4J#{ zj`o_`5cYoHH@ohN5ds36q+^%VAx9y_l5Tsnd83IP>j&_<x@5J9mWk+ft{hyXh^o zX#$Uz5oByUab8-P7QNNYu4X|VH?oWprwgY0-DW{mcw+b3vbi47<9zU={gqBnIq)nu zHGgMOb9*|+aXVcpzQ6It8Yw!Uw>ok*9CcorBjR5~PW%9zRny}QeC)U4b#4TX?BMxX zQb47v^Jvkmc3f$No-g~T)~{|>WH~p*zK(4NFIuKPV=hbMEZ>i^@DtK)w@$BmyzN>d zbi6P&Fsu0k>mtg;yRADo)UmLA6y5A^@ z_DSLhm-4RYiUFSPDJzdBna8_44|ffc@8M>kf4xOMzaJI{g5uyn>|@%FPH^nfCoaqj z&WC5AFdc$8X!_DE|CirkzRB5w%ALgwU>@a^ZKk_|zY~Xr< zTdAF)h97PC z-O=!*Y5lF+ohNB*6)DPHRnba{Fe|`*H-4t&=O~>>N*PMLuD>DZUFwpMVORbw_(v1M zd9+m-9Cc)JkFw*Mo!cX%Go9Q%S|8LFb+2x)0IRq5#wI+WheooBe1B78vs>6;iK*B7 z-3df|xt$~Z9dWXJ5HgET>GYV+YkTZBXD5Pn-|fxY%~OU!m%9{VS|1Nei0M#P&07fW z<12&C5g9XV?P=sBHw~x@<9hRPNfmXSKf5tVmfKLj$hBFDIwx0(uD^8t3^=x{jeIbs*Q7AmEQ|_QTueaz~=YJjhY2YPF-doQY z=hgNYr>DL!t;Tz*PTkF5`y_xN*z%NBL{ifJ|`ei5kc`aP6?vJ`FSEInFt zXfx);8{vrkYMZ9y6gUEtnrAdV{;<74qa^_4ds&1$`jE(UNo!+sFhb%cFR!2ZNa;}QH|0X(?)=+m`EPja#)Rtv4H*fO4s#!_>6(Bv&{#OS->uhj`Y_r<5^r_fJSKjA z)pybl(Yvxt%Yq0>Z#%YL&L{F)pwp|SA;)QLvWb`8wqfBXGiJ^Ww?VA4_B*e+$%?_? zs>9>D+B~o*EXPRPTTM%m@cLrao8#J(+h)tC$iFZ2By5fFW?6l`_Lo{VfL^vDq8s3x zmbH{9F?sIT6MMIgH`m)?ca5oqLGHz^@A~cc^*2MGH=-=xMWiF)3$HHElh%EzyD=A& z{G>}I=bXrXDqN>9KPPt$hUMB}HoJe)vs`Z!W7w5eRBEvm}&!mA3smx*v2MN~&8H%hT_Utc~ zIYFt_{8VD_?Z-3NO{jO{(!fA!rD`dS$8G1wq4p*-@@4eM>E7+s*JjqgFNHNowbInJ z?*4A&KXlu5ZONGk180QbD(C@B`x*P8R$%67AuY^b@m7eB<>QSi$|R){20xmh>h)tO zK^&y(E=F&MiK+r9*qoD+(*vh$Wkx9*ha;wCaMqa6P6h<+=MM=*$?_Z_+KZx-*W14o zUoA*G+!-h1aMwd9q>QW$8Eu%2p(ZB)iO*+lheV4bze)erjF=t+>kVYdwr z7-)im2sCIf3<9l_C!#I^oS(4cbbfF@4n1&o7ta2MCfg?HCVGk2V^`DMBaBymHO+?& z!3F=}EK@sGOgcr^nKq zjhIWaM*)esIfpJK(0KKR{&2Q(@gf2tK1^D4u@f_Bl9%j!*Yb2zz`*_9CKcr(;qY|4H&LC*}XHO6$fa{%qzKZC?r1s!{5De>zN#z2lPcCEJTpM} zA_-A`d1Q(^>rDi$n}kKnJJ)l9Bbi3PyW~wcS&7WOZyjLWS&=y4d7UcDqmS-- z)7|Wh6v+B&XjWL5b$Il6*!Wm-3~>~MD0aF-dDre^R%;(tHziy*yV69ILzEjy-M7#A zKXEi+yET(_6hISCsSndwirnH7rQ&^iBoTzRV9OG4KJ&Sga%+bUe%C+w`03n-Ewlgx z5}WxQ2`F%9TxV6%FC)XD@;roZeN&6d+$vDf)=a5f>CD-tauheMB+@B6%UD3Q+uz*<*N*gu-I3cuaOp2`G= z8#oS+8a2_e7+xfkQ zef@a7xYO30phEbMc<0>oeq)sV_NYYQI>?rPEb=NV_jo#7C7oIBZ z?%L<~gfLFXnY?21MWe^TRgz*bjk*D;Q;*r>d zyvE!_3vi-wTbpi{ap!Qcz_(J&!E2P5Y{5A4sdsdVRs{%kzb+()nc-qcTnj5u~avn@^TZFVm)Jek@l7HpLa|EP5pyzUxFry;+D~=U&~X5n0p~oMWk@pW054 z$H%1~cG(P8kA@~Te;cj0OS##n1+mCcAl+Hbj~x_XScLVJLy6Ce7C&3|yhlA6amE7M zkcKh^Ki|kjV~kXbD!PW8z=E1$eZ@<>kr$dH>jI*GrLX2jfv|WEo)rhsyIqm1%QK@Z zx*ffkTP6jOv{fAk2!Tkuk@27Xoc70;pog9(iw@&lu(2D!tXOhIKVn-G&%*o;3~YY= z@8&Au0Lt@?LwiQ+K$S`J_lsl**rk81W!R*x=xg8(^E81LwKdI|o@q(NY>^b1Y z90{Y*mZZB<-%*!(%ki>R*K3QhO7eYjnvU{aAhq=pf~?oIXYY4)@1AyZG)T|CmPYPT z4K{vV5nfaE`_c@~LakX%+`2KR&y3SewK<67x%M7K>0TwD=1jWtw|_xKTY%1AveJKx z?HyOi_TXKH(GRsMBi_F9c7xu3F7o83m3x~`M`$j8Wk(~PN%%lXNnp^&OgPlV??oyx<)Uvfy-QcvztJwMc;)BFgw=U97s{Nqg& z>vf|JikzP~irU86@_5nC@eWgvuQ@ZDO)hFx7hl#HUlIIIHvc~u z|G0it3V)f1)E{T2S8+Y6dc=n*XIv-O4X+T^j2oJ8*{bKs8ARLQyfPUG%lM)4%3q(| zN^=l;YEKuCc>gs8=amp-k#}&J$ITnP%}xckS$WK7bmwny(q(? zn0_V^B7PW^_HM1{CgqvOu_ipat)s`|%__~^2kncD4H}cH=bNk38F+6*70aNA6Z^!9 z-178Eo)3ExVS0EUcrf9dvpoZcML+~H9szO;&{83H2Ym_g4Q#aj{7Ux3k9`h%4Zb;Y zNW{4%@|W>3zt=YZ?!Ea%*hM4!(Zw2cI0u+-GA8ici^PG3-So(XFh{#MuQv`zMaN;A zx|KwaAyR%zB?r+z$^pbkHd8IsF83DN;dP*e2gYR|86vS13ufQ@oM!e`Daq-8OK8A| zk-Z?N#tlpJ;U)046ak={s&j=b=0-$Ef2$DwxQ7+5nJfsTJcnU+k*5r84@-Md7k-@A zRs89@aak&Kwdy6X68uPrJ)Jf8rLLHbmMkZVuf=Cd6JwU2!uhdW^YkC{38F#QRLDFj z7w=}vk1-<+louU@~<`)ch=a_cg#Gcc{K{{UD^axxX-(@C5WRGXIwX&@4!Q* zym-(alLN!@NqFtqM$d1^Iqk4hOaGLr-!A)-V~8a6!I}L;w*aQ&=bdG5}E3YFK~s}b4;woU$dt|P^bYzhe0 z$|mO#VuyJez!T)tOkql!&NLFo@<}&aU3~k9^52gezYD-EeJueAhJyndJb6vx`9}^CSxd< zMp`HrsrR_>W?H*HEG%hqn6`c&2OEqz(epWO%MF+24FAXiWzQcoThcm7&^@pHRoYxoTDQj{OEl6dGNCA(sGfr0&2bhJgHDf}l71qes)rRkx!ufj~D&(GO#87vZ1K~K9 z<5#>UIJ+y0OI#6RYCC;qo=Bgkz%rXAH(MZVL0+l^crcY7=3oi?L} zpm_;Rz2*_wnUU0Jlz~O1>RFdob{3}-$hqqd3ZOV(i1sciEi9 zxSP%GLoe-{@{{@1il?VnP(2ZD-R=8~?3_yQesF|pTb0Ba;k2!XqbINDos;3qo+1v* zyyb;SkT(p)=z93~dfBhbx2D?l-8njdQps`yPv>dXemiQ8efwEw@W4Z7pu3b1oyKlB zTt&~78dflzc@DyDs0gCzNv^mT-_M{hc%#6cXz|%DWlPEL9A*lAsUgBNEZ(8qi|Q!^ ziL$L&;E*Ymzou0N#^B;vNh&MG7&31DGK&Vca<`a?n{h(bU$xjiu&=oCx}edT z@%j)y;K$1`XR+0fY=2dC+=Zf!-efXcFul>sRgX_`43%?m54w5muYEGbyvobsr zObHrFnlO41%4q$#L7?g)6#OGP+HAjs-iIITrBF_sZC}}ID)y0%%z+Bz>CxCvnKQY} z_e7+p3WQ6*Cs@p*wMA|gx#Gsl(F|)p%B{T`sVPM#i$lny&HuI%xnKS9h51xSpS7eB zz$$+iH8N*SfA3$g1WCW|dg3aV<(U9*6IP&Wqfo zvDsE>(LXCJZ6h_t{bc`p1Bf!C0SPFQM}WR@gB%a-W#p&fnWM?5RP>HH8NC-g8KTs* zG+DTdxt^8;^r;UXn)FLYnEL$73u4FOJRm+@@G)>Ich{5`Td1v-eks-gFn@8c`Ez9> zBOy;TDiXXcQD}xJ{o|!oZob{K?v~fza4!$ZFaWls!u#(c3nB+tI*HnIEQ zu(Io`yCj@eiLmKEQS=xwuW)SXiLX8O_)>Mpg?gRMb(rxjaX1=@XQW<-HC(a>j*Ip+ z`((=kOM7d3W5i_zH8lMpa{okpNbwFCGgZ13n4idI+i2I>sVFk<{B2p9Y%U}5TRdd$ zO5GLCoA_g%!6^*Den$empBMh4wY~-9_o2|xM|Vr(04av{7M?!b>_`vrp#VF2kh&=J zqG)G<3I^QXh%MXQ{<}BOFf-^}QB(t(@FT;O^OK7evXAMv;T+~{+dO20hMtzWK-6>w zttwacth`&csbYx9Ap0KP6KZyXl9>S4WQD(t{J3$wC)n#d|5wqcyZQu;0{DphrEisp zuL30lA#Q_H1syJP=$a);HE8uLUUOMye7Q^efQoU?i~@NVH5>6Seh?%2T1=$$H``i+ z4u1Y!VM-703637CuE3&0%~NOTh<1xE%5|l`@hcEZMVP7kgA@((-mE7rXEEOu zd2#;8y6D~CaC^}yh`T4FY?mWaH7R;^t79y_C$f;1vbl@agcmM-<)^sUcxkF7P;bg? z6uM`eV5~Da;qRQg%1N0&vm&Jg#ly6Rb;JJz&ZG!yR0sVDSmF@YSrikHkk$HW?Z)K285Q1?Ih7)UhFxLOT1pq5xgODb?nTj31*kW*ZrW;;RkW%F_G&{g4sW3vzQ5Qw$~!w=8+t_g1srV^rbIEy1`#0 zJPSF$;1a|)c*A8&Npt{J1(u&~1=u!JA~T_am>VL$w?ashl}%db-wQ$E^NSXC1JO|q z&p@e}i-kw8L~D87&lMG<56w?+lj=jY{l|Se;6(ob?eO7Q1fykmd`P=9z^=+hGM!+} zoOB_at>Y!V3Z@kF=^cb$@+=Th#EU`LzS;v+b`)E5$6veiHX1;`*U}H!z=-9BF=VrR z9TNZ2KQckTpqB&)BG}s){$}M@BqRQ!2aC2fEfe~lEJ5YLY#EPregAVP^G4xD=f z(3qZ6d5!tzPYoKP{z7d#Qq%EtvZyMZjgB}%bW%JU5n{VVoQO1JHtz|8ES|csR2Nu3 zYsc|FD4G>amVx)y(F?u2s)K2{vXLp_U&FPHp!&psr>I3fV zE=ksSK<*gX{LkV0PstF>UsOi2$e))bJZL1Z_A-b+S|XFC3|H+C9xaq%qM65yW~IR@ z4L|VptI~%iiF4%-GSyi0!?eI_YhC)`!ljcJ*j+(6xW`#Dc=F7nnMPSR9wpk~1W|nmEtt^b;yXNz6ig%j z&<5ZB*{oFFFhXonp23KCo{V8ztC0OONhC3rB*A(-JQMQ^riHx-Qne##OgbMW?|Tux zR^q4H^Ag|u^Qu&ppC*1%82vE>93LEBUmyNA<`DBhExG)lT5KWVnq7jKm@k7(-T8E;QAO+`pqybmA+!`6yO|qt6#x*0cCI=R zvW!(A8@q=fL@eHKH)T}9Qt!?A@k|)Nj3Kr@eZU!N}56x?}JFb`?ch#E*JP z4e?^cOdIi;O}aiS=kDt)cgDtyzS8R~0v*&z{n2Fo*pGcqrWEC{%GupC0_=|6`O24E z1ua9OXkVggSyUE3T==P8Z_O-Huy$|;pmo|P{;SRnjK@DHEPdBN4FJNL6OJD-1z=R^ zOZm>X`lV$W^S-$~Bm8*+`509X1?9J-^fB{n#ZN+mdg4P(8(aK6O;>-pP5#6DMQCBa zGezLkLln%Q91)z&+y4stc_IJ>!7e-eq?}4^ke2d}nxRJt8eC<@2*;=t-Z3_+?R?S3iGhlCe8&R*D%j%cB zrFA5DCwbdVJbPvoBiT+yC0$Xb<|;t}G)@lbngUTkQhwM8aUPb3*&r{I6O*;h6Cpvt zCOq8(iQ2^zgO>-criDM|#>e&Mtse7w;Pmk{`lea4uhRmAiW;?K77-s3FL$O!MQBsp#~cheNCzt1IrN>z-Sb~C#8m*Z^S z*BVv!q3NJg;@rL)Ml|X@ToH}aQ@5?&V)KXN`-*9dvcWMb?R5lyb6)|HVGUpQwm3Z0 zBX8M*OjO4*jR#9fx`IjT(BI2wEd7M!aK}6xt5Mil>xji7sh}IBoS~}IA{o}kd)$)r zKLacXl8XKaJfwbP8V~wj6j;6UP2R1FRY0EVuLF(!1-!lc(ZrO8?&ez;Rm9i7T)!$t zL3V4smz^V+mUZWOX$$w;RqG&Sn|ZqWFe(dC+v|TxiP1_T%ytW3H3~tY60I>Wg3xV_*0F`i?bQ{ zWz|-yi(6vk)uu&GD88rTdy`)NiYM<%(;0Sj(-5hX>OW}8wGc2*RJwDo99K~LzVKOr zEqKbTWIK>c%0^U&u-0vXoD)%0#)H4MAVF_}?pHN1akvLbSf)CAbUODEH`r`xacY>p5+6TM zPEqW~=~sebKgSWC@~$d*_|L$`J55kmT#3EiI|B|?e^HF+ zHA!jr3iN6H0^FeZ@yiODxdz4niy?wSZ6OnIDc|!N+c)Qe;04A4V_OAlgm*XXdE3iQ zsrZ%KUR&#M?5il{S=qn%9z!|8A)dt3C2;AEgo4%Q=N0bdq|^5;N@nPhArI-)`SX@hv5*v#(DW0zzMPNpTivdG z!qMxmtf+Ztn3h&t2=_F=BSZDgi1uUl2laZsJNW74jo@bGx|8Q-CV5iD-{r$_r?YH0xMEiohJh*zPid!e?Bo)5BIJt89$ukdY5)RP?+73gjJAr!6a!Xla$USzdikZtpWL} zjnMci=RTG|jPk2yuXrt3qb#oQJ>_boKnhKfy{Bg74cYSLBTed4w<}w%waCi|RFdf!0I#lNn6?DbI8f5p6{7aP6JbF6mHldS`?E!1 zbFxlS^ixQ17)_`LuJ`up3>N-~xmY}isL}b|fJ$Q*bI-ukOL0-)Zoj!rX|Z=KgjuEa z54O0sT_W&<0h60;9T%KBD?yhZ{*fn0P5J{R3r#bgy2DzZrj;<(FX^1BJEeSI$4b{j z+g_U?y;bC{IA=uNO5v`av=q*g{e^%@!a;ZWWWCWYj z!-jACo(H;c4bLjXrk_LJog?uqrZ+flmrnTuiKzr1tsOd(PJ4?uJ<}Vx?|JV=Bc9GI|iO0pG1k%mhB9IA^3K;4I zi5dwZ&)@$`n>NVp#p@zXyhI=3nEzs8wj^sYe8AYCiZZDaW#t3&x8nnU8AWgl|J;Bc zTUwtC>Q(lm_LUo|!viy`GRi0h!>$;W3aM=EnH|sAy2iI`FDk_or``T_TjigxrcBFF zeiD~_{AFTlE#ZkU=0nozRYUHNDIdpHK6nm=EsC8be(*4xh+Rk-QgxyjI*6N@E$e!j zA!@MdlGtoQg;hDU>NT*ziM&BeSPP21%#A6wHRwbCoE3{pey|<%hFse?yOyf@BDii^Jz}oK>{Jx@m-gS znR>c}L6j4OU(m4>x7IxHEsu0sIQEwJm-g>&@n7mN|9CK>6P!;;%1uEebEK|A$ufk* zTLc`1x{VVnE1}*m?DLoNQe($z;>C{!P@}IDqdit@;*K~ZD{Q!;tK9wAi?UFQzd)=( zz*ve0Q`>9yh2A@ySz03Yq$1EmkT)ijfxc}nBnZ<$A6x_?#v10?3vY)4ob&A&qw+XWKcF3G#Gc{F=+AkOjpT^jq~cT z!XDUl4A%_(kNkh*NGg|de`@$E zfcep>-vdxyt2`3OI~24Xl>Rzuekta>4k+Bq_2Y!Im6+hf_X52l_%Zn4i2Ei;$7}u! z$c}AM^e0R;bQPhZ>yCi_YyWt!|ME@P`#`hQCIFM1Ya{kD9*Ud8XeFvJ7lCE@qceB) zx!e4u-jtB+T!l42I$S5p49%K&;lb+ip3ep?1rhbx`>#+}$ZZK1p2XX~%g8bzWrTpX z$sL4Os1AaqitEmBSD^6Xu< z+0>{D(I{^EXyfVQWR|l@cJ&6^}U!s}-c;xx#)fMhub-T*d#OBF8_|P;T z;2hiOnSvfls9O%SLp*A_UL$vT-%grT<161$Z7azh4&TwaiJ(g_CGX2Sk4Lsg%4NJ( z4rwasycqbIiFwmUaLpZ$%Jl#aO`TuMe85l%6!&a$s=APO4(+BtnMM3MnU^P5l&xo@7U;Bpfn>ceJ#6{jN- z_WIPNEBBtVc(-EoPgE9Gyk#7Titnb~^(Qy-hHDQ|+xL1l^XNu%nX#k{-gVNcxVv0~ z{-c7uT(vSeW^aiSQB?Y6!4}=og_PZRiA}<$mDNODWiu%a;&iyZcA>*I0?A9_r`$(` z@mY|R-0LhJ!8g5sZ}RVHLej}v4^@eNXMe0EXvwD&c{LSRxNxyiZ0Z==M~3x&?*&$q z7P!tBA~!uH6tVp|qtbYl?Qj^J>0btmz}U0%-m5PbQ5ueKW;T76K8SV5++(hfe^FqK zD&^wIi`z~i`LYaOG^RMvf+WTjo075-_(IEi^3<};Fr@Gxra{x4e65?sb!o0vV=Fd3 z_r2D>2F;12odo(v8_Cm-_@X=$dGjH4YHg}i!#!d_OpB1>=U*3j9yeGsB@>(kio^W4 zUY*=v*j>kO)h&0Y*A&|2YiR!b;s$$g}=teh_rvw{%{lb5wJ5`cLMn>ZCh)I zK=>CzH7KSUkry3TBguUXdLDU50)3x>h(o`b&Opd>9q+Ytx&97|w7^#r-lQ`@14F?>HQ$7S&)-kfo0&3m!T1Zds+#t+Y>ynt=2^~Ae> zCu2}&&zU7FWzPLq5&n!)X{O*j#fhSUJ*4Tx}D#2Vfv#T*oU#vyr8eh+^U2tdaeaFs-$lP&-OuSmmGp2VX#sx^z zGnEeksN~(`eN2a3584OX54Yq>qIble#>u;8>z6ft6G5t${+Qbe&%KYO(+~s)AtJ}r zvP&D1j9~R&l^D)L7vH4pzQ-#kEc9B}W7h<&zwM(Xd~bDfa%cgGcB;jnKvT#zXC8;` ztEo}T)T}mPMlDB?QFl9Fx8RU-24HMge>uA0 z`Pha)Rv6dgLaM0toD>qBBk9lE2AfZLPp|^KO9K2PqHu3a{h{;|*33i*9{t87O0tVt zOigD7>(@Xa72l>=)^Kr)vc1!4w2;s2sYLk3l}E+UDN#T%@cYfv5J&r5cs`0Dvlr1% z;%Af?ho3bs21ufqYu*nv+kQ7hc77LjV{Z1-xrvupVczKQ2sSTi^MSt#dR#t&X` zwho4QI?XFRS_+iTv-NSl6__PHg@mhc% z5nHrXyZGVgbEf4e?a)Dv z9inK)r56pJ$COtaZ#MeDwedQySLw@IWPwV9*vlrU6Rp&LO785aB=FB5_vvArpnOl} zz^%Be=%*iT6Z;@P-7+FUuv-o#;ywlCC-oJnMNw5<{ZVX{PGxuqAwr~UXgZNhr@OhZ z3*Mm9WfDuQAzt|DrzQ*~chPZPUQY+^6Pv%Usf7itlMgJeKG>A9Om`_;O>~!lE@#3c z@zN$z2X_&?hQD73-phStqZzxW75~CR&d={OXfmw|Xf;+vD;9cF|Gn;;2x<2_Uh`9X z!_#?$oM#BG#be~yTzvp2eG?ziyXpPy*Qty>cn;Qo5>hIg5Sly(9SYiDrsyP|AYUA& z#s0C^RW61QP9Lm4Jzado8p@ZK$XMMWQ)5^K8paW~IA^ulZ$C(ZPNZEF3yMx0l{UZS zLGGCTfm5r%npsw#EObbZpC6Hk*=?~GsvRW>+|zTOrRK7~qZEf<&E{A={QP9iX5%+8 z{E2kxHkIb+1g*KuP}TvUt@)QFD7IUV(}gd9tQbFK4iW1;5H-ChFEs!UW&cz`uDsNr zQK4&C!r2KyMqDypM-8&-6$@8%z9vp|0 zr1P&Mq3ZNZe{T4WIFh1i95v1ofrMncBm>wi*|1Y;S}q~8$? zXC9K0O&T0Ja(7AAoX{3i->phSnRMsBZG#VQijA0twtk;Cb5-;CHz-?Ao`<$e&x`MG z9StNG0FzVN?By(PDDfku{k~!M72a*QvjTLd_mRD$g!E#f;Pd(*yY>7106bb7z8^WO z>Ba=PRSV7Up8l{ZA*JMa@74fT8QAcmJaQD|)+~nP##mFr_{us8cY6|>337bKIk2+i zwEMXBD#pVR?aPr(o>dom-S}Z|-6nbM1qy=cENSZYX$@=7&t;J?B4?*YECKy4B#`uS zg!>ZNsg*Q1Q{#E`R6wCkQxd``Jg){nmRCuYh(ns>A}u5`Z%=HN2^$7lLg$vA{(s37_=zi>~}R zh4SamX5`y)AGYcOJoV~Q8*oac$_leX8e=Z^U=J8$6R z@60J|E6#uzn}GRs^?0KX?{lpd%vA3m4llX5H7p1nb)evShg%&S7 z$y8yL6pqbXUi5_U=Yrx+2E~bBf^-sDgFj<(PjzNrF%Tw9XeQHM4flwED=4fUI3|~1 z*Sh_z{J-=A!&;SJO3g@r{ob)2xiyN>@kN+>0S^XA(A^Cmj4yEqU^hRn?xe@uIj7N{ zc%hxK=RxZ*h7MbAlkQj|I0Fo%_>Zb#UlX=){6pr#)fVZth!IlF`fY6IYIHw~ED&X> zC`V^4VEFt&{gN;^%<}qj9-cbCD?QiB;ReXrF~Q-t*>-&TfRC#edH5!XrldqaI99_q zUF*UxY<||#?wD2m&otla#C&)4vnjz7=rKf8_m>nD-y}0FVW|@!;xg;Q2boSPEa|jCh z?fjy#nX1d)8cD*J2kF=mB~!UgXasWC(k~m_z4<8e#91Kuewc@9KFteWLgijMY)|wN zQ!IC5!|9yjI^Z@lFy?H*(LXLJZh8nGR+3wGKQx@57QPNM$D_h`eEBP$`YP)A?RC}A z47NZ0tBN)O5N{iU!!uJQfg1twHHiTQZtnKtgduP;e~%nEA(ej0L^gBC9D&;g4Trvq zG|`*_!k$hM?{;H{6Rwgg<@Flxiyxdxv~H36YEmhlr=OcR4Zda2v)(VA(CQ2^-y}%K zWwsi##wFt1QE7&XM+FH$x(Wps7z0I0rTzWhG+iT({=s_M$0c!PMfx?WUYa))5IV0X zymMRN$XB_`hB>*NyI-?95v1Nq>0%aS@2LwpE1|wQ?a0%Pl@Y{@wInEYPV+2T-%e3! zsMV}tI`t41e=|67EA_A(evM67IXA=vGahig*LE&RKpVS$I<27-bRMD6EV=(|9;)>; zitzJripYHFtq^4u;AZ@sz+wlT4m%fVuYHxqZ-yTALCE$0zaK(3M=@Z&P=;cNBmVCn zFAYTi4zvG!4?}!7EeKxb|F{_`_J1~DHjwu*>A$pz!C^A>;m3dK=KU9h>{fwa{%iNK z1m8rl{%c24s6-S<|NBe+ulA|o(SH5cfB(V^`JdPP-v;G>M)N;SrT>|m|9N5l&l37i z9%Y1H#w z{_hS2mtD+=SGg5HWWh63bP3{Lt>o=!hF-J&xVSibLG&Ld2lPH^ip9iFTiF+Jp~gcLCUpDO9J(`$8Id!Gpe=0wt;j8NiZxlf1LpPN6>F z=fZ6V|I;&~GmGiYUKWN)ffarXMi%)8QYZ*RF|7?xi4=%AEkn)iSSI<$l(QRrkl4y< zN`@SBvxO>wk&{*i{C;tI32D2#*9GE39de~b;=SwR4(G4;`ACNKT?n!oY^FP|h}^3E zR9pPxsmVFfbHiISfDl%jK>(RGl=baNMX>egry2fUdH6|K2?t7V7yieN%q^|e4{9kD zxAH^~2c?&4r7k?>!}z=tpaG9x9l)kk zInd3OkHvwHSdx_a>Gt{(E4cZZV$=Lt;dP1s^KHPz3f`R>p0UvaFOGjLR<9Ht2^{;~ zQ-||g^5hoJCNJ1j5KP+M^(R^)$+FbZBo77riqc-|0d zzhMxae<%3#AGib{;`?n3BpW@|avrLa^^Xh z0ahhY9!VxFh8^u4uTbnhj0(^TSdoAGlQ0|puTFxg14CE>^R@MJ_GDN51vA<(!2B=w z=h3!3KF%G`rWv(Uy~;v6YxwGq6W5x`VbI_6h%H-$R`+M}hDIXt7kikII@hJ$#LIug zpoc8K)h;FGH9*bx15ehV!j-V4k-BL}_G&Em+-uo~_rUMIx@X+I4Ii}51Xi)Frp2iy zpZ;Hy`-g25RWsFZSr>XeBwGPs&8d1^`#KXdGldzcbuCp4o`4E6*MxF$jq%LLxe6p> zIX;I{0m3kK??~Kz>s<%kFR+WPvadop5DIZg1AEkoYohez?~kCXd3a;joiTLJLdTge zdn_3UrNSY;^C_A#q^x&qKYJF?*9u8fe6#U0lVlV$`(jO zekJyE~6IvAM6+aabZJ*!2FakEeTlt{Pgf4Zmjpw!bRhNp_p2-Gt8V!9x2wm-YuuBUDqXRaPxP@ZiRO9po7MrIj(M19ql(`Z zz7wy>eXVmE#NT!n4AVs6$^S+o=PlH*E!Wxqz(iNOFi{Eqn zRXm>ads8#kh*_*Y?;tnc5Up=gTI3JhRuHoRl zmP>HQ1i$&w{ldT>04I3TorX+oipG18t*zy8Y9hb={-is1c7~DVRaMcRhJonEY>z1N3S6s*5wC^Zo}Y-hUVo(13SJbMRp<=Cl9i^h&kkU?irW zJFW`~#Wb^mRFeFSTO;aJ=jf0V|Ul#5ZxJne!fO-pX$rL`*hV6wJmzU2hbK(S!V zrKMn4Q)1YI%NhOyEPDAQ+U5o1at=684V;g;SmDUN(O5B*{>RTbwYg3$U5e(MRQJ$8 zR4yHJ!>2lZ5}Utf_q~wR_0GGp>(O8<%5uto>g_5F=19Ba2eG=V%bah+I5&IEU|#+_ z8!E9qw^eJE+gPtBM?efiW_Nrn_GW*I^ybhag27PXqh}%GLadPIr1?vb>2ex)VZzhtt28L8AEA}HBPGMmrW4+8w#Q}MQb<_h0}Sq3oRsv`$63Aq zY`l;>v^}XklyCha$IE*4O#`*E??G$2gt+nx7Tavtkywn|T=wqkJR-QfaB?C(H$o!# z2XCOFSjGXSSFnREI}04=FU**HIsFKkO%_qAWglPl=N3w>au%t5950_tjFt7WI3w}; zUiP-vyHmcwR_5KINPCSc7eqF;emLoK+ObO4oxm$+t>cwXN^TF|vXM3!&M)12TQ*T2 zUfCO7pWU7dMS`<_{6)m`-WE@2hhMhdd`k*$`f?(}tH@r&-|letc)3M!A*X#d&Mxf%u zt<6rCKS^?P;LA&u0MQ6px%;PWdC`X-{+N<~3zP+(NUGTG4)d%52s}be_XA3fR-Jc2 zgSoEoixel>A?qEUr-!*~jyyz~Ec5RnQ;B9~57MYT(5TpEmBd(BBbkJXKrUcv6K}@Ip`0g4G;+<029B4%|F-;% zAo_%lr9;H978Z)L#R8UTdoDRlT4SZ8q%8XNONxjOPew+DR~#vbgl6unukWJXf81x? z{zvo3%jTi~A!(f1KXc6mnSCz#gw-`c5fRr!ioclZ9z4T8!c+X(`m?J5>V5;RvQ?8dZo{5nr1zW>Be`HE*a`b0rG|2>*e zIs9>AZZ#7-tCOd}D*y9WGq;O1Ki9&B?b0SEt6ec7vC`W zZILFtDt0P%OwwU+iKG&1C7W?vZg^VLyK;K8{-sF*&CDlK1H4X_2#=1w1yfG8a8&L7 zHTM7AUAx?EdLKQjmuu57s?md=+35iCoVwJscN}RMstk%IrSZBaE@4bHfAN4k!Hb)V ztmn^<#_@qa)un4Y5U#_lJ-I=xJ#QwtF6~;oazj$-;7X zN30EQWAjOC8q4)gKH}z?t*-2pFAtwf`f&^b1syz8TcwY2vOt$8habPAJsqEUdS3SV zLaJIjd0^-4! z72FH2)nvC>U@{55U0B3DU~U z%xecAGrS^K4~Nbpk1kQjQYw&)aYskQ>0p&RlUSV|f(c+=OIj^)~Wi-;K=5AIdy*!;6Z^B?THhnH) zxlEXvKg+h^)Xmn2rWa;JnTAEL124e&ebd6ZzIk{9`qbO@1hu@5Zn`8z9BpQl@jNly z%5LST9C})fz9U`!Lu9BR*UzVlCmP2jb-{gtQ;A`#PffOGVXxBnEmAkm*>~*ui!fF( zcNqUX29?S1{N=udk+xwfRgf!E9w8N({9PYq5_=^-Qk<@Tx?4Pg{q^C55So*BrMXok zuZ4ads?R=90R8A=1UL~GK!^riL>%&%X^VQ%u?Z8Q;YpD=4lO7`$ey#9d7&;h?Xb7QN|M2?-EW?+Dh`>4y+IS# zN>d3iHhmy6lKbzWp4mxX-7wVB%VukTL&c~HcW~nsFhK@+C+l6(rNV&!;C1IMqDeq+ z2m_k7;Ib+gI`+2#|2Pb9OVOxeFopm^69JHm$%V6?-x(rYZ0^vUy1=XjM*kY!1W;{y zZnbrTuE+H(v|cN}*Ku>db*fiP?zNohj|9L zsQCangBTJeP`21%VNOF<*qN!I*$i5s^^lZ=g_v4J5YaN1U3~FhnWFMCoT}{w^<{`a z3J;<`{RHXw=lPnYIBC8BOu5PkNw)W7L>-sB~q@J z8mcv3g(LX~)-0nym{cu!ub-c3`98hL)FfB#W({Xq5nrTAfNnOU24Wv}dr(q_ol@HJ zvvT$uAov+)0005T=P}164$e}#=DB9vI#l4A^5!wn8;B(_IOw>{e;OgRGtJU-^Arq& zyp~PxyuBjR5S`9vp;_<`BqE{Y2B!Ht1|=B>=!s3YLQ7smk*H3m*nnlKL0avu6G|*P z=*IynP1c3>mQzbGPw>z+!9bo)Nj~b9%BK<(%=GTp&@=3IQ?YidLU_>8u$sxABl+7@Zn=>WyK zhos%f>8W?Wg{y=G*J%!*9vAw}IyxrT+ntR53hG-)$u9icW)qbXc%E)D+0YZt8VK5C zP4hS@Xiv^2cfJ!Rmda3U{NxjAr}Cu8jl?OciHIhfZR zWTRNG$co0XUzPS1C)z(E{ag#oqFCO|a*v<>Qy=-;P7aioi=9z}jU6PpM1&Dqythz< z6t+pUHtT<*6{ha zZd=xjQZ|%XaCb-_2}`ZsgI3r-NBDCSE~f26mX>?z_$S6Rb6yZFK5^07u@UIAUQCaC z%nuHGg;?5pluIIebV%oa)-A>^ZT5VH#fWBI#ZzL$`8TyH^J}qM)bG(WUOSp~!@${_ z8!SUOmCLCJe1+&?My0`ua1PlXU^UU~L?M?V90b`G9!0vRh_9-0`Jinm@0QVir}pFK zjX0t9P0eS4OJ>9N1Kh!+yPJV120>a1GZ1zhG1vZKe96IMUD+uic=*-rUHSu%Rl`8q zX%)y^3&z@%bpHaMO6@9-j{FcYgDoVCQ-_Q?S%;G?|=Z=1t0gj zDTBpE#>{yy2O`V+l%y!#7nPEHR~j@-+Oy{TB(SfuV>)ABq|oaS%fAs zs|pmIg{uz%lBX96GpjW>H=h_6B}YN(OSG6t{_*C>{p+yeKg-j*FVF=Qpk1a@B4(}r z*mHn{V%lv>y4kdx^DRRKq7tc`P%f2!`LhjkBf+hhSQGr>78{J#t~Z`s+&s_=UZjGGTNOuKIreW+OMI(cy|@^ zyD1~ALE`6ZJ_lTb!HCnw&1&H4DSO9u3jL(We3jfY75(tnYv&@`G`Hqw^znBE3IMb` zxmU{O?Cr$b1g}b0Pw)v|UA}mqc7^yHnPJq<_Q>~a2?Yp^pN`k4nbE*Aa5a4QWz|Kx z1qNg7NpE6<>iE<@>LN>(0EEm4S^PapIo`8AsAw2~jZhg|2z=&jRtD>$$QLFxyB znhu?F-7J>%9P!TxykYiOn;@&w+CfgIu4%)E9jKis4y%jb;X0E!^OlZcL<`X$pW_gZ z67A(f0I@1BaF>u@7yRo^bRaD;S#P}D9Lk28grsMbW9Lf5{&oulxw$cASy2UEL~e$? z7>xI6d|xmlNt{5Cyjyb>-DPe6B#@*E?&yBZPg2VcsgCyIVo_VIfj9Oco{~DWQYG+L zF1rQ%mJ1u75z~f{Q-&`mjXrvurKq4H+`*82)(cvch@K;=H89-^y);7F^cG}T zH;1TAFv%R5s9T`2LPHmPukV2T$-xZ&e~d9$QYxzB?7L&Fc*ke1YA=TTo?hWS#=56a zGbV{skB$TQ;Az_G)@l9R_zBV1I?UOMuN)P0EIdXGG}bK^Jw(=}-_Qj@vh&sP?j5)X z7mn^ymUD|*1za3zl;pta@xQ^ zCmB@IWRKK7Xuk^Ndg^QKSt)-0T_Ob>KN^pdO6i@}x`OV>(Q;xTWocd!d&W#U&Ybw8 zOe^vu&3V{cbWy?+0Txa#JTK_V56cfS5DlZje$1y`W7Cnz4#{bm-pzuJ@vnan5<{%{ z5C9HDa9weMJ&B(eVB%&azY2${9iSC#aL=g9jv@_04$$1X44Mu;WUK z#2H_O1DR;gv>1O>_MD1)DX-L-*-Uw2Y?MO&dU|iZDS8lxSjE*T^_ynXW2W6fXe|kt z3oon2$-q1@LR;|cH}?`{R>=EvNP&ExqUvt4`>Hhnn^as^ygCb;1iKMyy9n#-B;J%n z@ZtERSMw+31HQ_yKB*z4*BDeK8^Y2!^(3OjG)Ic;aACD!GnOIS5znkUJV^T@8Oce1 zr*uu_Rzi^A&93+_{%@yV_-u`OmY&N7q3i&JvwG}E;KI$ySVQeor}F$jam+n7g#$K2 z;PBj>`ykVMcaVu_xjLuzhLLA=RpF*>LUPZGEN?Tz*mz6Gk+PdLMhLkK^UwjT~Z34)KVJ*DB;oo0qJ%=dk!>tB@MLdqy|0j zy~BvXVb628a~PJ(kE-Y=R0QqWbBGu@Ue|ZL-Ilda>zYtnq>Efs9n9SAoN8fwR%%xs zwJ`#ci9%+w0z_XD%#0mYGJ)&+?R_?D2#*O_!BwDSH!cOC)tsf7(B7BdITBd&P=&75mV$f0xd5HGZP*4Mv&+tUN?|fQEgJ= z6~;7a8uwF~T3va-?gIv0jTgFA4@py->~IJvch=vm6qmsXc|amW;^wsn`AziCyC1qn z>&fmHPi2hSOm0OOoCvH*%YU#=%Vmph9p;zhK(!@hW=Kb;7eP< zYpLt?%?7zQFm-`|z-!QH{FeQ6`faVn6vLHeuP!98DMx$3>W!_JvPTET=LET8<`;Y( zd1ZpHO$%G#D1 zM~!lI>06F)wyjFfiXquT>qy80?$+-qzux}X?M{+;M-k8B`+%JK8q@(OeX3=^fiS3D z4AfjBdN4$$9L$S6GX8T#sMBq1Ofb z4k(8;3-rqJve5Zx$8sI0K9&xdv|61z*%B^1Yperfu#*(-8wT&b8Aa-S76ZF+U# z9~*h63D+$$H0QpO%2bHYEC^v)#yG`A41fgm?8@=7>%c;h=9bAfVM3^+_IEI&phNKd z*rkL3+Xjsxiq%B?!f&4y{Wjo`_0BJ!E+pf9-@%UdOdZ8E2CAbWIH@vVbkT>bnhD&4E!aH>OD;9`P4-LDB z*!X}iPrj0WL=IY?_l`ObARv=fPk4R#j3m!=OE0-PLI&jkxA0gJBo@ zRu|16{LYv7=x(KouiNI%e(|)9TwZ?QHiKkctFaL)D#R^re(S!!i6xg8Hj-R5hiQv< zMfSPwxok`M?@!Ew>`F2tCo5bhHpV_Q@g^*PJ>m7<@U_2ll$M0yx{Y1V{xHh-pmQA1 zY7kc!r_D?vD%9K*30J~Try=C(!e8XoTTOdBr7%VMBu4@J`((eI7#)G%kMqWp2!?T> zNP9SLhb8dJv0o>&ni*6eUb^@Bb(q#FJb~xn5gaH**ZFSiD?OzwX&w5_$oG= zd?VDe>%tExlUtX*)fe&!p5y+w_t*jaH-crg#xh=(vwYE&?gzLqYT?uYP{nbxl_RTH?rWnGC%eLf(ikuvatJ|ONK)TMgG6z z#d!;G9LX}bowjFC_)k}@LyyEze0EaNoh~oSAB@4lg90UjY4L)$N)Ax$s2K+s}^u%E7o z;r>O8Cw&OM%1elu5i8Cb>Ets0{$WobK481C^r;UIDr2RdrNwE{@`3goCUaWp@)O>w zovls1%!jZ{xscnqDpPY*$tA=9axKCcOC|({A(6Eil=*3AYWw3mQ^QgKmtCAOV`o)% znHN3-jzfp}!&SD)pzf%n_N~pqwY#}b{<t;8OfX3NO%eAMoq zQ*6#Do}b4Fk32dmU2n19M06b~xvn_nwvbHKPt#m^3WrDJLTl!AjD+mVMSx;wQsp9H zF0E>(@7z&;oVzSkN8I1$f>&k?Gi4pFPNJo-ye~!iEq_GZD{2a8FZ|ecM!nT|OGGTI zsoOpT-<@NK_x40x+%~|27P;XNRgQCN@&NFAp&kPHgFlA(8veT&f#! zGzFp9n`!HyLs-OinufqDytM^mabOToO>gY{k4x<QCcAoQrCJS-7L+MLrwuD zXJt2z4wrRLEpoq?#Ni&4ew5MSoC%OBLWr$pg}h|Bp3J3Rcu{x7+eqH)nu$&ZXCiq| z;d&AXRLZ_R!t7KAJ?>esQsH82zl4>ZZwYT(YLojYG*_`QaItktEjmPFeVlZ{Y8=cT z{gqo_5q5caD|6G$%J*hT<0Wj0ysNXxF;eLNuJ4Jc=xyvV9t!|(IlRnDrb}eM3J`&+ zDE*>eiuF1?Z&pzwNIT`R69vzQp%nnt@yV?w2m3_U5zak#2xQr6`{(?MQV*VH6d?75 z2Id`E zRvBBC?31OfNOW;L1%%@|$7;xEVA(pZt{cGiD&xC?Vk4TKlom#)+sUvpF6!)=ikDpO zZN$Rl9;_`6VgbO7jJ*g<{OV~HvcEmt+iu38zfL(HiPN zSl9BdKVc}z+sa+ivMJBTIqg(=2OxtnAmCFXl%usOMv-k&nmS`8*Z}Ui6ZM*JK>;sO zzZWNGY+4(Y`S1Z-y*c(#%ZOA_r2xSiV%wk;8RJ`)q7-TkVP|-U?4*)0apt(FUA9@~EQCk90TXS?_n~kiq)RZhxg98D0bc*$DNlQ~hF66g&{x3^;>*tk2~lY;nxvL}2lf ziqVZu3aV>WgCeuF#e4J4chxf9d-`pbfcM-RS}U6F{5qG67-v?#h+rzamOOIjC*CjX zHe%B_0sD!XE#vFvCOdeLf!codz4yntHF6np*}M?u3G65^msuPcpnkNh1eOa8@4m+c z@r#f4pHB!=zZIq?qvF{R%cgT4W=3*A0U&KmR)N^(bcq``k5WON=934N{-x0~Q|}cU z6$MTt!<>3&!7sCzc(i4`TKhG-B2}!f`>fNx%T;YDDzmk#c+2z#mf;1x_> z(Nfpi5i~9CdWGkSnDG=xy@l)}=GH?Ok+g`gObIgIe8xqro4H{kGTV=Wt^5$BaeLS4 zhprLE^(bI%#@CwNfT7gk$6+SRkepj=Jz0_yo!P%Wp;m6J{S7v(AB%VQ%Jqo#Hq9sZ zT?Ek4yDbNjDW=&Q#qOb@x;6< zYgN2!06K~!yqVN}$%!m;2){ch^rc!p@u^eC(N)IwU18LUq=Q(D=RNl}e52RJlJ%+q zybeS&4yGV&aWi)9$2aKe$jKo|g;*=iGUDCQMXE_sdq%Q7Gdua@xx-DKpdae)SnWg& z+VOTwJELe^%TPFdRHdGOd5e*y_%wTV_MV#7%IQwz=+IgqB!A6&x*R%4;^ZaDRV&~z z(kr;b>M)9~A73I?{kt@8{q0FS;S5ws77poiJo750$PS7?LoWY+?n)*iz!}@4nfecd zAZmD|e^yHg?E8?B1PnX3yA!U^umN0Z4iE@E7~$HZz0Iacbq`P!PFQlpc+I+Q#N039 zD^>z?p#_ryc0;I9&yA(CH|apEuDiU?$*E$2aOuXP=~TlwEsHOSg1e}~u24CDjY=qc z6V&%!g`2V1JsKIFIe(`rUEyuALujX|n231K1bx6X90{D!`S;Usye`7Tma&qcZw5d+ zerAF?gCMJ12i1t(3Lh&@8slbaPiR1BKj+r7XCD;9acF|K>Y%KHfE`_N0Hb=$l1}{Q z(dD#_^=0)3&0q`Y$9+Fc>BC7{>rki|ld_Gh*R?6*$d$M0{m}q$8VA0#y#gl)AfXuahH?o>(JS+yWUCsB_U?YH4 z*^}?jGi|>^J(7JR(Eiapp&DSj}3EqtGl(boEFdbyu%ZRsh#a~N=Z0Yi)h z+Roa91beoo9M%KFCiA!5O#FjXck7X$W(S5@%BsqUP1};5xs^uZrf~s}S$-ArF_+xs zg~6byBV9h)*MkP&6fp9@zCeZHI;?j6^daN@Ji5eOkCUO~R3<&c#AUkU9}-FjY`ny@ z6joAFp8r|-i&?uVEGu_yekZ{{gPu?5Q0w=<0031Ia>q6X_gUHk=kX+kJ=g- zQC+!N#X{=4sO{y|Dme*$`ha5kt+S9w{MIn!_X{G;Cf}6J*1Fgyj6L-{|E?Y^3h5q?E^#%C+pdL?(=Fqnyem6yt zE$+yWy`VrAyknvD7bfQb;%7VKu_fsml(gIOx`@o!qneoz0$&sM(me%>4M9_$d96^bz2tqm2*h4(mxiV?p(XMeVTfCoQ{?cI0sq^a z8wbuf424Ckf}&mU^GjsAPX7Z&mK?KLsT{eJu4ch6O&#%=9yj3$gg?x3p8gDa4_aW8 zCWC&?03xhz49#x4lgj>vg}{^rpY~g?(OqsyHe2G2y|7?n`>yX_ZxQS8Od;ZgxALAV z0|VHH_0HSe2B(EO$Q}uGgI)5gb8lS`kUh|dK%{!LgRdST^)#>iqva${wcl8~= zM5t&hF{V7(oKEJPMB;{qD!uzuSYTDaBKa5vk1C_hI+C|@V z4E0;Y=IzCzO2ymzHnuGCbX<^Aenr0CSUzHGH4f?FQ^rt1xy_s?RGo|W4vnn|u1t@9C(aFdmQua+VIY~VelG{jQ zA4Ug~YERRT7ODM#NRUgvVx@vv9>Hu7tnA=@S7~3P4^eC#ad!q)v>WD`HwUExGv8TsHdRDFq3Nv zUCP$(W~cpI-;fD}TzWF}AOAi^wBGL^k|Z{oS+40*$Ge&mJ%!%DP78%^J}xcMLpHpY zs(XYw+y5%LB0F1bRxN`!0b}tc7YeX>3xf67wk?8QtSipSFUjc&&ou7W^u^EC@#6a_ z^WLjy@4$@+>xJI4`UAT!tO(zeaHfLxNqw=Nz*~{rK}&=NU2X6`$Q7w~VvG`iWpM+u zw8`HCK*5G35!HF;4r*=EMLwdGX{XKkRl-$hCeteJr)L8K0Otq5!+KZ%TMDFN&#rzLRz2l*L)6E_?Dg%7S5JRy#iN<7PI^@#l2Ke#;DPk#iG%Vy?@= z(>d&$0yQo!1B*7^d5ft;x;RPCpV6sL{F|BdgnaOU%POk?MlNoVtbm7?uX@?~b8T7m z)U*lGufgi9lw}5X&$)mN7^^V#%FFi*^okrMW!ZQhdeCZQFq-GwH!7_+8E9U8M{=d` zBh<_YNtKWmLfV>wz%z>7TQMyA> zGPTLV_4*kF6(xfWJUqLybN29C^?E~{h-a|p4#VkoEV5+04>CD*MwzO{_ADjYD^B%k zYj;6cEX}4CtoS1Y$jKCGPL+mUkn0Y;-;J84pL9aV2c1;OH0_`u(*^lUieRd(?_9H5 zt{Z2bOMBI4qb>_89yaofsmTZnNh(IdqWIO!)}cWc*0_<;f$!Ai)CZeOGj*(kE3+zt zPcJIZ#fIxy?fk1gbKz-xw;xSQ!xR?t)}HRPwq80c$qOkj-a)uHEq6OxNmGFe#o)K> zf;3NV#604T=|29P)_Ilko|xNDjrgk)Pf}1JixiQw2k2pbp@2hZm?>d+q%TU0v-ACy zGgm%#|8MC&4koA5^NVKmqIK%CMOF8&vGd2{&Z`>1IDe`>I;X>7nzBETeV5{%!S6hO zhTC{%UMU;gEQty=It2A=K3W0RS^fyy(<;|G$D71P1lU`@E3zwVtAmZMcQ5dY^c2VbR{hUfgl9U!gnFBJ&A@-zeX0sQzgoN-^{H2x(>~{4bVql3u6qL zKiCRTY50Wh06z?yt>t~S>P9)kXioSzgLw9hy77j8_YU3{RO)QWqW|1| zah@6YA>#84=^Q(Dj25q5eS{%IG3lSTi;wiGeJpejYjPmq2mNIhC+@PeGR*L^we<;QX)c~OsJLVxRK*pDin z0m&H@WUjVpBd`=TAE%3H&E3O}@CZn-+)K4=$w##-h~3Gsg4yCbLH?E-fdgJDvO4|7 z-AP4|uBCh^&)`~^Ti^7OI}Ck#-vA&k@_+EpHOnw!s2t=W>Ozs7c(M?5m*{hu%9Et|t@>=S^P}GL(Et$j0WylJP& z+S5-z3-GzW;pOWVkLWpT&X}5H^_fBaG4xy>l)QVTyg2bbk$C~_XMjsDBg0ixhmYQP zQ-1$JfDCKZNnQTGOuAlmGfLIYQ{w87I5i@casj)OO}TK>dFI~R6fy1Vk!@XLfaqpE~(U96k)pyL(iojqIC| zBq>^}c1I`-arofuNm+4XJqbZOtSTVcUY$au@04?x@BMC@vb6;0Bxnk zm5hC*%-PVFVEd8iES0_`7~R*hV#bNAx3h);%XIvp*;nz(Cw?ui?YM82FQ9JBD87>K z_F1{2jbhXLhf9v*G5X*8{RK<0R_bK+gi3v2c?{L4@kn69H9(d(=4CxU1!K{N zn4pZ|on+V%-}8ywk-90A7=y7pSsGIoGSsT6Q1IEODZ;s4cC&D2eLJ)!k8+qHCWI`xbVcI z^-W<0tYT@HbfN4;k(!-KRSjd1MUQNcpVL{fgT9(F4VBGn~j#Se;{9ky0cNX?n& zXBy6hD9pzzF8gK;#ZTeKe0w}H+=epuO%;e7;p1g64a8g3zO zjg_J}cnPSv77#xwF*I#^X!|Jva!hkPD)unUZv=!f5!lS!zr&>lB~^+gT=qvX70mY1 zU4X@AaU-*IC&om!mu`5({?(o*M13#_0OsDt>SNh@N)x=HFju?5*u&QHzac?{hA9Q; z+WvgZ8WY*wCe>~__(&Ft)H06fjpJ@3L%*s3LyHKHt^C7|nHN6R>@1*2-`I(B#7RS& zkiDMsm3@BDh8Wp=DcQ)H&Axv#zw=bNBxe|`W*h#H5PA5sXozG|jf*5K|E*&pEv)sp zH>V|pebnQw!pZ_#-&c(U`&aP{8|tRnl6(FLa#h~<%m<~n?edH`L{$N_g5JN8u3bvS z<}F(PW~gDkXf%PvO5@W^TIJ-MDj>g)c(??S3$GT9yV63;*1r>`D%n+&fe;)6N-Mg{$h7-^xA&F;qU2T!hf&Qs5~uqqf*S1vch1>}9i3`eNaM<&XX6 zm9-yFqX@5lUG_$eo!75F*ix0+YLH|YObZz46A!$A4i8r;dFJ!#Zqbj56P#fEK5;k& zA9n`h zmt|beOnC>2??|C#0{YQbxz0{A)G0n7$Cj?fKcP}~oXSJ2n($18LgLZ>KM?u>g6%*r-*^LTaRhBNHrka!>qsWz}C=C<}P?RmFs5 z@mKLg#V|?oO%~v-M6C{d8H$VHXx}%)(U3%@@|uWe{rgt1O*dHe))6Lphq>)S%d1+D zt2XgH5mJ{ysb&#A8D;a9ZbX|%-`Pl=z!YJJFsE4gK5CgtSMOJT=mZn!$tWS+;cb#z zGHwt=s5o016?2PerleV{|M9+=3X6dp2URBx6(xTVBtGjoSJG_h^-P=mD+L1tg0lQL zKHGBGxAFe!0|m!c-_t+PMP<;bhk*FYhen*^r+2FoQqhcjM87ZIln6PmNk^{`#T|m+ z8OM%vr=S`eX>O&%Nkz6Gq)XL^;-Vl_H-TX&po4t$1#SwcVg+H+zTlh1Nn#XEJGN{&mLN_WJ%n%$K%j0j|4w}KH;U8p$2CCoBeyCx>=6n51)06yf z^cM#HB2{}wO$H&^ZuLDDn7Hx6>oCg6IVfl(i?;~((N|0G{ISSwhd)tOCC1Y7tE;S| zsn6LkEorgt?{pv`9A}}F!nd9y?!0jqR35ik;#Q!hmSy>XWZ=2Q> zLn$zkU`d1AMUcGY&dy=6?NV0HdoVc(rL3BormEm#lT}sk zf!jzce#o(LL2v)^tfx!nFFu>_dO670$uXyxC1W|n~t<${$s?}uC zeja-tXM8EUbLygJc0R23hFq@NK2Ydfo^mb^?+d|i79 zKLf-Y4yrt&?h)OJnZN_mD~6Bc!d9K{*d%#>5uRSb?+tx$`{PF3u5&p3ZD&{I84!A5 zO#GnldA+%3&eHEDD9F57L0`zPxM!BdycE}1pF7~P-K@)P(V@{Np| zt*65DFB-Mnel&I{`^a(uwwgPb5JUE>a^9=78JCGn>x@OHalJ+y8YO3nKXTiu9vc4$ ztaY#Z(*oZS9$7C~O0cs<2tmr*)T<}qur#mLm6hY6HJ<_CH1ax%Ss4l$(&4kN)sB^hy2rv?|>`OkP#S-{E`<7HrVb4X93?i3~IFgd|W zL@(*RWv&QSNXK?M^7&-L$4ZxwA3B3)hkjp-l<%o?QQiqZ5o{ke1Y&k3}~Ecpsvv9u};SR+_SLnCu3m*S*y7#%7ffdO27gH6`Y3~B?Z&EF}rKLt>LX#fSku$G8 zQ)--Cml4N*4);hm8VqfEqZHJ+QAmI5mV<_{de!x%3SQu@URp|G80@M~4JxSPPg}n9 z`9_iJj?;w7M)k)T%O58P>m5?ZdMTYh$H9-z`rldkE@g?eChtjnZu3g=^v^T1?d76P z1Kg99x6B8%0g5`@qf}s|!_C z**iOsazqY|3r9B0u%B(b;=)CCr3!mLEPi@!Wz)5$QKb`m?|Z1>qHFc47)J7ztxTpX zU7S#KN|JVmB+Zp~K&|q-f^NN=Dl8xTLzOG9F1QW&3C|1zzXP$lftJE+liy32vQL|| zNbe4q2FK!Ax~g{t5Oe1}@bgKViQJO|Z;hUAG9(st=tgDg*q_@tshvWnzJ`0Va2~WK zfh8+=hzBE1%LnZf9Wcha(FBOwgJut98gSueh|KbqDGo2D!}kw=B{@q<#jr|4f@Q}O z1*vU&{SdVV#sPPtARoG^4tH{%6PIx?%LGBzSiX0LKQ;dx>9UZ0U1%*ENt~qPD3MFD zk2pYqZWfT*H`ewn7M1<&=@ZP4rER1*pwgQd+M8x4wo&xy8np5EWA!oLUK77pn6(Yk z8PDX&01fAK3(>DoCMiZxL;C7evG0z*zUAxI19MJN#~2zeXRe!RN*4DkF5Cla>^}8Y zlICA8w3P%vQ#Re?B`V$}#9%HBM7ClcVWipNg3!t3A&MUYmF}e|IbRa5vbVH;8s7hbH=!zY+ z*ue1)tNxe!?>pSmhCo~Sc}?x!A@~e`*9-`yK(3)%nYv^aN1A(wdhN<0n;)mTg?Dpa zZLjkNzm!%LZt*Q$aqa`e^GqT^F&2}Hm!8=9O(C){{@t(-O65u9RLuXmUvsbS2ARlB z346rhA1xF!dy|(7kp2Db&5@PZzil5SMpO3Oi>SSet9#J6Y&((1Oem#6AJ572Z{-DU z<3Rp$|LBj*p>ua6WU^oFJ)q9bzlwS)Pnc1mkmTAfRQ_PZN!CcrLIw~`Bg49!1;tqV zwu5=NCi(;~Ae?dM_FKoBw%uI4xte+uB^zy#0acVjYHI8X)b_@0M#j0hQJbUEu*s_@ zl*0Nm%POI8S&(<9CTGxzOhZf(cD}dQ?PP+)!QzF3Osi#x=);F8nkhO1PZX>QaxGF8y;|hDG1OWi`m%!(Jk!Y;sZipB z%I)eKTHRHC5IWAuz(9?R+GiDe$H6xK9Kvxg>&8~wnA4ksz<@Y4(<{8&x4HJjYx8$; zfP=-SDQ&rj)`BIHpEkKq_1ygD_v(|YOH17%)U_ADBC)|@?yW&TI93kYb#uF%<|#x} z#dgoon>CM|4~TwHua1+96ubCD{4Dtp`|21%3cDP-nE`an@4`P1f}?yNvi_R{$!hT=m-2G7#Kml*#x8zL z^v@Vhw65sLoAf3UNz4^rFh|^vncoQPuNrCFyf@m7D~b=OjE4wOYQ@qP9ZcqmrukVau28ttb%^s8D*_c?t=AbZg1C|5T3A2Bk56W z-^xiCwx*`@$|4+qcCBa?)6qN=ibcL?dS(p)i+{=jPHGdmu)lX#`OdtJHRa3Bk^_ep zHiI#fsh7)QvB!vc@8Ln{^cQSRO(zaShPu-Tu0vdIfxX{-fZf>+Ip;lQ?l6NV|3f2p z9!$l$3F{Zv#oame@Q@{(wD9gb$^G~4zq7;tlZp%JB%*&!kJGJ6x^NU+HTMp@_|=VN zC-RfG2C|f^ikzL6`q4J`tEaubQ`KrRfbriMyfX1~?_{%7f@R`cx>FpR=BFK&r2hML zV7@6|I}W1{xN_1gw}n8(DA&~hp1UOqxFQ|L^Aks&Zy{~ z@2nyM^e?5$zkk~-!heP53SKiXTk-zr8ugK5-f9$`&v$$#FR zd;ecl!MdFr*1dZz9@{z>&&J`Fd43JeD9(1c<=gE>X!BVNA*KYKC%g__UsmHo-~X4Q zF-fz*?SX*K&dE$47MSF4?rWwwMH<@?EnH>09hEfvqW%jU;U9|chGaNl>U7r9?dqn? z>W7uJ&?&I#$JhREsWWB6PzN77w|&ApsG8Mlr(p%i?YM^61I>nm^8UTOGr(WKAOBt3 z{v)yIpNJq}H*xss!Zl{fdEk#_e!jq?UkgjVHvd%0B1j5+2F?#r!u2cO_<8yHfyGUz z+@}$~39NhxqqBE8W|&>TKMsE&8}Pd!4k&ml&f=19;tR;nx+YxlznT1HHvXG^`KKE9 zXVbiY?_;8s-vsjJEWfZYcy4a)a`!~hqMlee`=n$WuTbLW`W>1Cdhuc*n7zIUm)qvJ zK+VcpjN7w1IUg?>j7%j8C-j_6#w*O z`>KU3#hT&u0S#wN+%yY)Gk&&m>YCr{96``~QFq<*z+qgQ2X+TgPjkq`mcW5U07z?B zAWfd{)QFstEJKy;v*Fe|?2x=hlimsHY#~Ox&Gt)#=o)I2d5K^(1a&hwcIu`IYf>=T zLs&F*z~0^`dl{GeOHzC8<;Q=R^SkE)MlNLLR=Mvr!z+KRitHU8rXH6yz+45$etk*- z)}?>1pL&G878^{n`|#D%d9*TCq3O(108J$1xV;LFdY^_l_rKd=>Ccf)%_NdP7pwcO za0|)%25ndy@#0-YU`cBvv_gIkjbj!P1@(Jml1CrrQN$=FDpX(tG&9%T*QPBTueEoL zK4#0ye(q4|IM>_VrY+yK-}JNTeN-&l*N?k2F?vtLn{2_yehA`o-av@tMDt@m5yy29 zLm0)TB-4eJ(!6qlyAc*j$LLqnOAbSheEP%EE9~L8n-~sjoCB!Gbb{u`Rw>TVH#l&Y zCJ(nf7$p2fpxCI5f+3?DSzTI(OHh=KjDEKsM3xe>bC$kY2%m2R^5GUmLGznG?a4Ux z9!Yb|?niSOoksX|prvw?o%#ljL#*7Ij$;~5MA%>o%;v-d`xmm!$@9;Sr?w?%|4!WV zUuEExbD5Rx3MZEGr*eI}c$-8KxVFkz;`U)!<>_dq`o#Io<>W|Q?h>(>)*Hia2pq># zgp2*FXDgU*3Z7j2d!}3A&+ZwV`L0~L?PQtnnm`@xgWD_VB<4}jzpXEVG?!D?*9;Z> zUYXCT=8_mbzM$%JreJyE;?LZ|@j6EbbRuKQRfzKnkzO}akh(&)yM{*>ucUo5A1xbB zrcNx*$W%#fcV+`o$`tlYRNUy6 z%kqBZ(NyrvV)WC!^jzO6J>@3eUzELiYguu(0(IawG-{44bZ8Zjek;O|1Bp6IzsXe^ zm~I6&O{DeD5$6>-eGi@i_!wx!8?4^z-LX|*%v>zz;1fECkakVYu@Iv_Fvf23w5HpD zwR1JN*(WLkiiD;d=ILrcZ`h^-`k5qYTk0(8c6+VjgmKj3!S&C!IYOWPOCiE8L((BK z{W>-U{_3nV(st_}=YEWW&GzV#v^3V{<#%sg?*a{HE~%!8mmaQ^J`m@&<`Vl^o8f+_ zW%$DwQASjm3S2V06$eXDI)lKY3`1+$X zb1~90y!YjM|8r~FBBQuA#A^$+%@a#B&QX}hB;ycfVUl5;Nvi!-j{Vs4lhDE|UupH} z4*n`|5#Fi@ptC?m^TdrVO6aBozdT|$CemKbyXcXTR- z`=ozk0C_YZ`yn|W-%9wr78L{WnY0=Aa}V%hRDRFP$mj8?nGLXa*I67CwHrlBFns4T zZI7GHdy9q%+uYH0a-f$qX2+8iZRV!0d0`HrvST|BpE6ipb5PuwM8KV89NYqh?U8Ay z<0CyBv2i6$k^&LGN0j?Q!izlU+yvQ^{mr}z z6&$JvuWBO7Z+Rz(5Bw_yzZo&nX|P(`53XXHYP}{vD%VSAG;MoeB$QS z<^qsrzXB^K7zEK6)>7eucK_VSQvddyjLejq_FdFnI(%&|{)I#1>j|j8NVzw`qLae# z*hs`nQh53k`pp?A%fUsj=@NjoxieZO??`mlsQzxfEUoaB(SUJh!6YTK)2f{5zJK-y zX^L7OL;jqU$hu zTVx6@piBCNN5YftMCNwq+14Y__hIG+i-hg8(0_Ojum)8?(aNvqP>8$q*c*4bvuK4@ersi$si zCtdyyo(l&}{z56o6eO8c1g=5W$qCj#?QeoGN7HnK7_wj2(@Bw!uDw)mI^QU=z2}_V z4BUA9hs&S%7o4?#G7zN)+UKfwZ`d98jLYoxM&a7fHMbW=(!hPQt z(K4BP{ZGpuKpV)SU<*fW!g)0Ohm3=)sz0+QABW%F#@24nTx&ns#$(~|Nhft$VWUvt z0FU=}d|h@Av{A%Lp_fyhKOC_Ws~h6P+6w2KEh@tyUddZjPwK{sRcU9e7-;ZuZ}Ok+ z-XmHs!IHk?~Gkn^X&&0LA3?#;kSrWeA ztzgQkTid})Egg#y^zbqr`Ey1IXSs6FuCkj*#zfQ z^3zqqq9w$@zluFSA@`T%j;^UKUGwAGefZMuanGv5AiQMWy1~A z-U#ja6ReHJEWIgQ6(H(AI1)vj3U?#Ci}2Xp!E@HQHfYmevA1=+3i+=Xnxs0p|3GiJ zb{`11LCyj7UsoLO<7@r|Pfkjj9wuZpd=x{PhcbsJ zhM4Skox8dHM70~HnfX03Uc@kUsV13fqqIo7KdUXDXgWzSZRhE_7;{lIv@34XRGDoZELNw7yLr8j`nq5$52cR%|m%^v?__*&R<7yiv-(_`m)INw| zUKtdGrhNIXF}nWIOndh&(Rm}dgWfcZKX$Oc*3O{0u&{8%vTTM~@DW|^R(E8*q|fXh ziwEWO?>(0wT2HV44I;ACy>`4bOwm-3yJ^4(YF${XirPCM1(hfx zKS$lg_0d}O&d5fY6LvXI8Z?67q{KRnZ&&cc5t26|mr>-({e;8yR6t|&5DXSSaZV;- z(fqh?-7pN7OP&;N-kHE%haKiZY~6^yasR`CJ`zTY5>HA_^2Y2*Vn5}xipboglPts0 zeqoNs-v#mgIu>f6?Gh&sOBVwEkVH>(#a;i@lGOZgZPddmni8;Ps1 zHxwR{=cI{v%O&qLw43gGZGAThahd0@PC4_Su{MOLVt0d~pq?0QdDFrdW5rL{>aA7Z zXcTEV@^(r&%RxCACnvIsjWyDgmTT#OD8a=t`jIE#eOm9~V;sz}?*Y~OJGa?UBSuh&qOg(4h7*moj0oPNIv-mm6a)c!*+Fbm$?Iyp^`IP|K!aG*ESJE`FYqmt9 zli|w`B#ddAt>_sA+RKF)I)*PsBJ=>VxcR#b38q6q;cxQ8%yd9}`xh@DlCqQTU&RP3 zdR{E842Omv@Wz1zl?%)ozNgW3pm(~_c|T#8 z>$BjVcNoa!61HG*MdOu6T-In&!l5Qm8fxt1ttrSI*>mA`b0T-yzS##`_x#2_K6t6};$SB1Pe(OZ z{a{gqMB*80+1kT=Dr93Owwqk~48tE)2Q^u8@`$@Y!LB?S=oV*bR9fvfa7N}Ms`52e z^y?=_XvE8u^7F6*ySo?+@LREmrywl#8tU7%*KVA)j>Mi{>@?MX+E)R~etN!L@3r_2 zRc&J{FpL0>O8OH3V{=noWtIf3UPF)hNY)kn)6O(fbMuKJ&?ABOtd!91S67ZH82<3I zKc2%OyVpb5{kaMqZvM7ierK!JiTOd{=9C%;LfC4omBO3$^#*~uM%0mcI;v!_xfTVE zFY+8-sw{)7A}^OY-;S1Ht=jxZ=$WeuC=?1<{^2$hRiXc9v-$k=6878c5@vc9Jde3f z*t>eQLx{54uE0DMp#R`V?GD#|Q|`zrf+(?k5$LNsH{Y0W zR~kyzVm;=j&fUt1Z7j}t^lgR*kJFeqNC!r287{@@;?^Ot#AUPevgrBIkEX)zAnyhb zh2q099}D*rh`YP?91ImL+&p3qSW?Pm<$rtnn+LIUa$FC(yr~ThCc<9yca9PtNr@~_bi$;(IEUeTyd&I9iTr_+RD&Kahd zRYxqYA9U`z^Rih?_^q4VL*zbiv#FJ8pe{lLNKNzr<>QN*6VbI# z)^@3N9@3dDibFp^*`emDrDy)Y`FAuI+~$6$$?V9WK?t=w{dhH11yREq`rfgmBL5f5 z*Ez8Aj34jSE7ZYcOGfAG!S^XT_l0g#Es0KE7KP|~ux#Ofny{TLhO85UItXMTI0Knx5-hPJBvTUvfvBtGY_b7(;J zT*7J3e%F3Sa#Zq%d>lv|{v1CXJZo2G0m5iIx1NbM(F!~=gQ*~jLc82ehoVFmQ(w(k zfM6cV=fZ4mhJ=pA!pyoppIt_EMKyKyNmXRVW~j|Q+b8(V(^Anv18Lo8!^J6d({T3z z2oMyULhB~c_E^lYqAn|Un4e_J91h*Sil2s;5UG>AvED{!%`PMx3PdhEynHEpd@{dD%(x<$t5n~Idm!MTG1Ov4D0O-3G zyIW>O`tO&=FuItQ#@N~#FNft0@1SxoHXF})ocBC4Q;uFm~XWjj& zwBM*CeE72VcZi78S^DvqtPF7u%7P?svucD#3-ev2`7<*Slw}MdcT4prAo$#yzzq3( zLL0Yf%-M|O;#2(#iMhc5jp;Xgt5Y#ut9u_mP`j&%V0EJumlew7w5f25KJ=d;{$ zXn~&Kcf4oD6QFrvnaRZo$d;SVb78>aBzF*}UWChb;%x^=IIu8?v;mburVt zehjepmyM#zEb!E=m5eyp$6`v`)^`D7j&$N^OE-rT%*}S%v==EpCQRk^>r)Cay1ely z(R>4J)L`Lu=zBog))t)%xghd_C~K_afVU| z=@I@GTEhg8x$VQx9Pa(LylfmVL^7CGA%57+6skdV@%VnZ;g?CA_(NX^K z^?*$TiYx*$>wa>H0dsbtZ-~kvHB}(7PQ$JxFcV8bxU-%n9r)+FFA6X8rH8KE#OsGWzPktmuU_*P zGnl$>;ykZ6w-v=x1!+$??2w)XS8H$#Zz%?!VZ)d=UcSSfO6*VWpv{eoq3Gi;H3x() z`s8hz;v6}w?uUMV^*hC=U^Vk)^liPaVNG8MLt2t%NUEgS@Zj$r3h^o9qLzz^+MaKN z+fA+`g@N@x_hJvixxuhsm*Dv zwJO#g5d)ddcK}o#`g_fk#Gg+K$IOegI%>Z^Zc6xw+`xmoJqWz=3If zi%Pqwp6MDE9V9r6ph^uN0|ioL1m>#xxKJjgGbUm@s> zXYhAWv?Y(j9xsCsG203Gu`ij?bKJnMG0%Aj^=AXY2Eyohl}i^rVVUa91H0kWGH!f; zu6xu#;=N_U3^0yoIDc^o1>wzhYRoKzs}l46ECCADYOqgeHWfY>?C9 z^zWHjwo=IzcIZ-BeNl2B%!L-Aqcc+znGy3fE>JNVbw~0J&ux3%ysdK`31Y)IDjTUl zLw&XPS=cm38NF1k&S=?z#5WCLF|(LhadS-W;5SdRfjRnbVY|w0%~WgCxgup|CR0%- z-gkmuy!tGu{tW-_iiVEKkH4(5i>>`ur}gC)yLPy7z3z`1p56AcNx(Bm$m-c{W-PB# z;0kj5BYNkxpvQC3vce-vG*0Nb?TtUy9)-xe9L>$9G|h0#=`9bx&6@AR@vYmrL#pY4 zYeB56_QbZl$66pgRKE;{Xr{A~_@wLk`<$r>VV5Atk?SvgtOzO#zNwa2nw31r!aIZOo_Uj>5Y~K~;ULFT zmbs;@ex_e)f%*W5cnN5-!2bbyfcZ>?kMN0z>x9e!$NgO{_}B`sN$1;S)dOT@-!P4>&*P8)1U(Kr_}2%F95nF7 zWc=}ne>XZz zE=Uk9B7V4J0p|d}bBwnde_2AQ&r~+#Xujr4-KrX|u7~49oHT>IU}* z=TpgQXt#Be4$L{=>h7=7$|53m7^Z#h1==Sq?ko>lGqGwnURNcf2v2U#zeFgcZ)t_1&$S%wpx&K!m30Q3!T?3ur67>%vt}2OV zsb);Tr>G7y(Wh?GE1 z{c`_~Rd*z0U9jPasp3GSD(H+MhRiWV*7Em0Y{->h#9h`sK$JR6<6W2RETG?B>E6N3 zz_$LY#j$^|ImZD4{${iKPbp>RIh7v0^?@1^pUwW>Htid=dI~%rRjL&^tzt^yKtH8jg7bg ztX^=GwdXxuaappdgG?0xV2XO$7Ml z;s#@IlZC07R_uzGk*)OL^PCcKC3_bo-EXrJF>;~@Q=Pxr2*>?Wj%ETW;trF=#gg**%shX>f|iXXl@-T)4>8Dh#ArbAUXv{t`H1*f}DhBF{&cB<#k zW8sTiZd4T!(CebhA4D%YmXwo1-5-`h>Q(lBWmMtpS<~W?RwJ~hH|H_rX9(cjw*z2x zbynT-w*!!2YCkz*8FbLgAU`<^%cM27J8pKbq{Z-<0__Oh2@X#;sP`xwH9zs{yPw=x z&-4hmt2ZpB=dN*|ms>iv$Ik&HT+M~B-@;+_9i4HV#Y4eCGp@_a=rSY{*+_?9kwYNg zBcf-yo&js2SUSc(9jiBJHa?p%gq=`P0wzcSfx*x02=!~hkoifILI}$s=u58IlpcYO`KE<t41VsJlEOf(y`<7>>;}cp9M1lxTvaNPo{)OcD^#k zQZlo}th%J!p|dITi{E{0?5xOT<{4+3!Jt$C5{g+5+Z?-P>*EAlEKm1*1c3TDHC+ca!bNc%r zb^9kL^klcK)1hG$LNQn64~zsXOxU0d)xA!gB$$SV26Nr*XI3m|pJ9yrtf$egq@3tu zA$|9?)$3H^n}ga=`2{a%0${f&J{YQ~9+*MW`t6KZn!f0#!z+jRH*f^CBaPnfS%B>U zZ`!!wXSASzmRtilfP+G&J0`@pg}4Gq;kEBK7owJGalJp~W!HynOQS27CQgDhi1rc?O+B^_WS(R;2LtDkf7gKzYzMpUCLd-8jAsCAKnmL}^d z$D5?NN7)|liG*MHVsZ)8eHw3g-@ev=X{4p|M?e5DS=pgEy+JzqqiX=x%5Mn4%~TL5 zsG4|(P#}X$NX%m^CGH5$_Za)EgXadyU?cRzFvZux-qf*sL}N$y>txSlgST z5aP6m)dQ+f*MswdqSIIJU&HS(hxl zHoQUJdk&16&nhXg?p=c*JIw2%N{JMrH&-$pV^9LFU2&Mg#~$Yg2A~WI8om$rU(|r- z;Jv9Kq27`4dVcoBN<*4wr+$&dbWU{QR+6rxik}b%_`mf`t&X^atv-w2PuZu%W^TS_ zFxoes$2hdVM|5}NHvSo$!?cyAb)jrj%vtr*Iix z*HT#RcBv4LL7`3*OSzn`Xa=n`94MWd*&MDDjh3Q7Y`V>;W!pjLix&LRs`W2+p;)sE z=wD>`!k%Mz+V|F`3q#@0tT?RwP=<`wM3j6>g_mhbW%STgK6YtE0S_j8}77p`@pC^I0#36D(382fPs4xxvw?CAKS693=AQ zYJsr^GXauubF=JUO5Tri!mPNNQz6J-`|J_E~DSn}v@Fr(69MTolJ-UdJU;y)_(bG>8J&g!)Gyarz5G)8;^Q2Cmq@+B|l_My_b zp-vVLEu#$-U28v-+~1$N#KuUR!?iagJ~bJjW7nDZGL7xQ*zN0(uqUtKMaSYUXoFsV z(~*>G(h^j_-NY3oxlG{D5pNs{wm*1G;1=p>pKtrx>AFm6Jro{ej4j0=yyo2rVJTqY zP0u*f)GlIjwOR!(M3HIGs3=u2U3STr$rwl*(a|vRdD4WW`~0ZoG}RT}mZnu2ov*oY zCcoHm&aZ>9zJ35Icx)dxf_AtvG`izzN3(iwbFM8A8fS>XSf15B zdt~OOy_V$tBfR|#J3=QV6)z0xPpIu=eQE@ri%MTHy?)oxDS(*c+8eczOgm93AvW4- zw`6nsO^^V)l8vVVLTq6tO0Dj2G1^MlOh9i{@qK}lecJ=f*5bNyLXEcuc2@w-H@!33 z0}!jNL!V0Pz6!f0Lb!4;%3RLv?NFukhbC%7sLm14VmwcvyAVfccHTNMqHKSGi&jWX zqGHRMRrAxJjUj=&x>$;rl#u%aGuz^-m+2RGf!X_nqL8a=hD?N|K2x9g#2@@EoVADQD;VTdNlo#Fff@4v*q>qgs4|8j)Ux*o>q-s<$vVZi7k zSa@9Hdevbw)9@NKG@wO9r1fO zwV|zJLD^HpkH$Htg2P-}rd;IO_kw{&?S7RNgXpiU_it~>4EL3>3pAb=L;Y4?hKMz- z%@{&t>k$=-1_r|&dHpR%?E9wCiPK} z6{1HiW=2}>2UGczCdcwH4n%YJF~J>VS}#888Iiw(s-%u8s`7-dAiIK zOH5sM4BQSIvpb!whJV(*IvvAh9CRV~n;BIj9G)TORwBG<2&hkb_s*ArQ(?~QLpWBd zZXqdIaows=faAntsk8djat4*H8~gGM!tfh!hK7M}%duxhWg&^sRJsQf-_NpC3%)nW zxc{1R=CZVsY?#P$c{*Syl(Gsao(X8Gl5avC#i*Qu`sZUC4~36>UvAB1EzXp4*1SzU z*%JBb)xs6YXvnY;@9WPz)#XGm-=q9g?un^_su83_u9c~)nrwa8j^40hAcKX)+15m6 zqd;5yaAD!irpv^pMO0sr3pm&Gduzs2ltuUQ_jd1s8{{(zxjF{fvk&HMSY_NFAGg?* zSLfGYuCnBN(_&-iFm4z4gvRlT`tJnCvVC59rH-ldQ4 z$U`?RS%!@m%k>cS(!)yo4p{i`V&8HV^BU+;;@;g<5+hpEES-A2P4G|7{*X-aL5EL> zZFcvzs!8j(D-cBanJ_p!ci`h~^8pEeiq2O+$rZdLuM9?{KIHG#G>3ssK~XOMbV{J1 zp5B$QO7rY#?Z1j1FnOEWV}G$Mm5PdC0mLSCOwtUj#i8Xr=%}Nc-v17v*eA;? zeVITRe=_>l%px#BkjiCyt+Fm}SxOH=(Q0h5Kv-hA?XCntR>*O^h>)eR-_F@ ztI8&Y8(e7m^MU33Kc{g;juQ>{>+!Hg?uAgf2DLG{hj6zuxlPlw*-dT!i*P`FHnH?Lo-^D38HB9`sm}nL!a$@@hK+YL(z355_J# z*=)sik#5z_QP{)2+vS^CJHAz|HHYWG_iao*qQ!_bdndj|DU6&%wair2e_m);X6`M` zW3{&!pZVvsH7=KO^DA?e!edMoyg4na z^Kzv^duFGNGe_|Di~RTzAnLnlt6GF42g3#-Cd>WXny>q}&1hXc%;6wD&l&sewM~{E z(QY4^iUl4(WD$pa9=c@!xwqab+i*egkmC#)CYEGzXcc9(9F=u~J%)YPd+DO3rER-< zL=p~@EyBtiQ%t3hdCase$SC*?T?!tB;Y2*Oe9+zbW9n}5=e%!97JX^`%pZt;zbpN1 z13ir_MJ`Z4#EvlMnIKZ3qinb@L)30Wn3%}8s=;r{T>_#l&pP)LeiIOvlY|wRC9&94 z$?8w^1}X-(_W&62`$~|-2ZScyt+#Q4P8;)WICe!mwOLDds-0r|( zI<~-y&D_nKI(G97#sjE*?Fm=WiQM!2Xpez<7_4dHh3n9g z-HT@^*siQep*elZ39m17-;gt|IdyDT7*aRPHrK7P3g57Wymo}lZpR`2R1Kb9@UJY2%Gq4+T=S+-qyWJ~zp(ebwUGc5S82!ryo?n1s z-x4UAoJe~%2fGn`7a!jHrNM67K0I6r#`0}Tz$^pyk!QN3LEgTNNJTy6-imJ`U_GaE zj%xLh9dNBD#^g^B`-&IM%<`eG0A*$G_r5t06$+c}JLbSoq1K9t#O!eS`AfA|bz?=w zCw|=!yVVmIx`kHcuc)eGWNf?mr_&y=hy53R?M(gi#XX;|;a?!{s;9cXmrOngJVUnG zw&A@FR>wL=d=Z-BhNcRe05GPQ$(6eWbZawxmoM)%tqe&##-v6t8{OST?;1Wct73=BxMuVZ-!!aC2h9 z!{Hhjc`n7>PL6=Hl!b4oqMJW)7um)4?v~pBxx)5}TI%m8V>y8@)l5b=_yP`sc0YvE_?g)GDhK3_HTO5a zgqvS#d^i1$*($e1Y_lO>*nUzsfrJn>kfYSTMt-h=NY{5p$qAw<+OlV1bXHnUHPv1d z!Oe-<@t-R&_@k_<`nzE~ug3w*o5}|;>SYq%CWQ$dEifN&1OVvIrowD%Qv@XNMLaEO zM_2#=!`Wf5?G0d@@HK67sq>i5naFL2&F&?}yRPR(jx>$LfgPS(pipH3sWP%eq0GPQ zHxmE78j0Cj5sL>m!O!}ImmO-W4;P^5eGD^HBbo?fDIl@f22uX1?UdXN4e#qw--V%$x`J)iSF> z9|8zA!yFBw9M0#KBS9~3=B}n2k7{l)?_ANSb zI`;1E#}|Jy`jZS4OUJPuETAWuv@pgDT4Mh;38vHr@f!ED`Gg8zm7|K-$V zZYJ8x+I?Ru?)<(ErQ7DJk9EY-rJQp9!$|fGW6$5zoqpxQX=X+K z*Ub-a-0gW=%$3g~*;B{oy+V3rZw~0um4NL;4+QzGOX!+1e0lUeb8gLy(wxGBIlXcdCX!>}95G|5F>`yA-hPGP^@f(}* z(fyk-n3nKRL(H?@K6w}CbIP%VOZvs#{@7Ma<>X|g`MB)2e*EU`bt2T*c3d?#@HHIV zrl)K0&eb`&{CCF10JskvdwrVI)?#fxM<}_mXt_@5;Am#vrsfq@lZMBNOLNwX3{NQ+ zT(V(}`3Fd)WB|PIE|+NcT-lXXoc(mrpj7c}b_lf7-g4c6Z%cp?0W@eBOTN)5ycP8c8=`ku% z0ovKwiTp$sGk>{g*tIU)Yf>?}Edrt=YOc%{sDwN?#-ehn$=!OBak>7}dV=6rx^gT8 z-3RI!--Llrt{zg1qQlt6Ne<_)cqpy)=Pkyl5Xbie5c*|`VZ~l&q2|ExGjU5CJ%cyl zPz(YxelxNe)=DvpzK0s+&H>dAolBPT-n#resbesn7cZ#!Y#T#`J9ki~Q#2sy`8MH( zU`v^lxuvEnEqs^~HDe5I2n)4>NNRNRkPR*|;ow+@Zb?!Lvt2VHG!>s1IacRY<9x^Z zc9y%zDT$sM_<)&xb;kJ=q5H=GqPLxwX}f=jFqS-I+Lh1B5~_NO-^sHJJc!e-*8&4- zFf$wR?)wwd1AK@peaJZ9ypMW0OmthyR?%v~DfnP#nKjAv5q(q{DiRhy=K1(6b3GT@ z3xFbh+_jqLO3^u~>Xo3DSH0b2Nsz*WS$oB5t8&BpLxXPsU7I_B-!`R={g`bBx=qy( zSl1sz2o7MMq(6(u_u{4uV-;OTQ#3BAC@{|hHG$W+?DFa6FItI(Eyyi>n&OpYddjZhrG&cA1FL_QXQYJxTO5rzOwv*;?nF;Gmk3QSm zJZ(X5cMXY)l(JPiOwGw+7psZ`R({xs7`~deT1m3k@DGB96{Q)w1-u{OrmlHa|HYCV zC%9L0#3uNrlp9GH$eiQBNB9Em^W)KS$NUp1lln!2Fb zipV>!l$4bRW!S+3$Jkcu55RhaFVkV(JAU|ccx+6)+BKRq ziDSyC-ez*QfDq=wBG^tK@7|FCVmk?Crk;qqwjszU+yphe|#*SYr0FfGf%UF z-}46evTMJSNZ0uo-67uT#yQn|TkK|JKR+pVjZNXxd|*Ph=+VRHN1ByFF-9iqeFWSaU00)S&**HN`y=a)}!FNSU3=RjDw~du~Ps1*qxr>x7{5tMgqO zn6;7WA!Nr2zR%xn!E#rcVKyzG>lplMra=^Xrt{iub4s+PH-#PICx~ou>LUQ1``FI! z^e3Uzcv<)$O@kr$CH%3x;jf)aD)jOn`G%iO-jiBwd5`Rw}in#lB#l#Z7l%K6O zR5+;U86UXag=Gk^fHbZbtQ11+7H zKIoQLvqsBX?`o(?VEOyOR5qbVb|>zIS8#lb;q&sfQ3n+}72ERxSpV)yo-Xx=5Bk|} zIbA`ILzYeERq52h(KKHT?oUor22bjUZlq%Z4tDEwtVQ2_dU!lL#z;(CHsXU%lBRQ> zi4~k)`-&I7Hj@vD%Dl-{^YtCcPBWf+hTK9%$q@vzWObIN($bVDCKocJ^xaAjN6J2r#rTE#&`EY5LFo38l2)<0-w{+JXyi2**QY~6lNmBJ9ln!Bk(OXuRo0D)j=iQ*3|Mfy$lI-Yp{y* zK@of|_|asEv)c8t66>5_9(iXxd;wy80?E&Je=h%GYS`@Z!r5pjxsj&20^GN--(R`v zsqSo`*C7p;b42#PLWh5PmSjUb1{8T=(tRL-3IO{tRvcjnyvV zKH2U<$r-6r*cOkN-m9NY!*Ze10WIx9?PF;(Z`dh3H9fDVmSeGW2##yP_m5kDk|kL$ zo_pAOOq*Y553Y7$Gdvg`0!*M$Sp2j5i*HI^p*>xO|3IjDojgFpb!IrwLRxq{~hs5uY0RuaN*>st;d!_ zIU^tSXedulKSnDcPjj%KhO-k9bOmi?R47J{C3fn{bVYmcN$Zm9Md(P^;;vL3nR zgz<4-_PXk?4ol)+(xn+8Xl=eaM89|0nY-FsIF%&8BqD33(J7Y#j$yDk!$abSmrX7! z4mnR7KYQw(f7@WtJt4elX@{^Lx!fH2q0qX;*1Dg5SQxT+PF_0ozMe)GAqP@`5d@3Y zaLk_N(Ou=nJ9$up-7(I_1p=bJKhC87*OJpm5zGI*z7{lbg zLUKykJpH?k-hDdOjK@KxsEiVefYx+lkC=H=0@AsrLxVzVS5Ugu#ZkwUnz za;HwfQ5SnDELivfxt|8W(*KgvX0W{0w3*>QOihPeuvx2CI5Rr^8^4c+hUT}bkpO7&`y3v-*X9_FO6cfQ}oc`ojrh zy3wAS-?Kh1laMV{OS^t>vwyZ*ZqH}GF1n=4F&iD!(k?1W{=23LQW?1Hx&Bisu61?L z^;t|>^7I+jPaB865d2c1pD2B|{{w(Pf4>~}%=pk)Fh@l@0CO{TqZQ5v;`T?Dl!qUD zr967q+oY?Di_ne5m(6{HlFIeyJ+uKA2|smqPRHQ84&5p5c-@b2o_U49+Rfnb4xJaF z4d8qXS<5g6px^n9m)I!yp%#rwy3$}g-rSd!zT9TH!K=;*Vk*#wd`C7Z2W$8d1;{};D1-i&D7#H|4)0grIH3z26Yk^M0U!0H zder`i2yXQVJRE}u`d*=V88_s zF5NW*NnESQ+nv$J)u-k&&|bVY+twg}^(RJUH212O*eP^A>~78jGP*51S&jJtlNksu zsORPCIO2kKQgTtjv4~WCd#rXRIFmmq#qtTAB;h$kcjGdU95(&mT{2+)b}JwM4%p%F z&Ntdk4F>cpu$S|L6H{P&_yTfIoj(;t-T^0om0}x*kf{I{ zdjV{I$eM5Ll^ zK$ypCF|NF3-@AC+Uj!JJclw8Ad+(vB9At$MD7xue#i4I{EKAC3D!BjFS2NQg&DRrKC)(HgBh&%9g^akNWb zqM2%d*Ok|C!EFkfnLj7zisO;(!C>bOdG)^UjWRxvm1D={n`LL>mD&z)UR&{IbRG&H zIQwHm7JPtc;8$#awfx81KB7^;xbrLR_zZEiT%dg|D#4j zG7`0M=)5R(Q?zzH>z$3(?{q`r*$KUkXzc&vJ04@klLlkQ<5AhVII3+Rzj!<<--dBu z`nj@nj`yhjfBBI=({Y#fZ!E~@Fl2m?Tim4MfCkTmZ2%(hVm_hv|K0!nQ*yZXwY2{g z0BiS|1uL+l_Bh%Ae1J6{v;o-vS6=fcVKnN-wg1Wm$YHw^IWB(1#YlJCE!w;2t_TQ? zPHc?b)+&Q_(T?_hAm^8PT8}}0izK>hcQLzkg)YJ_4x+iRXzyy-VSzvH6Wp%9AR5w% zks5KAvY%_CROyYagTuOmYJS!(I=i;ub~r~h>|$UM!Yxv}9qHNbzM9ml?sh%!nbzqv zzR+c)7T4n;#Jcpt=)7GDPoU9{MK5|R{+tsj<8?bx;|{(-eL-A+i+BX?+W8o5$oChe zJJZ@uKvV=$Y-8Yr;NnC^jg||=F!W1q;WG|i1KT^%(TQKU9_-yDJGbuAx>dTF0(IQX z0Uz(%(kWlEx&Bsf1~ND>qMLsvXKL%6s=#P2PT&Rg3(#(}3dERrM1T|TcMR>3?YnJz zaDoml@G%y(cMh{Q8`zn(spwtQsO$Tq=+mi5eJM{&%;WyTAj$%pq@3vG z`fit@!1=-X0udNbfBRTuf8cx&Pf3irZRFy>E^}mQK%eC50lW5q4H0f^z@`%%-`_g^ zj0*Af_6OJ$@yMNzH05`!XSBwVnIjHm2Xqb}Z4iphN8JW2-GmYoz?}UNiTd!}-^C5k zD+G(q$Yh16FRTaQyw~}mJ|aHKMi7ee@WBoH_b~$aGO^qDlQxTz*bSWS{I?XACjprI zM4KQCE((}jK6VYwW*tLc zg8i`>1$BWLiP~T^+o4@oPG-98=JHq@m~v|v#s_bH?SIe=TcmNIAF8CMTN<1$V!cv`4?MRo3H3&SNyoUEy_A56a zS${~c;{q@y^-;P)sjWGP*A5Uo2jvEY`?`nJYhy1Ez|PeECb+LJGwoK4NyHkHh@tEdnc z^&!5zVA_U{aRL#k!Ppi1eQO=`L0PeBG_c^0<9lFxRtl%)qSt7RN7FpuhYrc%g6YX^7-0$)WkKdrMRZCUjpSG2)_($bP|SoizQ=)Kt|M%caHzx)>d5lkxPcBiUVAW7x4Hdz<;xFPdKG zOIPeStw*rCxp(e*nQR|7os2PMIWMWqoYq}S=@c`mQIDWLB|2;md&i?uaUW4&3+a;N zCT$etXz$G$Q8Ok-%yHkk{m%J7TX0bp7>`A)y>(7A7uG`UsfxhZeBvn0C#9`|)bzEV z3HzUWc3K99_sg|%uRJM#zFI$LU7|bvQ#aY#?S?}7te*O&r8cb+#779c?z|v=e&C`| z(H1&U$9b$%?%DT4^68_0YL5HXobOyJgZ|YroZS;;0kWHPtq5$Rv6E5O0c>=D2#>M1 zFPpOhBqC9Zre7-e$r}#6SAOS-pQY_D0c{8VsAj-IsSFU`l;Y|EcP09xV|_gTOk{tE zVX*&0qwkWVM`q+?`TuM3FIs;fZUfNGK**k#+@$9R@PXSH7YErO&Ws<` z|DvwA$MAH=2`)5T0ESmEJ}ldV#!T9Xq(SgBYQA}1!R5yYM8l={X+Z{Rg9 zwWT>OMdAtW4zR#P3?v1qO}8 z%Lj7&>^T|P-WLg2l}K23^CyX-k>craL7}*`W}aIx!UenIK7WMsA~z?+=7%FEzh&m3 z;}V=|laZbFc|<&-U7&qz$qv>;Ko;lm-h5Qr8RlCF3%Fpvp1KqOW40&dOza>lL~l3kVWyy|xp4{xk3awhu0JZ7c`NL%k*L{} zT-SHKiU%{&y7T%~cJ7Yl>Bt81nOcg3L%4E7udZI0;N8SOi4`dT}f zVq$}SDc9SpV#|U#i**Za@P|gy6@q900D5v@J`-XZu5J3z>fgovpfX+k9*ZgcF0B@U zr#m`xH;M1nrmXem3owU z;-wSz;YYk4{>E;uR>baX9+JY@4#`zE$@c7M^c?#3iJ+j1&%J%aDv+U8suOeFNiWa^ zXHA)F@1va{QW!X~tP+kXSTMq5RmBf> z93#I!YG@ugc~0vqYnw=Cm+ZWCq8Es#s027kE7yf2VX*>SHF%?Z`N)@AuK%gWm+D5W zVA_n!<`_n;YuMWP0jZ)9kcw2QE)^W+Om@CxZSEEzfD^*vesHNPGYdJ5#JiMv5ZdcT z&YSM)bh$Z9Fg>e<6R`OTb=OemVj_K3&Ya5Y929*LHu|I_r(-dW@sgR-_IWuKz#Ox) zv(?NgVWb8kP<{DW%byR_$H+ ze{W`k?Tl^&7!z>5ilG6~zo(x&YV3bf{g4{CNjm3zdG_qFC=v`CBFf>M6gBZ6z#s}n z(}K==x)^%T{@2OJp7_0%Jm*>oXb1DN6)7dAWXs?VIX3q7D7zI>MDNY*m-3XYi;eTN z_LNOakMjfcJ1XR7DtdkEu3O|Uzru_U!1bdS)9!6wv>=t_q9n3u-LN~+c1Aak?pin~ zmF{6_pSK$ids5YT6hr_&6_y;4Zh7d?8|DAp;2W--UES7$MjmIgl_|*;tq+dpk7zr< zI?hn{h&iv_ZIAm&dtQL!A9K%Htl^pCe{a{Va;+R@=7GxqOJ>Dlo22|1W8JJgn}6Dz zBcD|tjAjpN|399u-3*FIJP0ti4L>0NOa4WkmcPHO@6gKiv)ymk{y#0cNjhIRrO|eS zb9-b*?kY3l_SR%SK{{4!fOy%#hvaX+{7>dA_iGpNH-eTQAI=A6`6aBI1szgsE6Zg0 zl$mc%>3K2wp*{WA8oO858s=u(WY&xUH|=_*{MBbZF8Pilu}_kg)c`IB^h2fbNvUKv zNikiP{Pam(yFMQHa(&-HNt^R8h>s4W!$tq|SMu=-9{=l&71e;Ose6XnT%CTDPrf}p zUlX|nk0aY-lhoR}gBy48=3+s|id~qfr%)fc2ypV`QWRp56AL`f zA6OW27ZA5M7OdkU7hV(jC-Oyg@NDgR7=CoT_T}vH4P07{*-&T4VkP{6_Tj`8*G}LQ zTwLU&^NSNAk$%;I}w#H2|lur2Bb7x@L7qaC0Uv&5B zYcygs?MH%(^M&(=OF8M<3D7o@s#JX#=0}g$35b(U^|b879{m80|G`ZoQU9&Sxp@qI z6U0aKD=vE4`N8!^Znv8gz1;iJKB6`fzQ>6Kao{r?1FeqMST?pE9NsED*|sRXGwL+s zaqN7CPvD~{`Y{y05DAQ3pYTQ855Uz_1uhM1DdvODwww?PHf5pj&t*GQd>kdl+`)H;1prmP6HN8@IM#aaG zVY@*EerQ|ljW!)Z0Mi<@VI5$*8O4sN@%ncV=Up@^F7q-gTX$~KhzwGXuk-a{P_cr! z*QsL!+5`N6ejk3o{1QI+)~TGr=O93Klu$?i##@OMH_GzfW={W^)WXm1+ESu zL;x_dtu;5hT@LwRvL>sQ6J9j^m>GNX`Mey@AJ;bUe10q%18}Uz>k)#3yI--Y-+e7} z@%?C^?Es6MnA^h_*c>69spvcxc1IgHe)?FH`NYk0oDYzJpcS}Mwk}a}D{N^$6@;GJTO-@64CZNHAW~xhT#7Pz&DK-_7+k73Jay{MTj;D8yW(I00?`17Aag52rWX5a= zyCb?0Q5Bi6RXLHxEgWk~zHreKVwdwk!;IFHV3ZVxc9?SuT6^!0I(#=Xy_jH}-q z(Q2SB^4ZcUE5MsR2oYYc{&Kp~uaBcmz$dQe0_+NKjbq>LHuoc6xWyk$3u@X`d}lhq z#1!;ZhA6~HxVzcd9HJJYOi^cND!-_ak6_T>q-pmcLb_U1u12jBUT{3)WD7f<<88u? z8|dHMm<@lm7m~8QfApgJ{*AsX7xN;dV8uKhLi(82u0YfD>Hw{hPXnZ8Wy= z10wL;_zLj_$9jzqW^Frx5RB+k?25LLlPlZ&HZeVS;TNql-u&h_%a6Y4-Af+Fc`e$) zuG~Sr0Jpgi^HbLr-~)$i2k46;0R|-iGK=biUA@=p=%RI>H!!!{b%WaUa^}{Ez(yKq zj0@PLbMD|2;J z0s!Y}Xa{H)`BGRjI1xtwifsdkh~L|F`-VT)b#`s^d<}ik>C#d40cysh9iUHg;2bNH z5g7~4=s6bbkFgfO{=0jwZ@F{a#u8}OhVkiRItF92sBX;4jz(FRAVi`KOwCQG024nC z*uVSw1|0i=eC^oRFY`0jFYv%bFeay`kL!KZXGS|fbiCVu1s@#GAFb9VH}lVQ_ZHdL zb?XJ~k2d=kf5s@`^IxJyT)y;|kD?5MtZGq_OV{lP7cxKsE@Rr{UPgIhfm+1tA{wAi)g-FK_ObzXGf% z0Xz!$2?>4Yr^UG*ZE^BZ=L+8g@m4f`$Y4HxyGyZEQ`p#YYOq8lApEN~}M zPJnShsIQOIi>JN?TCX8i0}TGM>2h0p!5>5$6e?v+tv7b+IklhL*&I=<=1+B^S3KGd z3vaM-RD?Nf`)y+@29=SEb}iOkIObt**FR%}miF;;Hq|!9YfSp> zb5`8NF`nzOHgxGGmlK2I(Wx#4ZpK@hh2q8d$VdKUr9W^T5RS>FPr?`wA0ss#dZoI_ z1Y+v`?8oCWuu)Utk z^>!`sfom5K!Su6wJXtBnPCmKf_pVhQd+cNKTOa+X-qtc1sC6XCs4ZY_ig}W|c3^Ia z$6P<}#4nqERdnG^eGrPkD#pjg-y_DB8+G>i*kgZcZ2G&G@d>`27IqY5Z2a5N`IVc$ zyZ*?Xx4HSGOY`jd_&9xLY~Pu?_A*1#6@B#W8w<*r`OPB|t|G|AX&&Sw{3j{E< z0evi+lHP3J(m&9meCqK}UG!_+nuYU$8w<|NhI5;6;UC0(03!RFeh768H#(PM*Nef4 zhH)QY9mn}V>(kC#ALvH*aNQ2}?+MSF;RBb6fUE?&F-x;_EG)>;Gxod~0!)0KiZsx= z(Xi95Yis>kvG(ulZcN|v*kg}1|>VYtO8|FoBlQh;V+<5GK0JIMZvkz<;+;&la zps$4T9^35OIff3AY&(fi7+X7B-|{9Kc-2tw|v34EXrtkIUzeuom-5iLX@R z91Z8fE@%TAbzLfSHy*o;OxOUl(OA)T8V|doI;%ChT*O4D7ew{Z;)5$tfh)bVCM3d8 zgNYzYDJf~w*%UkpyjY}BP*v`!x(Bk*Hmm7mTrq3Z^#ZPbOH$LYmf#|-UzcxRsQCnU zB8G#$Ui89_UC0V4>5A%c>ZijmZvDu&scl-(7j6dwCh;zRJaC14(P^Vyz!&ipZf=p; zPVU3So4~dqS9dVczO>dO7LaOE7gy$tPXevkR+QFl6K<0N7BLaRE`C@)#~QUN2B#`f zq@!CzbEpu2&G<1rB`S)I-O%Q?t=WkhVx~U|%^Ytt`aRlPF&BDXYg)`rwaa|2Ad_Mj zGmGJJm@cvvJ?wW2k9j+xRB;TcWimzS%;?9c08lPk(XlwcR7i{q`=!MRnaG!P;m(P{ zO3;dV|9x3#A2TPkww?~^S|H*pQAq0!L)8AtCepGcW9t!48DHR-$9RqY2=>-KDqIhB zbua9(Zy!T_PA5jj>u-)tPDCk0m)qRZDrnSKd%HP|pO@g&r0%GVPbMLTK@>wjJy+?F zY4NB@{s`+KIh>G>*W22V=NBkj1=JoK?Aw8SdXk?pebCgn zs(G>*@ZE|-=Y0cFw=(EBgvmSErZ!zTB-qy zo>ugo(1kZF0-^Uw_ixgEy{*^QWS*VxludoRtRIXI7V`?({aG_PI=gW_aAn3PGb;NBwVagA=r*H1aD5RX zPqjXF#nM$rf&Ab#D1d8edfgj3UvUA~vXk!o}Pfz8?^!AR}dy$3}BS1`TCfkM}3riwK+1tF5fBQ&DNA%0aV+Rx$SY`Lh5>DkuxL1z#8gs{$RIj@Uu zu1&xXY12mL#Gc@~G$+q{HoXiM7_ig-biUT^NFj|BDD_~Gbgop4HeNWirb&yB4K9Km zesKK=Qd=!qOfbhh7W{F->!d6A!7cQc@<9}h;Y4@`-iL7o5t4IZO2t-3cN2EPehcDP zY6nf&?`&yC`=`FtW*uj>CTh6D94A|d4u%j`oVRUaWN52Chs6ghgeI4XHg%6p&s*^l zb@y5wr2Y(a?q~;Do95q+2QG~{fKacsAwxgF{@8JNrZ}d@H^vFH2c%&|n~3}nit}-7 z%GQm!5VsPLia4dBx!u(huNe;F{fYBK94n~Xu^@TYj1NOL_1?L&)_3(0kgm2HsiNfp zkUDQ+R(pv`%4Vd&_<*rNQ|@8zIU_o!%w|VwvT*1eHuTZ))6dE1RfkMR^Sn$H?1s>G zNiO-Dq!t&2s+$wTF2ik9jG|ECgD^V>79Nm-wH$8bRUvrZwiWDph5$Bu;+S0wB^QnB zkAiSaaQ#tyTyS7s@6zDL=RD|pV1ETssBNP4Rmp`3k9f5^L>F}J5MlhJU)v5sun0Yz zwdqxLtep)vTJ>51?2Ksx@xHH zN&ATL0Rk?Z2;N)5DAIn{@m2Ku1Rb(RvZCYOqKPZ)$}o8?q(Nh8^UL2yKAE# zonQQxT$HOWsJY`GZJ}b0Zd|*C&cIC?VM@JUHj|$-#s^u+gtew1XvM|gshDr@dZeU@ z*N?=&T!{5QSV+Y^OmbUkcNQW9kOC4p{M|{E+P&SEV%pjPJE~wD2i1F|N1Vn61fh|#UWOhEM6aH$1W9_0dB88JFD?mc1pG-fe-=Ve1o9Ri` z%onG0t6HvOn~Y?4)hr}qaoLIUSsB(O1X^dIG$EBaTaz=Du(n1!=r_#?3l2J$(##UJ zpK>+wfC_5fxt2Zl>p?2wls_m%zfDKPzT{@vo7*34JTXUkO&iF0gHcp9`We%V^n?q3 zi?;=!ewZvqDJtiCrZk$BETvL0bCr$((<;WrH`Dg32KSm{ew+0}xY&$E&JM3na$SB@ zht~Bq@PR$%16}y}|Jgee_$aIE@1IE~$xPNsLSPaggw?Ppt1a$;OVPSe#SKBxqO~nr z>sH&U^;K*Aw`#3RweHnwt@~0fZb)6Jiqg78KnPnHAj@Q%d9uIv-22>To|#Mnfk}o; zeqTNznf;mH-S4^Q9A5nL9F|E-QR7Nub7k}o2c+jlJa_jPg>sJ0WAuo^(duCtQr;yG z;f_h4Al7qE8thTwKAVENzgMB5)u!hLGLj6-Ai#$tz^-tqjsBFuLi+})F*whihe``4 zThGu3fd*&i%JG*y;nU1qz+C^cQ*vb+*jc?n8XxP}IG?>;=1&5<4~H>yrMbx;%%a>5 z7Y#2OCdXj=A)pcYqvUgSu50ZH%y9q1#ush_n>Owo(0dPi3YS5yr$Dp=G3RU(Wl&Hm z$6{RuJQrdQY(|Gc*9Wh-56Vc{F2~~X>Qxcm-eA{oJr0U8@QVJZgbbGJ=& z1nbX-PqOoKt#I^OfA04KwnIRm=Wq$A@j&!N9x;bBR2gvYLC#Cg@LV*_og>Eq?)x=b ze}C;x%=PyIw@cLNhGxp~7LnI*S@R-ZtJ%|td2`elz=zZIoQM1W^>zOnQ2RTvMyAOT zeGf-R@uU@y(V^-+uhaCQ2N`-;^gqS!5}Ar2Igm!p(g<(RHh%^5-)l^JSHM9YmstjF zM8yTg*4kL7=HdNn9Suti!1TqYFXDLJy~AE-H0BLx4mHM;NWIYzxk+yiA<5n<95K}2 z=BM;br*vPE1}$6oRqMGCpT*Ba_pi_!|Jvxqu*V#G4ke30RBs$>BbPQlYU8iHOgMBR zqr>Drj{Wjnxx^lp<$qwhSHW#Y_j%jK-+j zw}lFJbFc@e8G_G{8#mc4p3ug$C=b5h9?sLApNH|Ao?gm}Ci)3PKEW~&J0{+6=8b(B zwpMDd7E|&xTawOUXZ9`WS#pe^_8PUpY~Ig*vnLm0ZIH@xX|fh)GB;09g{}06NvS^= zGPu~=%|Mw&cA!rVWO51R+3GL;Q z7Ljk3(c=M^RK>P!)<&Ez2Yx_?NFB~I1RKB1F(Exq zZFgD2um|n?@5ayj^m-E!Sq2>SlaES!JeC8VjG7qGd)T>QZ9xCt zur2ZCoqJ$_G^nz92j#fO$Xjf@O0{i3YJ(RWx@3;WHnI2>6MAiUq~w6P%t|-CARCl7 zON8-}t@PTGz)iw0J-woPOAaKsBln91kT#U4&EJq=ggX-U=3=z5OFvJ0qw2D0b~jMa z)hcZ^Zo^6LET?6R)JS7jn3t+(42C0=S$+V*WxyJGGKS00wp@MncCq%NljR~NH*09E zN-Ay|yX;<%8vS=y8~JwQqZPZr8IS||Ky4F#V>>mc?Vyy_5^Gb3PnBygFV@-UNVcBO zw|&OWu+4wHF{+KncI<|GHmI=?jN2T0s;bvFs7+SUZ?#kpypT+M63`#4vNm*hbB#~% z6lAHvQin6qDC1(#^2pX@p`Rzq!%ZO%VH4e+49;CH+L10lyU|~5b`NYLOvtECRxVmL z)<%Q1=1{iUAX(W|L1`_ymVrx`TgY>X!a|4g#wZ&px$FV~&i6L3Hig2CkOpn_RggD( zl8h>_Gr2@I$s-8v11K9AO+i+ zHc(0WWTAJaDhFqUHAm718Mwaca$xwdmafy0-oC6a8)l@@D+;_hUD@QL26zLQ7%~)j zMw_2Jd85RPJzJJTt+U1|2ahA<{b+f*m@_ANIE7R>a2@AB>2@PLBMoIHTdTK_k5>2U zH;O0R$1puTRKvO14R^hmFAkCiA{-s6{`$n4O?%0wn)4-H1`L;j?*Da8W^Omy3xknH zGSevV;kI|+3DX6JsF~ze(MhBiWKy17Yw^5?b7jkD8V+?3LYINmxP_$Am*L#Y{21SF z-;CydXGQt*ars{T34JJs%RnE3b_X-9L%V@w)ehME*KT-W1A84Q!z1_o`QH36{kLrX z7US)1!fS-~bfHziYo*?4ZcQd{YQBszqsxHDWHvuqWssr|FE$DNl`%l(L=~gMYTq*S zJ3WBwYI}N0lYZ{VdJYkw>az1Kit=_Cz#H~xpwE*@BrHb{9-&P$S9GA((Ngz ziao{F0cW27SmSNLrNYhEs`4nxE~1)_I{JLu^7wv{ehiNT1)NWn`qxWbR+l*Kiqdo%Z0@B+zow0ixkeSOIZ z2e$!_D@U#ms4+=KZ{v2r9;ouLzZeJfI#)(wa_3Q1u$r=lI_dSYC*yqev1gAwAla4O zofq=j;>~#W)UsmAlk%ox&n=z1j(_t;F^Bk+zr}5Ty96rqXcOMu7M{00 zcF>@-BI(&>->7Hoc~6xAB_%9mWF*{fq#@rC%9*6YvNC$Yx*H8iTnYoW9Jmbx z8&fI6jDBh#JQ=S4+IXeQgKu*_LVNxlh7AUhMo89Qdl_r*NR2c;*3?O(7$2HoW9WcH z)IEIwf_36{z@a(yMyB5%@-Ee$dD_dAjfu*;F8nQ}k&(CI#OtKzqY1wU>#aR1xfpeS z#V1P#>cZGpxr4l;Cdt#ZdV^Wx49g!Fs`uLH!lpxQtW-uvS9o63h&H9YAuS_*Kpm*? zRV3cYtnP?33iump$(v19epua?WSe14RNhSWT;Awm{j|0+uc_a#V*j&|F)JnX-dgKW zs7iGopO$8iB{qHnQM+qI-|kV-9k?9q(IK>_kq&Lb8*ee9H{E z+7w|3li?~wd6sQi8;5VY@506}o=@s18yq1*kF9z>%HGqgtM+INdCr?2@y*J>uEW4- z?|NMp@;TzZ^_8E+>09;7Qn62TZyQ z>zqd0>-?e&M1Pj!m8YP215V~7wB^fNv*l|V=m&nfgU1K<26m+sSod*QdMjFlx#;5l zh`rgJX4p^Gn16h=K2=63Ir4ej4l+~nWj-X1K;Rpw^UWT?2O>mU@RZ24E$h#zM(mL~ z7}@^^LkGChO;0>-2Rv@ujgPGViqAgk>o3x;;W=WSE&r)!n2L^4K%qQ$(aJ!#3;Ras zSC#9q2eb#+%Ru%+g}HK0l$Mce9X6C{Fvu2lLzYDnZ(T?aBzHy%ef-&f;&J)?9v%;P z&otlTk$n-b)A+Eij6#sAqCx06sLsKh+@j{4dhfTha{#)w@)*;*8KsvMJCR0b6S}XG*h_ob6SQ-WmAAYFw z*T{Z}qYr$tafP+-4fdSKv7n$h6nfQ;6@|dB4y1gw{(o|90b+y9yV;&(g@9ILLFY24 zXsM9;zy01j33>3X#|B8==q)$?OH=6xdE0I@VeCf9u+XcfK{4!ivgnkOf~M!AX%KL- zsYaddH{^uKP)0I7*^3TH!Y2UPYo*vd(#q|~ll$h@kP+B!Fwy7@Qtb&TF|F_c7du;r z>&qd83`adVf^F26VaQ383}e72d=s!S^aP*3jK+-`Lk@>m8c}ird7X@my!pnPKGBSi zI_#?c&Fv_xTuij*qrbgcgcygr6OBy20O*y?Wp$$9SuKaa1a+B5Q*doTGfx9r{ zGH6NKOv9biE$y_y#qL3;@_e~OU9GWl(Xx@3+mC);WWGmjaMXqw4t=Y=>$!Yt+iJ*{ z{HdG|3=|@bk9s~-N{7h)flspOQ_Yrcbs_H}He9h0MuyjGs!_&ABFpfVCi*Uao$>;c z-WjQCam+uwAu8LGD3{8P3h8~ky7Kj~Yx>!|)9Ia8-lxx65`V#L_e3qH)ig1qgi@Q- zp^@ASujntr=O}Ej)nO)8F3mJC1x>TcfkU)r+d}bG`nSnk7&7c9=cIBgLo$~|O~*P~ zz4N)g{>u9-+zu*f9hEr8$+=9HQ=M#C!`3?6sPSewl z2^q*t4-GDtCLg`E?&X9$bdo9R^wjYO(x5>ediUKosHeU@yf*N)eoGT_OJslK%^Ycs z2Z1DWlhfAEx0*vl6X`Klm4V&}W!>2rtSN8(ir!xPR6=SWOEy=PQAW`a@;HiQ9%h~k z$pb-YA#ZD$OPNpnn|U9(EkyIeW-lZ*esP=lXy?<^(27uGyFx_@Dkr10SWGjsWxms) zd7iLCS?mGNXoHu$Pm}@oLtI{r_6TGB|6BPUZE5|a@4rkx#wW@kE5jp0fAY9IB6nC= zxM3a-82dpV-41edLWbfkZL8^}uO3Ff(?fJSu$RFQkJnZPX>xw5`ywun)(8)IuKWL9 z`vQGQFU0Yi^lyB|H{@!{l!y8mKH#IhOyxnWRFzsm_y4?ip*`RmTB_)&mA6vm9`^e@ zr}*hbSJ2&e{y~f#11DXE9iA8MY%He?msjpPaO5&?p)&recA)znRR-y#=Ao>Al~_yN z^Tw4?-}kWn50by%{rtl|`5yh5hSn|Q4|-+(L7tm(WS}A0p0LpKR%#yeAR?z4Vf|nF z>MrTQ2lfuX;ge%QE=`iRb>3?o@}J={2%76NX@D1f6!h;I+~*#B*wOT|Si>=TpMoPM z`3(FjA7+8G5x;w>~a$j--Zn|sIF3%#BDGOiwiQuk+-{5-)t_-f?SblnsxYJ{@Zgf+ zR-eP0`P##d;Yp+n)!FC^%dx4wz1YyQX>&D=DITi4z$ney{M7kWBlD$l*~oU19H7RQ zx&ePMrLo-+rkxDw8Iixy;ZO!FUT4`)nn#BDGInoj-ycI#$3U`UBHKC*^xeE`C24{Xq717y%V3lVH- zQn^lpp?tIK`NHt)hZGJ8qE&}G1efmYJ_2}AF#a}%=XX(De#fA;mqdlgup^K^}*I?5^V$iAC5I~g%@ z%Ko0mXx?Dc8_pUl2eS>iIn+W{Znkw_uOIN^?e4%D`Kx`DC;E`a_Q6zaZYJ|)4j+2Z zZ9(@f+W4-~-r5YmhBt{eZ7ZkMo4@Sy@6uo4GT{Emnyeaq2r|-q>yYycSs;}}>AgPsFoB`S2cyruVz1OGyw{Np~^@=`-jbvcpU=j}fsWtI zy~cY7fz)i-@9Qx@r-9LH073%+1G8bf~Q+d_#ragN)n#M*~awu0Dhch$u2Aw%zXxGzNT7buo9ZUDz zf4^hb&+I#TqQBFbNk@)3f%2UbWoNO`zb+JN#>8$MwtJ>p`546CR(V8{-k}U#LDli- z1kTFzX6$tyhW@TUGk(aSG__!^bz6l`+G!c#?I97h5k==-h|C44%ZS6Q>M+F`heN!! zMRi)TOr#g8C!Au$o^oG9K z!D}O#F0aTw%;BuG%EBMqDo>a0Nf{)H{)3!jXx`KxSsskq2pkEQg$`-UhDDh>)wbEm z9$;blIdzC!w=(K$I8?FBEiBrHziB6x2Um&7Y0vwjMA4tgbPl2mXWlF~E!n^#J->u* zT2p&@Xf4Caff3KQJY|}rPj<9tpUh43~1P?5(gPcZAefvg{+H$2&!T80I6hw|`nTTzC`&Y^FawGAtU_D}A$0Wy*GX9hWk zQR%3|X}EJ5jT$;cZsv1-Sw^33W<#VN4|Lwzoa6#|DxI^MRy4GivY*8k;wk@{*>joL}aA z)4u7i(+IHs`p`rmYa@O3)hF~?+23P&Jp)aDo*NbCO`$P4-=V=d!>w@KdJSgp>oYnA zQGRZg?29&btfCiJK1P)dv5lxP(DY}x3`%p4q>|jpGD3tS$*>NY*dsRS@T@%Vd}rI^ z^lt2ZS5#Bc_oj-1B1J`|gNk$o>AiOl=^$M?NR{4$BE3m(Lg>9o?@^I1HS`wg3899B zKp?rp|7B*@?`dWpXZ`Qfy?fnz9`@SjJLm5Gop1BffJll6WD{}fvAr5B0%!Lp9=dA` z7tep#4?!<=k~m^^ur{HSpn^U3qbO0_qhjnK-SY4V$*|qz`n}0fu(YZv7k2!dDdBUK zOy8wasgjEKN1`+I4N0DoEniu{;>)hW3h{yk%Pzj`@EYJSAipsgcpS=r54Z|Z0;JGk z`t}u7>I!rk3-F3^-m`{kTFD1rJsa+{!<^8Ab=YB-{O_XoIF4y~E;diL(eqYr&MPb3?3@>RY&54L_I#IcVj zQ>oP<>&i5O)h%_~mb^Rh+sPDDpim`?aYme*#?pDkyJ?|{ZW|&7p70ja5W$eQl`HM_ zi0C)BNQx%}{5PTL+0L%F`Oe04x~AgT6@9hzrQ3h6-62{eTBcyW%SlDmZ&hba_uc$4 zDL1qx)Tx--{T%5r*}YhX>=Yyf%IBzLgbN>D<``JCyK@U;4ygA@Jj|~=&BdOirRgg8 zrvJ^IdrB7I|6@HO;dF(4@iIubw}H?RA(k55L!a(p>?*LU+P!uxPsl$$ z4(WoC2E2zo%2C)$CFCp-8$4x-Qi;6!5k)jzn04-_QJlI4*xSKEvqMSiCxV|ya6o>3 zW8xLkrzf<-zIib__Y|CZ+gIcUD&&yccap&_&|}hF1jWK`PpWP4xJt3v0USzY!3ZE+rto@798!Yhd4>vosU9U}tW z?gdoTy~hh1&`V7WlFILYaQ}DqXaw6xu(qIj?4|Gb=I?Pov3258TbbaNz2X*h;nAw7 z*(d8?r|FEd+eKt-+KJG8k_y*cBO~ zS*w^getaM)-HDKJ8cHLV2h{<~cxjW?D^AqZoT!DX_3xl3o#Z9uC3{l-gf@fS>ENc;w1w7X;&< zj@z_BJQAbuEQY(YpRP%Gk6kiOrdqA`_+8eLmR2IvzA;MQB=nEZ52fa6As7qwF1x4d z`>OeU!(SGYb7dH1js~y%>-eS+Se7E8&o+JTm>z*r*4#QalKR{uJFg!qyBSMakbx_C zQ`>_5zRHsR1ME9j?v_1tl{7u{`$8vAZc%wjoUV4R;P<~GhOBf6a6yWdLn^oE$kM`8 zXXDMaL#ryS9QZwm#Z@Ew``ALs-xYk4-apWa+jTLgv#o}v11d7E%ncpP2gjnvtw-*H z_P;qi11|kEE6J4uTL`kZOD|19A zIWiS|rYV+ee?Iu>A#*&kv+OhpKOIJ9J?k4ONkMr`tI z2p}%;v5g1-ySWqMTbr#vm96_WECIL3U5}&tk#9Sk>UTw5B-aDSO+01Xk5U&-6QwNt zi&Lq4tcb5cJ}38Waj8EOgai`mwF)?z_g#LvYQ5w^(yhH5Omy}B8ua76>P267K<<*W z?V7HXaCuJQbjOjyX8nL0y77VCkEY%)y(f?_fsp&6y2B*t*wj8R!BS!7>0uTNX52dA z>u%+lf~WXjuD%16pj$KTy`^oVu!4~}Uff|E+Q$Fwzt(RlR@%gjTyu9XtO_GL7?0bl zD1Rb4k}1?&L?j!rt8vvw)JyCZ6e(+wNTfq3Gpikw=EWk5;+=`KNZ$aOe!<^OXWjRH zd({h7v-tGqcD z3Q@0j_y6oG_-Fj|Q^D`kVl6Ik;eajklU)jGGkF7{-uZ$7gQo*OC1$_n(R4m<9 z+E3TMVE>LJ0N;uiwWx^i;YpsT;#Uu@6Dy5oe?^R@Gl*-N0;$G#FB9O%!Kqh##MGn0 zKdWoUOnXas=Rx8hcBFz_!fZv$d|mq~et4=sy1)3A8(k%pl&8E4YL@JrUY*f5AMNtU zIN^I7C^S9j_F=aZnTW#VR{Y6*DYdiT!FXV0M9WBLB(tXIGaatF;aM4+J0^z`5lkI5 zWLv-UnW{ZG&7iKZyXH}8W#tcHwmotXNu;zH8Y;sPuiR0i1a>L!##j*s+jh06RE`(o6~dl;zd8*OI>RKK z-j-!Hb6tw`drG`)si9;RF-Wyk%P!7_%S3m-o7d|KWP#+?##VbkXn|Mkvl|p&@yDB zP`li^J|V{9`keE?O7=i?vpAc|fZ4=~vdneB_tyF`!#1ARP*2$@X63DYQY}RkoYU;J z6;t=vp?1E@T-SgOy%4(Ajs1?X+i2LZSH+mYcF08wj*-4fWcu4yi}%lCqE}ijb<4i) znPoU%AMM{?klJd}lRQQ$ z)~yruYjz5p3J1j~*FhsAZ~;J_8$%Jz*lozY+?af2x+1uSEb*OqGdh|>S?Y5BktLlT zxE5oz_*%^N$#QFXMVUp4b<5LEHvy8Llkl;sV2rDWVlTA*cR(YaAiSYS&RHiowd+pp zb?JGkv(Jqd?v{S<+IlndynIJA(2vRo(zf11YQauY9YFEtG?b-?Ox9iRpuU(NpyOgs zv=@4VIZ7kq56zs$?%(J0IFJR-Z{auZqmy_iWqSW_9xn4s%wsH0>MNTmNaaCjRds|EEv>+n4{-71uZa9Yp`TH~xF}{O{iQ{|+`p4@8(k&{K*2 z=BkpSm-|hOC%wcH|CejR|5`_S+5g_SSnoO-K#FgC;Ry4$l&ATBA8U{{U~t}f{_Nn6 zsDNu5*+*B`gVYH|8DAH0@H;I;5Wa)7y=J+#mOKR2F==@d--mF<(*`l$#&4EFJ`&Z| zriY-iCuMG;3rvRq9$+D(GdNAH4+sIgcE ztv`47VF~jztw2}k_n24Vgd(7><>(zYznLlsfEth=sUr?Yo(IyRN$`HNyDH{6e17p}@3*cJpAR*c`dEzc_IH3mQw{+C06`ROi zL^v`An0xKvb@2m<42#7`{r-~Q z7al*y9HJfkVO3>^{Gr`9<|7T-Z;tp260{Ukrp6q8qdUdlawP04^|T2n{$|hpq_(q& zJn69h5G_Q*!yRD;d-n^XFs`=Whu`rAS8&elH#Jm+;m;cN81~2&p zZ|Uy}o8vlI@$URA5Z(KHsfqC04u2nn`6oFCQOpR(=XC{@A4<#UjLJR?X%g_%;JGT7 zP%@Vf;!UTZV;_Bnmb|R)0!6`%l4-UZsuLWIr~zL{NPC4W{Ai5v_2{pb(fJ7J!s@|; z`hy9(h9KpzIx@aIGUnxL2pfK@5AIL+M1uA@3*7BX7U<(%kt8(yR5?+mZXJEnW3 z;s^o1B1&>roiS`idcx~8(G&c4r}9qta@4z^>=B{e9SZ4$4R(}N7f%b^ZmQ!k&Qf9l z-wA6ultP4ecU;I{KGX%-ks%2e=9v+MW`a3!mqTzf7LqKGR)6nNhr)@xM z=q>Gtn%rM^fFh{sis6TpilfX` z`@Rc&CG>5C1l&uCQm>d1h@+qn?%fY>Coo@Uui-G2h5-w#V$QcuYemCQL_M{5wk!MLD8{~-bk*>F>Gv~);2K^kM+8Id zJ&MRyejDyNrCLH}1 z2~S#J-VT7nzlS5Df9*~$LhFhb*CK@Ren&l*%WPU&3-pwdmxh|nLD}dqqdl26TfRI2 zynT*tgRG?PN7vh!Expd(9fF!)?x*BjOLO;(2ng3zXt)Vo|0|B5M~vc*g_D4|xc}sZ z&K@MBj~DfkV$TSD}Dt!$lF&~3YSgCg0tThX0}m1Za`5=B@YI>>GUuerq~8FuJoPvv ztt{hREVh(Y((_n|tPmn+T5Ukj!6^A|4>XkZU-3(HOQj*<%P-|6V@tU)Mmcp&zo{## zqzFRDS2@j@#}zCfb8;aPGE_+reCC23nw+{ba5+tUdj*)Gxmo4>)b4?{SHb2x$=DrD zsfSSwxEmC2by-FV8XKpkfywYQDh$ZbtiBpDnWwUH$a6-n12{X2SF{#Jno+PbO6}5! zhs;&-^Zz=0^H)rbDT`k9pwxlMUlD2+=TwH2k0rzQc`z%^vd-v8WSG$933{RZ;3dZF zLqaA-M-D2k8G*HfI2hZ+Av7SosCsPo*x?6(B&e?J-bUM;dVQEN$nStg-D%M>;}<%m z4?ZJSu6A@@*Y;2zj5ugE&K$BU=mkf0o4a%=W<=tgV`l)*LV&ilbIBO+1w3*Dy%T4^ zQY^C)-UKoUGeBxCQ3-C0?;-2#3^hlpn>D#$>Lk7r@>vB(Pq}p{9KNRK@!$A112dP= z+mrdYU@LAl9%HZgg@c%A`HT%P#09Y&9uOqZGQUL@(g|J?u8PXA8umg!z7kY<&WQN@ ztE82p{OYG%2I16xJQa7kX*OS`$kihL=tAL3gs5tnx5PEBn}m0a)EgflN#ID&MW4zD;>h zl51+d3$7YRGwqyHf%W=xJ_=E=P%b25>m;zd=RU{Cgr2EQ3%t??6l`4DM|e*8>JR8% zs1!TGssSs&uqMbUjS%IYw1GQnOq$>k|LK#T19$+N{K%?NyKz4AG<$|;m|ebtXEu@{ z?l?14phhhgibMAD>NAHQ_h2tM^OAjZelk$+&S2JY35RuSSZH8(SOQaSTax2~c< zqmApmd0?BpBd6>a7_C(u^?s#ILE)9i4=(7dx_b74vH{ zG2MZOAZ24*6wWqNV=Qi;?sP)#!U3wY<{Uw||Hp=PZlP*f*6NZ>1K3a05v=qk4!Ey8 zJg6?Il8r-R(UESsxYHotd~%hX&)8c2=-itr_Y;WpuQEB7@+F4D z$Gz6Rt*IX0j+UA}jUf3v=S|w$l2RWK)p9Xsk*<#LiSS-5gk-M0Ilc{NB+kZ&tCH(q zQ*LkmAhjWSYx+iQ4>TS+pMzn>VTnEYhwwiHWaS+0%(g`?$*P+R=ZT-ZKqTD82W8HY zh2I(;sL9}@UH|C>ak*EQYbObudgsW z(=?y!d9e-Kn5Vg`+fYR*3hZE{RxeHnO59cM@Ym}}8WCw}IG^yA-MjE4Q~k(M_V=}( zqxBx2_pce)v|`TufzYvoG#>8UjI#p^zCXii=C8_u26g8pb29>`j*s_AIs_~A;5b#Q)OC>D)U>h)uRCVq#|bukYe}c-v;ba z{OAniyYfx~d?x@89!k(@xoKi;dYHQ6pZ~NF2rnbl<9Ny`uiBv8A{h~k$C7pMr=1Sz z(_m0t=(_h3?*UEc#&M8SS#bU2rHURFp<XHf6|Cac`xX3X z7YDLhh&&Fz-&Gy8T6Tw+!RzALA&; zxf41u88lx(&U2uaBelS-Eq;fCeQbRT=uXAz@!tp=1yA9yD84MEm@bWi{&aCJxA$1Rhp`3M(N7z-yM` zMPLDgje&to)L8SivwskhYI=W80~ypi(1sOSc|d0JWK9MdJByv(YqS##+K-uwtnOjR z4@EO)5Y}_^@m*v^#l3o}z^oMp_*GgD9YLwU&pC}ub5WE$AyF0_kQ_oUM$%*ll9PW0 z<>xcvUe&8r41gT)){P1vY=Z)y}h zsPbCJX;DDIyW*6*_{>Sr7s0IK5Uq4e7btLNw7p-(A$>(tOBpWXdrXE~JNAko_)S&Y ziQLCC7qSd|XT?B*5PC%kQfdzGIyKgMfnLaDY^Kr3gU++wN|_8fzo^iCP!!tI3h`DK zDBm)R!Z;)tgH1D~)wMFr{|nLnB?Cbz%7Fv#HmvYGp>0R@i-5;qCl@R(^MHoH#y=n(@OvtJP zM2eCmtSQndm{+mXqCY*@B{)~}<`4v`-pdgGTj+-f9dXh+U=q@%y_S^Y==xzP4ezuz zV}rx}CVu=nfpHFI0+J#od(BzE%AQYOuc6^jb}Hi+yBDOJ0^N3Zy&FmB(XwU!!}OD} z<=w|ZWjaH6X#_jrS)!51gE!Z9lFzz~*^QLe_zp_XUEAr1Q_!QM`z!405h!CSUIDG& zk^k<@a#De8x1n2Oz^41qGp&rykj4I8b)tBboA*?J($Q2(CaU6tKQU{YEp)4-524aF zo;+cPU!<4dpK&aS+MaUIDl=yP`w|Rtwp4#$v~V1RO!w2P^s`^E-?C$^hOeY_snUlT z0|*C-qTEC?g>Cl-cy#io=^JlEwP?rR1KgH*iu2%$oZ#S{7DdSUGTF$4!Dt`U0c^AU zffeZ`Uo9F=@Z8P}LDyoRnDHylI#(Z+Ik8Z(H})gf#|SW<&Q;0v8ZBrk;cU!fwvP{@NcDy z=*8EJXtj<9deI@sFCgVvAW4J3gG+yevl?#l?vE|h!SK?gX(?sfyuyPpP1Uxh_h~O@ zEwA@Gp|ki(vLY%Rk1t*$Ryo^3nOYTZEQ9qR>Ci=O?SN)*kYlStfCE>EJ>kLZ;&?G2 z9Rz>`TfSI|U%kO#0f-fup@|;g%gKDrv9mB=e2?FtI_e!z{*w1 z_!(XK&*0qmfYH(Ma`}ljp4+U@`|J;UdJb=PgwEmgsw6g+Uw)x3VY~X5U=AeT>9Yku z4Gxv1pzGu6rG8sb_so@t27oj58fU@>jacT`DnRRqQAMm{EDy~)!k`h*PwSaz0%uZ3 zSi9j6?x{lu`wy_Ci}n@x)%%T?Hi9O=qTi#0)5KISv{N0cAikT-Dg1TT3$zw38yW~< z$7@WmcG{m{MOF<*Z#kzdLMg&)8|K8K6r?eBu<;SA zx#1Xwj=rb+JRk+dAtBTS-E>80>Khnob{r_c8^zj2zq=4|cI&zqM@}$|_>iaM=69cb z-_y?Xqq?)bQ=VMHcIxmJ;5+~aJVqyp@yrrW$8ih}v$QTrI&RlaW^h%?%!B5DhV|}y zQQyD+P-bKB+fl>&(EoeW?(<}+!Dh*u~0g?+qR5=~xV9%pjRK5~l#qF?D+mf#^tIcI=gUU({@) z=i1uzs<>srr9c8x=ST8`is}Zm3}{@_1@$Au^Zdo=GsyYOEQ;4nFD8EN8A^|~2lZ1J zbrE8f1hfXfz}L8Z^Y1oW>ph)ac3P{9LnQJh6>_rsS2TN*u6m4y=o=kmZV%ur#gVjJ z%U4Wz)U-3AO2Dmrd0ZFQbkoK5%n^qv@pI}22YchPWE9DL&hr6^POM69MOkNMl0H1> zg$PB+z{kKN97R>#qSab)vnaCeXfhj{`3ZVO~WH*~b1yrBUC=DuqO-UrW}9mf(6P$$8DOsj7;y$V5MW89so;z2)O@|e5N zb#jbRg_@pT30O{U^72w+Ofl+5^~VpvC&nK8{qg{(JYejtfH36xuAG))br)Y>##S85 zB;K0r)_xdT36Sfx>h^Q}cv{C(lE%hsE{xDLIV9CY6E4sLHz5rZs6GfbB0lGkCW{lskM(LAT5n~LH1C~-Wdev*WH_>dEn2gKJ ze>pc|6Eg={kyBO(WXB_y{Isnf8K?eszZ^{`P;2!lFzL3#H}rvSr?ZqgO>U`@$N4 z#<+j?CU0^C;Vs{+b2+{3h8qp03{nw7D7z&M=pNTgZ_=7{!#|p6 zqsT5oh#9?$!%?RwM3<56$e=NR3`IB3K!RK3@^$S#{2jhdPLf#IA&&U4ae|0M{a9bs zPnNGgpELG1Sj$vDsQFxgxM?r`tb>tr%QNnCa4xuU)yez!cPN~&JwJHhN%e5;++l%8 zNU4TZ6rc{W{L18~#`4DfODK?KgFt2)4j^@@DDsHX*C&GxYa|gqw(dkVpkhnf&y-@v z4{*n&ej7d=_cYWa=>)IQ?m^9Wq6vz&&k^kTYHi)t`a3-APl+?gvMsnySB-!lsmOex%wAGo|}LGY9%zK?E<=+6+jKiOc7T zY`KZJ_uWRS-23lc&)PF>BG(wG0h{#qII%3Ar7)VP#RsrI7C$-n_{QV#XC|4G%nM?R zry`w*h)qPi60E#&tokpxF3Y|ccfxX?Ta%Sb2k;TuD!6qH;?+_pZw)9RY@-FlN{w=#?d;EBa3)@A4r_;X#+ftyeVL5Wr zJsVI*3OiqLuBtK3I~L^>Dt63TlQkg0%8Zvlt_5M!AJ+#PFVBmUE~gakw#{gMUSGWO zUb)RE9=TfIHBmr*K&%OA&kM~wd5J&&!SXc`mX&l-tNRaD0|}7`!&t6E<~p|p45xE@ zEn_-+n78eojs}gUekC{+LEJyZV%#5Y2hFhk>0!@PXP*eolwLjV6zoLK8CnIa!$Kvq zZ`~wWRNL}hhpq8It|k(@V@9~7pI~6TmtcqB`@i$CX8rPXpb>igAFio0@gTR?GGE>B zpWtHHF(LT!&USNC09D5-ZSw$L5WhWWOx5Dd5VUC;!CDaB2ioKZ2zla=9#v zi1be{+@3@-Y>8|BHRduyL)k@b11i{Y1vs9M{Gr?mSEI!*iok)NE-ew>HkHBOFTtA3 zExKMk;dDs)N|xDgIK9yb{rPWim&!}G98(I1xsnJXA?;^Aq%BS3Ar?i`PR{eCz4-5@ z4CtN8@@bAi7u;?cEJ`YBaE{HUQ9EuoQ5}G|cc=I6cD<7x$JLw8DbJeb+LA`11KDeb z19EQFQtO&NVt%B1s;zZz>Jz0XJfcGnp2sh3_6wiHwYy*Ps|VMEHF!_Ola?*=aE!3Q zfWUiV)eL5I`tS`^nZZBTsRzQFYirHi(AS`GH2}Gb=gmyItcVxxg}y|)mp?6kPc%bS zI~r&Jhg75z{(b^^O`b+glqAicYhwD4pk3Pcfb~4nmpn>lRs8&`A848Fz2J}fyFoRC z@+!NY8I3*Qz!LE_unFM9)H{1bAl%Qp=733`Qv`H*2kJ9A@!(*v%$J?A`w#2Fj2nIo z$NaMC!^LBuQhf|e?hr&EgYnO5ffK+HBww(S(&e_Ih4-yDCbzAKv@fSnsZS9v5d9IkfW^XG~zJzhG>f!gNq{JpedC4#G zX-g1m3UE8FCwdiH8=r>nMfiLXf3L)}d)MhmwZt@-!5jt=-Z;^8T5l34!30W$d;%72>XCMXnS} zKXaz#rDzyX_&ln9k5;qDd4U6Cw_I!eisp8Ee^10MM4F6Xv=>DGIq?(?vz(Q`ZdtaY zKW-*3G%g-52Gw2QdDb4H$-;ewaU6Zyr8^Ymjzr{*BBiwCcY4QNG{zv z$ap*ckaB4z5q&Y?vl?T{)=*B#l@$DXovMyvIzNvUwRGLE8cJ?A+i}w392VSV@Jwa>fFF)l6$(ldE+IC0Uk zaIk7-Z@@Qn>`H0^HRQ*2gPFf0kCz-qq@yvJ(Uq>c2{iO5SV0SzK}E#elO*p9kS=1J zwKMOv+{jRJJdqys5(dYYOO%8036vbE6?0ynnBeB{2rQdzY3A-$*&)W3OYX zPVZWU(!iV2<)vk8yhwbgPvAYNvU-WJ^v1thGTUbF`PHxjVtEZAC@=e*0S6+H$m9?O z@uj(#X}}U)jZJLnt~>C6dG=S~i@W)o#k~A3lBcVqz0Mj4xz56BM+wAEg1PEc<)V&p zSvU!==(@{A&F1q?KsP|sh**_n!_T^4b_13lJ=lB29V8vu4ZiLpK984GY4QQJ{7CE# ztxWjX>Nn&dXe2Q-@1|W)8|!ICQB~zu!fWYPa`1~>UtVv^867DQb<;d}l?&xl3EJ3b zRDZ^BmeGE=u2)g_9iFYxTZB^2SKw+{{6~XsOSTeB<{>|H&WRU4l~yv?3)K1LT*)G& zuylV8@joQ&Jg|k?! z`9Dv;98ueC6Ml<7ICspOu>{?|{*eJAWthVp9r-(FzzO#mNWD*ZjbbOxSetPX8_VR( z{GaDsEMeQ&W;DbvavFp$)kk5Gl@%P8hvlCD=1K@`LB7SnXU=sFBHj>lOS3jDeSBx$(PKU_TseqN08FGvb176fiF2etOQJ91VcC=z?EHa zrbwiN&a8KSnT`757*z@qm`&EZ^13ZK)7j5D_cND6LQhGR3<}YQsBvxEZgFnL8_T^2 zDk01$ob*~JPxdTHnn5o*B{Kg@m(+4V4G&;dNdmBxjEa{BvBO&@krtV`I*OZGZ!_Hc zA7<7;kim3bl2dVhbHh@i!s_q3uC?ih1li&~l_)U2il2e;mYHlzwC1cG*;rR8fPU9O z*gdUni_Phvnr3@Gz6%Q#n0XGOZmzBh31PV`u1yz9(FC_lMu`-|82YU z`q;T(^LMiZI#OSb(W|e?u$YN$wwIA)Q&!QR4UPQgAOqUOf@ji8hs*M&trrzilj>tm z7(wSf>=`_D+{F7K{`g$a+IRc%MW(s8be_k;XQ{x1nxi5z|0aRuRK>)Mu$ebX8}f*4>n_3)5H}^X-?ie4uMI(og%%sSi3T;!l38S^6}$_4_KE%<|3AJD z{`cg=&WJn5tNU+g#f$%Owfnc*If3(H)))6L@NY-+MbgDxvi_L1hcOFNZ+yxse$+r%zIu|Do7xnIrS)%E->STC3ja15-H5{MRqwLDnhlhV z(A&`dqa64A@>$Q*f6^804PWcp_t@x!A+Z_p<~#}%2O8yKn>T~%g8dUvvf?f)v|D?& zbkV&D4`T#>&+8A1Pq@k=CpWYW zK&)>fGfLGLq7{7|C3BFQ&Sd`@KQw-XaQ8*S<%~P;o!vIKYQSqcR4=ocSYEIYY-IPl=kU7srxr4Fw^Zbb+{XNmi(XHz*=z*f{QK#Hu|$04M5CJQXei zvQ8*YW=IVp>M-NteY2aV?tCwxj%Ie)`%gRV+`)@o7t}jn?J9|8rx6@1aM*M!+ja8J zrIhVXmcENKPL<$B<}EDv@|MDV6ke_Z+Q$K#bwXS9 zl#}?0RSgkI5AKVro#&um$>AUcsM&p|G>&jDb+=^PY2jVtck)0umY)5z@`?SSR{yX{ zvR|acTL8yJvKrcdop#xcy*h{1c55hF%nN4w@eBRpM>7OnC3j)ERqf-A!W4r_Z3$G0jUn$EpC0*3FE=Pnq@XgjNBN919#w`KAix#qW>ZPBb7a% zpL%xvb$p*roS42X3=V92oDYI-kc1~>ocI~8D|vgY>E;-C zwC;zW3ndf<8o83HCR0ei(%O@GalnB}Yp-$A56NwWG!XnOdox5giIBigr&;t)8>lR- z@Vj8iq}u2A!wr;F7RCFxCVQm*o~4+j!!2pdAZ08_8H##3{ctUyabk{GwHEM8QY}X0 zA4MVDMXPEi?zKiDC)ObW<{u!hX2BTdji+A>^3Mg$wyH0`taRuN<%+1U9gT5*6I<}~ zn&v3&NWYelpi9>M{pkWe^kZ-e=?pN`YrLZ=!REaR7@s>O@7QD1&oX#h8IbLH(*K-8 zjKnlYBH`mlXO522JpL=CW>_@7zhb#*qUtdiQyv8@&|BJoH^N1XCZjB|+6=m^|J+BO zB~8woYQNHwZFnB()ezv-tq!VC8x7eV&rQj%feb^#e+{fUuD4-&PJ8~@QK{fK;Rg~k!O=lQ zbW4U1wKF-F+nb-V$Up4g8OCKkPArid=bH|?fs5)+T?lg2Ih2^@@bsE}9IzpY3Ro>1 z&|l*~4P$<)b}$`}gvWG0J>K!Rjg6Gl;xVA%hL<*lYQ_=tWs~xfm6z1qpQWn|asMq~ z;iYBwny$TCm+&55ysrPa1*KfgPDzG$lJ*sAwO50#1&D?^>oM26PynW^mX@0bRRh7o z;_j|45+Tl1+{>>!%Y7Rs{IWK=8Z@^0EanFic#Al4UsXlazN>^VghS0e$tvpHiW=GZ z;khGi@a?9Zsau6Ws)PMEkXJKO@1=F_HN)TTGQS3>y-yA8&&-!UvIt?nsP>hRHdv6* zz$cJaxsH{{Pdxi5Jk2Shm)0V-y8g{Gbl%}Q^;Jd~&LB)jt-Yr`3(X;zP^_<&D`!!Y z&3^*D298Q4m^#3OhGYFsv`G0R3AL1BZw?%%LbuW70~-CaYl% zYQTDXmQ$_jaFA%;OEl!@E&GLV^?c|CC@sIkg>=>k({`|v{|k2bYmn)F*U`8GQ_=D+ zZ$YOIPhc00(*AJKgYi%_Ac{=MDJv<&>{9HY-BE_maAu^j{WQ^G`;;rbMW16Q%UG=# zG0VMNQDw*eB>U(&5`@~72Z+)L<=fvN^0Yr0To<=sOwHzY*6Dqj64mfg6)?a1HFeJf zG%j^+^^ZaW)WwXpacG`Y8YPA{o7R^d04zC|)H;bWRWBfxQgIjv{>Odzp4aYBU^l$Z z47Vpua$N`acByz#dBM<{NOZPT?=`2NpWb)JX%bh>4uX=w@9gE|X!aE(f; z>mi8bDVtyV1)pa-zy~e{HSn2;)3OgSEx;lceSxRu9BCo0$yYIX-CpW`Tq8Ju*)&&fQ$e&B{ zEv++k5sus;aXXn;iH%WWm5Z?FlqU@P7rpUMLe?PBK8-a2wSP0&F-h%91mdGj0z`#b$UWj?NHavx7Y|zv z;7*V4O%rvwcfAzDKnEn@5rkmT=Osr}gTlI-#3(1+ms0tl%yZ6GCI>uyRomph z{p7u+uY~k5Fw{$ii3>eZfHiS142$>ost7jQkW9E*g$FW(eP{23E0z+1 z9c8K{1OGlp(Z3xEgib9+<^oJ1zE}oS5Bh1(CK@hcwJbeauZd0HI_4l2dtmv<_s&8k zZVl*Njmmp886;IRut}SGCQwm&f3KeOr$)oCkI<;F4y#jT)KhW;dW!FUDu+QkLsYv2 z@h2}{u(0OwlTr!wdIYai$xGX$uAILe9ZCr}p4RKR-tp;GO@mJ#?v!u!U#Mfv&jvW` zZ!Zr~uY7Fz>|30Wv-5CL#SHC~cCpc@dds>S+7xjVZl{j$G^f zN1}^GqDlgNPqEKq^u6)D9LAaTkL9-}-tdc?Z0~r<2}dy_+3IdCaBuBoxjy~3Oe;-s z{QT~kzdg}Qct|_>vD`BRIfJ*hv&pwD`y7dsO5B;L$_0z}1l#md91SR{jfHD$6! z=>=a^^y|C1tYGNbB)NjG)rSIZ_?=%T{||W1UXxo!>U_tnebXl!Bzfhcf^)7e^L&76dZo|-s5rlos6k>pxrTmsi*1veSJSc?R+>v zingz^?ANn=UvYKmqT1^=dK8`ZvsUPR9eI$A^B?vD3Htjz9 z86kOMKReSK(`vGJ+zfs8Tyh@3eFr8T{21Q>7k;T`VDqLu$H43KZf)xXji{qi3&G_v zFeSk{u@N)dwlg8FlQP(}5Xa2i1{m~$2* zIY@BM&?%YEX8VC-Eu9^lzmIqD(>A_9dgH$zsq!jX&MK2~(oX|1u@_cH$67G0-){A2 zz__k&K_LZ0ISs0GMH)KY;L$REjRspm0sTVYWb4#jP^Q1Y+lVQB^{6akfP#*O<~cs( zNEILQnO}!pL@A5OATPAx>Jt5-5_fsc{wQ&NckyLyA+X%(0h`GIDB3>n_$!*LXJ@Mm zUg~UuXj;mwV5uxiB|t!zj{}|NhKt6lCvYPGSr2G_aYjFbZ6Jww`3c)CbL^@Kz#9yd z)MiIC4F z?3<`j3HVsT#PHwqDcpPagKS$SBcn`7&Ik9qbT{|8#K6R3s2Zg6nd_@~s{p=$OV`o#&BKVCEunlB`fzr~n5lW*{EHkz}lY zagZJ>u@=?~1TxnBD1rZk$!VnB;jCggE;c_Rn;0u z>J5qAt4LYummr)!U^l;tgZfoMrY2=6gYnKI7x-C0Tvs?8WH2!$LNJgA)Y8oO7Oq9z zAF*}UD=lda`RaezBx#X3bD<<3Eh9+xl6cY>VRYXALu zDJ(Nqs?=)p2D5UuzT`dJVAk8+Hyv;voeDBh>i24gwqg`;;h%PIYQ4EuaZ9|8uCpUO zJVfyN4_Y>7A7aVag{PY!Lev|Q{suxA^eW;KIyPa>$wmNHoq6@)_5V`mcxc<}U)C^l zc_*YPzhR2%I9k-1QcY!#FI8FVNjEg=CBnOUKk<2P!dwWhX4Y#H8+?Rh&bc387QxR& zij@nOjL?TYD%l9;?dd+eXVO9Nc|i)Z-E#t^-Ni*A*U~|RtFc3vx4QDdj$<9{XQnHsE`MuGC@ zK}TEI-qY?ufur~xOH7u&Y6;o&6eQCfp>6WXS%n0*LhQjXZKM5Jm6&F8-Re31uJ^m& z5Y+G~S{Z-3^QSTbpKFt@B!1yHNL?Ppdu4bPSlmS!6RQ3B%ra>UQq!OwACXN73DAm@ znOL~$(zEz6`ojF`vY+OfaBnJxpqIMm6q5f4LG(nCLRJ3{*HEEdab@>=a2$LwMSuPVvzNAOpYxJa6vnQE&a5uU zItNJ?gJyYHkz8#!?4phoICb<{$W_;B$Lb);xtohX^YVxZ?tb$P*sIimm;=H4&}_!*7@-ih|;ktFuOEYGdFG3 z(VM$$?)J?-KH8qo_CMhcM;{;ALCvuV{+iR(e;~0QN<76;x^@Y1gnD{V-$>WbFg9Vb)%`R7AHf;fQ_n%O58faix`pymRsu zOHa?#bs~5a)!BdKCB#|~9J3uk5yrC!O_nmyeRL6^VmMg!+VuauKtIyb4*WB2N0ogGBgGreHgN{+z(~Wofcm5}-v@ve&O!R{2L!S&dQX-R7&2``N z?fJ{r&R2P#E)9poE?PD@T8W-5$bd;Rmv4j@t&k$R{FuL=^#Ak#*U&k>y^32N2>!YQ zQ-N!*ew|Gfupv%(WDRBbEPD0W)i$C z&GjHzpI*G0wcC`MKDE`m^zAXb2&lI$z6@o{2z#Q0R{XHly0t1T&Tnlb+tq);BX)1`ITL%M z`nT1_wW8@4BNIGj`v=J{9W3s(G>2Nb#pT}+Zq=x}Jj55&r=%D^`61!mtji(zMLssv z#DKNU>?Qr_t=KGYn@A(WI5~Fx!&5mBnt zpn|A0MT*j*A_5{Hy|Yn7I;e<94ZR8xDWL}ir1xGUy(a`hLfT#@_xbWZ<2+-WamIPS zz2o_owzBtLd+xc){LkN19kcfy4#}St%wPm&lUMj07pctdcrVr2MvfAh%Q+G6T#LEA z8X@U)J3RGymv9}o?{UEg@+pPKnKUo|EBGG~GS`WJUXN8>k55ke^hS8jIPZ`8gIuFm zE_UCldA}@tH8d&kl>8{k$fLi%h5UUY^vl~hMFPj|_*bRdG0bHLz=OV$#l30kcAJku zITk|Y2&-h#HMZwqxw=~jQ%)qfiZJb$04hcnphV#B)zzSl*TwV756U@g)Xww^a4#k# zUeCXljbVS5lU8Hy!qcw~e(1zJdkMJjlu>oq)21PCzk+CFyxroK)~LDY z;H$)VQbe?y;DlxEX3jC^Q~WEEjc4I%p0CWE8{e3Z7FKo|REh_ay$z^zJ&KCyo5yI+ zzyr8Z8vQfq`228AS6BDmlhBo51rLZnkyJJ#R3t283vIa)_($svp9T7bSzNALE3v3e z*1qrZb*r}sH>naC!s4U!mVhrQwqn=R75U;Cl|5}|+P&7F9?xS|eUAO(P(fDIk;+iL zoEfprefjX$hxWEX((HGbmnB!mD=MqD_A=LI)Q{hu@^5SOK z3E#~q?N@OlU0Mdpf~jINyvL>XyecbJMl&KB>1+md*O89jb$)riyg)0UwDE_YTvl() zgI@kcP{RV!t&{D3C>|t@>kNS@@7Sa>X z{)F9(p3OCKeEu>kB&lcQ>MX*@_&k{%fAG}xFjHh1sH{93yPh2MqR}b@FapmWzAhYm zsEX$=$7v11Q*v;X$iJ(bj`cP7%Gsk_*zS*skAGI;>r(mC1DFx&qITUflg~cTZ~Cv9 ze`saz=CKrgbf{LqX_TCWo!2@O>mh#!akmJliY_@|%OHI=H=(KT(;(M{vcciwhr#V! z-A~}ZCtE0*aXIO)?@TX3?B8xUIm-%ClI8mq2!-DN>E*>`A-95%bLboVG`}3X>xSbu_Zy9F#XBCX>r{1nZghpx50AKUGLzxb zA78&RYrb9;ra+%`q*fNUcIwjx8CV^N$T?K^ z=8h$T(nTGHG7;UQQ@Bzix{uKguuXap7?lqY!d`hx5Z9*4!c!MSeno%e(zM>FzWH7G zU*fBOs@+!e4%#NdJ3n{#@7om;%;6zMs^MR}QJyuWq?V*&7Xy!Aas&?fX%4w~f)x>+ z6+D$1PY>X&g(;OTP5LEkDn?wrXS_x?%nid@>Il=W}{OW4n>UlrOem>J};}W*tfN zEAC%(u>7VC%D)Wc|14d)^oCmQJXdiPq$)*|@DmA-e%2>O+_;~qfm&Q<2BCePZEzft zK-Nr@Tb4_ukAe>ZkE*LreK@NOy9&<*JoUEw;wW~6L%JIw@fR_@?R#1A#{7|K{iC5* zq5>K1p^DN}x}i&j2=uOKC2)e>tG2 zEWc>nwz00a*uU-x;U|syGSF=J)ss5KdLg9o3+in82$~5je55x!;`-hAN64P6BB?!H z;Sja>;~T;T+Pa9hX0`7~J&Kaq>`p&T;2g1;5^IUGyoOgZgKs57Jfd}a7n{y01Tj%w z!~*xZOA-$-W;cbBs3aY{18(zb^Zi>jr72d%OojR%Khkn}>%;aU%9brv(i+NIhd=%N zLFRJexB>s;7TTwj*Oe<7=vlIbinqLjd=0;g8un^eAv!3})yw>8&yct*mv47udV7(2XfCagbm%FRfNCL&Bw=D@OfY+DFTeMChJX&;)ia)+PLu=4@b?jr^Tz-06UC(}A zPpVn4|HN(eMcyVpRI0i0r}qo-0v^ckqqlftU<1*@8`I%8*05D6cX))ZFm?)fqh+3s z0hU1TH&jpa;KnHK91-vxB?mu!+rax~E@ZkB#uy4Y;_Z&Z4nih5ZyaQK)J_Vygi+o; zyWOe9%EOrv*cLCiP6i%KWnZs(R`v2D8%L6sGgYq>ozGcm3P+>_ex5zYpw;M+xEPdu z-2A2&m(;KM{}uhM22PHu|HptQW8r_=Zz4`!%--bql_^{%-3&*21~C|PAnTOn zszHNRM&|U{!~V`M=YXOg@Af#!MxuvbQu2OBQQKYL#Pf}^KyeR2? z6p{b)=f?w-gZ=Bg1*DDP>0CfjFO2q6ktr6Qy9X=hoxRP{Tq6auu>rJ`QkH!eReyrQ z4)`}BPOQ4?=O?y#g>TG+OSkPU;xEqPJ;gY`l>6GI(|2NfU!||w8incLHFt0bguxUjeGUzr!R1rLFZfD^qV)I2n@2Iq#d*2s?j&V&II+C7el( z=I9=tz)QL0HP%%sOm{RM1poXH83(JuV%L~Rm+{x!JRc9!Oof%7 zK~cr|iNUzTqUh+}1Jw-@{rs`34-OC|f|%e{6Y$Vh)3G&DyD%4)2SuMo(NqTn;+bwt z0l3H=aNO2f@cJ8%yj&$+*2LA8nIbIs`H?0Lv2oEw<>>DeEy9nObJE>-ZQ~r{FUXJ1 zC3Oz3W^Q$hJad_-*I!GwalmJd;5}4os_nT91}xlKV)@8I2WP6A3wSxCo;M~Zi)8;C zFl727%}$-ntA9>m#2NQ%=^&^TOJFD4sTCg;D7q~5eDR@G`d!_j*^GEHU8$xA#mJzg4(5zZskOp-`sv*ss;zKH}c`*vu?LScdT8aHgd*Xq;QEc$U zr(ykx%QXuprTC@yT_?|#Fdq+TqM;uVUq9GBET+9Cuo`Hp@?9F4P!6#&w=xLf*QBzC z#2lX18t(X{`DabQ7{QdqunR+nKzB9IZy-4d=}Qi4`|T3$aWYI%HHlkUn{#%7>Q!&2 znO;7%TfGZk$zg+L<8fPynPO%pkIyrlrCw+4jkG!~Z>aiv=TmmdX<4{$M-R@WDQ7SES%en5# z<2z|D95$UjT@qFSZQ@t?sz@eElp>?XnBmpJYdF2M9;K6{f}8mo@q4}Ss66(z!vuVL zJ?&svg6kny8oEm`N4|-B+J)RXG&5yQLvE4nN`2+O+e2%;MHih{G7EchOzfi*s@E7P%wkLo+-bEpxZ8Yf`-J(_ik+tSe+M$6&+?~YR79A z?!{`;G@ZSGv+Q?LmzX^YQr}5qAs!X$MIt`(17*%v1_eLvs+1MjcTRiFOh}>}Hm>=1 z)E6sll6L=~yB|R^=1DaL5`BfN49Zj7^AnHm{dt1(aj6Xq1R5F{qK?oCchPSEA@;rr zHgy+_wMA+DGb>zwNcnEjvXQ=?d8Hj*rTdWvG&pppI%JweHC?yY6E{J!P;tEeB7O6R z65hJ-)agkH<$F%&6-<>!wS?UgnLNu0-ypMJLZ6?k~KWP+ofJr`PR=pORon$Lp z8vByP#JM=tMa+A&x9spEzA(-n=E7yUiGI^W%5PuJ?h@=HU;T=+cXMrth{*k;k2Br5 zd2u6!_tpzADM;^^2ZDFBVd67oCOLQ|`H$IHY#dIsGEJS~&ZG8o_KH4x7!9;p7UkQx zeOprV__zMe&NKJr8A8G*pa&+p zD`*v+Y7J;(46i@x%%3W!yr)#p&*9wagEp;hR|PqRRoR-r1Us{b6xCt*0L_{J zwBdtpR)}bh==6>FZl0IUi}4Jnqp<^bi_C%K(%C4=Lj3Ej!fn`{6u>S>@4YlsnP?Y# zN)xH-DPPQRtzLpCDWPv_V_#12s3xm zs<58OU+D0!iux#1uV=GIbpyZahj0BBEgAk>DthiH8IVMxj~_0|1>LC*-%TaQm*_gJ z|Ku0Mth8BcYcpbV!S|6hXe@xc<8ij%sj>Aye|)r`Gfs;%#))CodLEUtflW$}(IfRn z?vr;dox=m>SGGgs2#G}Z&1&8UKk6Us7?5^_)Qp&^Y$EP%)l0y_*SUTP%POb0WC1<8 zVAkbTJ1Sl+9A9G={*nxMq-MNXb7aZiU%|tiLG7KJZ`fbincto~@0K%83;eZc(?QMr z?MoI? z*^W+FF=?Qp|N8J1RShAPk+?!{3^o_sE{`oZTj~o_rEA-(4ppzYqO6L<5=HbiD)BG0 z42OM-XDFjiJeg9Hf|oFA7fb3#L?0&b+eam!p>H#d^a0~%FX@RS8RtKfH5{kB{b2?8>tXb3Z>i#aUNukUa_eYC z*5;VI?u!B^9BhvI++=^~Nbe-wY1-MsnZK!$CS;VPnRNRdUaTz0#0%N{DA*0~o!!Cy zhR_+P!>Oi_<8-c8n&&%U852mm&Dyq^>(@B!I6=Eq|6}c;h2M{aK3>f;0sNl#xE$>r zGs!XfrMy2tg%sgGBST(&$(bcvb`@1``rxVcl~P-92Tauk<@V05hk5fx-3|CUcKo2$4ybOz_DWVLq$^Xd z)k31;#{)F@3ej08U4~yXASO|3EO$9cKAC!bn*mmmB7@Gt1qnz41Aj7~^2;7|b=2=t zY|yKB+V)In8nQL{wy#^y9WI4(W7WTB`Gl(Jw=N(wV+St9tOsqTH79>m+Pj=-kF?V7 z_4gD{m0LD5Rh+}poBUR)3aIGtH4-(jsBqq_r>X~bcaZ;{Js~t@-5SE1^ysA z9|IDN4uscY)*Zae3=CqR2{)f}J@pd&%tTzz(oPvEqq=3H zkfam!Bx*ns*q;V-UN#ZiZJC^0Y1%3pQdLaoQFRj3>uz{k{yE*Z4EB?lW8(9mD?cr? z4I0d2cM2ZaI3?9Yq?uFMM1-pb7IEz=SbPQu+&$*_dRjLUsTy;Ep^?#1tKFY;4aGI| zietcIS3EAsLF03S@8{U}>#v=2ugcr`#TckH#UUh38Z;zF1HWWSb-5d@y)tT9lh$w8 z`qcZYO}`0Cy-PB+0=&Z|O&#c&TXGqNm;W=6FZ5V#RV#uDOo)&5{W zmDhW~bzXqB-^N@TfCU3PH~Rve0do;#^(cvg*I+nwOl6Z znD%d|i3*Ii34N)@c7j}mczCBL^tfSR%jy-Z*PjQMFNH!9{RehAF6_U1$rXuNBp@d4 zNOYsqFJ<)znaZm4tl1D^dZQAp^R7bNbDu>pyyIAppO=S8&=9M< z3quS`xmUg%^h<8Lip|Crv$l(J2cf+u&zThZLUH=Y~w-ap&ZhdVY`P? zaIf4#77L$ch?NoCKLr)gCBoZ5yd==O*$%mAkqDjc&#S$Xo`E^DyrnV|=JMd$;(k)_ z^dTU7!9bSpX$srYdYUWs2gs5>DNH0#91|_Cs{C~BgrmQNKLkp#u1%=ebVv>RMU=T~ zXvXMj|BYzM(@-UAb30BklpLMA1z_IfCs#}ObUzvFT#)TN{pp*yMBW%;G5#)rYiCV> zMqgCQ1v!xAEk#vXtMA)1d^Sh3ePqj}i-e2WN^Z7xM2C}`h`g3rZnIitE z^B0ZYzrj>cVP@~j(#B;4`n`A&(P<3-j2l6%TVN0?s-Xk>9<-!)UE>};qBmoXxZA%4 zH3e(;1yl^K{7?yR2ylrZzh(bCd6Z7EwIbcyINta3=sK|_bZwMP{UR$7z+;g|0hp>O zCw*0|dq6>Ik??0Td%A0Yz1RMgB#?YZM_v7iq_&pDL08AY%K@{WjSjq+j3FsA9bKib zeq;03^r^3Tck4;c@hh9T?>Yj9ZaWT*{0KMkul{TT1&4!~_g>#=DQ1^v1T%kschvkf zJM<`%4j~v<10IJO$JX;8InZj44Mct&D~{vK+}8~)f0Z(t+&Vfu(on1xYb;&QgGv$~ zdUQYIuXl&kjQ$ffq5KAG`TEjr)9A18%^mr!L5lgS`tM${Lht|-H=uHtQy0Vq}9YSUtQpg z_6u2ST3_vC=}t5}_Sd_g>i6Ll(|lGjLO!*sS~}>rqOG9_l^}QWGv+M^VjoxDfA(t7mb9K{>p*!q$#7n8&k=&Wjv9~JZQitt@m8Z__hv7VqD?@tL3r9wuX`r?@B=-N zJfR-mEY>-kSreWFcvl1rEH$v{2hRb_fat93N}KqBL3FQ@=_CIV@A_G+l}9C4Z62_b z{2gWf0SueZ#2fCTVI$WLk1&9#?lqjQL?Vo0yt*EZS5AykeSK}(gLY^$_+{AWIvg9- z46VCOVUEV75N$05khK#L2nz+TQN6rES>#c!Z$c~oCW8R`3k9!~x_y6se0d2IX7B=- zzJe9+ZK4Iw!yBSDM*_~L%|g~a^nvWso@tNPzP~$GS+b&6visOInH4A-+apXW6E`^X zMB*VF<|_E+WdFQu2|wBvn5udn8deNAnzJ<7UM_RjUH;o3*1zL-t%+XNb{JSAti=8V zdFnN>QG+2mIt8L;Q8q33ZqTk6epxlQ0BN0l*3=nA$ zn>Dp#6}F0+#W{BoG9>XTmODso*UL!QlR|zxnfAmR?JI{rB}wd}p&O)o1hWJs^C~0= zd!*MaFw0c{(f_&#p1N^o2mK9B#5jx7W*y7kLw-6X6Ak0_smiMs2Z(64N;E>Av2&Ts zvu0j-eM=#Fo0_q^Zf#qEmHGXV?gO4!>=ru{4Yby?4v?l`fi}z z`GVZB=^a&2D_HW;L2>j^=S%hdCXp*sO`v2k`HynPtKK}?Fz#OpZM9`8&zr5D1J#pZ zH9Un0)Lna}A399Ty4$dERDAwNHw@CKZ5IoD zo?qrMJUlCZw>&8=d*=DyW6&`Af?Yt8nJdNq zcsH0y0tJVGkew1U7+=B_86R6mGYa2RTtjp;@+xr^B*E15{pj|4)8La)v2N~zA5jf6 zu#9|&`3k>B!4i@`Z}D(H+uR`EI-DvgJ+*Oo^HyCRhnoE_%}~g1Zfgz0n@yJo#vQN% z0K*ozoMDKy%F4X5xm%>gaOu%$PUh|uKBmN9G>P4hov%r_FhF>f%MIc?F48OlJ{fsP z)fd3G_m*j5Lvw~{$DxhI6~rvo?}*x|H%sq=<$-(}XECvU-AefzevrW{Jr&CBR(=K)WI?RP^ZZ@=7e<@3}6H^G5fcaJPcxoO2DP2)Uik#CefPg2n*Z~I*iu|1qNf+8h7#^!(S}_&?5VxGt#hs*xTT6e^tK?@CdU z{offFM9ueYN1IyR8}`ipr=c9kiM_c)dTfCrec??)wH9+wi64QCb84W)1Kw7#6T=D>{Ts#%*vJ`J#T#C z=koL~EOOe*ms~>F&MKsSoAbVKCC%+?9Mf`Jys&jgAB?!IuHg{mW>10$%4qd^Ewn7T zaYJl(hI8ut$9wR65#6f4QwZ%!jK$;qtO&%In*rlcW+@JhZzW7K6Bi=D%+VQK1@h2+ zFA&kH=B2t_yBK>GF0;^bhUz;{mofdSV`c=RTWg6WA2%Bypbd@CMgu#yMe2Fav-M&x>G4Qjom?_d$%PK%8gYPE8_8_#d_ffp+g_X znPS-14b0RHj#~VTuTf6(bZ4xsFL;C%31BSx$5^1t=ot0uH4q@0Zj5CizQ(}2e)V!7 z{o<`BuK_VCV6j!!7XDQuP|WiN+p+FeS2_pqGT_9r{OK(DeGybKA4W4BdAA^Qtx&MA zq@>>|G_zp@sDy2VeB0Cbfu5IN+1@_3j#zeh4|NB47<=e~{*J~~1Tpp6?zsszO>|r! z{?=Tp6)3Xb2n)!+Y-AI7r@Z&GWi5rBGLn0c=%ujH>to zr%=~eCQ0&bGv`x%&NIB)UkxT>Gr>i(uIp=vgb-rYPC!h)&CaGk@J2S$=j2{X;Ce%u z(}%Xv+9pIRV=d5H9%NO}5N*5u<;-7}Fn-e==3fmn-H1K0Q$OXV<^`XGwT+@Pxx^`> zlgN1`(?l)l;I3^kN8B#0_Vx=eLVmI+zE~`zkQSXS*o^?5UkykyZ@!d@!`X2zD#Yf% z`LAB8TjY`(fuz=P`dumbefgeseNQR+n@fAWSQS$RBRd_2-rS8*A$nuL8%Dt?B@@Ze zn=zyGFK=yCoY5@eb`w1i*@D9g)9a@unYHURJ4!P1y^o9G1nuXE3!}R;{y!7m4hwXA zSI}s!W?I3HrAk*RcLJ_PHluEqtSD+0%lje%vSniM=h3kCTCou*-kV2) ztd{hy0ubH`5ds?X4z-ES^8f~4@l@UPWUJjmX}uL>io5U$j`hOH!U{KD6oHJ#OjLep ztFy{r^xhg&9&p-I=`Is0# zeb_}z@Ka$}L$qVXJTs*-AJZPOmI1>hG-nEaamJD&o3-gNzw0$V$%egg4#P=(Q6WI~ z{=L(q3KZ@Lg(mje>@kvU_ql3Iq)&r(zVxpT%r#>FHBq`=D|NTY?ZUtrdE5Rk50@Xs z%lx7pI=?+H{LSY8v`o$s2p4-RRJ-lBUre^@ATVPux9Q)?47MNGvR(~h&wE%QW9)~F zFHT7bmn}+Rdaso3-RIXD_kh20sJ!lLTwCw~cQOEkJ28rhz1=hErCuctnB^=@4$at18c zpg+2O6#5+aovZRL(|P+>cgVtn-8bHZ98bEoKyw)&aTS(KmWumTL>)m=p~@<@iHc6j`)lQTI zI|Z~$TTu45dq?Ja!(WgP-3A{gc~Ak3GY7n#18B3OWLk@emzX6e_#AkJC0P}RS9ZZ` zHP{X)cV1p#h-%?u|I8yq!qo8o?=+ZKb$cykG6eohK&PJB45aa&S``{$emX@wY4lxXxlb=G~^4Px1f>&(VS) z9D$e=q8;g`Jg|&TB2G0uAA-ET$4v%xv%gh3(TK1e-Q{;^*3PKa+d_JLx#hinO_YrcMG1O z0hT-6CM2nBuR$-Dgf0B%rI)9IhZHUc(%HCz4O>jS4P^*!3Ysa7`Y6@I%H8tQb7BT}Bd z5c~2knIk_l;Miioqub}z#O=4g5wv4I^r;&ty+6?ZPubR9nbtd*V?leBV^6v|{$hp$ zFxQ@2={VIJ=RE$&l3C)Ybt%5{qWv0wBoHhuB5;Nx<|O~leQ7tIscggEvZ zPzsz&>7{e>8`zE|YzL{A!V)6AYR8VAzB2uWhQY6<5?^)id|J>w_S1P5 zr{HtyGXu4#RQe!i!=UMB1*Ky1JR_1OMno9)Gle*=;g1^+-hAovnAlp&k%X_RJ<`vN zEvNEoF;F>Fti`r7Au8q~<7+p-P}IMWMLj?6UG0R7&p8>>_j-rezt#S82$0Ve&nUzk zZ@)e662GNh?0+VDIM7X#ONq=o4(U_=Jqo#lPc*b}`n2HFz_djq(T>H+f}uXSAbEInYpN)J$K|7AR32>JRsL%fE!vu-e$9wq=n_B~h_UWtSfw&Qv{X zgSdDMEZ(akIR#sL!1uP1j*)6#A@U2V+G+QUC8%Lf#PH6;YjXoD&7E)=Ce#jFPZ?eV z@9(NWa?rc#-Z#`zNc^T!TRwOx)>c2gszs_aMFZncfiEk>#~+`+5F7kb1RXJlivaq- zniiWG5Gs5nt!RY7J3xM$KJHw6f=gx=`H5-H1gsNaGU67nX2RLI=&?eX`KpJ=P5Aav z;8uZ?t^9sX*G*(!QqQ75-~Y*(0q9SR)};43$SHU; z;MDA$9cc{qW*OWG7pXE$`!V(oZil0V*ci#?hp=gfl5RJ9T38r;r7aH?M(U6OUVEE6TqV*c|a}H~KwSO*l2B9`W zlAgewp%1dlhiVfEQJ}UAQd$))X6_Qe50F&%s6|+qjxNbR0c#;yu#y#~SrOoyhH^>J zhMTh$(?DwtGGjtnkXSJ&081yO>0)N3oO-9cj+|l|;9x8(T|qK!GSzBhY){7}3j19l z!)Pb4dJ*?pC~EtX2X&c-u$eL<2F{=g^?j-JLcu3YCF9X7m^^=HFo1hR(pK0W`6W7sNp zV_WWO+(Ess0v}pecWEu|z2lwDtCLZ;s{Ce9c0QZ8Sh{n>U|S|f$agIPMvN%K?!>gI zVl-SActXv$^_ZYhd7jcu_mLmCf&b`UCrx7o5SWH*sh794`+jj;&Ee~SZtIv{%@%MF zh!hX5dg?r&?(8#N?@oS?>wD}dVNtnl8B!J`stfN#?3AM)RK0m_P9VN3dk*+s3ts}+g<8MC&k6JQ!1W>U0A-YVq;NqF z9g>;D6;iR~3 zxa4vY9NlYf;&m`}lY~_JmB&t|nGbML*c!L7LyI7BqMGH?iBHd2-C*GjQ=je-z5^c? zLLir6mkjK!^<$d>Qj39eq(LTom^lMqFAZx6HavFm%q%$EjqUG=sPvqf{tZMDX2cm~ zXsw+STwvoX6X(||C6`_PC*}RtcJD5d0>$Bx4#5(!N=>5xn+6%}B^dC3@_~1?k2gWn zzr#R%cjeF)L}B=8i3n_>L!mT_M_)3YZ*SJkDh_Z++V)8mg^sU*s?U5PFjo44J{tSi z#1VRYkwGx^R#hwAJ~0dF4txJZ1-7kA-}g#^#pLNqsvqN-yqBg8_G;{B^xQ`~?0-wO zru#vqAIZWp`a8%=Gt0}6CcfWYcX+q_MN3Gzkwfq}!eGV{`t>dhXiYSBZzEj)+D)GO z7*I6GPf_0>A=ZxjL%Sm)TP>5CMCZ`NjZVfg$bAwPkGv;Zh4q%gnO=S|Moh>dKqFO+G?DKu6f_ z8BD>E_wB|;Zm%>y!+eADqLg*cIUfQN1i!d%ectYiy>dXu0?zphloWvg zk#2c9QVyJOdB97rahcgw0AACIsKQPOmc~wfIl7Fo!%IhB5k9kqO#mp1H>q3D#7v|k z>~LUHtOct1a(km4y51Afgb*8QkKy^x%>zp%)pC`n8HFzoaymgbI#vMg#NfplxUAji zF_8UGwrkt}mV>n}OQggS2X&{P3jzyJ9c$7hVFsf29zCffIGKUe4R6Ns-n;?1|XaaEf57L&=@Ff3S63m*O+2WSR{~;HG6gnHcw&peq=!h zX+ZuZz>PvL7>mNdWLM~Z&f1Hl>l-g;A<8CDAqqk9zOhgUnB1I~c4Rn+LDNetd&6~N z)!|(V!O1JSSYINu7jfjgEqoINh-uI~RSXYM@*AG5jHY~%BXaxKH$8&sXg;Y_;pTe8GtybGSCn&Tic9AyuhU#l@OV+P|K3^fAe(6u6qm4;$Bl z>O3oP3)jWiQ4o))po?XB_}hSA?~cj5i-j-}B05cK|L$xDrv9vEZrZkXE8#2#AciwDOAFeps61%vPZu#Gc#(ZWumHh5BRFwWYa z!F##*L@?SdZBqaP1;$QdGwHkwS|&Cs7}YpNTqoqQd$%15S;bz&;Xtf(au!_-vbBIQ z{sXrYEIi(SyAh2?m~FHl+LOK_TxvP>5->xfj-;MauNh~_D}77{NjjHRnY>qo^_HWt z!=u=NM@LyfZouDBG}NF_G^IKm>X*!VLV^U8O7el1u~BQ- z^0p@IiS-wtX@^&lxy-5K&&-p?H^dHtwlnmIUmFYCMUHUfPtL*J1mx^GR=G+#RcQtR zC&S2}4BnG6jiZoNdfSw`DtkI zvo3!Fdc0+>4iE00{xTNFtE&pr6AneMVWBrw-3SDMgiMLIrXj!tM}7^C6$HJWaW5AP z2>WbzD{+0g1n=S$!0_<%=NswU2VcXT9XhLpoxN^UG5O$?pE~*{V1q>W{i)2VNk9eW zM+c$q2Q5noKL@UH)4w^9JA2p3_Tx}@SiKamU4bRZ(Rjdc)6Z19OpaWI?k3J{BOgAT zUB#Y5vnJfDD%;Vvl5vl~_+km`-4YG~*U}MIL==Pk%(Zf zY?4RE!T3?&3R+)5yNz?JHTiDFbo2(pI<;sFmBf*yz44Sf_6x#n>)^2 z=T0x4F2r4J!^{LO?J2R+Z!TJTPCq=({RDcIu9H!3YjZHe%>at(QS(!`e6VviWZgKa z{3G85?g0AQSt5h4mE6}GxMiB;)qyN<%DJB*sP^lzS<>xcZF^VB&_O5i+fl>BO6%(x z8|jXcKKqne0udQjF)TVt-X`XT%o;-y>$uY!$OA?Lz>}Jlg%AZ$7km; znnn+B9^Sy>(r=9_Bw~)E4=7HjwCXoD&!dFc#(__sv<%ZArO4ysfv;7JUZsgvFhisp zC{BiFjWJMuW3SZ`7iXclQ@*zbdcj)(Ivtl~TiyxwbM}@}d$W$MSFQy48X#WWN^J8B z*#IdVw)fyo!gU5OClYdwZoZvL=AJ!+!V!7`VSJie2G) z@XV^RT7>pberf8eGP^)M!CG~mgfzL)wur52ECiAI=31sHu(uI7Xp22L2$Wh=gqyG% zY9dVS)_kNsP`$oH>diBhIou}0K&p@>xkr8IpxsBhe@Yw~wFVXnB*qz??gcj^PVCBN z$VFj)t)e7$)R?H*S%e|r{2H6i?Cm-RBWtd>fafaP++CBZGj2|Kqm_BQGjS-@KcARl zUX4e;g3IgEu1qX_sQWj11Dl^Nmka9VL=!+J_qxgppf<_xMjz<+R6TkAs27tGfjA0s zs7+q>%-(+(a|XAFtO6l6AVD|a3UNZ zEret#73G!(U(KK@5*&x1JUSz|rzDv*`1CGN3G^LjmGXU`UEq71)4J}BL1p$`mqM1} zrlrWE<%VT@(kAXGtTeL|0c0X7!=R=gk4y`S zsYp$HC==oS5p|f3@b2Ssp$a&@S&*liOSXlps+R>g2*Zp2XuSN3Vv8g0^m1M0FlTys zLHTZOQBp)Ap`tr6g>C2e78ZFNn48t_7r5lhoOS^>(Fx{+I9Lx+w}zmO06W;a1!{sa ziLDOFvMdUk1tWnN0UB^gPwBNPpIGK|W*pw-IDM8S_KK>)O2wb624dCNYB!$U7p9>1-u-ki`-=M9glc1wn4UX{7^I)^^9U?tGX9J%Z7$t2JQlO8mR=Sxx zye9i@q%MnP_Sfz>>$4V3QWB@cGC%At{LKL>6BV@cBXnOgOd>^TyoJx*BAkbnH1p|< z{uSi#$!nK1?(4}^s>)ttpz8B~4+76&E8@HR)ekxdakCxx*XcIE|J6v^SJ6GMr#ndg zoyAH@dlkcBBDsRzlI>+Uju=E9R9Bfp>GWIAh!<~hXOymC#fU@T1+CYJ)&CNm^$c0p zQ*sqW$ImfObMH|u^wW@^hmqK$m0lY447X(Ah^{j}RIietagk?WN=bG8@cCS*+WGb~ z%1#fv#ucEy{l$|YA#<_`RAXZ|aUYrxylk$OrVj+3@TG^-a3bNXG5TgQ^X-p-eLW6r z2SDj{2Ff4lWU-4Z|21`##M=6*(!16p!vWM;j!%)Vj#UWi76C>4c!_FyEDBVskvWc3 zJD)Q+avlrY-dDPN?k}=S?JgniCX;g3_g45lIXJm_7ILdfzI@9U#ZSZ~e}hH#+s3@@ zhcAR^(!g6slRCj?0?1gj{K}_T*;Qe-@`_mOj7o@PAfaU+_9vT>%6ZdCg6dxXE-6d0F56tC=$Ggbr zJ(P*hu}wbJkOsAd2S~stsei=gG$Sq)6e&zHc8;1Y9rd`3-gelX?$N!-hsK^s0%=cg z6oO61x9=GUxuX6h#L^#|b7X|vCt5F&xivfJ&m`cWq;BjXI<&xTyeF`HAH6eqWtjNj zr9c!4QvZvscdT6nA0r6d04Jzyg#tq}S(TMFj2-o-d&?XTqOw>9vXfq1Ea`gWp>B7g z(cux?9Ld?jcKk6r`p$uDoQTW&HY`wT!G5w)X z3*^vxA^|u@i@b_N4CSJqvdmd=@uX3F5X5(hwHJK*YNYNZ0SfMDH`ZIb87$P_If(fQ zir>DJIdSJFxE@Tt-v%w5!s?Tw3O^gl6Ttx(2@?|J8F#Esn z-xmgEnm2&v4sKYug1N}?hUYIX*^UX_5rvfKsHj2E93gvb4N9`ZjgOqD{xqVAgJ*=H zXldmhdGPdz2ZNuBLSwI5#p8YhX(9@`wgin~zkz#i;MtF`?B^Tcqms?6_P{c(e3aC~ zFvnSQnrdt#U+En|lrKD~ne}_rob9?9tSN;1Pfmo%sZsI+gS7jRSPG9Nopw!`xXPA# zcVwd9HfA$JkH>r^K@o(16-LBekTNPq{aV`jkAiOGkB6pB)~@rglhZ|pbp4N~XZ28~ zmlSS0rK>2CANUyv_?W_SS5p7=oE)(}@EaUW0v{(4))YjSzZe}i(03b4T}0Y-5p6fJ zA>$pC7|SuoCw|z)Xce(+T)zwJ@jgERu<}dB8R)$3CGroD7PDDR(hJu)gu8J1!) zoE`cNZ0Ynk#X*}+PHl!c@w_PDadfbIlhJVh11qb5n6ZRaE`(TK|L8p7=lwI6V1x1N z0O`0Y$MmWY5L%QJjH1=kK&qnwZxTj6AQWHgwuH0Zcn~i5tdCzqtkfECXSxwl9 z0=nV>whhSK$?XqsBWa)%E@=fnA_BdK>>fVX2T~%@zrnBzefdnd`W50f_`leD�!N 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%0Al>)x=*GY&fk>JwG#g%q(y5PLD{xOrd}6z&`s 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 c%ut_F{fNAdvertising other servers is not allowed.")) + log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") + return + if(prefs.muted & MUTE_LOOC) + to_chat(src, span_danger("You cannot use LOOC (muted).")) + return + if(is_banned_from(ckey, BAN_LOOC)) + to_chat(src, span_warning("You are LOOC banned!")) + return + + msg = emoji_parse(msg) + + mob.log_talk(msg,LOG_OOC, tag="LOOC") + var/list/heard + if(wall_pierce) + heard = get_hearers_in_range(LOOC_RANGE, mob.get_top_level_mob()) + else + heard = get_hearers_in_view(LOOC_RANGE, mob.get_top_level_mob()) + + //so the ai can post looc text + if(istype(mob, /mob/living/silicon/ai)) + var/mob/living/silicon/ai/ai = mob + if(wall_pierce) + heard = get_hearers_in_range(LOOC_RANGE, ai.eyeobj) + else + heard = get_hearers_in_view(LOOC_RANGE, ai.eyeobj) + //so the ai can see looc text + for(var/mob/living/silicon/ai/ai as anything in GLOB.ai_list) + if(ai.client && !(ai in heard) && (ai.eyeobj in heard)) + heard += ai + + var/list/admin_seen = list() + for(var/mob/hearing in heard) + if(!hearing.client) + continue + var/client/hearing_client = hearing.client + if (hearing_client.holder) + admin_seen[hearing_client] = TRUE + continue //they are handled after that + + if (isobserver(hearing)) + continue //Also handled later. + + to_chat(hearing_client, span_looc(span_prefix("LOOC[wall_pierce ? " (WALL PIERCE)" : ""]: [src.mob.name]: [msg]"))) + + for(var/cli in GLOB.admins) + var/client/cli_client = cli + if (admin_seen[cli_client]) + to_chat(cli_client, span_looc("[ADMIN_FLW(usr)] LOOC[wall_pierce ? " (WALL PIERCE)" : ""]: [src.key]/[src.mob.name]: [msg]")) + else if (cli_client.prefs.read_preference(/datum/preference/toggle/see_looc)) + to_chat(cli_client, span_looc("[ADMIN_FLW(usr)] (R)LOOC[wall_pierce ? " (WALL PIERCE)" : ""]: [src.key]/[src.mob.name]: [msg]")) + +#undef LOOC_RANGE + +/mob/proc/get_top_level_mob() + if(ismob(loc) && (loc != src)) + var/mob/M = loc + return M.get_top_level_mob() + return src + +/datum/preference/toggle/see_looc + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + default_value = TRUE + savefile_key = "looc_admin_pref" + savefile_identifier = PREFERENCE_PLAYER diff --git a/modular_bandastation/communication/code/_communication_defines.dm b/modular_bandastation/communication/code/_communication_defines.dm new file mode 100644 index 0000000000000..d64085cee4547 --- /dev/null +++ b/modular_bandastation/communication/code/_communication_defines.dm @@ -0,0 +1,5 @@ +#define LOOC_CHANNEL "LOOC" // LOOC +#define WHIS_CHANNEL "Whis" // Whisper + +#define MUTE_LOOC (1<<6) // TODO ADMIN +#define BAN_LOOC "LOOC" // TODO SQL + ADMIN diff --git a/modular_bandastation/communication/code/whisper.dm b/modular_bandastation/communication/code/whisper.dm new file mode 100644 index 0000000000000..4ab7aa8796c9e --- /dev/null +++ b/modular_bandastation/communication/code/whisper.dm @@ -0,0 +1,25 @@ +/datum/keybinding/client/communication/whisper + hotkey_keys = list("Y") + name = WHIS_CHANNEL + full_name = "IC Whisper" + keybind_signal = COMSIG_KB_CLIENT_WHISPER_DOWN + +/datum/keybinding/client/communication/whisper/down(client/user) + . = ..() + if(.) + return + winset(user, null, "command=[user.tgui_say_create_open_command(WHIS_CHANNEL)]") + return TRUE + +/datum/tgui_say/alter_entry(payload) + /// No OOC leaks + if(payload["channel"] == WHIS_CHANNEL) + return pick(hurt_phrases) + . = ..() + +/datum/tgui_say/delegate_speech(entry, channel) + switch(channel) + if(WHIS_CHANNEL) + client.mob.whisper_verb(entry) + return TRUE + . = ..() diff --git a/modular_bandastation/communication/code/~communication_defines.dm b/modular_bandastation/communication/code/~communication_defines.dm new file mode 100644 index 0000000000000..bbff1a0605e3d --- /dev/null +++ b/modular_bandastation/communication/code/~communication_defines.dm @@ -0,0 +1,2 @@ +#undef LOOC_CHANNEL +#undef WHIS_CHANNEL diff --git a/modular_bandastation/crawl_speed/_crawl_speed.dm b/modular_bandastation/crawl_speed/_crawl_speed.dm new file mode 100644 index 0000000000000..6c356c94c4648 --- /dev/null +++ b/modular_bandastation/crawl_speed/_crawl_speed.dm @@ -0,0 +1,4 @@ +/datum/modpack/crawl_speed + name = "Скорость ползания" + desc = "Ползание накладывает модификатор ходьбы." + author = "larentoun" diff --git a/modular_bandastation/crawl_speed/_crawl_speed.dme b/modular_bandastation/crawl_speed/_crawl_speed.dme new file mode 100644 index 0000000000000..5b9ecc3024886 --- /dev/null +++ b/modular_bandastation/crawl_speed/_crawl_speed.dme @@ -0,0 +1,6 @@ +#include "_crawl_speed.dm" + +#include "code/_crawl_speed_defines.dm" +#include "code/crawl_speed_component.dm" +#include "code/crawl_speed_mob.dm" +#include "code/~crawl_speed_defines.dm" diff --git a/modular_bandastation/crawl_speed/code/_crawl_speed_defines.dm b/modular_bandastation/crawl_speed/code/_crawl_speed_defines.dm new file mode 100644 index 0000000000000..da238b95a1736 --- /dev/null +++ b/modular_bandastation/crawl_speed/code/_crawl_speed_defines.dm @@ -0,0 +1,2 @@ +#define CRAWL_SPEED_TRAIT "crawl-speed-trait" +#define TRAIT_FORCE_WALK_SPEED "focre_walk_speed" diff --git a/modular_bandastation/crawl_speed/code/crawl_speed_component.dm b/modular_bandastation/crawl_speed/code/crawl_speed_component.dm new file mode 100644 index 0000000000000..6dabca69091b5 --- /dev/null +++ b/modular_bandastation/crawl_speed/code/crawl_speed_component.dm @@ -0,0 +1,24 @@ +/datum/component/crawl_speed + dupe_mode = COMPONENT_DUPE_UNIQUE + +/datum/component/crawl_speed/Initialize(...) + . = ..() + if(!iscarbon(parent)) + return COMPONENT_INCOMPATIBLE + on_position_change(parent, LYING_DOWN) + +/datum/component/crawl_speed/RegisterWithParent() + RegisterSignal(parent, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(on_position_change)) + +/datum/component/crawl_speed/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_LIVING_SET_BODY_POSITION) + +/datum/component/crawl_speed/proc/on_position_change(mob/living/carbon/source, new_value) + SIGNAL_HANDLER + if(new_value == STANDING_UP) + REMOVE_TRAIT(source, TRAIT_FORCE_WALK_SPEED, CRAWL_SPEED_TRAIT) + source.update_move_intent_slowdown() + qdel(src) + return + ADD_TRAIT(source, TRAIT_FORCE_WALK_SPEED, CRAWL_SPEED_TRAIT) + source.update_move_intent_slowdown() diff --git a/modular_bandastation/crawl_speed/code/crawl_speed_mob.dm b/modular_bandastation/crawl_speed/code/crawl_speed_mob.dm new file mode 100644 index 0000000000000..11bde114f0242 --- /dev/null +++ b/modular_bandastation/crawl_speed/code/crawl_speed_mob.dm @@ -0,0 +1,12 @@ +/mob/living/update_move_intent_slowdown() + if(HAS_TRAIT(src, TRAIT_FORCE_WALK_SPEED)) + add_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk) + return + . = ..() + +/mob/living/carbon/set_body_position(new_value) + . = ..() + if(isnull(.)) + return + if(new_value == LYING_DOWN) + AddComponent(/datum/component/crawl_speed) diff --git a/modular_bandastation/crawl_speed/code/~crawl_speed_defines.dm b/modular_bandastation/crawl_speed/code/~crawl_speed_defines.dm new file mode 100644 index 0000000000000..fa9dabba2795e --- /dev/null +++ b/modular_bandastation/crawl_speed/code/~crawl_speed_defines.dm @@ -0,0 +1,2 @@ +#undef CRAWL_SPEED_TRAIT +#undef TRAIT_FORCE_WALK_SPEED diff --git a/modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dm b/modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dm new file mode 100644 index 0000000000000..f08fdc6a354ac --- /dev/null +++ b/modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dm @@ -0,0 +1,4 @@ +/datum/modpack/cyrillic_fixes + name = "Поддержка кириллицы" + desc = "Добавляет поддержку кириллицы." + author = "larentoun, Bizzonium" diff --git a/modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dme b/modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dme new file mode 100644 index 0000000000000..5be33b6c61bb1 --- /dev/null +++ b/modular_bandastation/cyrillic_fixes/_cyrillic_fixes.dme @@ -0,0 +1,3 @@ +#include "_cyrillic_fixes.dm" + +#include "code/cyrillic_fixes.dm" diff --git a/modular_bandastation/cyrillic_fixes/code/cyrillic_fixes.dm b/modular_bandastation/cyrillic_fixes/code/cyrillic_fixes.dm new file mode 100644 index 0000000000000..f176cf1925193 --- /dev/null +++ b/modular_bandastation/cyrillic_fixes/code/cyrillic_fixes.dm @@ -0,0 +1,47 @@ +GLOBAL_LIST_INIT(ru_key_to_en_key, list( + "й" = "q", "ц" = "w", "у" = "e", "к" = "r", "е" = "t", "н" = "y", "г" = "u", "ш" = "i", "щ" = "o", "з" = "p", "х" = "\[", "ъ" = "]", + "ф" = "a", "ы" = "s", "в" = "d", "а" = "f", "п" = "g", "р" = "h", "о" = "j", "л" = "k", "д" = "l", "ж" = ";", "э" = "'", + "я" = "z", "ч" = "x", "с" = "c", "м" = "v", "и" = "b", "т" = "n", "ь" = "m", "б" = ",", "ю" = "." +)) + +/proc/convert_ru_key_to_en_key(var/_key) + var/new_key = lowertext(_key) + new_key = GLOB.ru_key_to_en_key[new_key] + if(!new_key) + return _key + return uppertext(new_key) + +#define MAX_HOTKEY_SLOTS 3 + +/datum/preference_middleware/keybindings/set_keybindings(list/params) + var/keybind_name = params["keybind_name"] + + if (isnull(GLOB.keybindings_by_name[keybind_name])) + return FALSE + + var/list/raw_hotkeys = params["hotkeys"] + if (!istype(raw_hotkeys)) + return FALSE + + if (raw_hotkeys.len > MAX_HOTKEY_SLOTS) + return FALSE + + // There's no optimal, easy way to check if something is an array + // and not an object in BYOND, so just sanitize it to make sure. + var/list/hotkeys = list() + for (var/hotkey in raw_hotkeys) + if (!istext(hotkey)) + return FALSE + + // Fairly arbitrary number, it's just so you don't save enormous fake keybinds. + if (length(hotkey) > 100) + return FALSE + + hotkeys += convert_ru_key_to_en_key(hotkey) + + preferences.key_bindings[keybind_name] = hotkeys + preferences.key_bindings_by_key = preferences.get_key_bindings_by_key(preferences.key_bindings) + + return TRUE + +#undef MAX_HOTKEY_SLOTS diff --git a/modular_bandastation/discord/_discord.dm b/modular_bandastation/discord/_discord.dm new file mode 100644 index 0000000000000..c63e63dd94ec0 --- /dev/null +++ b/modular_bandastation/discord/_discord.dm @@ -0,0 +1,4 @@ +/datum/modpack/links_change + name = "Привязка Дискорда." + desc = "Добавление привязки Дискорда." + author = "KOJIT2009" diff --git a/modular_bandastation/discord/_discord.dme b/modular_bandastation/discord/_discord.dme new file mode 100644 index 0000000000000..12327c160c2db --- /dev/null +++ b/modular_bandastation/discord/_discord.dme @@ -0,0 +1,3 @@ +#include "_discord.dm" + +#include "code/discord.dm" diff --git a/modular_bandastation/discord/code/discord.dm b/modular_bandastation/discord/code/discord.dm new file mode 100644 index 0000000000000..1d5e273ce496e --- /dev/null +++ b/modular_bandastation/discord/code/discord.dm @@ -0,0 +1,74 @@ +/datum/config_entry/string/discordurl + default = "https://discord.gg/SS220" + +/client/New() + . = ..() + prefs.discord_id = SSdiscord.lookup_id(ckey) + +/datum/preferences + var/discord_id + +// IF you have linked your account, this will trigger a verify of the user +/client/verify_in_discord() + // Safety checks + if(!CONFIG_GET(flag/sql_enabled)) + to_chat(src, span_warning("This feature requires the SQL backend to be running.")) + return + + // Why this would ever be unset, who knows + var/prefix = CONFIG_GET(string/discordbotcommandprefix) + if(!prefix) + to_chat(src, span_warning("Нет префикса для discord verification")) + + if(!SSdiscord || !SSdiscord.reverify_cache) + to_chat(src, span_warning("Wait for the Discord subsystem to finish initialising")) + return + var/message = "" + // Simple sanity check to prevent a user doing this too often + var/cached_one_time_token = SSdiscord.reverify_cache[usr.ckey] + if(cached_one_time_token && cached_one_time_token != "") + message = "Вы уже сгенерировали токен
[cached_one_time_token]
В канале дом-бота используйте команду
[prefix]привязать" + + + else + // Will generate one if an expired one doesn't exist already, otherwise will grab existing token + var/one_time_token = SSdiscord.get_or_generate_one_time_token_for_ckey(ckey) + SSdiscord.reverify_cache[usr.ckey] = one_time_token + message = "В канале дом-бота используйте команду
[prefix]привязать и введите туда свой токен
[one_time_token]" + + //Now give them a browse window so they can't miss whatever we told them + var/datum/browser/window = new/datum/browser(usr, "discordverification", "Discord verification") + window.set_content("[message]") + window.open() + +//Please use mob or src (not usr) in these procs. This way they can be called in the same fashion as procs. +/client/verb/discord() + set name = "discord" + set desc = "Visit the discord." + set hidden = TRUE + var/discordurl = CONFIG_GET(string/discordurl) + if(discordurl) + if(tgui_alert(src, "This will open the discord in your browser. Are you sure?",, list("Yes","No"))!="Yes") + return + src << link(discordurl) + else + to_chat(src, span_danger("The discord URL is not set in the server configuration.")) + return + +/mob/dead/new_player/Topic(href, href_list[]) + if(src != usr) + return + + if(!client) + return + + if(client.interviewee) + return FALSE + + if(href_list["observe"] || href_list["toggle_ready"] || href_list["late_join"]) + if (!!CONFIG_GET(flag/sql_enabled) && !client.prefs.discord_id) + to_chat(usr, "Вам необходимо привязать дискорд-профиль к аккаунту!") + to_chat(usr, "Нажмите 'Verify Discord Account' во вкладке 'OOC' для получения инструкций.") + return FALSE + + . = ..() diff --git a/modular_bandastation/events/_events.dm b/modular_bandastation/events/_events.dm new file mode 100644 index 0000000000000..69d85f17703ae --- /dev/null +++ b/modular_bandastation/events/_events.dm @@ -0,0 +1,4 @@ +/datum/modpack/events + name = "Ребаланс событий и уровня угрозы." + desc = "Изменяет шансы возникновения некоторых событий, а также изменяет уровень угроз." + author = "larentoun" diff --git a/modular_bandastation/events/_events.dme b/modular_bandastation/events/_events.dme new file mode 100644 index 0000000000000..bd679c7efb47f --- /dev/null +++ b/modular_bandastation/events/_events.dme @@ -0,0 +1,4 @@ +#include "_events.dm" + +#include "code/events.dm" +#include "code/threat.dm" diff --git a/modular_bandastation/events/code/events.dm b/modular_bandastation/events/code/events.dm new file mode 100644 index 0000000000000..78e380baa87e2 --- /dev/null +++ b/modular_bandastation/events/code/events.dm @@ -0,0 +1,2 @@ +/datum/round_event_control/wall_fungus + min_players = 20 diff --git a/modular_bandastation/events/code/threat.dm b/modular_bandastation/events/code/threat.dm new file mode 100644 index 0000000000000..a7a117cee5abd --- /dev/null +++ b/modular_bandastation/events/code/threat.dm @@ -0,0 +1,8 @@ +/datum/game_mode/dynamic/generate_budgets() + if (SSticker.totalPlayersReady < low_pop_player_threshold) + round_start_budget = 0 + initial_round_start_budget = 0 + mid_round_budget = threat_level - 0 + threat_level = 0 + return + . = ..() diff --git a/modular_bandastation/gunhud/_gunhud.dm b/modular_bandastation/gunhud/_gunhud.dm new file mode 100644 index 0000000000000..a93ecac1d2917 --- /dev/null +++ b/modular_bandastation/gunhud/_gunhud.dm @@ -0,0 +1,4 @@ +/datum/modpack/gunhud + name = "Счетчик патронов" + desc = "Добавляет счетчик патронов" + author = "larentoun (modpack), Gandalf2k15 (original)" diff --git a/modular_bandastation/gunhud/_gunhud.dme b/modular_bandastation/gunhud/_gunhud.dme new file mode 100644 index 0000000000000..577291e22b77c --- /dev/null +++ b/modular_bandastation/gunhud/_gunhud.dme @@ -0,0 +1,7 @@ +#include "_gunhud.dm" + +#include "code/_gunhud_defines.dm" +#include "code/gunhud_component.dm" +#include "code/gunhud_hud.dm" +#include "code/gunhud_screen.dm" +#include "code/~gunhud_defines.dm" diff --git a/modular_bandastation/gunhud/code/_gunhud_defines.dm b/modular_bandastation/gunhud/code/_gunhud_defines.dm new file mode 100644 index 0000000000000..5ceb4767dd99a --- /dev/null +++ b/modular_bandastation/gunhud/code/_gunhud_defines.dm @@ -0,0 +1,5 @@ +// Gunhud +#define ui_gunhud "RIGHT-1:28,CENTER-5:9" + +///The gun needs to update the gun hud! +#define COMSIG_UPDATE_GUNHUD "update_gunhud" diff --git a/modular_bandastation/gunhud/code/gunhud_component.dm b/modular_bandastation/gunhud/code/gunhud_component.dm new file mode 100644 index 0000000000000..1df38eb90143a --- /dev/null +++ b/modular_bandastation/gunhud/code/gunhud_component.dm @@ -0,0 +1,150 @@ +/datum/component/gunhud + var/atom/movable/screen/gunhud_screen/hud + +/datum/component/gunhud/Initialize() + . = ..() + if(!istype(parent, /obj/item/gun) && !istype(parent, /obj/item/weldingtool)) + return COMPONENT_INCOMPATIBLE + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(wake_up)) + +/datum/component/gunhud/Destroy() + turn_off() + return ..() + +/datum/component/gunhud/proc/wake_up(datum/source, mob/user, slot) + SIGNAL_HANDLER + + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.is_holding(parent)) + if(H.hud_used) + hud = H.hud_used.gunhud_screen + turn_on() + else + turn_off() + +/datum/component/gunhud/proc/turn_on() + SIGNAL_HANDLER + + RegisterSignals(parent, list(COMSIG_PREQDELETED, COMSIG_ITEM_DROPPED), PROC_REF(turn_off)) + RegisterSignals(parent, list(COMSIG_UPDATE_GUNHUD, COMSIG_GUN_CHAMBER_PROCESSED), PROC_REF(update_hud)) + + hud.turn_on() + update_hud() + +/datum/component/gunhud/proc/turn_off() + SIGNAL_HANDLER + + UnregisterSignal(parent, list(COMSIG_PREQDELETED, COMSIG_ITEM_DROPPED, COMSIG_UPDATE_GUNHUD, COMSIG_GUN_CHAMBER_PROCESSED)) + + if(hud) + hud.turn_off() + hud = null + +/datum/component/gunhud/proc/update_hud() + SIGNAL_HANDLER + if(istype(parent, /obj/item/gun/ballistic)) + var/obj/item/gun/ballistic/pew = parent + hud.maptext = null + hud.icon_state = "backing" + var/backing_color = COLOR_CYAN + if(!pew.magazine) + hud.set_hud(backing_color, "oe", "te", "he", "no_mag") + return + if(!pew.get_ammo()) + hud.set_hud(backing_color, "oe", "te", "he", "empty_flash") + return + + var/indicator + var/rounds = num2text(istype(parent, /obj/item/gun/ballistic/revolver) ? pew.get_ammo(FALSE, FALSE) : pew.get_ammo(TRUE)) // fucking revolvers indeed - do not count empty or chambered rounds for the display HUD + var/oth_o + var/oth_t + var/oth_h + + switch(length(rounds)) + if(1) + oth_o = "o[rounds[1]]" + if(2) + oth_o = "o[rounds[2]]" + oth_t = "t[rounds[1]]" + if(3) + oth_o = "o[rounds[3]]" + oth_t = "t[rounds[2]]" + oth_h = "h[rounds[1]]" + else + oth_o = "o9" + oth_t = "t9" + oth_h = "h9" + hud.set_hud(backing_color, oth_o, oth_t, oth_h, indicator) + + else if(istype(parent, /obj/item/gun/energy)) + var/obj/item/gun/energy/pew = parent + hud.icon_state = "eammo_counter" + hud.cut_overlays() + hud.maptext_x = -12 + var/obj/item/ammo_casing/energy/shot = pew.ammo_type[pew.select] + var/batt_percent = FLOOR(clamp(pew.cell.charge / pew.cell.maxcharge, 0, 1) * 100, 1) + var/shot_cost_percent = FLOOR(clamp(shot.e_cost / pew.cell.maxcharge, 0, 1) * 100, 1) + if(batt_percent > 99 || shot_cost_percent > 99) + hud.maptext_x = -12 + else + hud.maptext_x = -8 + if(!pew.can_shoot()) + hud.icon_state = "eammo_counter_empty" + hud.maptext = span_maptext("

[batt_percent]%
[shot_cost_percent]%
") + return + if(batt_percent <= 25) + hud.maptext = span_maptext("
[batt_percent]%
[shot_cost_percent]%
") + return + hud.maptext = span_maptext("
[batt_percent]%
[shot_cost_percent]%
") + + else if(istype(parent, /obj/item/weldingtool)) + var/obj/item/weldingtool/welder = parent + hud.maptext = null + var/backing_color = COLOR_TAN_ORANGE + hud.icon_state = "backing" + + if(welder.get_fuel() < 1) + hud.set_hud(backing_color, "oe", "te", "he", "empty_flash") + return + + var/indicator + var/fuel = num2text(welder.get_fuel()) + var/oth_o + var/oth_t + var/oth_h + + if(welder.welding) + indicator = "flame_on" + else + indicator = "flame_off" + + fuel = num2text(welder.get_fuel()) + + switch(length(fuel)) + if(1) + oth_o = "o[fuel[1]]" + if(2) + oth_o = "o[fuel[2]]" + oth_t = "t[fuel[1]]" + if(3) + oth_o = "o[fuel[3]]" + oth_t = "t[fuel[2]]" + oth_h = "h[fuel[1]]" + else + oth_o = "o9" + oth_t = "t9" + oth_h = "h9" + hud.set_hud(backing_color, oth_o, oth_t, oth_h, indicator) + +/obj/item/gun/ballistic/Initialize(mapload) + . = ..() + AddComponent(/datum/component/gunhud) + +/obj/item/gun/energy/Initialize(mapload) + . = ..() + AddComponent(/datum/component/gunhud) + +/obj/item/weldingtool/Initialize(mapload) + . = ..() + AddComponent(/datum/component/gunhud) diff --git a/modular_bandastation/gunhud/code/gunhud_hud.dm b/modular_bandastation/gunhud/code/gunhud_hud.dm new file mode 100644 index 0000000000000..bc26c0f0e6d58 --- /dev/null +++ b/modular_bandastation/gunhud/code/gunhud_hud.dm @@ -0,0 +1,7 @@ +/datum/hud + var/atom/movable/screen/gunhud_screen + +/datum/hud/human/New(mob/living/carbon/human/owner) + . = ..() + gunhud_screen = new /atom/movable/screen/gunhud_screen(null, src) + infodisplay += gunhud_screen diff --git a/modular_bandastation/gunhud/code/gunhud_screen.dm b/modular_bandastation/gunhud/code/gunhud_screen.dm new file mode 100644 index 0000000000000..2038d7f6e3cd8 --- /dev/null +++ b/modular_bandastation/gunhud/code/gunhud_screen.dm @@ -0,0 +1,86 @@ +/* +* Customizable ammo hud +*/ + +/* +* This hud is controlled namely by the gunhud component. Generally speaking this is inactive much like all other hud components until it's needed. +* It does not do any calculations of it's own, you must do this externally. +* If you wish to use this hud, use the gunhud component or create another one which interacts with it via the below procs. +* proc/turn_off +* proc/turn_on +* proc/set_hud +* Check the gun_hud.dmi for all available icons you can use. +*/ + +/atom/movable/screen/gunhud_screen + name = "gunhud" + icon = 'modular_bandastation/gunhud/icons/gun_hud.dmi' + icon_state = "backing" + screen_loc = ui_gunhud + invisibility = INVISIBILITY_ABSTRACT + + ///This is the color assigned to the OTH backing, numbers and indicator. + var/backing_color = COLOR_RED + ///This is the "backlight" of the numbers, and only the numbers. Generally you should leave this alone if you aren't making some mutant project. + var/oth_backing = "oth_light" + + //Below are the OTH numbers, these are assigned by oX, tX and hX, x being the number you wish to display(0-9) + ///OTH position X00 + var/oth_o + ///OTH position 0X0 + var/oth_t + ///OTH position 00X + var/oth_h + ///This is the custom indicator sprite that will appear in the box at the bottom of the ammo hud, use this for something like semi/auto toggle on a gun. + var/indicator + +///This proc simply resets the hud to standard and removes it from the players visible hud. +/atom/movable/screen/gunhud_screen/proc/turn_off() + invisibility = INVISIBILITY_ABSTRACT + maptext = null + backing_color = COLOR_RED + oth_backing = "" + oth_o = "" + oth_t = "" + oth_h = "" + indicator = "" + update_appearance() + +///This proc turns the hud on, but does not set it to anything other than the currently set values +/atom/movable/screen/gunhud_screen/proc/turn_on() + invisibility = 0 + +///This is the main proc for altering the hud's appeareance, it controls the setting of the overlays. Use the OTH and below variables to set it accordingly. +/atom/movable/screen/gunhud_screen/proc/set_hud(_backing_color, _oth_o, _oth_t, _oth_h, _indicator, _oth_backing = "oth_light") + backing_color = _backing_color + oth_backing = _oth_backing + oth_o = _oth_o + oth_t = _oth_t + oth_h = _oth_h + indicator = _indicator + + update_appearance() + +/atom/movable/screen/gunhud_screen/update_overlays() + . = ..() + if(oth_backing) + var/mutable_appearance/oth_backing_overlay = mutable_appearance(icon, oth_backing) + oth_backing_overlay.color = backing_color + . += oth_backing_overlay + if(oth_o) + var/mutable_appearance/o_overlay = mutable_appearance(icon, oth_o) + o_overlay.color = backing_color + . += o_overlay + if(oth_t) + var/mutable_appearance/t_overlay = mutable_appearance(icon, oth_t) + t_overlay.color = backing_color + . += t_overlay + if(oth_h) + var/mutable_appearance/h_overlay = mutable_appearance(icon, oth_h) + h_overlay.color = backing_color + . += h_overlay + if(indicator) + var/mutable_appearance/indicator_overlay = mutable_appearance(icon, indicator) + indicator_overlay.color = backing_color + . += indicator_overlay + diff --git a/modular_bandastation/gunhud/code/~gunhud_defines.dm b/modular_bandastation/gunhud/code/~gunhud_defines.dm new file mode 100644 index 0000000000000..6b21ebfe92135 --- /dev/null +++ b/modular_bandastation/gunhud/code/~gunhud_defines.dm @@ -0,0 +1,5 @@ +// Ammo counter +#undef ui_gunhud + +///The gun needs to update the gun hud! +#undef COMSIG_UPDATE_GUNHUD diff --git a/modular_bandastation/gunhud/icons/gun_hud.dmi b/modular_bandastation/gunhud/icons/gun_hud.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6bd861100e2e161b1527aafdae9592c5607d190e GIT binary patch literal 11023 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 MOB_LAYER_SHIFT_MAX) + to_chat(src, span_warning("You cannot increase your layer priority any further.")) + return + + layer += MOB_LAYER_SHIFT_INCREMENT + var/layer_priority = round((layer - MOB_LAYER) * 100, 1) // Just for text feedback + to_chat(src, span_notice("Your layer priority is now [layer_priority].")) + +/mob/living/verb/layershift_down() + set name = "Shift Layer Downwards" + set category = "IC" + + if(incapacitated()) + to_chat(src, span_warning("You can't do that right now!")) + return + + if(layer <= MOB_LAYER_SHIFT_MIN) + to_chat(src, span_warning("You cannot decrease your layer priority any further.")) + return + + layer -= MOB_LAYER_SHIFT_INCREMENT + var/layer_priority = round((layer - MOB_LAYER) * 100, 1) // Just for text feedback + to_chat(src, span_notice("Your layer priority is now [layer_priority].")) diff --git a/modular_bandastation/pixel_shift/code/pixel_shift_component.dm b/modular_bandastation/pixel_shift/code/pixel_shift_component.dm new file mode 100644 index 0000000000000..76d5f6c08e3c9 --- /dev/null +++ b/modular_bandastation/pixel_shift/code/pixel_shift_component.dm @@ -0,0 +1,96 @@ +/datum/component/pixel_shift + dupe_mode = COMPONENT_DUPE_UNIQUE + /// Whether the mob is pixel shifted or not + var/is_shifted = FALSE + /// If we are in the shifting setting. + var/shifting = TRUE + /// Takes the four cardinal direction defines. Any atoms moving into this atom's tile will be allowed to from the added directions. + var/passthroughable = NONE + var/maximum_pixel_shift = 12 + var/passable_shift_threshold = 8 + +/datum/component/pixel_shift/Initialize(...) + . = ..() + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + +/datum/component/pixel_shift/RegisterWithParent() + RegisterSignal(parent, COMSIG_KB_MOB_PIXEL_SHIFT_DOWN, PROC_REF(pixel_shift_down)) + RegisterSignal(parent, COMSIG_KB_MOB_PIXEL_SHIFT_UP, PROC_REF(pixel_shift_up)) + RegisterSignals(parent, list(COMSIG_LIVING_RESET_PULL_OFFSETS, COMSIG_LIVING_SET_PULL_OFFSET, COMSIG_MOVABLE_MOVED, SIGNAL_ADDTRAIT(TRAIT_FLOORED)), PROC_REF(unpixel_shift)) + RegisterSignal(parent, COMSIG_MOB_CLIENT_PRE_LIVING_MOVE, PROC_REF(pre_move_check)) + RegisterSignal(parent, COMSIG_LIVING_CAN_ALLOW_THROUGH, PROC_REF(check_passable)) + +/datum/component/pixel_shift/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_KB_MOB_PIXEL_SHIFT_DOWN) + UnregisterSignal(parent, COMSIG_KB_MOB_PIXEL_SHIFT_UP) + UnregisterSignal(parent, COMSIG_LIVING_RESET_PULL_OFFSETS) + UnregisterSignal(parent, COMSIG_LIVING_SET_PULL_OFFSET) + UnregisterSignal(parent, SIGNAL_ADDTRAIT(TRAIT_FLOORED)) + UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) + UnregisterSignal(parent, COMSIG_MOB_CLIENT_PRE_LIVING_MOVE) + UnregisterSignal(parent, COMSIG_LIVING_CAN_ALLOW_THROUGH) + +/datum/component/pixel_shift/proc/pre_move_check(mob/source, new_loc, direct) + SIGNAL_HANDLER + if(shifting) + pixel_shift(source, direct) + return COMSIG_MOB_CLIENT_BLOCK_PRE_LIVING_MOVE + +/datum/component/pixel_shift/proc/check_passable(mob/source, atom/movable/mover, border_dir) + SIGNAL_HANDLER + // Make sure to not allow projectiles of any kind past where they normally wouldn't. + if(!isprojectile(mover) && !mover.throwing && passthroughable & border_dir) + return COMPONENT_LIVING_PASSABLE + +/datum/component/pixel_shift/proc/pixel_shift_down() + SIGNAL_HANDLER + shifting = TRUE + return COMSIG_KB_ACTIVATED + +/datum/component/pixel_shift/proc/pixel_shift_up() + SIGNAL_HANDLER + shifting = FALSE + +/datum/component/pixel_shift/proc/unpixel_shift() + SIGNAL_HANDLER + passthroughable = NONE + if(is_shifted) + var/mob/living/owner = parent + owner.pixel_x = owner.body_position_pixel_x_offset + owner.base_pixel_x + owner.pixel_y = owner.body_position_pixel_y_offset + owner.base_pixel_y + qdel(src) + +/datum/component/pixel_shift/proc/pixel_shift(mob/source, direct) + var/mob/living/owner = parent + if(HAS_TRAIT(owner, TRAIT_RESTRAINED) || HAS_TRAIT(owner, TRAIT_IMMOBILIZED) || length(owner.pulledby) || owner.stat != CONSCIOUS) + return + passthroughable = NONE + switch(direct) + if(NORTH) + if(owner.pixel_y <= maximum_pixel_shift + owner.base_pixel_y) + owner.pixel_y++ + is_shifted = TRUE + if(EAST) + if(owner.pixel_x <= maximum_pixel_shift + owner.base_pixel_x) + owner.pixel_x++ + is_shifted = TRUE + if(SOUTH) + if(owner.pixel_y >= -maximum_pixel_shift + owner.base_pixel_y) + owner.pixel_y-- + is_shifted = TRUE + if(WEST) + if(owner.pixel_x >= -maximum_pixel_shift + owner.base_pixel_x) + owner.pixel_x-- + is_shifted = TRUE + + // Yes, I know this sets it to true for everything if more than one is matched. + // Movement doesn't check diagonals, and instead just checks EAST or WEST, depending on where you are for those. + if(owner.pixel_y > passable_shift_threshold) + passthroughable |= EAST | SOUTH | WEST + else if(owner.pixel_y < -passable_shift_threshold) + passthroughable |= NORTH | EAST | WEST + if(owner.pixel_x > passable_shift_threshold) + passthroughable |= NORTH | SOUTH | WEST + else if(owner.pixel_x < -passable_shift_threshold) + passthroughable |= NORTH | EAST | SOUTH diff --git a/modular_bandastation/pixel_shift/code/pixel_shift_keybind.dm b/modular_bandastation/pixel_shift/code/pixel_shift_keybind.dm new file mode 100644 index 0000000000000..2375b350a33c7 --- /dev/null +++ b/modular_bandastation/pixel_shift/code/pixel_shift_keybind.dm @@ -0,0 +1,17 @@ +/datum/keybinding/mob/pixel_shift + hotkey_keys = list("B") + name = "pixel_shift" + full_name = "Pixel Shift" + description = "Shift your characters offset." + category = CATEGORY_MOVEMENT + keybind_signal = COMSIG_KB_MOB_PIXEL_SHIFT_DOWN + +/datum/keybinding/mob/pixel_shift/down(client/user) + . = ..() + if(.) + return + user.mob.add_pixel_shift_component() + +/datum/keybinding/mob/pixel_shift/up(client/user) + . = ..() + SEND_SIGNAL(user.mob, COMSIG_KB_MOB_PIXEL_SHIFT_UP) diff --git a/modular_bandastation/pixel_shift/code/pixel_shift_mob.dm b/modular_bandastation/pixel_shift/code/pixel_shift_mob.dm new file mode 100644 index 0000000000000..cd02f441ce038 --- /dev/null +++ b/modular_bandastation/pixel_shift/code/pixel_shift_mob.dm @@ -0,0 +1,5 @@ +/mob/proc/add_pixel_shift_component() + return + +/mob/living/add_pixel_shift_component() + AddComponent(/datum/component/pixel_shift) diff --git a/modular_bandastation/translations/_translations.dm b/modular_bandastation/translations/_translations.dm new file mode 100644 index 0000000000000..7cf16725ef5e0 --- /dev/null +++ b/modular_bandastation/translations/_translations.dm @@ -0,0 +1,4 @@ +/datum/modpack/translations + name = "Переводы" + desc = "Добавляет переводы" + author = "Vallat" diff --git a/modular_bandastation/translations/_translations.dme b/modular_bandastation/translations/_translations.dme new file mode 100644 index 0000000000000..d1949fb31473a --- /dev/null +++ b/modular_bandastation/translations/_translations.dme @@ -0,0 +1,4 @@ +#include "_translations.dm" + +#include "code/moustache.dm" +#include "code/restaurant_customer.dm" diff --git a/modular_bandastation/translations/code/moustache.dm b/modular_bandastation/translations/code/moustache.dm new file mode 100644 index 0000000000000..ff8d1936599b1 --- /dev/null +++ b/modular_bandastation/translations/code/moustache.dm @@ -0,0 +1,37 @@ +/obj/item/clothing/mask/fakemoustache + name = "накладные усы" + desc = "Осторожно: усы накладные." + +/obj/item/clothing/mask/fakemoustache/italian + name = "итальянские усы" + desc = "Изготовлен из настоящих итальянских волосков для усов. Дает владельцу непреодолимое желание дико жестикулировать." + +/obj/item/clothing/mask/fakemoustache/italian/handle_speech(datum/source, list/speech_args) + var/message = speech_args[SPEECH_MESSAGE] + if(message[1] != "*") + var/static/regex/words = new(@"(?[text]"} + + var/list/req_body = list() + req_body["api_token"] = CONFIG_GET(string/tts_token_silero) + req_body["text"] = ssml_text + req_body["sample_rate"] = 24000 + req_body["ssml"] = TRUE + req_body["speaker"] = seed.value + req_body["lang"] = "ru" + req_body["remote_id"] = "[world.port]" + req_body["put_accent"] = TRUE + req_body["put_yo"] = FALSE + req_body["symbol_durs"] = list() + req_body["format"] = "ogg" + req_body["word_ts"] = FALSE + // var/json_body = json_encode(req_body) + // log_debug(json_body) + + var/datum/http_request/request = new() + request.prepare(RUSTG_HTTP_METHOD_POST, api_url, json_encode(req_body), list("content-type" = "application/json")) + spawn(0) + request.begin_async() + UNTIL(request.is_complete()) + var/datum/http_response/response = request.into_response() + proc_callback.Invoke(response) + + return TRUE + +/datum/tts_provider/silero/process_response(datum/http_response/response) + var/data = json_decode(response.body) + // log_debug(response.body) + + if(data["timings"]["003_tts_time"] > 3) + is_throttled = TRUE + throttled_until = world.time + 15 SECONDS + + return data["results"][1]["audio"] + + //var/sha1 = data["original_sha1"] + +/datum/tts_provider/silero/pitch_whisper(text) + return {"[text]"} + +/datum/tts_provider/silero/rate_faster(text) + return {"[text]"} + +/datum/tts_provider/silero/rate_medium(text) + return {"[text]"} diff --git a/modular_bandastation/tts/code/seeds/silero.dm b/modular_bandastation/tts/code/seeds/silero.dm new file mode 100644 index 0000000000000..5f83cb4078cd6 --- /dev/null +++ b/modular_bandastation/tts/code/seeds/silero.dm @@ -0,0 +1,3581 @@ +/datum/tts_seed/silero + provider = /datum/tts_provider/silero + +/datum/tts_seed/silero/arthas + name = "Arthas" + value = "arthas" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/kelthuzad + name = "Kelthuzad" + value = "kelthuzad" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/anubarak + name = "Anubarak" + value = "anubarak" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/thrall + name = "Thrall" + value = "thrall" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/grunt + name = "Grunt" + value = "grunt" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/cairne + name = "Cairne" + value = "cairne" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/rexxar + name = "Rexxar" + value = "rexxar" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/uther + name = "Uther" + value = "uther" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/jaina + name = "Jaina" + value = "jaina" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/kael + name = "Kael" + value = "kael" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/garithos + name = "Garithos" + value = "garithos" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/maiev + name = "Maiev" + value = "maiev" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/naisha + name = "Naisha" + value = "naisha" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/tyrande + name = "Tyrande" + value = "tyrande" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/furion + name = "Furion" + value = "furion" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/illidan + name = "Illidan" + value = "illidan" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/ladyvashj + name = "Ladyvashj" + value = "ladyvashj" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/narrator + name = "Narrator" + value = "narrator" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/medivh + name = "Medivh" + value = "medivh" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/villagerm + name = "Villagerm" + value = "villagerm" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/xenia + name = "Xenia" + value = "xenia" + category = TTS_CATEGORY_OTHER + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/illidan_f + name = "Illidan_f" + value = "illidan_f" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/peon + name = "Peon" + value = "peon" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/chen + name = "Chen" + value = "chen" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/dread_bm + name = "Dread_bm" + value = "dread_bm" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/sylvanas + name = "Sylvanas" + value = "sylvanas" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/priest + name = "Priest" + value = "priest" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/acolyte + name = "Acolyte" + value = "acolyte" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/muradin + name = "Muradin" + value = "muradin" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/dread_t + name = "Dread_t" + value = "dread_t" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/mannoroth + name = "Mannoroth" + value = "mannoroth" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/sorceress + name = "Sorceress" + value = "sorceress" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/peasant + name = "Peasant" + value = "peasant" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/alyx + name = "Alyx" + value = "alyx" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/glados + name = "Glados" + value = "glados" + category = TTS_CATEGORY_PORTAL2 + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/announcer + name = "Announcer" + value = "announcer" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/wheatley + name = "Wheatley" + value = "wheatley" + category = TTS_CATEGORY_PORTAL2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/barney + name = "Barney" + value = "barney" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/raynor + name = "Raynor" + value = "raynor" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/kerrigan + name = "Kerrigan" + value = "kerrigan" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/tusk + name = "Tusk" + value = "tusk" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/earth + name = "Earth" + value = "earth" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/wraith + name = "Wraith" + value = "wraith" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/meepo + name = "Meepo" + value = "meepo" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/lina + name = "Lina" + value = "lina" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/bristle + name = "Bristle" + value = "bristle" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/gyro + name = "Gyro" + value = "gyro" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/treant + name = "Treant" + value = "treant" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/lancer + name = "Lancer" + value = "lancer" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/clockwerk + name = "Clockwerk" + value = "clockwerk" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/batrider + name = "Batrider" + value = "batrider" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/kotl + name = "Kotl" + value = "kotl" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/kunkka + name = "Kunkka" + value = "kunkka" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/pudge + name = "Pudge" + value = "pudge" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/juggernaut + name = "Juggernaut" + value = "juggernaut" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/vort_e2 + name = "Vort_e2" + value = "vort_e2" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/luna + name = "Luna" + value = "luna" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/omni + name = "Omni" + value = "omni" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/sniper + name = "Sniper" + value = "sniper" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/skywrath + name = "Skywrath" + value = "skywrath" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/bounty + name = "Bounty" + value = "bounty" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/huskar + name = "Huskar" + value = "huskar" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/windranger + name = "Windranger" + value = "windranger" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/bloodseeker + name = "Bloodseeker" + value = "bloodseeker" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/templar + name = "Templar" + value = "templar" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/ranger + name = "Ranger" + value = "ranger" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/shaker + name = "Shaker" + value = "shaker" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/mortred + name = "Mortred" + value = "mortred" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/queen + name = "Queen" + value = "queen" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/storm + name = "Storm" + value = "storm" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/tide + name = "Tide" + value = "tide" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/evelynn + name = "Evelynn" + value = "evelynn" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/riki + name = "Riki" + value = "riki" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/antimage + name = "Antimage" + value = "antimage" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/witchdoctor + name = "Witchdoctor" + value = "witchdoctor" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/doom + name = "Doom" + value = "doom" + category = TTS_CATEGORY_DOTA2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/yuumi + name = "Yuumi" + value = "yuumi" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/bandit + name = "Bandit" + value = "bandit" + category = TTS_CATEGORY_STALKER + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/pantheon + name = "pantheon" + value = "pantheon" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tychus + name = "Tychus" + value = "tychus" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/breen + name = "Breen" + value = "breen" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/kleiner + name = "Kleiner" + value = "kleiner" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/father + name = "Father" + value = "father" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/tosh + name = "Tosh" + value = "tosh" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/stetmann + name = "Stetmann" + value = "stetmann" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/hanson + name = "Hanson" + value = "hanson" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/swann + name = "Swann" + value = "swann" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/hill + name = "Hill" + value = "hill" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/gman_e2 + name = "Gman_e2" + value = "gman_e2" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/valerian + name = "Valerian" + value = "valerian" + category = TTS_CATEGORY_STARCRAFT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/gman + name = "Gman" + value = "gman" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/vort + name = "Vort" + value = "vort" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/aradesh + name = "Aradesh" + value = "aradesh" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/dornan + name = "Dornan" + value = "dornan" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/elder + name = "Elder" + value = "elder" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/harris + name = "Harris" + value = "harris" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/cabbot + name = "Cabbot" + value = "cabbot" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/decker + name = "Decker" + value = "decker" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/dick + name = "Dick" + value = "dick" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/officer + name = "Officer" + value = "officer" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/frank + name = "Frank" + value = "frank" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/gizmo + name = "Gizmo" + value = "gizmo" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/hakunin + name = "Hakunin" + value = "hakunin" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/harold + name = "Harold" + value = "harold" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/harry + name = "Harry" + value = "harry" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/jain + name = "Jain" + value = "jain" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/maxson + name = "Maxson" + value = "maxson" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/killian + name = "Killian" + value = "killian" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/laura + name = "Laura" + value = "laura" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/lieutenant + name = "Lieutenant" + value = "lieutenant" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/loxley + name = "Loxley" + value = "loxley" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/lynette + name = "Lynette" + value = "lynette" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/marcus + name = "Marcus" + value = "marcus" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/master + name = "Master" + value = "master" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/morpheus + name = "Morpheus" + value = "morpheus" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/myron + name = "Myron" + value = "myron" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/nicole + name = "Nicole" + value = "nicole" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/overseer + name = "Overseer" + value = "overseer" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/rhombus + name = "Rhombus" + value = "rhombus" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/_set + name = "Set" + value = "set" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/sulik + name = "Sulik" + value = "sulik" + category = TTS_CATEGORY_FALLOUT2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/tandi + name = "Tandi" + value = "tandi" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/vree + name = "Vree" + value = "vree" + category = TTS_CATEGORY_FALLOUT + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/dude + name = "Dude" + value = "dude" + category = TTS_CATEGORY_POSTAL2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/archmage + name = "Archmage" + value = "archmage" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/demoman + name = "Demoman" + value = "demoman" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/engineer + name = "Engineer" + value = "engineer" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/heavy + name = "Heavy" + value = "heavy" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/medic + name = "Medic" + value = "medic" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/scout + name = "Scout" + value = "scout" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/sniper_tf + name = "Sniper_tf" + value = "sniper_tf" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/soldier + name = "Soldier" + value = "soldier" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/spy + name = "Spy" + value = "spy" + category = TTS_CATEGORY_TEAMFORTRESS2 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/admiral + name = "Admiral" + value = "admiral" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/alchemist + name = "Alchemist" + value = "alchemist" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/archimonde + name = "Archimonde" + value = "archimonde" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/breaker + name = "Breaker" + value = "breaker" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/captain + name = "Captain" + value = "captain" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/dryad + name = "Dryad" + value = "dryad" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/elf_eng + name = "Elf_eng" + value = "elf_eng" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/footman + name = "Footman" + value = "footman" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/grom + name = "Grom" + value = "grom" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/hh + name = "Hh" + value = "hh" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/huntress + name = "Huntress" + value = "huntress" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/keeper + name = "Keeper" + value = "keeper" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/naga_m + name = "Naga_m" + value = "naga_m" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/naga_rg + name = "Naga_rg" + value = "naga_rg" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/peasant_w + name = "Peasant_w" + value = "peasant_w" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/rifleman + name = "Rifleman" + value = "rifleman" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/satyr + name = "Satyr" + value = "satyr" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/sylvanas_w + name = "Sylvanas_w" + value = "sylvanas_w" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/voljin + name = "Voljin" + value = "voljin" + category = TTS_CATEGORY_WARCRAFT3 + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/sidorovich + name = "Sidorovich" + value = "sidorovich" + category = TTS_CATEGORY_STALKER + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/p3 + name = "P3" + value = "p3" + category = TTS_CATEGORY_ATOMIC_HEART + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hraz + name = "Hraz" + value = "hraz" + category = TTS_CATEGORY_ATOMIC_HEART + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tereshkova + name = "Tereshkova" + value = "tereshkova" + category = TTS_CATEGORY_ATOMIC_HEART + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/babazina + name = "Babazina" + value = "babazina" + category = TTS_CATEGORY_ATOMIC_HEART + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/darius + name = "Darius" + value = "darius" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/trundle + name = "Trundle" + value = "trundle" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/garen + name = "Garen" + value = "garen" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/kled + name = "Kled" + value = "kled" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/ekko + name = "Ekko" + value = "ekko" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/volibear + name = "Volibear" + value = "volibear" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/samira + name = "Samira" + value = "samira" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/swain + name = "Swain" + value = "swain" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/udyr + name = "Udyr" + value = "udyr" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/dr_mundo + name = "Dr_mundo" + value = "dr_mundo" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/graves + name = "Graves" + value = "graves" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/rakan + name = "Rakan" + value = "rakan" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/renata_glasc + name = "Renata_glasc" + value = "renata_glasc" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/gangplank + name = "Gangplank" + value = "gangplank" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/riven + name = "Riven" + value = "riven" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/katarina + name = "Katarina" + value = "katarina" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ahri + name = "Ahri" + value = "ahri" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ornn + name = "Ornn" + value = "ornn" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/braum + name = "Braum" + value = "braum" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/fizz + name = "Fizz" + value = "fizz" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/draven + name = "Draven" + value = "draven" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/qiyana + name = "Qiyana" + value = "qiyana" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ksante + name = "Ksante" + value = "ksante" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/talon + name = "Talon" + value = "talon" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/shyvana + name = "Shyvana" + value = "shyvana" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zenyatta + name = "Zenyatta" + value = "zenyatta" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/kiriko + name = "Kiriko" + value = "kiriko" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/hanzo + name = "Hanzo" + value = "hanzo" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/roadhog + name = "Roadhog" + value = "roadhog" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/sigma + name = "Sigma" + value = "sigma" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/soldier_76 + name = "Soldier_76" + value = "soldier_76" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/junkrat + name = "Junkrat" + value = "junkrat" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tracer + name = "Tracer" + value = "tracer" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/genji + name = "Genji" + value = "genji" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/echo + name = "Echo" + value = "echo" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/sojourn + name = "Sojourn" + value = "sojourn" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/winston + name = "Winston" + value = "winston" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/reaper + name = "Reaper" + value = "reaper" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/training_robot + name = "Training_robot" + value = "training_robot" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/m_darkelf + name = "M_darkelf" + value = "m_darkelf" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/esbern + name = "Esbern" + value = "esbern" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_argo + name = "M_argo" + value = "m_argo" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_khajiit + name = "M_khajiit" + value = "m_khajiit" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_coward + name = "M_coward" + value = "m_coward" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/farkas + name = "Farkas" + value = "farkas" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_drunk + name = "M_drunk" + value = "m_drunk" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/f_khajiit + name = "F_khajiit" + value = "f_khajiit" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/m_citizen + name = "M_citizen" + value = "m_citizen" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_orc + name = "M_orc" + value = "m_orc" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/odahviing + name = "Odahviing" + value = "odahviing" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/kodlak + name = "Kodlak" + value = "kodlak" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_child + name = "M_child" + value = "m_child" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/emperor + name = "Emperor" + value = "emperor" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hagraven + name = "Hagraven" + value = "hagraven" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/nazir + name = "Nazir" + value = "nazir" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/dremora + name = "Dremora" + value = "dremora" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/alduin + name = "Alduin" + value = "alduin" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/malkoran + name = "Malkoran" + value = "malkoran" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/barbas + name = "Barbas" + value = "barbas" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hermaeus + name = "Hermaeus" + value = "hermaeus" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hakon + name = "Hakon" + value = "hakon" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/rita + name = "Rita" + value = "rita" + category = TTS_CATEGORY_RITA + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/barman + name = "Barman" + value = "barman" + category = TTS_CATEGORY_STALKER + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/bridger2 + name = "Bridger2" + value = "bridger2" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/bridger3 + name = "Bridger3" + value = "bridger3" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/cannibal3 + name = "Cannibal3" + value = "cannibal3" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/bridger1 + name = "Bridger1" + value = "bridger1" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/cannibal2 + name = "Cannibal2" + value = "cannibal2" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/slave1 + name = "Slave1" + value = "slave1" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/slave3 + name = "Slave3" + value = "slave3" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/mira + name = "Mira" + value = "mira" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/valeera + name = "Valeera" + value = "valeera" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/rehgar + name = "Rehgar" + value = "rehgar" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/yrel + name = "Yrel" + value = "yrel" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/volskaya + name = "Volskaya" + value = "volskaya" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/necromancer + name = "Necromancer" + value = "necromancer" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/zuljin + name = "Zuljin" + value = "zuljin" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/samuro + name = "Samuro" + value = "samuro" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tyrael + name = "Tyrael" + value = "tyrael" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/athena + name = "Athena" + value = "athena" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/default + name = "Default" + value = "default" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/chromie + name = "Chromie" + value = "chromie" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/orphea + name = "Orphea" + value = "orphea" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/adjutant + name = "Adjutant" + value = "adjutant" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/vanndara + name = "Vanndara" + value = "vanndara" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/mechatassadar + name = "Mechatassadar" + value = "mechatassadar" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/blackheart + name = "Blackheart" + value = "blackheart" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/olaf + name = "Olaf" + value = "olaf" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/alarak + name = "Alarak" + value = "alarak" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/dva + name = "Dva" + value = "dva" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/toy18 + name = "Toy18" + value = "toy18" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/witchdoctor_h + name = "Witchdoctor_h" + value = "witchdoctor_h" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/lucio + name = "Lucio" + value = "lucio" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/angel + name = "Angel" + value = "angel" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/thunderking + name = "Thunderking" + value = "thunderking" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/dr_boom + name = "Dr_boom" + value = "dr_boom" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hooktusk + name = "Hooktusk" + value = "hooktusk" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/sinclari + name = "Sinclari" + value = "sinclari" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/kazakus + name = "Kazakus" + value = "kazakus" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/ol_toomba + name = "Ol_toomba" + value = "ol_toomba" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/moroes + name = "Moroes" + value = "moroes" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/maiev_hs + name = "Maiev_hs" + value = "maiev_hs" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zentimo + name = "Zentimo" + value = "zentimo" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/rastakhan + name = "Rastakhan" + value = "rastakhan" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/innkeeper + name = "Innkeeper" + value = "innkeeper" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/togwaggle + name = "Togwaggle" + value = "togwaggle" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/biggs + name = "Biggs" + value = "biggs" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/brann + name = "Brann" + value = "brann" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tekahn_boss + name = "Tekahn_boss" + value = "tekahn_boss" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/siamat + name = "Siamat" + value = "siamat" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/omnotron + name = "Omnotron" + value = "omnotron" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/putricide + name = "Putricide" + value = "putricide" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/khadgar + name = "Khadgar" + value = "khadgar" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/zoie + name = "Zoie" + value = "zoie" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/azalina + name = "Azalina" + value = "azalina" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/chu + name = "Chu" + value = "chu" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tekahn + name = "Tekahn" + value = "tekahn" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/sthara + name = "Sthara" + value = "sthara" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/dovo + name = "Dovo" + value = "dovo" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/shaw + name = "Shaw" + value = "shaw" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/greymane + name = "Greymane" + value = "greymane" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/willow + name = "Willow" + value = "willow" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/haro + name = "Haro" + value = "haro" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hagatha + name = "Hagatha" + value = "hagatha" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/reno + name = "Reno" + value = "reno" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/ozara + name = "Ozara" + value = "ozara" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/loti + name = "Loti" + value = "loti" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/tarkus + name = "Tarkus" + value = "tarkus" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/voone + name = "Voone" + value = "voone" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tala + name = "Tala" + value = "tala" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/edra + name = "Edra" + value = "edra" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/myra + name = "Myra" + value = "myra" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/smiggs + name = "Smiggs" + value = "smiggs" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/timothy + name = "Timothy" + value = "timothy" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/wendy + name = "Wendy" + value = "wendy" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/hannigan + name = "Hannigan" + value = "hannigan" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/vargoth + name = "Vargoth" + value = "vargoth" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/jolene + name = "Jolene" + value = "jolene" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/kyriss + name = "Kyriss" + value = "kyriss" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/saurfang + name = "Saurfang" + value = "saurfang" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/kizi + name = "Kizi" + value = "kizi" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/slate + name = "Slate" + value = "slate" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hesutu + name = "Hesutu" + value = "hesutu" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/hancho + name = "Hancho" + value = "hancho" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/gnomenapper + name = "Gnomenapper" + value = "gnomenapper" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/valdera + name = "Valdera" + value = "valdera" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/disidra + name = "Disidra" + value = "disidra" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/omu + name = "Omu" + value = "omu" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/floop + name = "Floop" + value = "floop" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/belloc + name = "Belloc" + value = "belloc" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/xurios + name = "Xurios" + value = "xurios" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/wagtoggle + name = "Wagtoggle" + value = "wagtoggle" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/belnaara + name = "Belnaara" + value = "belnaara" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/lilayell + name = "Lilayell" + value = "lilayell" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/candlebeard + name = "Candlebeard" + value = "candlebeard" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/awilo + name = "Awilo" + value = "awilo" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/marei + name = "Marei" + value = "marei" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/applebough + name = "Applebough" + value = "applebough" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/lazul + name = "Lazul" + value = "lazul" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/arwyn + name = "Arwyn" + value = "arwyn" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/glowtron + name = "Glowtron" + value = "glowtron" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/cardish + name = "Cardish" + value = "cardish" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/robold + name = "Robold" + value = "robold" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/malfurion + name = "Malfurion" + value = "malfurion" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/deathwhisper + name = "Deathwhisper" + value = "deathwhisper" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/janna + name = "Janna" + value = "janna" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/cassiopeia + name = "Cassiopeia" + value = "cassiopeia" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/taliyah + name = "Taliyah" + value = "taliyah" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/neeko + name = "Neeko" + value = "neeko" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/taric + name = "Taric" + value = "taric" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/akshan + name = "Akshan" + value = "akshan" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tristana + name = "Tristana" + value = "tristana" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/sylas + name = "Sylas" + value = "sylas" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/sejuani + name = "Sejuani" + value = "sejuani" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/anivia + name = "Anivia" + value = "anivia" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/vayne + name = "Vayne" + value = "vayne" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/karma + name = "Karma" + value = "karma" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/nilah + name = "Nilah" + value = "nilah" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/olaf_lol + name = "Olaf_lol" + value = "olaf_lol" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/quinn + name = "Quinn" + value = "quinn" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/lissandra + name = "Lissandra" + value = "lissandra" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/hecarim + name = "Hecarim" + value = "hecarim" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/vi + name = "Vi" + value = "vi" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zyra + name = "Zyra" + value = "zyra" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zac + name = "Zac" + value = "zac" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/moira + name = "Moira" + value = "moira" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ashe + name = "Ashe" + value = "ashe" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/brigitte + name = "Brigitte" + value = "brigitte" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/mercy + name = "Mercy" + value = "mercy" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/lucio_ov + name = "Lucio_ov" + value = "lucio_ov" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/dva_ov + name = "Dva_ov" + value = "dva_ov" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/symmetra + name = "Symmetra" + value = "symmetra" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zarya + name = "Zarya" + value = "zarya" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/cassidy + name = "Cassidy" + value = "cassidy" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/baptiste + name = "Baptiste" + value = "baptiste" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/junker_queen + name = "Junker_queen" + value = "junker_queen" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/doomfist + name = "Doomfist" + value = "doomfist" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/pharah + name = "Pharah" + value = "pharah" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/sombra + name = "Sombra" + value = "sombra" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ana + name = "Ana" + value = "ana" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/widowmaker + name = "Widowmaker" + value = "widowmaker" + category = TTS_CATEGORY_OVERWATCH + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/harbor + name = "Harbor" + value = "harbor" + category = TTS_CATEGORY_VALORANT + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/sage + name = "Sage" + value = "sage" + category = TTS_CATEGORY_VALORANT + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/brimstone + name = "Brimstone" + value = "brimstone" + category = TTS_CATEGORY_VALORANT + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/sova + name = "Sova" + value = "sova" + category = TTS_CATEGORY_VALORANT + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/f_shrill + name = "F_shrill" + value = "f_shrill" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/m_haughty + name = "M_haughty" + value = "m_haughty" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_soldier + name = "M_soldier" + value = "m_soldier" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/sven + name = "Sven" + value = "sven" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/f_sultry + name = "F_sultry" + value = "f_sultry" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/eorlund + name = "Eorlund" + value = "eorlund" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_commander + name = "M_commander" + value = "m_commander" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/f_nord + name = "F_nord" + value = "f_nord" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/lydia + name = "Lydia" + value = "lydia" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/motierre + name = "Motierre" + value = "motierre" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/f_haughty + name = "F_haughty" + value = "f_haughty" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/tullius + name = "Tullius" + value = "tullius" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/festus + name = "Festus" + value = "festus" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_nord + name = "M_nord" + value = "m_nord" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/olava + name = "Olava" + value = "olava" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/f_commander + name = "F_commander" + value = "f_commander" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/hadvar + name = "Hadvar" + value = "hadvar" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/f_argo + name = "F_argo" + value = "f_argo" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/arngeir + name = "Arngeir" + value = "arngeir" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/nazeem + name = "Nazeem" + value = "nazeem" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/falion + name = "Falion" + value = "falion" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/f_coward + name = "F_coward" + value = "f_coward" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/m_guard + name = "M_guard" + value = "m_guard" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_commoner + name = "M_commoner" + value = "m_commoner" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/elisif + name = "Elisif" + value = "elisif" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/paarthurnax + name = "Paarthurnax" + value = "paarthurnax" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/grelka + name = "Grelka" + value = "grelka" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/f_commoner + name = "F_commoner" + value = "f_commoner" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ebony + name = "Ebony" + value = "ebony" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/ulfric + name = "Ulfric" + value = "ulfric" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/farengar + name = "Farengar" + value = "farengar" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/astrid + name = "Astrid" + value = "astrid" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/brynjolf + name = "Brynjolf" + value = "brynjolf" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/maven + name = "Maven" + value = "maven" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/f_child + name = "F_child" + value = "f_child" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/f_orc + name = "F_orc" + value = "f_orc" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/delphine + name = "Delphine" + value = "delphine" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/f_darkelf + name = "F_darkelf" + value = "f_darkelf" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/grelod + name = "Grelod" + value = "grelod" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/tolfdir + name = "Tolfdir" + value = "tolfdir" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_bandit + name = "M_bandit" + value = "m_bandit" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/m_forsworn + name = "M_forsworn" + value = "m_forsworn" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/karliah + name = "Karliah" + value = "karliah" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/felldir + name = "Felldir" + value = "felldir" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/ancano + name = "Ancano" + value = "ancano" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/mercer + name = "Mercer" + value = "mercer" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/vex + name = "Vex" + value = "vex" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/mirabelle + name = "Mirabelle" + value = "mirabelle" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/aventus + name = "Aventus" + value = "aventus" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/tsun + name = "Tsun" + value = "tsun" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/elenwen + name = "Elenwen" + value = "elenwen" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/gormlaith + name = "Gormlaith" + value = "gormlaith" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/dragon + name = "Dragon" + value = "dragon" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/overwatch + name = "Overwatch" + value = "overwatch" + category = TTS_CATEGORY_HALFLIFE2 + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zak + name = "Zak" + value = "zak" + category = TTS_CATEGORY_EVILISLANDS + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/merc2 + name = "Merc2" + value = "merc2" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/forest1 + name = "Forest1" + value = "forest1" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/bandit3 + name = "Bandit3" + value = "bandit3" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/forest2 + name = "Forest2" + value = "forest2" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/merc1 + name = "Merc1" + value = "merc1" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/bandit2 + name = "Bandit2" + value = "bandit2" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/forest3 + name = "Forest3" + value = "forest3" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tribal3 + name = "Tribal3" + value = "tribal3" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/slave2 + name = "Slave2" + value = "slave2" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/miller + name = "Miller" + value = "miller" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/krest + name = "Krest" + value = "krest" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tribal1 + name = "Tribal1" + value = "tribal1" + category = TTS_CATEGORY_METRO + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/abathur + name = "Abathur" + value = "abathur" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/erik + name = "Erik" + value = "erik" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/varian + name = "Varian" + value = "varian" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/anduin + name = "Anduin" + value = "anduin" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/deckard + name = "Deckard" + value = "deckard" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/malfurion_h + name = "Malfurion_h" + value = "malfurion_h" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/demonhunter + name = "Demonhunter" + value = "demonhunter" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/demon + name = "Demon" + value = "demon" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/kerrigan_h + name = "Kerrigan_h" + value = "kerrigan_h" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ladyofthorns + name = "Ladyofthorns" + value = "ladyofthorns" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/barbarian + name = "Barbarian" + value = "barbarian" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/crusader + name = "Crusader" + value = "crusader" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/whitemane + name = "Whitemane" + value = "whitemane" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/nexushunter + name = "Nexushunter" + value = "nexushunter" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/greymane_h + name = "Greymane_h" + value = "greymane_h" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/gardensdayannouncer + name = "Gardensdayannouncer" + value = "gardensdayannouncer" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/drekthar + name = "Drekthar" + value = "drekthar" + category = TTS_CATEGORY_HEROESOFTHESTORM + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/squeamlish + name = "Squeamlish" + value = "squeamlish" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/dagg + name = "Dagg" + value = "dagg" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/brukan + name = "Brukan" + value = "brukan" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/bolan + name = "Bolan" + value = "bolan" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/goya + name = "Goya" + value = "goya" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/stargazer + name = "Stargazer" + value = "stargazer" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/eudora + name = "Eudora" + value = "eudora" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/mozaki + name = "Mozaki" + value = "mozaki" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/katrana + name = "Katrana" + value = "katrana" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/valeera_hs + name = "Valeera_hs" + value = "valeera_hs" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/malacrass + name = "Malacrass" + value = "malacrass" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/elise + name = "Elise" + value = "elise" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/flark + name = "Flark" + value = "flark" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/rhogi + name = "Rhogi" + value = "rhogi" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/gallywix + name = "Gallywix" + value = "gallywix" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/talanji + name = "Talanji" + value = "talanji" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/dr_sezavo + name = "Dr_sezavo" + value = "dr_sezavo" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/tierra + name = "Tierra" + value = "tierra" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zenda + name = "Zenda" + value = "zenda" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/baechao + name = "Baechao" + value = "baechao" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/lilian + name = "Lilian" + value = "lilian" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/aranna + name = "Aranna" + value = "aranna" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/oshi + name = "Oshi" + value = "oshi" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/norroa + name = "Norroa" + value = "norroa" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/turalyon + name = "Turalyon" + value = "turalyon" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/aki + name = "Aki" + value = "aki" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/lunara + name = "Lunara" + value = "lunara" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/bob + name = "Bob" + value = "bob" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/illucia + name = "Illucia" + value = "illucia" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/yrel_hs + name = "Yrel_hs" + value = "yrel_hs" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/fireheart + name = "Fireheart" + value = "fireheart" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/lanathel + name = "Lanathel" + value = "lanathel" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/tyrande_hs + name = "Tyrande_hs" + value = "tyrande_hs" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/draemus + name = "Draemus" + value = "draemus" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/rasil + name = "Rasil" + value = "rasil" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/kalec + name = "Kalec" + value = "kalec" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/karastamper + name = "Karastamper" + value = "karastamper" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/george + name = "George" + value = "george" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/pollark + name = "Pollark" + value = "pollark" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/stelina + name = "Stelina" + value = "stelina" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/kasa + name = "Kasa" + value = "kasa" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/whirt + name = "Whirt" + value = "whirt" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/anarii + name = "Anarii" + value = "anarii" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/ilza + name = "Ilza" + value = "ilza" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/avozu + name = "Avozu" + value = "avozu" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/jeklik + name = "Jeklik" + value = "jeklik" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/zibb + name = "Zibb" + value = "zibb" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/thrud + name = "Thrud" + value = "thrud" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_MALE + donator_level = 0 + +/datum/tts_seed/silero/isiset + name = "Isiset" + value = "isiset" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_FEMALE + donator_level = 0 + +/datum/tts_seed/silero/akazamzarak + name = "Akazamzarak" + value = "akazamzarak" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/arha + name = "Arha" + value = "arha" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + +/datum/tts_seed/silero/aidar + name = "Aidar" + value = "aidar" + category = TTS_CATEGORY_OTHER + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/baya + name = "Baya" + value = "baya" + category = TTS_CATEGORY_OTHER + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/kseniya + name = "Kseniya" + value = "kseniya" + category = TTS_CATEGORY_OTHER + gender = TTS_GENDER_FEMALE + +/datum/tts_seed/silero/eugene + name = "Eugene" + value = "eugene" + category = TTS_CATEGORY_OTHER + gender = TTS_GENDER_MALE + +/datum/tts_seed/silero/senna + name = "Senna" + value = "senna" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/nunu + name = "Nunu" + value = "nunu" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/ryze + name = "Ryze" + value = "ryze" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/yone + name = "Yone" + value = "yone" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/sett + name = "Sett" + value = "sett" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/camille + name = "Camille" + value = "camille" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/lee_sin + name = "Lee_sin" + value = "lee_sin" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/kayle + name = "Kayle" + value = "kayle" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/azir + name = "Azir" + value = "azir" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/tryndamere + name = "Tryndamere" + value = "tryndamere" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/nami + name = "Nami" + value = "nami" + category = TTS_CATEGORY_LOL + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/delvin + name = "Delvin" + value = "delvin" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/cicero + name = "Cicero" + value = "cicero" + category = TTS_CATEGORY_SKYRIM + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/linzi + name = "Linzi" + value = "linzi" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/cache + name = "Cache" + value = "cache" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/cravitz + name = "Cravitz" + value = "cravitz" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/lady_vashj + name = "Lady_vashj" + value = "lady_vashj" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/dendrologist + name = "Dendrologist" + value = "dendrologist" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/jythiros + name = "Jythiros" + value = "jythiros" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/draan + name = "Draan" + value = "draan" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/rikkar + name = "Rikkar" + value = "rikkar" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/splintergraft + name = "Splintergraft" + value = "splintergraft" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/malchezaar + name = "Malchezaar" + value = "malchezaar" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/taskmaster + name = "Taskmaster" + value = "taskmaster" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/oxana + name = "Oxana" + value = "oxana" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/inara + name = "Inara" + value = "inara" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/ivan + name = "Ivan" + value = "ivan" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/kazamon + name = "Kazamon" + value = "kazamon" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/albin + name = "Albin" + value = "albin" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/ammunae + name = "Ammunae" + value = "ammunae" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/illidara + name = "Illidara" + value = "illidara" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 + +/datum/tts_seed/silero/nici + name = "Nici" + value = "nici" + category = TTS_CATEGORY_HEARTHSTONE + gender = TTS_GENDER_ANY + donator_level = 0 diff --git a/modular_bandastation/tts/code/tts_configuration.dm b/modular_bandastation/tts/code/tts_configuration.dm new file mode 100644 index 0000000000000..7f8d628e23674 --- /dev/null +++ b/modular_bandastation/tts/code/tts_configuration.dm @@ -0,0 +1,14 @@ +/datum/config_entry/flag/tts_enabled + default = FALSE + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +/datum/config_entry/string/tts_token_silero + default = "" + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +/datum/config_entry/flag/tts_cache + default = FALSE + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +/datum/config_entry/string/ffmpeg_cpuaffinity + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN diff --git a/modular_bandastation/tts/code/tts_mob_Hear.dm b/modular_bandastation/tts/code/tts_mob_Hear.dm new file mode 100644 index 0000000000000..ded3d492a8457 --- /dev/null +++ b/modular_bandastation/tts/code/tts_mob_Hear.dm @@ -0,0 +1,67 @@ +/mob/proc/Hear_tts(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods, message_range) + if(!SStts220.is_enabled) + return + + if(!isliving(src) && !isobserver(src)) + return + + if(!client) + return + + if(HAS_TRAIT(speaker, TRAIT_SIGN_LANG)) + return + + if(!message_language) + return + + var/is_custom_say_emote_without_message = (MODE_CUSTOM_SAY_ERASE_INPUT in message_mods) + if(is_custom_say_emote_without_message) + return + + if(stat == UNCONSCIOUS || stat == HARD_CRIT) + return + + if(!radio_freq && !LOCAL_TTS_ENABLED(src) || radio_freq && !RADIO_TTS_ENABLED(src)) + return + + var/atom/movable/virtualspeaker/virtual_speaker = speaker + var/atom/movable/real_speaker = istype(virtual_speaker) ? virtual_speaker.source : speaker + + var/self_radio = radio_freq && src == real_speaker + if(self_radio) + return + + var/is_speaker_whispering = (WHISPER_MODE in message_mods) + var/can_hear_whisper = get_dist(speaker, src) <= message_range || isobserver(src) + if(is_speaker_whispering && !can_hear_whisper) + return + + var/effect = issilicon(real_speaker) ? SOUND_EFFECT_ROBOT : SOUND_EFFECT_NONE + if(radio_freq) + effect = issilicon(real_speaker) ? SOUND_EFFECT_RADIO_ROBOT : SOUND_EFFECT_RADIO + else if(SPAN_COMMAND in spans) + effect = issilicon(real_speaker) ? SOUND_EFFECT_MEGAPHONE_ROBOT : SOUND_EFFECT_MEGAPHONE + + var/traits = TTS_TRAIT_RATE_MEDIUM + if(is_speaker_whispering) + traits &= TTS_TRAIT_PITCH_WHISPER + + var/message_tts = translate_language(language = message_language, raw_message = raw_message) + + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(tts_cast), speaker, src, message_tts, real_speaker.tts_seed, !radio_freq, effect, traits) + +/mob/living/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods, message_range) + var/static/regex/plus_sign_replace = new(@"\+", "g") + var/plussless_message = plus_sign_replace.Replace(raw_message, "") + + . = ..(message, speaker, message_language, plussless_message, radio_freq, spans, message_mods, message_range) + + Hear_tts(message, speaker, message_language, raw_message, radio_freq, spans, message_mods, message_range) + +/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods, message_range) + var/static/regex/plus_sign_replace = new(@"\+", "g") + var/plussless_message = plus_sign_replace.Replace(raw_message, "") + + . = ..(message, speaker, message_language, plussless_message, radio_freq, spans, message_mods, message_range) + + Hear_tts(message, speaker, message_language, raw_message, radio_freq, spans, message_mods, message_range) diff --git a/modular_bandastation/tts/code/tts_numbers.dm b/modular_bandastation/tts/code/tts_numbers.dm new file mode 100644 index 0000000000000..c330ce48a285a --- /dev/null +++ b/modular_bandastation/tts/code/tts_numbers.dm @@ -0,0 +1,170 @@ +/proc/num_in_words(n) + return get_num_in_words(n) + +/proc/dec_in_words(n) + return get_num_in_words(n, TRUE) + +/proc/get_num_in_words(n, decimal = FALSE) + var/static/datum/number/num + if(!num) + num = new /datum/number + + if(num.cache["[n]"]) + return num.cache["[n]"] + + var/result + if(decimal) + result = num.decimal2words(n) + else + result = num.int2words(n) + + result = " [result] " + num.cache["[n]"] = result + return result + +/datum/number + var/static/list/units = list( + "ноль", + + list("один", "одна"), + list("два", "две"), + + "три", "четыре", "пять", + "шесть", "семь", "восемь", "девять" + ) + + var/static/list/teens = list( + "десять", "одиннадцать", + "двенадцать", "тринадцать", + "четырнадцать", "пятнадцать", + "шестнадцать", "семнадцать", + "восемнадцать", "девятнадцать" + ) + + var/static/list/tens = list( + "десять", + "двадцать", "тридцать", + "сорок", "пятьдесят", + "шестьдесят", "семьдесят", + "восемьдесят", "девяносто" + ) + + var/static/list/hundreds = list( + "сто", "двести", + "триста", "четыреста", + "пятьсот", "шестьсот", + "семьсот", "восемьсот", + "девятьсот" + ) + + var/static/list/orders = list( + list(list("тысяча", "тысячи", "тысяч"), "f"), + list(list("миллион", "миллиона", "миллионов"), "m"), + list(list("миллиард", "миллиарда", "миллиардов"), "m"), + list(list("триллион", "триллиона", "триллионов"), "m"), + list(list("квадриллион", "квадриллиона", "квадриллионов"), "m"), + list(list("квинтиллион", "квинтиллиона", "квинтиллионов"), "m"), + ) + + var/static/list/decimal_int_units = list(list("целая", "целых", "целых"), "f") + + var/static/list/decimal_exp_units = list( + list(list("десятая", "десятых", "десятых"), "f"), + list(list("сотая", "сотых", "сотых"), "f"), + list(list("тысячная", "тысячных", "тысячных"), "f"), + ) + + var/static/minus = "минус" + + var/static/cache = list() + +/datum/number/proc/thousand(rest, sex) +// """Converts numbers from 19 to 999""" + var/prev = 0 + var/plural = 3 + var/list/name = list() + var/use_teens = (rest % 100 >= 10) && (rest % 100 <= 19) + var/list/data = list() + + if(!use_teens) + data = list( list(units, 10), list(tens, 100), list(hundreds, 1000) ) + else + data = list( list(teens, 10), list(hundreds, 1000) ) + for(var/list in data) + + var/names = list[1] + var/x = list[2] + + var/cur = round(((rest - prev) % x) * 10 / x) + 1 + prev = rest % x + + if(x == 10 && use_teens) + plural = 3 + name += teens[cur] + else if(cur == 1) + continue + else if(x == 10) + var/name_ = names[cur] + if(islist(name_)) + name_ = name_[sex == "m" ? 1 : 2] + name += name_ + if(cur >= 3 && cur <= 5) + plural = 2 + else if(cur == 2) + plural = 1 + else + plural = 3 + else + name += names[cur-1] + + return list(plural, name) + +/datum/number/proc/int2words(textnum, list/main_units = list(list("", "", ""), "m")) +// http://ru.wikipedia.org/wiki/Gettext#.D0.9C.D0.BD.D0.BE.D0.B6.D0.B5.D1.81.D1.82.D0.B2.D0.B5.D0.BD.D0.BD.D1.8B.D0.B5_.D1.87.D0.B8.D1.81.D0.BB.D0.B0_2 + + var/list/_orders = list(main_units) + orders + + var/num = text2num(textnum) + if(num == 0) + return trim(jointext(list(units[1], _orders[1][1][3]), " ")) + + var/negative = FALSE + if(num < 0) + negative = TRUE + textnum = copytext_char(textnum, 2, 0) + + var/ord = 1 + var/list/name = list() + + while(textnum) + var/next_thousand = text2num(copytext_char(textnum, -3, 0)) + var/list/thousand_result = thousand(next_thousand, _orders[ord][2]) + var/plural = thousand_result[1] + var/list/nme = thousand_result[2] + + if(length(nme) || ord == 1) + name += _orders[ord][1][plural] + + name += nme + textnum = copytext_char(textnum, 1, -3) + ord += 1 + + if(negative) + name += minus + + var/temp_name = name + name = list() + for(var/i = length_char(temp_name), i >= 1, i--) + name += temp_name[i] + + var/result = trim(jointext(name, " ")) + return result + +/datum/number/proc/decimal2words(textvalue, places = 3) + var/pieces = splittext_char(textvalue, ".") + var/integral = pieces[1] + var/exp = copytext_char(pieces[2], 1, places + 1) + var/list/exp_units = decimal_exp_units[length_char(exp)] + + var/result = trim("[int2words(integral, decimal_int_units)] [int2words(exp, exp_units)]") + return result diff --git a/modular_bandastation/tts/code/tts_preferences.dm b/modular_bandastation/tts/code/tts_preferences.dm new file mode 100644 index 0000000000000..bfcd0a61d8c9c --- /dev/null +++ b/modular_bandastation/tts/code/tts_preferences.dm @@ -0,0 +1,73 @@ +/datum/preferences/ui_static_data(mob/user) + var/list/data = ..() + + data["tts_enabled"] = CONFIG_GET(flag/tts_enabled) + + var/list/providers = list() + for(var/_provider in SStts220.tts_providers) + var/datum/tts_provider/provider = SStts220.tts_providers[_provider] + providers += list(list( + "name" = provider.name, + "is_enabled" = provider.is_enabled, + )) + data["providers"] = providers + + var/list/seeds = list() + for(var/_seed in SStts220.tts_seeds) + var/datum/tts_seed/seed = SStts220.tts_seeds[_seed] + seeds += list(list( + "name" = seed.name, + "value" = seed.value, + "category" = seed.category, + "gender" = seed.gender, + "provider" = initial(seed.provider.name), + "donator_level" = seed.donator_level, + )) + data["seeds"] = seeds + + data["phrases"] = TTS_PHRASES + + return data + + +/datum/preferences/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if (.) + return + + switch (action) + if("listen") + var/phrase = params["phrase"] + var/seed_name = params["seed"] + + if((phrase in TTS_PHRASES) && (seed_name in SStts220.tts_seeds)) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(tts_cast), null, usr, phrase, seed_name, FALSE) + return FALSE + + if("select_voice") + var/seed_name = params["seed"] + var/datum/preference/tts_seed = GLOB.preference_entries_by_key["tts_seed"] + write_preference(tts_seed, seed_name) + return TRUE + +/datum/preference/numeric/sound_tts_local + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "sound_tts_local" + savefile_identifier = PREFERENCE_PLAYER + + minimum = 0 + maximum = 100 + +/datum/preference/numeric/sound_tts_local/create_default_value() + return 100 + +/datum/preference/numeric/sound_tts_radio + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "sound_tts_radio" + savefile_identifier = PREFERENCE_PLAYER + + minimum = 0 + maximum = 100 + +/datum/preference/numeric/sound_tts_radio/create_default_value() + return 50 diff --git a/modular_bandastation/tts/code/tts_provider.dm b/modular_bandastation/tts/code/tts_provider.dm new file mode 100644 index 0000000000000..aa159eef07cde --- /dev/null +++ b/modular_bandastation/tts/code/tts_provider.dm @@ -0,0 +1,31 @@ +/datum/tts_provider + var/name = "STUB" + var/is_enabled = TRUE + + // Throttling + var/is_throttled = FALSE + var/throttled_until = 0 + + var/failed_requests = 0 + var/failed_requests_limit = 10 + +/datum/tts_provider/proc/request(text, datum/tts_seed/seed, datum/callback/proc_callback) + return TRUE + +/datum/tts_provider/proc/process_response(datum/http_response/response) + return null + +/datum/tts_provider/proc/throttle_check() + if(is_throttled && throttled_until < world.time) + return TRUE + is_throttled = FALSE + return FALSE + +/datum/tts_provider/proc/pitch_whisper(text) + return text + +/datum/tts_provider/proc/rate_faster(text) + return text + +/datum/tts_provider/proc/rate_medium(text) + return text diff --git a/modular_bandastation/tts/code/tts_seed.dm b/modular_bandastation/tts/code/tts_seed.dm new file mode 100644 index 0000000000000..627dd3f35f615 --- /dev/null +++ b/modular_bandastation/tts/code/tts_seed.dm @@ -0,0 +1,24 @@ +/datum/tts_seed + var/name = "STUB" + var/value = "STUB" + var/category = TTS_CATEGORY_OTHER + var/gender = TTS_GENDER_ANY + var/datum/tts_provider/provider = /datum/tts_provider + var/donator_level = 0 + +/datum/tts_seed/vv_edit_var(var_name, var_value) + return FALSE + +/datum/preference/text/tts_seed + savefile_key = "tts_seed" + savefile_identifier = PREFERENCE_CHARACTER + +/datum/preference/text/tts_seed/create_default_value() + return "Arthas" + +/// Any movable atom +/atom/movable + var/tts_seed + +/datum/preference/text/tts_seed/apply_to_human(mob/living/carbon/human/target, value) + target.tts_seed = value diff --git a/modular_bandastation/tts/code/tts_sound.dm b/modular_bandastation/tts/code/tts_sound.dm new file mode 100644 index 0000000000000..f9271e3f399cc --- /dev/null +++ b/modular_bandastation/tts/code/tts_sound.dm @@ -0,0 +1,44 @@ +// TODO: SS220-TTS to delete +//world/proc/shelleo +#define SHELLEO_ERRORLEVEL 1 +#define SHELLEO_STDOUT 2 +#define SHELLEO_STDERR 3 + +/proc/apply_sound_effect(effect, filename_input, filename_output) + if(!effect) + CRASH("Invalid sound effect chosen.") + + var/taskset + // TODO: SS220-TTS + if(CONFIG_GET(string/ffmpeg_cpuaffinity)) + taskset = "taskset -ac [CONFIG_GET(string/ffmpeg_cpuaffinity)]" + + var/list/output + switch(effect) + if(SOUND_EFFECT_RADIO) + output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "highpass=f=1000, lowpass=f=3000, acrusher=1:1:50:0:log" [filename_output]"}) + if(SOUND_EFFECT_ROBOT) + output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "afftfilt=real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=1024:overlap=0.5, deesser=i=0.4, volume=volume=1.5" [filename_output]"}) + if(SOUND_EFFECT_RADIO_ROBOT) + output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "afftfilt=real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=1024:overlap=0.5, deesser=i=0.4, volume=volume=1.5, highpass=f=1000, lowpass=f=3000, acrusher=1:1:50:0:log" [filename_output]"}) + if(SOUND_EFFECT_MEGAPHONE) + output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "highpass=f=500, lowpass=f=4000, volume=volume=10, acrusher=1:1:45:0:log" [filename_output]"}) + if(SOUND_EFFECT_MEGAPHONE_ROBOT) + output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "afftfilt=real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=1024:overlap=0.5, deesser=i=0.4, highpass=f=500, lowpass=f=4000, volume=volume=10, acrusher=1:1:45:0:log" [filename_output]"}) + else + CRASH("Invalid sound effect chosen.") + var/errorlevel = output[SHELLEO_ERRORLEVEL] + var/stdout = output[SHELLEO_STDOUT] + var/stderr = output[SHELLEO_STDERR] + if(errorlevel) + error("Error: apply_sound_effect([effect], [filename_input], [filename_output]) - See debug logs.") + // TODO: SS220-TTS log_debug -> debug_world_log + debug_world_log("apply_sound_effect([effect], [filename_input], [filename_output]) STDOUT: [stdout]") + debug_world_log("apply_sound_effect([effect], [filename_input], [filename_output]) STDERR: [stderr]") + return FALSE + return TRUE + +//world/proc/shelleo +#undef SHELLEO_ERRORLEVEL +#undef SHELLEO_STDOUT +#undef SHELLEO_STDERR diff --git a/modular_bandastation/tts/code/tts_sound_TEMPORARY.dm b/modular_bandastation/tts/code/tts_sound_TEMPORARY.dm new file mode 100644 index 0000000000000..a8bae493691ec --- /dev/null +++ b/modular_bandastation/tts/code/tts_sound_TEMPORARY.dm @@ -0,0 +1,77 @@ +// TODO: SS220-TTS Remove this file when upstream `/mob/proc/playsound_local` supports passing `wait` as parameter. +// Copypasted `/mob/proc/playsound_local` method with `wait` support. +/mob/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff_exponent = SOUND_FALLOFF_EXPONENT, channel = 0, pressure_affected = TRUE, sound/sound_to_use, max_distance, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, distance_multiplier = 1, use_reverb = TRUE, wait = FALSE) + if(!wait) + return ..() + + if(!client || !can_hear()) + return + + if(!sound_to_use) + sound_to_use = sound(get_sfx(soundin)) + + sound_to_use.wait = wait + sound_to_use.channel = channel || SSsounds.random_available_channel() + sound_to_use.volume = vol + + if(vary) + if(frequency) + sound_to_use.frequency = frequency + else + sound_to_use.frequency = get_rand_frequency() + + if(isturf(turf_source)) + var/turf/turf_loc = get_turf(src) + + //sound volume falloff with distance + var/distance = get_dist(turf_loc, turf_source) * distance_multiplier + + if(max_distance) //If theres no max_distance we're not a 3D sound, so no falloff. + sound_to_use.volume -= (max(distance - falloff_distance, 0) ** (1 / falloff_exponent)) / ((max(max_distance, distance) - falloff_distance) ** (1 / falloff_exponent)) * sound_to_use.volume + //https://www.desmos.com/calculator/sqdfl8ipgf + + if(pressure_affected) + //Atmosphere affects sound + var/pressure_factor = 1 + var/datum/gas_mixture/hearer_env = turf_loc.return_air() + var/datum/gas_mixture/source_env = turf_source.return_air() + + if(hearer_env && source_env) + var/pressure = min(hearer_env.return_pressure(), source_env.return_pressure()) + if(pressure < ONE_ATMOSPHERE) + pressure_factor = max((pressure - SOUND_MINIMUM_PRESSURE)/(ONE_ATMOSPHERE - SOUND_MINIMUM_PRESSURE), 0) + else //space + pressure_factor = 0 + + if(distance <= 1) + pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound + + sound_to_use.volume *= pressure_factor + //End Atmosphere affecting sound + + if(sound_to_use.volume <= 0) + return //No sound + + var/dx = turf_source.x - turf_loc.x // Hearing from the right/left + sound_to_use.x = dx * distance_multiplier + var/dz = turf_source.y - turf_loc.y // Hearing from infront/behind + sound_to_use.z = dz * distance_multiplier + var/dy = (turf_source.z - turf_loc.z) * 5 * distance_multiplier // Hearing from above / below, multiplied by 5 because we assume height is further along coords. + sound_to_use.y = dy + + sound_to_use.falloff = max_distance || 1 //use max_distance, else just use 1 as we are a direct sound so falloff isnt relevant. + + // Sounds can't have their own environment. A sound's environment will be: + // 1. the mob's + // 2. the area's (defaults to SOUND_ENVRIONMENT_NONE) + if(sound_environment_override != SOUND_ENVIRONMENT_NONE) + sound_to_use.environment = sound_environment_override + else + var/area/A = get_area(src) + sound_to_use.environment = A.sound_environment + + if(use_reverb && sound_to_use.environment != SOUND_ENVIRONMENT_NONE) //We have reverb, reset our echo setting + sound_to_use.echo[3] = -1300 //Room setting, 0 means normal reverb //SKYRAT EDIT CHANGE + sound_to_use.echo[4] = -1300 //RoomHF setting, 0 means normal reverb. //SKYRAT EDIT CHANGE + + SEND_SOUND(src, sound_to_use) diff --git a/modular_bandastation/tts/code/tts_subsystem.dm b/modular_bandastation/tts/code/tts_subsystem.dm new file mode 100644 index 0000000000000..2eb40ae067265 --- /dev/null +++ b/modular_bandastation/tts/code/tts_subsystem.dm @@ -0,0 +1,577 @@ +SUBSYSTEM_DEF(tts220) + name = "Text-to-Speech 220" + init_order = INIT_ORDER_DEFAULT + wait = 1 SECONDS + runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT + + var/tts_wanted = 0 + var/tts_request_failed = 0 + var/tts_request_succeeded = 0 + var/tts_reused = 0 + var/list/tts_errors = list() + var/tts_error_raw = "" + + // Simple Moving Average RPS + var/list/tts_rps_list = list() + var/tts_sma_rps = 0 + + // Requests per Second (RPS), only real API requests + var/tts_rps = 0 + var/tts_rps_counter = 0 + + // Total Requests per Second (TRPS), all TTS request, even reused + var/tts_trps = 0 + var/tts_trps_counter = 0 + + // Reused Requests per Second (RRPS), only reused requests + var/tts_rrps = 0 + var/tts_rrps_counter = 0 + + var/is_enabled = TRUE + + var/list/datum/tts_seed/tts_seeds = list() + var/list/tts_seeds_names = list() + var/list/tts_seeds_names_by_donator_levels = list() + var/list/datum/tts_provider/tts_providers = list() + + var/list/tts_local_channels_by_owner = list() + + var/list/tts_requests_queue = list() + var/tts_requests_queue_limit = 100 + var/tts_rps_limit = 5 + + var/list/tts_queue = list() + var/list/tts_effects_queue = list() + + var/sanitized_messages_caching = TRUE + var/list/sanitized_messages_cache = list() + var/sanitized_messages_cache_hit = 0 + var/sanitized_messages_cache_miss = 0 + + var/debug_mode_enabled = FALSE + + var/static/list/tts_job_replacements = list( + "nanotrasen navy field officer" = "Полевой офицер флота Нанотрэйзен", + "nanotrasen navy officer" = "Офицер флота nanotrasen", + "supreme commander" = "Верховный главнокомандующий", + "solar federation general" = "Генерал Солнечной Федерации", + "special operations officer" = "Офицер специальных операций", + "civilian" = "Гражданский", + "tourist" = "Турист", + "businessman" = "Бизнэсмэн", + "trader" = "Торговец", + "assistant" = "Ассистент", + "chief engineer" = "Главный Инженер", + "station engineer" = "Станционный инженер", + "trainee engineer" = "Инженер-стажер", + "Engineer Assistant" = "Инженерный Ассистент", + "Technical Assistant" = "Технический Ассистент", + "Engineer Student" = "Инженер-практикант", + "Technical Student" = "Техник-практикант", + "Technical Trainee" = "Техник-стажер", + "maintenance technician" = "Техник по обслуживанию", + "engine technician" = "Техник по двигателям", + "electrician" = "Электрик", + "life support specialist" = "Специалист по жизнеобеспечению", + "atmospheric technician" = "Атмосферный техник", + "mechanic" = "Механик", + "chief medical officer" = "Главный врач", + "medical doctor" = "Врач", + "Intern" = "Интерн", + "Student Medical Doctor" = "Врач-практикант", + "Medical Assistant" = "Ассистирующий врач", + "surgeon" = "Хирург", + "nurse" = "Медсестра", + "coroner" = "К+оронэр", + "chemist" = "Химик", + "pharmacist" = "Фармацевт", + "pharmacologist" = "Фармаколог", + "geneticist" = "Генетик", + "virologist" = "Вирусолог", + "pathologist" = "Патологоанатом", + "microbiologist" = "Микробиолог", + "psychiatrist" = "Психиатр", + "psychologist" = "Психолог", + "therapist" = "Терапевт", + "paramedic" = "Парамедик", + "research director" = "Директор исследований", + "scientist" = "Учёный", + "student scientist" = "Учёный-практикант", + "Scientist Assistant" = "Научный Ассистент", + "Scientist Pregraduate" = "Учёный-бакалавр", + "Scientist Graduate" = "Научный выпускник", + "Scientist Postgraduate" = "Учёный-аспирант", + "anomalist" = "Аномалист", + "plasma researcher" = "Исследователь плазмы", + "xenobiologist" = "Ксенобиолог", + "chemical researcher" = "Химик-исследователь", + "roboticist" = "Робототехник", + "student robotist" = "Студент-робототехник", + "biomechanical engineer" = "Биомеханический инженер", + "mechatronic engineer" = "Инженер мехатроники", + "head of security" = "Глава службы безопасности", + "warden" = "Смотритель", + "detective" = "Детектив", + "forensic technician" = "Криминалист", + "security officer" = "Офицер службы безопасности", + "security cadet" = "Кадет службы безопасности", + "Security Assistant" = "Ассистент службы безопасности", + "Security Graduate" = "Выпускник кадетской академии", + "brig physician" = "Врач брига", + "security pod pilot" = "Пилот пода службы безопасности", + "ai" = "И И", + "cyborg" = "Киборг", + "robot" = "Робот", + "captain" = "Капитан", + "head of personnel" = "Глава персонала", + "nanotrasen representative" = "Представитель Нанотрэйзен", + "blueshield" = "Блюшилд", + "magistrate" = "Магистрат", + "internal affairs agent" = "Агент внутренних дел", + "human resources agent" = "Агент по персоналу", + "bartender" = "Бармэн", + "chef" = "Повар", + "cook" = "Кук", + "culinary artist" = "Кулинар", + "butcher" = "Мясник", + "botanist" = "Ботаник", + "hydroponicist" = "Гидропонист", + "botanical researcher" = "Ботаник-исследователь", + "quartermaster" = "Квартирмейстер", + "cargo technician" = "Карго техник", + "shaft miner" = "Шахтёр", + "spelunker" = "Спелеолог", + "clown" = "Клоун", + "mime" = "Мим", + "janitor" = "Уборщик", + "custodial technician" = "Техник по уходу за помещениями", + "librarian" = "Библиотекарь", + "journalist" = "Журналист", + "barber" = "Парикмахер", + "hair stylist" = "Стилист", + "beautician" = "Косметолог", + "explorer" = "Исследователь", + "chaplain" = "Священник", + "syndicate officer" = "Офицер синдиката", + "visitor" = "посетитель", + ) + +/datum/controller/subsystem/tts220/stat_entry(msg) + msg += "tRPS:[tts_trps] " + msg += "rRPS:[tts_rrps] " + msg += "RPS:[tts_rps] " + msg += "smaRPS:[tts_sma_rps] | " + msg += "W:[tts_wanted] " + msg += "F:[tts_request_failed] " + msg += "S:[tts_request_succeeded] " + msg += "R:[tts_reused] " + return ..() + +/datum/controller/subsystem/tts220/PreInit() + . = ..() + for(var/path in subtypesof(/datum/tts_provider)) + var/datum/tts_provider/provider = new path + tts_providers[provider.name] += provider + for(var/path in subtypesof(/datum/tts_seed)) + var/datum/tts_seed/seed = new path + if(seed.value == "STUB") + continue + seed.provider = tts_providers[initial(seed.provider.name)] + tts_seeds[seed.name] = seed + tts_seeds_names += seed.name + tts_seeds_names_by_donator_levels["[seed.donator_level]"] += list(seed.name) + tts_seeds_names = sortTim(tts_seeds_names, /proc/cmp_text_asc) + +/datum/controller/subsystem/tts220/Initialize(start_timeofday) + is_enabled = CONFIG_GET(flag/tts_enabled) + if(!is_enabled) + flags |= SS_NO_FIRE + + return SS_INIT_SUCCESS + +/datum/controller/subsystem/tts220/fire() + tts_rps = tts_rps_counter + tts_rps_counter = 0 + tts_trps = tts_trps_counter + tts_trps_counter = 0 + tts_rrps = tts_rrps_counter + tts_rrps_counter = 0 + + tts_rps_list += tts_rps + if(tts_rps_list.len > 15) + tts_rps_list.Cut(1,2) + + var/rps_sum = 0 + for(var/rps in tts_rps_list) + rps_sum += rps + tts_sma_rps = round(rps_sum / tts_rps_list.len, 0.1) + + var/free_rps = clamp(tts_rps_limit - tts_rps, 0, tts_rps_limit) + var/requests = tts_requests_queue.Copy(1, clamp(LAZYLEN(tts_requests_queue), 0, free_rps) + 1) + for(var/request in requests) + var/text = request[1] + var/datum/tts_seed/seed = request[2] + var/datum/callback/proc_callback = request[3] + var/datum/tts_provider/provider = seed.provider + provider.request(text, seed, proc_callback) + tts_rps_counter++ + tts_requests_queue.Cut(1, clamp(LAZYLEN(tts_requests_queue), 0, free_rps) + 1) + + if(sanitized_messages_caching) + sanitized_messages_cache.Cut() + if(debug_mode_enabled) + world.log << "sanitized_messages_cache: HIT=[sanitized_messages_cache_hit] / MISS=[sanitized_messages_cache_miss]" + sanitized_messages_cache_hit = 0 + sanitized_messages_cache_miss = 0 + +/datum/controller/subsystem/tts220/Recover() + is_enabled = SStts220.is_enabled + tts_wanted = SStts220.tts_wanted + tts_request_failed = SStts220.tts_request_failed + tts_request_succeeded = SStts220.tts_request_succeeded + tts_reused = SStts220.tts_reused + +/datum/controller/subsystem/tts220/proc/queue_request(text, datum/tts_seed/seed, datum/callback/proc_callback) + if(LAZYLEN(tts_requests_queue) > tts_requests_queue_limit) + is_enabled = FALSE + to_chat(world, span_announce("SERVER: очередь запросов превысила лимит, подсистема SStts принудительно отключена!")) + return FALSE + + if(tts_rps_counter < tts_rps_limit) + var/datum/tts_provider/provider = seed.provider + provider.request(text, seed, proc_callback) + tts_rps_counter++ + return TRUE + + tts_requests_queue += list(list(text, seed, proc_callback)) + return TRUE + +/datum/controller/subsystem/tts220/proc/get_tts(atom/speaker, mob/listener, message, seed_name, is_local = TRUE, effect = SOUND_EFFECT_NONE, traits = TTS_TRAIT_RATE_FASTER, preSFX = null, postSFX = null) + if(!is_enabled) + return + if(!message) + return + if(isnull(listener) || !listener.client) + return + if(isnull(seed_name) || !(seed_name in tts_seeds)) + return + var/datum/tts_seed/seed = tts_seeds[seed_name] + + tts_wanted++ + tts_trps_counter++ + + var/datum/tts_provider/provider = seed.provider + if(!provider.is_enabled) + return + if(provider.throttle_check()) + return + + var/dirty_text = message + var/text = sanitize_tts_input(dirty_text) + + if(!text || length_char(text) > MAX_MESSAGE_LEN) + return + + if(traits & TTS_TRAIT_RATE_FASTER) + text = provider.rate_faster(text) + + if(traits & TTS_TRAIT_RATE_MEDIUM) + text = provider.rate_medium(text) + + if(traits & TTS_TRAIT_PITCH_WHISPER) + text = provider.pitch_whisper(text) + + var/hash = rustgss220_hash_string(RUSTG_HASH_MD5, text) + var/filename = "sound/tts_cache/[seed.name]/[hash]" + + var/datum/callback/play_tts_cb = CALLBACK(src, PROC_REF(play_tts), speaker, listener, filename, is_local, effect, preSFX, postSFX) + + if(fexists("[filename].ogg")) + tts_reused++ + tts_rrps_counter++ + play_tts(speaker, listener, filename, is_local, effect, preSFX, postSFX) + return + + if(LAZYLEN(tts_queue[filename])) + tts_reused++ + tts_rrps_counter++ + LAZYADD(tts_queue[filename], play_tts_cb) + return + + var/datum/callback/cb = CALLBACK(src, PROC_REF(get_tts_callback), speaker, listener, filename, seed, is_local, effect, preSFX, postSFX) + queue_request(text, seed, cb) + LAZYADD(tts_queue[filename], play_tts_cb) + +/datum/controller/subsystem/tts220/proc/get_tts_callback(atom/speaker, mob/listener, filename, datum/tts_seed/seed, is_local, effect, preSFX, postSFX, datum/http_response/response) + var/datum/tts_provider/provider = seed.provider + + // Bail if it errored + if(response.errored) + provider.failed_requests++ + if(provider.failed_requests >= provider.failed_requests_limit) + provider.is_enabled = FALSE + message_admins("Error connecting to [provider.name] TTS API. Please inform a maintainer or server host.") + return + + if(response.status_code != 200) + provider.failed_requests++ + if(provider.failed_requests >= provider.failed_requests_limit) + provider.is_enabled = FALSE + message_admins("Error performing [provider.name] TTS API request (Code: [response.status_code])") + tts_request_failed++ + if(response.status_code) + if(tts_errors["[response.status_code]"]) + tts_errors["[response.status_code]"]++ + else + tts_errors += "[response.status_code]" + tts_errors["[response.status_code]"] = 1 + tts_error_raw = response.error + return + + tts_request_succeeded++ + + var/voice = provider.process_response(response) + if(!voice) + return + + rustgss220_file_write_b64decode(voice, "[filename].ogg") + + if (!CONFIG_GET(flag/tts_cache)) + addtimer(CALLBACK(src, PROC_REF(cleanup_tts_file), "[filename].ogg"), 30 SECONDS) + + for(var/datum/callback/cb in tts_queue[filename]) + cb.InvokeAsync() + tts_queue[filename] -= cb + + tts_queue -= filename + +/datum/controller/subsystem/tts220/proc/play_tts(atom/speaker, mob/listener, filename, is_local = TRUE, effect = SOUND_EFFECT_NONE, preSFX = null, postSFX = null) + if(isnull(listener) || !listener.client) + return + + var/voice + switch(effect) + if(SOUND_EFFECT_NONE) + voice = "[filename].ogg" + if(SOUND_EFFECT_RADIO) + voice = "[filename]_radio.ogg" + if(SOUND_EFFECT_ROBOT) + voice = "[filename]_robot.ogg" + if(SOUND_EFFECT_RADIO_ROBOT) + voice = "[filename]_radio_robot.ogg" + if(SOUND_EFFECT_MEGAPHONE) + voice = "[filename]_megaphone.ogg" + if(SOUND_EFFECT_MEGAPHONE_ROBOT) + voice = "[filename]_megaphone_robot.ogg" + else + CRASH("Invalid sound effect chosen.") + if(effect != SOUND_EFFECT_NONE) + if(!fexists(voice)) + var/datum/callback/play_tts_cb = CALLBACK(src, PROC_REF(play_tts), speaker, listener, filename, is_local, effect, preSFX, postSFX) + if(LAZYLEN(tts_effects_queue[voice])) + LAZYADD(tts_effects_queue[voice], play_tts_cb) + return + LAZYADD(tts_effects_queue[voice], play_tts_cb) + apply_sound_effect(effect, "[filename].ogg", voice) + for(var/datum/callback/cb in tts_effects_queue[voice]) + tts_effects_queue[voice] -= cb + if(cb == play_tts_cb) + continue + cb.InvokeAsync() + tts_effects_queue -= voice + + var/turf/turf_source = get_turf(speaker) + + var/volume + var/channel + if(is_local) + volume = LOCAL_TTS_VOLUME(listener) + channel = get_local_channel_by_owner(speaker) + else + volume = RADIO_TTS_VOLUME(listener) + channel = CHANNEL_TTS_RADIO + + var/sound/output = sound(voice) + output.status = SOUND_STREAM + + if(isnull(speaker)) + output.wait = TRUE + output.channel = channel + // TODO: SS220-TTS + // output.volume = volume * listener.client.prefs.get_channel_volume(CHANNEL_GENERAL) * listener.client.prefs.get_channel_volume(channel) + output.volume = volume + output.environment = -1 + + if(output.volume <= 0) + return + + if(preSFX) + play_sfx(listener, preSFX, output.channel, output.volume, output.environment) + + SEND_SOUND(listener, output) + return + + if(preSFX) + play_sfx(listener, preSFX, output.channel, output.volume, output.environment) + + listener.playsound_local(turf_source, output, volume, sound_to_use = output, channel = channel, wait = TRUE) + + if(!output || output.volume <= 0) + return + + if(postSFX) + play_sfx(listener, postSFX, output.channel, output.volume, output.environment) + +/datum/controller/subsystem/tts220/proc/play_sfx(mob/listener, sfx, channel, volume, environment) + var/sound/output = sound(sfx) + output.status = SOUND_STREAM + output.wait = TRUE + output.channel = channel + output.volume = volume + output.environment = environment + SEND_SOUND(listener, output) + +/datum/controller/subsystem/tts220/proc/get_local_channel_by_owner(owner) + var/channel = tts_local_channels_by_owner[owner] + if(isnull(channel)) + channel = SSsounds.reserve_sound_channel_datumless() + tts_local_channels_by_owner[owner] = channel + return channel + +/datum/controller/subsystem/tts220/proc/cleanup_tts_file(filename) + fdel(filename) + +/datum/controller/subsystem/tts220/proc/get_available_seeds(owner) + var/list/_tts_seeds_names = list() + _tts_seeds_names |= tts_seeds_names + + if(!ismob(owner)) + return _tts_seeds_names + + var/mob/M = owner + + if(!M.client) + return _tts_seeds_names + + // TODO: SS220-TTS + // for(var/donator_level in 0 to DONATOR_LEVEL_MAX) + // if(M.client.donator_level < donator_level) + // _tts_seeds_names -= tts_seeds_names_by_donator_levels["[donator_level]"] + return _tts_seeds_names + +/datum/controller/subsystem/tts220/proc/get_random_seed(owner) + return pick(get_available_seeds(owner)) + +/datum/controller/subsystem/tts220/proc/sanitize_tts_input(message) + var/hash + if(sanitized_messages_caching) + hash = rustgss220_hash_string(RUSTG_HASH_MD5, message) + if(sanitized_messages_cache[hash]) + sanitized_messages_cache_hit++ + return sanitized_messages_cache[hash] + sanitized_messages_cache_miss++ + . = message + . = trim(.) + + var/static/regex/punctuation_check = new(@"[.,?!]\Z") + if(!punctuation_check.Find(.)) + . += "." + + var/static/regex/html_tags = new(@"<[^>]*>", "g") + . = html_tags.Replace(., "") + . = html_decode(.) + + var/static/regex/forbidden_symbols = new(@"[^a-zA-Z0-9а-яА-ЯёЁ,!?+./ \r\n\t:—()-]", "g") + . = forbidden_symbols.Replace(., "") + + var/static/regex/words = new(@"(?SERVER: провайдер Silero в подсистеме SStts220 принудительно включен!") + return json_encode(list("success" = "SStts220\[Silero] was force enabled")) + return json_encode(list("error" = "SStts220\[Silero] is already enabled")) + +/datum/world_topic/playerlist + keyword = "playerlist" + +/datum/world_topic/playerlist/Run(list/input) + var/list/keys = list() + for(var/I in GLOB.clients) + var/client/C = I + keys += C.key + + return json_encode(keys) + +/datum/world_topic/status/Run(list/input) + . = ..() + var/list/admins = list() + for(var/client/C in GLOB.clients) + if(C.holder) + if(C.holder.fakekey) + continue //so stealthmins aren't revealed by the hub + admins += list(list(C.key, join_admin_ranks(C.holder.ranks))) + if(key_valid) + for(var/i in 1 to admins.len) + var/list/A = admins[i] + .["admin[i - 1]"] = A[1] + .["adminrank[i - 1]"] = A[2] diff --git a/tgui/packages/tgui-say/ChannelIterator.test.ts b/tgui/packages/tgui-say/ChannelIterator.test.ts index 15e9812e702ec..91719cbbf51a5 100644 --- a/tgui/packages/tgui-say/ChannelIterator.test.ts +++ b/tgui/packages/tgui-say/ChannelIterator.test.ts @@ -11,6 +11,10 @@ describe('ChannelIterator', () => { expect(channelIterator.current()).toBe('Say'); expect(channelIterator.next()).toBe('Radio'); expect(channelIterator.next()).toBe('Me'); + // BANDASTATION EDIT ADDITION START + expect(channelIterator.next()).toBe('Whis'); + expect(channelIterator.next()).toBe('LOOC'); + // BANDASTATION EDIT ADDITION END expect(channelIterator.next()).toBe('OOC'); expect(channelIterator.next()).toBe('Say'); // Admin is blacklisted so it should be skipped }); diff --git a/tgui/packages/tgui-say/ChannelIterator.ts b/tgui/packages/tgui-say/ChannelIterator.ts index 136806927e95e..7515f95adc74c 100644 --- a/tgui/packages/tgui-say/ChannelIterator.ts +++ b/tgui/packages/tgui-say/ChannelIterator.ts @@ -1,4 +1,13 @@ -export type Channel = 'Say' | 'Radio' | 'Me' | 'OOC' | 'Admin'; +export type Channel = + | 'Say' + | 'Radio' + | 'Me' + // BANDASTATION EDIT START + | 'Whis' + | 'LOOC' + // BANDASTATION EDIT END + | 'OOC' + | 'Admin'; /** * ### ChannelIterator @@ -8,9 +17,19 @@ export type Channel = 'Say' | 'Radio' | 'Me' | 'OOC' | 'Admin'; */ export class ChannelIterator { private index: number = 0; - private readonly channels: Channel[] = ['Say', 'Radio', 'Me', 'OOC', 'Admin']; + private readonly channels: Channel[] = [ + 'Say', + 'Radio', + 'Me', + // BANDASTATION EDIT START + 'Whis', + 'LOOC', + // BANDASTATION EDIT END + 'OOC', + 'Admin', + ]; private readonly blacklist: Channel[] = ['Admin']; - private readonly quiet: Channel[] = ['OOC', 'Admin']; + private readonly quiet: Channel[] = ['OOC', 'LOOC', 'Admin']; // BANDASTATION EDIT public next(): Channel { if (this.blacklist.includes(this.channels[this.index])) { diff --git a/tgui/packages/tgui-say/styles/colors.scss b/tgui/packages/tgui-say/styles/colors.scss index 475d8b25b26ef..b202ef1d858a4 100644 --- a/tgui/packages/tgui-say/styles/colors.scss +++ b/tgui/packages/tgui-say/styles/colors.scss @@ -14,6 +14,8 @@ $_channel_map: ( 'Engi': #f37746, 'Hive': #855d85, 'io': #1e90ff, + // BANDASTATION EDIT ADDITION + 'LOOC': #ffceb6, 'Me': #5975da, 'Med': #57b8f0, 'OOC': #cca300, @@ -24,6 +26,8 @@ $_channel_map: ( 'Supp': #b88646, 'Svc': #6ca729, 'Synd': #8f4a4b, + // BANDASTATION EDIT ADDITION + 'Whis': #7c7fd9, ); $channel_keys: map.keys($_channel_map) !default; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts index 57ad5ba437826..c56d9b9a26452 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/data.ts @@ -171,6 +171,23 @@ export type PreferencesMenuData = { active_slot: number; name_to_use: string; + // BANDASTATION EDIT START - TTS + tts_enabled: BooleanLike; + providers: Array<{ + name: string; + is_enabled: BooleanLike; + }>; + seeds: Array<{ + name: string; + value: string; + category: string; + gender: string; + provider: string; + donator_level: number; + }>; + phrases: string[]; + // BANDASTATION EDIT END + window: Window; }; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bandastation/looc.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bandastation/looc.tsx new file mode 100644 index 0000000000000..4bbb43b14eef2 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/bandastation/looc.tsx @@ -0,0 +1,9 @@ +import { CheckboxInput, FeatureToggle } from '../../base'; + +export const looc_admin_pref: FeatureToggle = { + name: 'See admin LOOC', + category: 'ADMIN', + description: + 'Toggles whether you want to see LOOC anywhere as an admin or not.', + component: CheckboxInput, +}; From eec7573ca24314093fd3262f05ffc6484c981905 Mon Sep 17 00:00:00 2001 From: larentoun <31931237+larentoun@users.noreply.github.com> Date: Fri, 28 Jul 2023 21:56:26 +0900 Subject: [PATCH 03/55] Config defaults (#14) ## About The Pull Request Default gameplay values for bandastation ## Changelog :cl: config: Default gameplay values for bandastation /:cl: --- config/dynamic.json | 28 ---------------------------- config/game_options.txt | 32 +++++++++++++++++--------------- 2 files changed, 17 insertions(+), 43 deletions(-) diff --git a/config/dynamic.json b/config/dynamic.json index a4a1eb7ebdbfb..bea440d1850ae 100644 --- a/config/dynamic.json +++ b/config/dynamic.json @@ -4,7 +4,6 @@ "Traitors": { "cost": 8, "scaling_cost": 9, - "weight": 0, "required_candidates": 1, "minimum_required_age": 0, "requirements": [ @@ -40,89 +39,68 @@ }, "Changelings": { - "weight": 0 }, "Heretics": { - "weight": 0 }, "Wizard": { - "weight": 0 }, "Blood Cult": { - "weight": 0 }, "Nuclear Emergency": { - "weight": 0 }, "Revolution": { - "weight": 0 } }, "Midround": { "Syndicate Sleeper Agent": { - "weight": 0 }, "Malfunctioning AI": { - "weight": 0 }, "Wizard": { - "weight": 0 }, "Nuclear Assault": { - "weight": 0 }, "Blob": { - "weight": 0 }, "Blob Infection": { - "weight": 0 }, "Alien Infestation": { - "weight": 0 }, "Nightmare": { - "weight": 0 }, "Space Dragon": { - "weight": 0 }, "Abductors": { - "weight": 0 }, "Space Ninja": { - "weight": 0 }, "Spiders": { - "weight": 0 }, "Revenant": { - "weight": 0 }, "Sentient Disease": { - "weight": 0 }, "Space Pirates": { - "weight": 0 }, "Obsessed": { @@ -130,29 +108,23 @@ }, "Space Changeling": { - "weight": 0 }, "Paradox Clone": { - "weight": 0 } }, "Latejoin": { "Syndicate Infiltrator": { - "weight": 0 }, "Provocateur": { - "weight": 0 }, "Heretic Smuggler": { - "weight": 0 }, "Stowaway Changeling": { - "weight": 0 } }, diff --git a/config/game_options.txt b/config/game_options.txt index ae90dcb56b91e..7d0a22a01b263 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -33,8 +33,8 @@ COMMENDATION_PERCENT_POLL 0.05 ## To speed things up make the number negative, to slow things down, make the number positive. ## These modify the run/walk speed of all mobs before the mob-specific modifiers are applied. -RUN_DELAY 1.5 -WALK_DELAY 4 +RUN_DELAY 2.5 +WALK_DELAY 5 ## The variables below affect the movement of specific mob types. THIS AFFECTS ALL SUBTYPES OF THE TYPE YOU CHOOSE! ## Entries completely override all subtypes. Later entries have precedence over earlier entries. @@ -44,8 +44,8 @@ WALK_DELAY 4 ##MULTIPLICATIVE_MOVESPEED /mob/living/silicon/robot 0 ##MULTIPLICATIVE_MOVESPEED /mob/living/carbon/alien 0 ##MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal/slime 0 -MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal 0 -MULTIPLICATIVE_MOVESPEED /mob/living/basic 0 +##MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal 0 +##MULTIPLICATIVE_MOVESPEED /mob/living/basic 0 ## NAMES ### @@ -84,7 +84,7 @@ STATION_GOAL_BUDGET 1 ## GAME MODES ### ## Uncomment to not send a roundstart intercept report. Gamemodes may override this. -#NO_INTERCEPT_REPORT +NO_INTERCEPT_REPORT ## Percent weight reductions for three of the most recent modes @@ -158,7 +158,7 @@ ALLOW_AI_MULTICAM ## Secborg ### ## Uncomment to prevent the security cyborg model from being chosen -#DISABLE_SECBORG +DISABLE_SECBORG ## Peacekeeper Borg ### ## Uncomment to prevent the peacekeeper cyborg model from being chosen @@ -167,7 +167,7 @@ ALLOW_AI_MULTICAM ## AWAY MISSIONS ### ## Uncomment to load one of the missions from awaymissionconfig.txt or away_missions/ at roundstart. -#ROUNDSTART_AWAY +ROUNDSTART_AWAY ## How long the delay is before the Away Mission gate opens. Default is half an hour. ## 600 is one minute. @@ -193,28 +193,28 @@ MINIMAL_ACCESS_THRESHOLD 20 #ASSISTANTS_HAVE_MAINT_ACCESS ## Uncoment to give security maint access. Note that if you dectivate JOBS_HAVE_MINIMAL_ACCESS security already gets maint from that. -#SECURITY_HAS_MAINT_ACCESS +SECURITY_HAS_MAINT_ACCESS ## Uncomment to give everyone maint access. #EVERYONE_HAS_MAINT_ACCESS ## Comment this out this to make security officers spawn in departmental security posts -#SEC_START_BRIG +SEC_START_BRIG ## This variable is how you may configure "Scaling Access" for Departmental Security Officers. ## Set to 0/commented out for "off", Departmental Security Officers will never get additional room-specific access (beyond general departmental doors). ## Set to 1 if you want to enable "Scaling Access", where Departmental Security Officers will get access to most rooms within a department depending on how many security officers there are relative to the number of people on a station. ## Set to 2 if you want Departmental Security Officers to always have access to all rooms in a department. -DEPSEC_ACCESS_LEVEL 1 +DEPSEC_ACCESS_LEVEL 2 ## GHOST INTERACTION ### ## Uncomment to let ghosts spin chairs. You may be wondering why this is a config option. Don't ask. -#GHOST_INTERACTION +GHOST_INTERACTION ## NEAR-DEATH EXPERIENCE ### ## Comment this out to disable mobs hearing ghosts when unconscious and very close to death -NEAR_DEATH_EXPERIENCE +#NEAR_DEATH_EXPERIENCE ## NON-VOCAL SILICONS ### ## Uncomment these to stop the AI, or cyborgs, from having vocal communication. @@ -230,7 +230,7 @@ NEAR_DEATH_EXPERIENCE ## Set to 4 for "specified", silicons will start with an existing lawset. (If no specified lawset is identified, the AI will spawn with asimov.) -DEFAULT_LAWS 0 +DEFAULT_LAWS 4 ## SILICON ASIMOV SUPERIORITY OVERRIDE ### ## This makes "Asimov Superiority" show up as a perk for humans in the character creation menu even if asimov is not the default lawset, such as when used with asimov++ @@ -243,7 +243,7 @@ DEFAULT_LAWS 0 ## See datums\ai_laws.dm for the full law lists ## IE, SPECIFIED_LAWS asimovpp, SPECIFIED_LAWS robocop, SPECIFIED_LAWS antimov -SPECIFIED_LAWS asimovpp +SPECIFIED_LAWS nt_default ## RANDOM LAWS ## ## ------------------------------------------------------------------------------------------ @@ -256,6 +256,7 @@ RANDOM_LAWS asimovpp RANDOM_LAWS paladin RANDOM_LAWS robocop RANDOM_LAWS corporate +RANDOM_LAWS nt_default ## Quirky laws. Shouldn't cause too much harm #RANDOM_LAWS hippocratic @@ -297,6 +298,7 @@ LAW_WEIGHT liveandletlive,5 LAW_WEIGHT peacekeeper,5 LAW_WEIGHT ten_commandments,5 LAW_WEIGHT nutimov,5 +LAW_WEIGHT nt_default,5 ## Quirky laws. Shouldn't cause too much harm LAW_WEIGHT reporter,3 @@ -485,7 +487,7 @@ MICE_ROUNDSTART 10 ROUNDSTART_TRAITS ## Uncomment to disable human moods. -#DISABLE_HUMAN_MOOD +DISABLE_HUMAN_MOOD ## Enable night shifts #ENABLE_NIGHT_SHIFTS From afb979a3d7e68256010891b94fa002c1e2ca12a8 Mon Sep 17 00:00:00 2001 From: larentoun <31931237+larentoun@users.noreply.github.com> Date: Sat, 29 Jul 2023 21:21:13 +0900 Subject: [PATCH 04/55] Emote panel (#16) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Добавляет эмоут панель в IC Перевод большей части эмоутов fixes https://github.com/ss220club/bandastation/issues/11 fixes https://github.com/ss220club/bandastation/issues/12 ## Why It's Good For The Game Иногда не хочется кейбиндить все эмоции ## Changelog :cl: add: Панель эмоций qol: Перевод большей части эмоций /:cl: --- .../emote_panel/_emote_panel.dm | 4 + .../emote_panel/_emote_panel.dme | 4 + .../emote_panel/code/emote_panel.dm | 60 ++ .../emote_panel/code/emotes.dm | 640 ++++++++++++++++++ modular_bandastation/modular_bandastation.dme | 1 + tgui/packages/tgui/interfaces/EmotePanel.tsx | 94 +++ 6 files changed, 803 insertions(+) create mode 100644 modular_bandastation/emote_panel/_emote_panel.dm create mode 100644 modular_bandastation/emote_panel/_emote_panel.dme create mode 100644 modular_bandastation/emote_panel/code/emote_panel.dm create mode 100644 modular_bandastation/emote_panel/code/emotes.dm create mode 100644 tgui/packages/tgui/interfaces/EmotePanel.tsx diff --git a/modular_bandastation/emote_panel/_emote_panel.dm b/modular_bandastation/emote_panel/_emote_panel.dm new file mode 100644 index 0000000000000..d742cd25ebd0a --- /dev/null +++ b/modular_bandastation/emote_panel/_emote_panel.dm @@ -0,0 +1,4 @@ +/datum/modpack/emote_panel + name = "Панель эмоций" + desc = "Добавляет панель эмоций" + author = "larentoun" diff --git a/modular_bandastation/emote_panel/_emote_panel.dme b/modular_bandastation/emote_panel/_emote_panel.dme new file mode 100644 index 0000000000000..bb28fbb6b7d55 --- /dev/null +++ b/modular_bandastation/emote_panel/_emote_panel.dme @@ -0,0 +1,4 @@ +#include "_emote_panel.dm" + +#include "code/emote_panel.dm" +#include "code/emotes.dm" diff --git a/modular_bandastation/emote_panel/code/emote_panel.dm b/modular_bandastation/emote_panel/code/emote_panel.dm new file mode 100644 index 0000000000000..ae8696569a52a --- /dev/null +++ b/modular_bandastation/emote_panel/code/emote_panel.dm @@ -0,0 +1,60 @@ +/datum/emote_panel + var/list/blacklisted_emotes = list("me", "help") + +/datum/emote_panel/ui_static_data(mob/user) + var/list/data = list() + + var/list/emotes = list() + var/list/keys = list() + + for(var/key in GLOB.emote_list) + for(var/datum/emote/emote in GLOB.emote_list[key]) + if(emote.key in keys) + continue + if(emote.key in blacklisted_emotes) + continue + if(emote.can_run_emote(user, status_check = FALSE, intentional = TRUE)) + keys += emote.key + emotes += list(list( + "key" = emote.name, + "emote_path" = emote.type, + "hands" = emote.hands_use_check, + "visible" = emote.emote_type & EMOTE_VISIBLE, + "audible" = emote.emote_type & EMOTE_AUDIBLE, + "sound" = !isnull(emote.sound), + )) + + data["emotes"] = emotes + + return data + +/datum/emote_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + switch(action) + if("play_emote") + var/emote_path = params["emote_path"] + var/datum/emote/emote = new emote_path() + var/emote_act = emote.key + if(emote.message_param) + var/emote_param = tgui_input_text(usr, "Дополните эмоцию", emote.message_param) + if(!isnull(emote_param)) + emote_act = "[emote_act] [emote_param]" + usr.emote(emote_act, intentional = TRUE) + +/datum/emote_panel/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "EmotePanel") + ui.open() + +/datum/emote_panel/ui_state(mob/user) + return GLOB.always_state + +/mob/living/verb/emote_panel() + set name = "Emote Panel" + set category = "IC" + + var/static/datum/emote_panel/emote_panel = new + emote_panel.ui_interact(src) diff --git a/modular_bandastation/emote_panel/code/emotes.dm b/modular_bandastation/emote_panel/code/emotes.dm new file mode 100644 index 0000000000000..617c8b40de905 --- /dev/null +++ b/modular_bandastation/emote_panel/code/emotes.dm @@ -0,0 +1,640 @@ +/datum/emote + var/name + +/datum/emote/New() + . = ..() + if(!name) + name = key + +// Imaginary Friend + +/datum/emote/imaginary_friend/point + name = "указать" + message = "указывает." + message_param = "указывает на %t." + +// Emote Living + +/datum/emote/flip + name = "кувырнуться" + +/datum/emote/spin + name = "покрутиться" + +/datum/emote/living/blush + name = "покраснеть" + message = "краснеет." + +/datum/emote/living/sing_tune + name = "подпеть мелодию" + message = "подпевает мелодию." + +/datum/emote/living/bow + name = "покланиться" + message = "кланяется." + message_param = "кланяется %t." + +/datum/emote/living/burp + name = "рыгнуть" + message = "рыгает." + message_mime = "изображает отрыжку." + +/datum/emote/living/choke + name = "подавиться" + message = "давится!" + message_mime = "бесшумно давится!" + +/datum/emote/living/cross + name = "скрестить руки" + message = "скрещивает свои руки." + +/datum/emote/living/chuckle + name = "усмехнуться" + message = "усмехается." + message_mime = "изображает смешок." + +/datum/emote/living/collapse + name = "упасть" + message = "падает!" + +/datum/emote/living/cough + name = "покашлять" + message = "кашляет!" + message_mime = "изображает преувеличенный кашель!" + +/datum/emote/living/dance + name = "потанцевать" + message = "радостно танцует." + +/datum/emote/living/deathgasp + name = "последнее дыхание" + message = "цепенеет и расслабляется, взгляд становится пустым и безжизненным..." + message_robot = "на мгновение вздрагивает и замирает, глаза медленно темнеют." + message_AI = "скрипит, экран мерцает, пока системы медленно выключаются." + message_alien = "издает ослабевающий гортанный крик и падает на пол..." + message_larva = "с тошнотворным шипением выдыхает воздух и падает на пол..." + message_monkey = "издает слабый визг, когда рушится и перестает двигаться..." + message_animal_or_basic = "перестает двигаться..." + +/datum/emote/living/drool + name = "пустить слюни" + message = "пускает слюни." + +/datum/emote/living/faint + name = "потерять сознание" + message = "теряет сознание." + +/datum/emote/living/flap + name = "хлопнуть крыльями" + message = "хлопает крыльями." + +/datum/emote/living/flap/aflap + name = "сердито хлопнуть крыльями" + message = "сердито хлопает крыльями!" + +/datum/emote/living/frown + name = "похмуриться" + message = "хмурится." + +/datum/emote/living/gag + name = "gag" + message = "gags." + message_mime = "gags silently." + +/datum/emote/living/gasp + name = "задохнуться" + message = "задыхается!" + message_mime = "бесшумно задыхается!" + +/datum/emote/living/gasp_shock + name = "gaspshock" + message = "gasps in shock!" + message_mime = "gasps in silent shock!" + +/datum/emote/living/giggle + name = "похихикать" + message = "хихикает." + message_mime = "бесшумно хихикает!" + +/datum/emote/living/glare + name = "просверлить взглядом" + message = "сверлит взглядом." + message_param = "сверлит взглядом %t." + +/datum/emote/living/grin + name = "ухмыльнуться" + message = "ухмыляется." + +/datum/emote/living/groan + name = "болезненно простонать" + message = "болезненно стонет!" + message_mime = "изображает болезненный стон!" + +/datum/emote/living/grimace + name = "построить гримасу" + message = "строит гримасу." + +/datum/emote/living/jump + name = "прыгнуть" + message = "прыгает!" + +/datum/emote/living/kiss + name = "подготовить поцелуй" + +/datum/emote/living/laugh + name = "посмеяться" + message = "смеется." + message_mime = "бесшумно смеется!" + +/datum/emote/living/look + name = "посмотреть" + message = "смотрит." + message_param = "смотрит на %t." + +/datum/emote/living/nod + name = "кивнуть" + message = "кивает." + message_param = "кивает %t." + +/datum/emote/living/point + name = "указать" + message = "указывает." + message_param = "указывает на %t." + +/datum/emote/living/pout + name = "надуть губы" + message = "надувает губы." + message_mime = "бесшумно надувает губы." + +/datum/emote/living/scream + name = "покричать" + message = "кричит!" + message_mime = "изображает крик!" + +/datum/emote/living/scowl + name = "сердито посмотреть" + message = "сердито смотрит." + +/datum/emote/living/shake + name = "покачать головой" + message = "качает своей головой." + +/datum/emote/living/shiver + name = "подрожать" + message = "дрожит." + +/datum/emote/living/sigh + name = "вздохнуть" + message = "вздыхает." + message_mime = "изображает преувеличенный бесшумный вздох." + +/datum/emote/living/sit + name = "сесть" + message = "садится." + +/datum/emote/living/smile + name = "улыбнуться" + message = "улыбается." + +/datum/emote/living/sneeze + name = "чихнуть" + message = "чихает." + message_mime = "изображает преувеличенный бесшумный чих." + +/datum/emote/living/smug + name = "самодовольно улыбнуться" + message = "самодовольно улыбается." + +/datum/emote/living/sniff + name = "понюхать" + message = "нюхает." + message_mime = "бесшумно нюхает." + +/datum/emote/living/snore + name = "похрапеть" + message = "храпеть." + message_mime = "бесшумно храпит." + +/datum/emote/living/stare + name = "уставиться" + message = "уставился." + message_param = "уставился на %t." + +/datum/emote/living/strech + name = "протянуть руки" + message = "протягивает свои руки." + +/datum/emote/living/sulk + name = "обидеться" + message = "грустно обижается." + +/datum/emote/living/surrender + name = "сдаться" + message = "ложит руки за голову и падает на землю, они сдаются!" + +/datum/emote/living/sway + name = "покачаться" + message = "покачивается." + +/datum/emote/living/tilt + name = "наклонить голову" + message = "наклоняет голову на бок." + +/datum/emote/living/tremble + name = "подрожать в страхе" + message = "дрожит в страхе!" + +/datum/emote/living/twitch + name = "сильно дернуться" + message = "сильно дергается." + +/datum/emote/living/twitch_s + name = "дернуться" + message = "дергается." + +/datum/emote/living/wave + name = "помахать рукой" + message = "машет рукой." + +/datum/emote/living/whimper + name = "поскулить" + message = "скулит." + message_mime = "изображает скуление." + +/datum/emote/living/wsmile + name = "слабо улыбнуться" + message = "слабо улыбается." + +/datum/emote/living/yawn + name = "зевнуть" + message = "зевает." + message_mime = "изображает преувеличенный бесшумный зевок." + +/datum/emote/living/gurgle + name = "побулькать" + message = "издает неприятное бульканье." + message_mime = "бесшумно и неприятно булькает." + +/datum/emote/living/beep + name = "издать сигнал" + message = "издает сигнал." + message_param = "издает сигнал в сторону %t." + +/datum/emote/living/inhale + name = "вдохнуть" + message = "делает вдох." + +/datum/emote/living/exhale + name = "выдохнуть" + message = "выдыхает." + +/datum/emote/living/swear + name = "поругаться" + message = "ругается!" + message_mime = "делает грубый жест!" + +// Emote Brain + +/datum/emote/brain/alarm + name = "alarm" + message = "sounds an alarm." + +/datum/emote/brain/alert + name = "alert" + message = "lets out a distressed noise." + +/datum/emote/brain/flash + name = "flash" + message = "blinks their lights." + +/datum/emote/brain/notice + name = "notice" + message = "plays a loud tone." + +/datum/emote/brain/whistle + name = "whistle" + message = "whistles." + +// Emote Carbon + +/datum/emote/living/carbon/airguitar + name = "поиграть на воображаемой гитаре" + message = "невероятно играет на воображаемой гитаре." + +/datum/emote/living/carbon/blink + name = "моргнуть" + message = "моргает." + +/datum/emote/living/carbon/blink_r + name = "быстро моргать" + message = "быстро моргает." + +/datum/emote/living/carbon/clap + name = "похлопать" + message = "хлопает." + +/datum/emote/living/carbon/crack + name = "похрустеть пальцами" + message = "хрустит пальцами." + +/datum/emote/living/carbon/circle + name = "подготовить колечко" + +/datum/emote/living/carbon/moan + name = "постонать" + message = "стонет!" + message_mime = "кажется, стонет!" + +/datum/emote/living/carbon/noogie + name = "подготовить терку" + +/datum/emote/living/carbon/roll + name = "покатиться" + message = "катится." + +/datum/emote/living/carbon/scratch + name = "почесаться" + message = "чешится." + +/datum/emote/living/carbon/sign + name = "показать число" + message_param = "показывает число %t." + +/datum/emote/living/carbon/sign/signal + name = "показать пальцы" + message_param = "показывает %t пальцев." + +/datum/emote/living/carbon/slap + name = "подготовить шлепок" + +/datum/emote/living/carbon/hand + name = "подготовить руку" + +/datum/emote/living/carbon/snap + name = "щелкнуть пальцами" + message = "щелкает пальцами." + message_param = "щелкает пальцами в сторону %t." + +/datum/emote/living/carbon/shoesteal + name = "подготовить кражу ботинок" + +/datum/emote/living/carbon/tail + name = "помахать хвостом" + message = "машет хвостом." + +/datum/emote/living/carbon/wink + name = "подмигнуть" + message = "подмигивает." + +// Emote Alien + +/datum/emote/living/alien/gnarl + name = "оскалиться" + message = "оскаливается и показывает зубы..." + +/datum/emote/living/alien/hiss + name = "пошипеть" + message_alien = "шипит." + message_larva = "тихо шипит." + +/datum/emote/living/alien/roar + name = "прорычать" + message_alien = "рычит." + message_larva = "тихо рычит." + +// Emote Human + +/datum/emote/living/carbon/human/cry + name = "поплакать" + message = "плачет." + message_mime = "бесшумно плачет." + +/datum/emote/living/carbon/human/dap + name = "dap" + message = "sadly can't find anybody to give daps to, and daps themself. Shameful." + message_param = "give daps to %t." + +/datum/emote/living/carbon/human/eyebrow + name = "приподнять бровь" + message = "приподнимает брови." + +/datum/emote/living/carbon/human/grumble + name = "поворчать" + message = "ворчит!" + message_mime = "бесшумно ворчит!" + +/datum/emote/living/carbon/human/handshake + name = "дать рукопожатие" + message = "дает рукопожатие себе." + message_param = "дает рукопожатие %t." + +/datum/emote/living/carbon/human/hug + name = "обнять" + message = "обнимает себя." + message_param = "обнимает %t." + +/datum/emote/living/carbon/human/mumble + name = "пробормотать" + message = "бормочет!" + message_mime = "бесшумно бормочет!" + +/datum/emote/living/carbon/human/scream + name = "покричать" + message = "кричит!" + message_mime = "изображает крик!" + +/datum/emote/living/carbon/human/scream/screech + name = "повизжать" + message = "визжит!" + message_mime = "бесшумно визжит." + +/datum/emote/living/carbon/human/pale + name = "побледнеть" + message = "на мгновение бледнеет." + +/datum/emote/living/carbon/human/raise + name = "поднять руку" + message = "поднимает руку." + +/datum/emote/living/carbon/human/salute + name = "салютировать" + message = "салютует." + message_param = "салютует %t." + +/datum/emote/living/carbon/human/shrug + name = "пожать плечами" + message = "пожимает плечами." + +/datum/emote/living/carbon/human/wag + name = "махать хвостом" + message = "хвостом." + +/datum/emote/living/carbon/human/wing + name = "махать крыльями" + message = "крыльями." + +/datum/emote/living/carbon/human/clear_throat + name = "прочистить горло" + message = "прочищает горло." + +/datum/emote/living/carbon/human/monkey/gnarl + name = "оскалиться" + message = "оскаливается и показывает зубы..." + message_mime = "бесшумно оскаливается, показывая зубы..." + +/datum/emote/living/carbon/human/monkey/roll + name = "покатиться" + message = "катится." + +/datum/emote/living/carbon/human/monkey/scratch + name = "почесаться" + message = "чешется." + +/datum/emote/living/carbon/human/monkey/screech/roar + name = "прорычать" + message = "рычит!" + message_mime = "изображает рык." + +/datum/emote/living/carbon/human/monkey/tail + name = "помахать хвостом" + message = "машет хвостом." + +/datum/emote/living/carbon/human/monkey/sign + name = "показать число" + message_param = "показывает число %t." + +// Emote AI + +/datum/emote/ai/emotion_display + name = "Эмоция: пусто" + +/datum/emote/ai/emotion_display/very_happy + name = "Эмоция: очень радостно" + +/datum/emote/ai/emotion_display/happy + name = "Эмоция: радостно" + +/datum/emote/ai/emotion_display/neutral + name = "Эмоция: нейтральность" + +/datum/emote/ai/emotion_display/unsure + name = "Эмоция: неуверенность" + +/datum/emote/ai/emotion_display/confused + name = "Эмоция: в замешательстве" + +/datum/emote/ai/emotion_display/sad + name = "Эмоция: грусть" + +/datum/emote/ai/emotion_display/bsod + name = "Эмоция: BSoD" + +/datum/emote/ai/emotion_display/trollface + name = "Эмоция: Trollface" + +/datum/emote/ai/emotion_display/awesome + name = "Эмоция: крутость" + +/datum/emote/ai/emotion_display/dorfy + name = "Эмоция: Dorfy" + +/datum/emote/ai/emotion_display/thinking + name = "Эмоция: задуматься" + +/datum/emote/ai/emotion_display/facepalm + name = "Эмоция: Facepalm" + +/datum/emote/ai/emotion_display/friend_computer + name = "Эмоция: дружелюбный компьютер" + +/datum/emote/ai/emotion_display/blue_glow + name = "Эмоция: синее свечение" + +/datum/emote/ai/emotion_display/red_glow + name = "Эмоция: красное свечение" + +// Emote Silicon + +/datum/emote/silicon/boop + name = "boop" + message = "boops." + +/datum/emote/silicon/buzz + name = "buzz" + message = "buzzes." + message_param = "buzzes at %t." + +/datum/emote/silicon/buzz2 + name = "buzz2" + message = "buzzes twice." + +/datum/emote/silicon/chime + name = "chime" + message = "chimes." + +/datum/emote/silicon/honk + name = "honk" + message = "honks." + +/datum/emote/silicon/ping + name = "ping" + message = "pings." + message_param = "pings at %t." + +/datum/emote/silicon/sad + name = "sad" + message = "plays a sad trombone..." + +/datum/emote/silicon/warn + name = "warn" + message = "blares an alarm!" + +/datum/emote/silicon/slowclap + name = "slowclap" + message = "activates their slow clap processor." + +// Emote Slime + +/datum/emote/slime/bounce + name = "подпрыгнуть" + message = "подпрыгивает на месте." + +/datum/emote/slime/jiggle + name = "потрястись" + message = "трясется!" + +/datum/emote/slime/light + name = "посветиться" + message = "на мгновение светится." + +/datum/emote/slime/vibrate + name = "повибрировать" + message = "вибрирует!" + +/datum/emote/slime/mood + name = "Настроение: никакое" + +/datum/emote/slime/mood/sneaky + name = "Настроение: хитрое" + +/datum/emote/slime/mood/smile + name = "Настроение: улыбающееся" + +/datum/emote/slime/mood/cat + name = "Настроение: кот" + +/datum/emote/slime/mood/pout + name = "Настроение: надутый" + +/datum/emote/slime/mood/sad + name = "Настроение: грустный" + +/datum/emote/slime/mood/angry + name = "Настроение: злой" + +// Emote Other + +/datum/emote/gorilla/ooga + name = "ooga" + message = "oogas." + message_param = "oogas at %t." diff --git a/modular_bandastation/modular_bandastation.dme b/modular_bandastation/modular_bandastation.dme index 25c8603d682f9..b62fa43f4664d 100644 --- a/modular_bandastation/modular_bandastation.dme +++ b/modular_bandastation/modular_bandastation.dme @@ -12,6 +12,7 @@ #include "crawl_speed/_crawl_speed.dme" #include "cyrillic_fixes/_cyrillic_fixes.dme" #include "discord/_discord.dme" +#include "emote_panel/_emote_panel.dme" #include "events/_events.dme" #include "gunhud/_gunhud.dme" #include "keybindings/_keybindings.dme" diff --git a/tgui/packages/tgui/interfaces/EmotePanel.tsx b/tgui/packages/tgui/interfaces/EmotePanel.tsx new file mode 100644 index 0000000000000..b5c8f0a41962e --- /dev/null +++ b/tgui/packages/tgui/interfaces/EmotePanel.tsx @@ -0,0 +1,94 @@ +import { useBackend, useSharedState } from '../backend'; +import { Window } from '../layouts'; +import { Button, Section, Stack } from '../components'; +import { SearchBar } from './Fabrication/SearchBar'; +import { BooleanLike } from '../../common/react'; + +type Emote = { + key: string; + emote_path: string; + hands: BooleanLike; + visible: BooleanLike; + audible: BooleanLike; + sound: BooleanLike; +}; + +type EmotePanelData = { + emotes: Emote[]; +}; + +export const EmotePanelContent = (props, context) => { + const { act, data } = useBackend(context); + const { emotes } = data; + + const [searchText, setSearchText] = useSharedState( + context, + 'search_text', + '' + ); + + return ( +
0 + ? `Результаты поиска "${searchText}"` + : `Все эмоции` + } + fill> + + +
+ +
+
+ + {emotes.map((emote) => + emote.key ? ( + searchText.length > 0 ? ( + emote.key.toLowerCase().includes(searchText.toLowerCase()) ? ( + + ) : ( + '' + ) + ) : ( + + ) + ) : ( + '' + ) + )} + +
+
+ ); +}; + +export const EmotePanel = (props, context) => { + return ( + + + + + + ); +}; From 6e02584dd85d1fb9753bab2e8c84ac931af35b2e Mon Sep 17 00:00:00 2001 From: larentoun <31931237+larentoun@users.noreply.github.com> Date: Sat, 29 Jul 2023 22:04:14 +0900 Subject: [PATCH 05/55] Keybind Translation (#17) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Добавляет перевод кейбиндов fixes https://github.com/ss220club/bandastation/issues/10 ## Why It's Good For The Game Русскоязычный билд? ## Changelog :cl: qol: Перевод кейбиндов /:cl: --- .../keybindings/_keybindings.dme | 3 +-- modular_bandastation/keybindings/code/admin.dm | 10 ++++++++++ .../keybindings/code/artificial_intelligence.dm | 1 + modular_bandastation/keybindings/code/carbon.dm | 3 +++ modular_bandastation/keybindings/code/client.dm | 9 +++------ .../keybindings/code/communication.dm | 12 ++++++++++++ modular_bandastation/keybindings/code/emote.dm | 4 ++++ modular_bandastation/keybindings/code/human.dm | 4 ++++ modular_bandastation/keybindings/code/living.dm | 7 +++++++ modular_bandastation/keybindings/code/mob.dm | 16 ++++++++++++++++ .../keybindings/code/movement.dm | 6 ++++++ modular_bandastation/keybindings/code/robot.dm | 5 +++++ 12 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 modular_bandastation/keybindings/code/emote.dm diff --git a/modular_bandastation/keybindings/_keybindings.dme b/modular_bandastation/keybindings/_keybindings.dme index 405928e7958f1..26c7f47e8bc02 100644 --- a/modular_bandastation/keybindings/_keybindings.dme +++ b/modular_bandastation/keybindings/_keybindings.dme @@ -5,10 +5,9 @@ #include "code/carbon.dm" #include "code/client.dm" #include "code/communication.dm" +#include "code/emote.dm" #include "code/human.dm" #include "code/living.dm" #include "code/mob.dm" #include "code/movement.dm" #include "code/robot.dm" - -//TODO: Перевод diff --git a/modular_bandastation/keybindings/code/admin.dm b/modular_bandastation/keybindings/code/admin.dm index 4ebb29c83ed49..c0c7cda433c22 100644 --- a/modular_bandastation/keybindings/code/admin.dm +++ b/modular_bandastation/keybindings/code/admin.dm @@ -1,29 +1,39 @@ /datum/keybinding/admin/admin_say + full_name = "Asay" hotkey_keys = list("F5") /datum/keybinding/admin/admin_ghost + full_name = "Aghost" hotkey_keys = list("F6") /datum/keybinding/admin/player_panel_new + full_name = "Player Panel" hotkey_keys = list("F7") /datum/keybinding/admin/toggle_buildmode_self + full_name = "Toggle Buildmode" hotkey_keys = list("F11") /datum/keybinding/admin/stealthmode + full_name = "Stealth mode" hotkey_keys = list("CtrlF9") /datum/keybinding/admin/invisimin + full_name = "Invisimin" hotkey_keys = list("F9") /datum/keybinding/admin/deadsay + full_name = "Dsay" hotkey_keys = list("F10") /datum/keybinding/admin/deadmin + full_name = "Deadmin" hotkey_keys = list("Unbound") /datum/keybinding/admin/readmin + full_name = "Readmin" hotkey_keys = list("Unbound") /datum/keybinding/admin/view_tags + full_name = "View Tags" hotkey_keys = list("CtrlF11") diff --git a/modular_bandastation/keybindings/code/artificial_intelligence.dm b/modular_bandastation/keybindings/code/artificial_intelligence.dm index f10477b3d44b1..fc72187c256dc 100644 --- a/modular_bandastation/keybindings/code/artificial_intelligence.dm +++ b/modular_bandastation/keybindings/code/artificial_intelligence.dm @@ -1,2 +1,3 @@ /datum/keybinding/artificial_intelligence/reconnect + full_name = "Переподключиться к оболочке" hotkey_keys = list("-") diff --git a/modular_bandastation/keybindings/code/carbon.dm b/modular_bandastation/keybindings/code/carbon.dm index e629ece4b7951..210538c7a5d94 100644 --- a/modular_bandastation/keybindings/code/carbon.dm +++ b/modular_bandastation/keybindings/code/carbon.dm @@ -1,8 +1,11 @@ /datum/keybinding/carbon/toggle_throw_mode + full_name = "Режим броска (переключить)" hotkey_keys = list("R", "Southwest") /datum/keybinding/carbon/hold_throw_mode + full_name = "Режим броска (зажать)" hotkey_keys = list("Space") /datum/keybinding/carbon/give + full_name = "Передать вещь (переключить)" hotkey_keys = list("V") diff --git a/modular_bandastation/keybindings/code/client.dm b/modular_bandastation/keybindings/code/client.dm index f800e24db3131..4a83b861a751d 100644 --- a/modular_bandastation/keybindings/code/client.dm +++ b/modular_bandastation/keybindings/code/client.dm @@ -1,14 +1,11 @@ /datum/keybinding/client/admin_help + full_name = "Admin Help" hotkey_keys = list("F1") /datum/keybinding/client/screenshot + full_name = "Сделать Screenshot" hotkey_keys = list("Unbound") /datum/keybinding/client/minimal_hud + full_name = "Переключить минимальный HUD" hotkey_keys = list("F12") - -/datum/keybinding/client/communication/looc - hotkey_keys = list("L") - -/datum/keybinding/client/communication/whisper - hotkey_keys = list("ShiftT") diff --git a/modular_bandastation/keybindings/code/communication.dm b/modular_bandastation/keybindings/code/communication.dm index 0419ba9faff4f..7476e2c910b68 100644 --- a/modular_bandastation/keybindings/code/communication.dm +++ b/modular_bandastation/keybindings/code/communication.dm @@ -1,11 +1,23 @@ /datum/keybinding/client/communication/say + full_name = "Говорить" hotkey_keys = list("F3", "T") /datum/keybinding/client/communication/radio + full_name = "Общий канал рации (;)" hotkey_keys = list("Unbound") /datum/keybinding/client/communication/ooc + full_name = "OOC" hotkey_keys = list("F2", "O") /datum/keybinding/client/communication/me + full_name = "Эмоция" hotkey_keys = list("F4", "M") + +/datum/keybinding/client/communication/looc + full_name = "LOOC" + hotkey_keys = list("L") + +/datum/keybinding/client/communication/whisper + full_name = "Шептать" + hotkey_keys = list("ShiftT") diff --git a/modular_bandastation/keybindings/code/emote.dm b/modular_bandastation/keybindings/code/emote.dm new file mode 100644 index 0000000000000..eb02d081238ec --- /dev/null +++ b/modular_bandastation/keybindings/code/emote.dm @@ -0,0 +1,4 @@ +/datum/keybinding/emote/link_to_emote(datum/emote/faketype) + . = ..() + if(initial(faketype.name)) + full_name = capitalize(initial(faketype.name)) diff --git a/modular_bandastation/keybindings/code/human.dm b/modular_bandastation/keybindings/code/human.dm index 09261b3bb9cc2..f880f0bd2cb82 100644 --- a/modular_bandastation/keybindings/code/human.dm +++ b/modular_bandastation/keybindings/code/human.dm @@ -1,11 +1,15 @@ /datum/keybinding/human/quick_equip + full_name = "Экипировать вещь" hotkey_keys = list("E") /datum/keybinding/human/quick_equip_belt + full_name = "Быстрая экипировка пояса" hotkey_keys = list("ShiftE") /datum/keybinding/human/quick_equip_belt/quick_equip_bag + full_name = "Быстрая экипировка сумки" hotkey_keys = list("ShiftV") /datum/keybinding/human/quick_equip_belt/quick_equip_suit_storage + full_name = "Быстрая экипировка хранилища костюма" hotkey_keys = list("ShiftQ") diff --git a/modular_bandastation/keybindings/code/living.dm b/modular_bandastation/keybindings/code/living.dm index 315f5958f463d..644bec4b78fa9 100644 --- a/modular_bandastation/keybindings/code/living.dm +++ b/modular_bandastation/keybindings/code/living.dm @@ -1,20 +1,27 @@ /datum/keybinding/living/resist + full_name = "Сопротивляться" hotkey_keys = list("B") /datum/keybinding/living/look_up + full_name = "Посмотреть вверх" hotkey_keys = list("P") /datum/keybinding/living/look_down + full_name = "Посмотреть вниз" hotkey_keys = list(";") /datum/keybinding/living/rest + full_name = "Лечь/встать" hotkey_keys = list("ShiftB") /datum/keybinding/living/toggle_combat_mode + full_name = "Переключить Combat Mode" hotkey_keys = list("F") /datum/keybinding/living/enable_combat_mode + full_name = "Включить Combat Mode" hotkey_keys = list("4") /datum/keybinding/living/disable_combat_mode + full_name = "Отключить Combat Mode" hotkey_keys = list("1") diff --git a/modular_bandastation/keybindings/code/mob.dm b/modular_bandastation/keybindings/code/mob.dm index 7398941fcfb34..9f5f7cbbe04f0 100644 --- a/modular_bandastation/keybindings/code/mob.dm +++ b/modular_bandastation/keybindings/code/mob.dm @@ -1,47 +1,63 @@ /datum/keybinding/mob/stop_pulling + full_name = "Перестать тащить" hotkey_keys = list("C", "Delete") /datum/keybinding/mob/swap_hands + full_name = "Поменять руки" hotkey_keys = list("X") /datum/keybinding/mob/activate_inhand + full_name = "Использовать вещь в руке" hotkey_keys = list("Z") /datum/keybinding/mob/drop_item + full_name = "Выложить вещь в руке" hotkey_keys = list("Q") /datum/keybinding/mob/toggle_move_intent + full_name = "Смена режима ходьбы (зажать)" hotkey_keys = list("Alt") /datum/keybinding/mob/toggle_move_intent_alternative + full_name = "Смена режима ходьбы (переключить)" hotkey_keys = list("Unbound") /datum/keybinding/mob/target/head_cycle + full_name = "Выбрать голову/глаза/рот" hotkey_keys = list("Numpad8") /datum/keybinding/mob/target/eyes + full_name = "Выбрать глаза" hotkey_keys = list("Numpad7") /datum/keybinding/mob/target/mouth + full_name = "Выбрать рот" hotkey_keys = list("Numpad9") /datum/keybinding/mob/target/r_arm + full_name = "Выбрать правую руку" hotkey_keys = list("Numpad4") /datum/keybinding/mob/target/body_chest + full_name = "Выбрать грудь" hotkey_keys = list("Numpad5") /datum/keybinding/mob/target/left_arm + full_name = "Выбрать левую руку" hotkey_keys = list("Numpad6") /datum/keybinding/mob/target/right_leg + full_name = "Выбрать правую ногу" hotkey_keys = list("Numpad1") /datum/keybinding/mob/target/body_groin + full_name = "Выбрать пах" hotkey_keys = list("Numpad2") /datum/keybinding/mob/target/left_leg + full_name = "Выбрать левую ногу" hotkey_keys = list("Numpad3") /datum/keybinding/mob/prevent_movement + full_name = "Остановиться (зажать)" hotkey_keys = list("Ctrl") diff --git a/modular_bandastation/keybindings/code/movement.dm b/modular_bandastation/keybindings/code/movement.dm index a73d27eba6e0e..6bcc2b3606e1a 100644 --- a/modular_bandastation/keybindings/code/movement.dm +++ b/modular_bandastation/keybindings/code/movement.dm @@ -1,17 +1,23 @@ /datum/keybinding/movement/north + full_name = "Идти на север" hotkey_keys = list("W", "North") /datum/keybinding/movement/south + full_name = "Идти на юг" hotkey_keys = list("S", "South") /datum/keybinding/movement/west + full_name = "Идти на запад" hotkey_keys = list("A", "West") /datum/keybinding/movement/east + full_name = "Идти на восток" hotkey_keys = list("D", "East") /datum/keybinding/movement/zlevel_upwards + full_name = "Идти наверх" hotkey_keys = list("Northeast") // PGUP /datum/keybinding/movement/zlevel_downwards + full_name = "Идти вниз" hotkey_keys = list("Southeast") // PGDOWN diff --git a/modular_bandastation/keybindings/code/robot.dm b/modular_bandastation/keybindings/code/robot.dm index 55cc6587d7c32..95e99ec7b2e47 100644 --- a/modular_bandastation/keybindings/code/robot.dm +++ b/modular_bandastation/keybindings/code/robot.dm @@ -1,14 +1,19 @@ /datum/keybinding/robot/moduleone + full_name = "Ячейка 1" hotkey_keys = list("1") /datum/keybinding/robot/moduletwo + full_name = "Ячейка 2" hotkey_keys = list("2") /datum/keybinding/robot/modulethree + full_name = "Ячейка 3" hotkey_keys = list("3") /datum/keybinding/robot/unequip_module + full_name = "Выложить в хранилище" hotkey_keys = list("Q") /datum/keybinding/robot/undeploy + full_name = "Отсоединиться от оболочки" hotkey_keys = list("=") From 7e19b8ad597877561ae5bb1d862a2ac66621d8d7 Mon Sep 17 00:00:00 2001 From: larentoun <31931237+larentoun@users.noreply.github.com> Date: Sat, 29 Jul 2023 23:22:05 +0900 Subject: [PATCH 06/55] Examine Panel (#18) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request Порт упрощенной версии Examine Panel ## Why It's Good For The Game Флаворы круто ## Changelog :cl: add: Examine Panel /:cl: --- .../examine_panel/_examine_panel.dm | 4 + .../examine_panel/_examine_panel.dme | 7 + .../code/_examine_panel_defines.dm | 4 + .../code/examine_panel_component.dm | 121 ++++++++++++++++++ .../examine_panel/code/examine_panel_mob.dm | 19 +++ .../examine_panel/code/examine_panel_prefs.dm | 18 +++ .../code/~examine_panel_defines.dm | 2 + modular_bandastation/modular_bandastation.dme | 1 + tgui/packages/tgui/interfaces/ExaminePanel.js | 44 +++++++ .../features/base_bandastation.tsx | 19 +++ .../character_preferences/examine_panel.tsx | 14 ++ 11 files changed, 253 insertions(+) create mode 100644 modular_bandastation/examine_panel/_examine_panel.dm create mode 100644 modular_bandastation/examine_panel/_examine_panel.dme create mode 100644 modular_bandastation/examine_panel/code/_examine_panel_defines.dm create mode 100644 modular_bandastation/examine_panel/code/examine_panel_component.dm create mode 100644 modular_bandastation/examine_panel/code/examine_panel_mob.dm create mode 100644 modular_bandastation/examine_panel/code/examine_panel_prefs.dm create mode 100644 modular_bandastation/examine_panel/code/~examine_panel_defines.dm create mode 100644 tgui/packages/tgui/interfaces/ExaminePanel.js create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/base_bandastation.tsx create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/examine_panel.tsx diff --git a/modular_bandastation/examine_panel/_examine_panel.dm b/modular_bandastation/examine_panel/_examine_panel.dm new file mode 100644 index 0000000000000..15b084aa8d29e --- /dev/null +++ b/modular_bandastation/examine_panel/_examine_panel.dm @@ -0,0 +1,4 @@ +/datum/modpack/examine_panel + name = "Examine Panel" + desc = "Examine Panel" + author = "larentoun" diff --git a/modular_bandastation/examine_panel/_examine_panel.dme b/modular_bandastation/examine_panel/_examine_panel.dme new file mode 100644 index 0000000000000..058e864a55577 --- /dev/null +++ b/modular_bandastation/examine_panel/_examine_panel.dme @@ -0,0 +1,7 @@ +#include "_examine_panel.dm" + +#include "code/_examine_panel_defines.dm" +#include "code/examine_panel_component.dm" +#include "code/examine_panel_mob.dm" +#include "code/examine_panel_prefs.dm" +#include "code/~examine_panel_defines.dm" diff --git a/modular_bandastation/examine_panel/code/_examine_panel_defines.dm b/modular_bandastation/examine_panel/code/_examine_panel_defines.dm new file mode 100644 index 0000000000000..49fd0fd3530b3 --- /dev/null +++ b/modular_bandastation/examine_panel/code/_examine_panel_defines.dm @@ -0,0 +1,4 @@ +/// How many characters will be displayed in the flavor text preview before we cut it off? +#define FLAVOR_PREVIEW_LIMIT 110 +/// Double the maximum message length. +#define MAX_FLAVOR_LEN 4096 diff --git a/modular_bandastation/examine_panel/code/examine_panel_component.dm b/modular_bandastation/examine_panel/code/examine_panel_component.dm new file mode 100644 index 0000000000000..a3daa49ce1da6 --- /dev/null +++ b/modular_bandastation/examine_panel/code/examine_panel_component.dm @@ -0,0 +1,121 @@ +/datum/component/examine_panel + dupe_mode = COMPONENT_DUPE_UNIQUE + /// Mob that the examine panel belongs to. + var/mob/living/holder + /// The screen containing the appearance of the mob + var/atom/movable/screen/map_view/examine_panel_screen/examine_panel_screen + /// Flavor text + var/flavor_text + +/datum/component/examine_panel/Initialize(use_prefs = FALSE) + . = ..() + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + holder = parent + if(!use_prefs) + return + if(iscarbon(parent)) + flavor_text = holder.client?.prefs.read_preference(/datum/preference/text/flavor_text) + if(issilicon(parent)) + flavor_text = holder.client?.prefs.read_preference(/datum/preference/text/silicon_flavor_text) + +/datum/component/examine_panel/RegisterWithParent() + RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + +/datum/component/examine_panel/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_ATOM_EXAMINE) + +/datum/component/examine_panel/proc/on_examine(mob/living/source, mob/user, list/examine_list) + SIGNAL_HANDLER + + if(iscarbon(source)) + examine_list += get_carbon_flavor_text(source) + if(issilicon(source)) + examine_list += get_silicon_flavor_text(source) + +/datum/component/examine_panel/proc/get_carbon_flavor_text(mob/living/carbon/source) + var/flavor_text_link + /// The first 1-FLAVOR_PREVIEW_LIMIT characters in the mob's "flavor_text" DNA feature. FLAVOR_PREVIEW_LIMIT is defined in flavor_defines.dm. + var/preview_text = copytext_char(flavor_text, 1, FLAVOR_PREVIEW_LIMIT) + // What examine_tgui.dm uses to determine if flavor text appears as "Obscured". + var/face_obscured = (source.wear_mask && (source.wear_mask.flags_inv & HIDEFACE)) || (source.head && (source.head.flags_inv & HIDEFACE)) + + if (!(face_obscured)) + flavor_text_link = span_notice("[preview_text]...
Look closer?") + else + flavor_text_link = span_notice("Examine closely...") + if (flavor_text_link) + return flavor_text_link + +/datum/component/examine_panel/proc/get_silicon_flavor_text(mob/living/silicon/source) + var/flavor_text_link + /// The first 1-FLAVOR_PREVIEW_LIMIT characters in the mob's client's silicon_flavor_text preference datum. FLAVOR_PREVIEW_LIMIT is defined in flavor_defines.dm. + var/preview_text = copytext_char(flavor_text, 1, FLAVOR_PREVIEW_LIMIT) + + flavor_text_link = span_notice("[preview_text]... Look closer?") + + if (flavor_text_link) + return flavor_text_link + +/datum/component/examine_panel/Topic(href, list/href_list) + . = ..() + + if(href_list["lookup_info"]) + switch(href_list["lookup_info"]) + if("open_examine_panel") + ui_interact(usr) + +/datum/component/examine_panel/ui_state(mob/user) + return GLOB.always_state + +/datum/component/examine_panel/ui_close(mob/user) + user.client.clear_map(examine_panel_screen.assigned_map) + +/atom/movable/screen/map_view/examine_panel_screen + name = "examine panel screen" + +/datum/component/examine_panel/ui_interact(mob/user, datum/tgui/ui) + if(!examine_panel_screen) + examine_panel_screen = new + examine_panel_screen.name = "screen" + examine_panel_screen.assigned_map = "examine_panel_[REF(holder)]_map" + examine_panel_screen.del_on_map_removal = FALSE + examine_panel_screen.screen_loc = "[examine_panel_screen.assigned_map]:1,1" + + var/mutable_appearance/current_mob_appearance = new(holder) + current_mob_appearance.setDir(SOUTH) + current_mob_appearance.transform = matrix() // We reset their rotation, in case they're lying down. + + // In case they're pixel-shifted, we bring 'em back! + current_mob_appearance.pixel_x = 0 + current_mob_appearance.pixel_y = 0 + + examine_panel_screen.cut_overlays() + examine_panel_screen.add_overlay(current_mob_appearance) + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + examine_panel_screen.display_to(user) + user.client.register_map_obj(examine_panel_screen) + ui = new(user, src, "ExaminePanel") + ui.open() + + +/datum/component/examine_panel/ui_data(mob/user) + var/list/data = list() + + var/tgui_flavor_text = flavor_text + var/obscured + + if(ishuman(parent)) + var/mob/living/carbon/human/holder_human = parent + obscured = (holder_human.wear_mask && (holder_human.wear_mask.flags_inv & HIDEFACE)) || (holder_human.head && (holder_human.head.flags_inv & HIDEFACE)) + tgui_flavor_text = obscured ? "Obscured" : flavor_text + + var/name = obscured ? "Unknown" : user.name + + data["obscured"] = obscured ? TRUE : FALSE + data["character_name"] = name + data["assigned_map"] = examine_panel_screen.assigned_map + data["flavor_text"] = tgui_flavor_text + return data diff --git a/modular_bandastation/examine_panel/code/examine_panel_mob.dm b/modular_bandastation/examine_panel/code/examine_panel_mob.dm new file mode 100644 index 0000000000000..b55a6eec0ded8 --- /dev/null +++ b/modular_bandastation/examine_panel/code/examine_panel_mob.dm @@ -0,0 +1,19 @@ +// TODO: Don't use prefs when spawned via admins +/mob/living/carbon/human/Login() + . = ..() + AddComponent(/datum/component/examine_panel, use_prefs = TRUE) + +/mob/living/silicon/Login() + . = ..() + AddComponent(/datum/component/examine_panel, use_prefs = TRUE) + +/mob/living/verb/change_flavor_text() + set name = "Change flavor text" + set category = "IC" + + var/datum/component/examine_panel/examine_panel = GetComponent(/datum/component/examine_panel) + if(!examine_panel) + examine_panel = AddComponent(/datum/component/examine_panel) + var/new_flavor_text = tgui_input_text(usr, "Enter new flavor text", "Changing Flavor Text", examine_panel.flavor_text) + if(new_flavor_text) + examine_panel.flavor_text = new_flavor_text diff --git a/modular_bandastation/examine_panel/code/examine_panel_prefs.dm b/modular_bandastation/examine_panel/code/examine_panel_prefs.dm new file mode 100644 index 0000000000000..f5adcc4ea798a --- /dev/null +++ b/modular_bandastation/examine_panel/code/examine_panel_prefs.dm @@ -0,0 +1,18 @@ +/datum/preference/text/flavor_text + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "flavor_text" + maximum_value_length = MAX_FLAVOR_LEN + +/datum/preference/text/flavor_text/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + target.dna.features["flavor_text"] = value + +/datum/preference/text/silicon_flavor_text + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "silicon_flavor_text" + maximum_value_length = MAX_FLAVOR_LEN + // This does not get a apply_to_human proc, this is read directly in silicon/robot/examine.dm + +/datum/preference/text/silicon_flavor_text/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE // To prevent the not-implemented runtime diff --git a/modular_bandastation/examine_panel/code/~examine_panel_defines.dm b/modular_bandastation/examine_panel/code/~examine_panel_defines.dm new file mode 100644 index 0000000000000..d431a143a094e --- /dev/null +++ b/modular_bandastation/examine_panel/code/~examine_panel_defines.dm @@ -0,0 +1,2 @@ +#undef FLAVOR_PREVIEW_LIMIT +#undef MAX_FLAVOR_LEN diff --git a/modular_bandastation/modular_bandastation.dme b/modular_bandastation/modular_bandastation.dme index b62fa43f4664d..985bbf74a7bb2 100644 --- a/modular_bandastation/modular_bandastation.dme +++ b/modular_bandastation/modular_bandastation.dme @@ -14,6 +14,7 @@ #include "discord/_discord.dme" #include "emote_panel/_emote_panel.dme" #include "events/_events.dme" +#include "examine_panel/_examine_panel.dme" #include "gunhud/_gunhud.dme" #include "keybindings/_keybindings.dme" #include "pixel_shift/_pixel_shift.dme" diff --git a/tgui/packages/tgui/interfaces/ExaminePanel.js b/tgui/packages/tgui/interfaces/ExaminePanel.js new file mode 100644 index 0000000000000..afabfeccd5607 --- /dev/null +++ b/tgui/packages/tgui/interfaces/ExaminePanel.js @@ -0,0 +1,44 @@ +import { useBackend } from '../backend'; +import { Stack, Section, ByondUi } from '../components'; +import { Window } from '../layouts'; + +export const ExaminePanel = (props, context) => { + const { act, data } = useBackend(context); + const { character_name, obscured, assigned_map, flavor_text } = data; + return ( + + + + +
+ {!obscured && ( + + )} +
+
+ + + +
+ {flavor_text} +
+
+
+
+
+
+
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/base_bandastation.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/base_bandastation.tsx new file mode 100644 index 0000000000000..efd78b62363c3 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/base_bandastation.tsx @@ -0,0 +1,19 @@ +import { Box, TextArea } from '../../../../components'; +import { FeatureValueProps, FeatureShortTextData } from './base'; + +export const FeatureTextInput = ( + props: FeatureValueProps +) => { + if (!props.serverData) { + return Loading...; + } + + return ( +